@Blunker

Как изменить размер окна?

Есть консольная программа написанная на С. ОС - debian.
Нужно чтобы при запуске терминал разворачивался на весь экран.
ws.ws_col = cols;
ws.ws_row = rows;
ioctl(1, tiocswinsc, &ws);

не решает проблемы:((
  • Вопрос задан
  • 1178 просмотров
Пригласить эксперта
Ответы на вопрос 3
Frankenstine
@Frankenstine
Сисадмин
wmctrl -r 'строка заголовка' -b toggle,maximized_vert,maximized_horz
Попробуйте посмотреть в исходниках wmctrl, как это реализованно :)
Ответ написан
Комментировать
selivanov_pavel
@selivanov_pavel
Linux admin
Чтобы графическое окно терминала развернулось во весь экран, надо взаимодействовать с оконным менеджером. Можно использовать xdotool.
Ответ написан
sfi0zy
@sfi0zy
Creative frontend developer
Как можно посмотреть в мане, ioctl, который вы используете, не имеет единого стандарта, что по сути означает, что в вашей системе "может работать, а может и нет, а может будет работать, но не так как вы ожидаете". Для изменения размера терминала можно использовать escape последовательности, но для разных терминалов они могут отличаться, для XTerm примеры есть тут. Но по умолчанию они игнорируются, чтобы xterm начал их распознавать нужно изменить значение allowWindowOps:
echo "XTerm*allowWindowOps:    true" > .Xresources
xrdb -merge .Xresources

и только после этого вы сможете с помощью них менять размер окна. Но пользователь врятли захочет, чтобы вы ему что-то такое меняли.

Так что вам остается только смотреть в сторону работы с оконным менеджером, но это, как вы понимаете, уже выходит за рамки "консольной программы".

Но вообще изменение размера терминала - это не лучшая практика. Многих людей это будет очень раздражать, а поскольку консольные программы часто исполняют в "настоящей" консоли, без графического интерфейса, смысл изменения размера и вовсе пропадает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы