Как найти ширину и высоту терминала приложения ncurses?
Размер терминала ncurses
Ответ 1
void getmaxyx(WINDOW *win, int y, int x); Я верю...
это может помочь...
Ответ 2
Приложения ncurses обычно обрабатывают SIGWINCH и используют ioctl с TIOCGWINSZ, чтобы получить системное представление об экранах. Это может быть переопределено переменными окружения LINES и COLUMNS (см. use_env).
Учитывая, что глобальные переменные ncurses LINES и COLS обновляются как побочный эффект, когда wgetch возвращает KEY_RESIZE (в ответ на SIGWINCH), чтобы указать размер stdscr (стандартный экран, представляющий весь терминал).
Вы можете, конечно, использовать getmaxx, getmaxy и getmaxyx, чтобы получить один или оба ограничения для x- и y-ординат окна. Только последний является стандартным (и переносимым).
Дальнейшее чтение:
- Обработка SIGWINCH (события изменения размера) (часто задаваемые вопросы о ncurses)
-
is_term_resized,resize_term,resizeterm— изменить размер проклятых терминалов
Ответ 3
Как насчет использования SCR_H и SCR_W?
Ответ 4
Я использую этот код:
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);
Ответ 5
переменные COLS, LINES инициализируются размерами экрана после initscr().
Источник: NCURSES Programming HOWTO
Я не уверен, если они будут обновляться при изменении размера.