Существует ли норма или стандартная ширина для Gnu-Linux / Unix-терминалов? - PullRequest
4 голосов
/ 28 июля 2011

Мне нужно создать приложение, которое записывает большое количество текста в разные Gnu-Linux / Unix-терминалы.Есть ли нормальная или стандартная ширина, на которую я мог бы сослаться?Я имею в виду, как в мире веб-дизайна, где они, как правило, используют ширину 1024 пикселя.

Спасибо за ваше время.

Ответы [ 4 ]

5 голосов
/ 28 июля 2011

Программы могут получить ширину и высоту терминала от драйвера терминала, используя системный вызов ioctl() с кодом запроса TIOCGWINSZ.Если это не доступно, разумным будет значение по умолчанию, равное 80.

Например:

#include <sys/ioctl.h>

int get_term_width(void) {
  struct winsize ws;
  if (ioctl(1, TIOCGWINSZ, &ws) >= 0)
    return ws.ws_col;
  else
    return 80;
}
5 голосов
/ 28 июля 2011

Традиционно ограничение в 80 символов (то есть строки длиной более 80 символов переносятся на следующую строку) является нормой.Тем не менее, была дискуссия об актуальности этого стандарта (см. здесь ).Однако в моем опыте в университете нас учили, что удобство просмотра в терминале - 80 символов.Если вы используете по умолчанию моноширинный шрифт 12pt для linux, это будет означать, что хорошая ширина будет приблизительно 80 * ширина одного символа.Лучшим решением, вероятно, было бы просто обрезать каждую строку на 80 символов программно.

tldr: 80 символов

2 голосов
/ 28 июля 2011

80 cols и 24 - это старый стандарт VT200, который долгое время хранился.

С современными графическими мониторами вы не можете этого придерживаться, но есть и другие способы.Взгляните на ncurses .Это набор функций для позиционирования текста на консоли, независимо от его размера и т. Д. Weechat и Irssi - известные пользователи ncurses.

1 голос
/ 28 июля 2011

Вкратце, 80 символов.

Это был своего рода стандарт де-факто, так как, на самом деле, так как перфокарты на самом деле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...