Как найти ширину и высоту терминала приложения 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
Я не уверен, если они будут обновляться при изменении размера.