ncurses terminal size

断了今生、忘了曾经 提交于 2019-12-22 01:44:53

问题


How do I find the terminal width & height of an ncurses application?


回答1:


void getmaxyx(WINDOW *win, int y, int x); i believe...

also, this may help...

Getting terminal width in C?




回答2:


ncurses applications normally handle SIGWINCH and use the ioctl with TIOCGWINSZ to obtain the system's notion of the screensize. That may be overridden by the environment variables LINES and COLUMNS (see use_env).

Given that, the ncurses global variables LINES and COLS are updated as a side-effect when wgetch returns KEY_RESIZE (in response to a SIGWINCH) to give the size of stdscr (the standard screen representing the whole terminal).

You can of course use getmaxx, getmaxy and getmaxyx to get one or both of the limits for the x- and y-ordinates of a window. Only the last is standard (and portable).

Further reading:

  • Handling SIGWINCH (resize events) (ncurses FAQ)
  • is_term_resized, resize_term, resizeterm — change the curses terminal size



回答3:


i'm using this code:

struct winsize size;
if (ioctl(0, TIOCGWINSZ, (char *) &size) < 0)
    printf("TIOCGWINSZ error");
printf("%d rows, %d columns\n", size.ws_row, size.ws_col);



回答4:


What about using SCR_H and SCR_W?




回答5:


the variables COLS, LINES are initialized to the screen sizes after initscr().

Source: NCURSES Programming HOWTO

I'm not sure if they get updated on resize though.



来源:https://stackoverflow.com/questions/1811955/ncurses-terminal-size

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!