28 lines
		
	
	
		
			532 B
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			532 B
		
	
	
	
		
			V
		
	
	
| module term
 | |
| 
 | |
| import os
 | |
| 
 | |
| #include <sys/ioctl.h>
 | |
| 
 | |
| #include <termios.h> // TIOCGWINSZ
 | |
| 
 | |
| pub struct C.winsize {
 | |
| pub:
 | |
| 	ws_row    u16
 | |
| 	ws_col    u16
 | |
| 	ws_xpixel u16
 | |
| 	ws_ypixel u16
 | |
| }
 | |
| 
 | |
| fn C.ioctl(fd int, request u64, arg voidptr) int
 | |
| 
 | |
| // get_terminal_size returns a number of colums and rows of terminal window.
 | |
| pub fn get_terminal_size() (int,int) {
 | |
| 	if is_atty(1) <= 0 || os.getenv('TERM') == 'dumb' {
 | |
| 		return default_columns_size, default_rows_size
 | |
| 	}
 | |
| 	w := C.winsize{}
 | |
| 	C.ioctl(1, C.TIOCGWINSZ, &w)
 | |
| 	return int(w.ws_col),int(w.ws_row)
 | |
| }
 |