У меня есть это
wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz
внутри моего .bashrc, чтобы максимизировать мой терминал при открытии. Странно, что это, кажется, работает только случайным образом, иногда приводя к полноэкранному терминалу, а иногда нет, без какой-либо различимой закономерности. Ввод указанной выше команды в уже открытый терминал всегда успешен.
Я должен отметить, что команда xdotool windowsize $(xdotool getactivewindow) 100% 100%
(изэтотответ), который достигает аналогичного эффекта, также вызывает такое же спорадическое поведение при размещении в моем .bashrc. Опять же, он всегда работает при запуске из уже открытого приглашения. Далее,иногдаЕсли эта команда не работает, я получаю следующее сообщение об ошибке перед первым запросом:
XGetWindowProperty[_NET_ACTIVE_WINDOW] failed (code=1)
xdo_get_active_window reported an error
There are no windows in the stack
Invalid window '%1'
Invalid argument count, got 3, expected 2
Usage: windowsize [--sync] [--usehints] [window=%1] width height
If no window is given, %1 is used. See WINDOW STACK in xdotool(1)
--usehints - Use window sizing hints (like font size in terminals)
--sync - only exit once the window has resized
Это заставляет меня думать, что вся ошибка связана с поиском текущего активного окна.
Я использую Mint 19.3 с XFCE4, а мой терминал — urxvt. Что может быть причиной этого непоследовательного поведения?
решение1
Это, кажется,проблема XY. Существует гонка между отображаемым терминалом и скриптом запуска оболочки, пытающимся найти и изменить его размер. OP обнаружил, что a sleep 0.1
было достаточно, чтобы окно можно было найти как активное.
Однако правильно будет открыть терминал с правильным начальным размером, а не открывать его с каким-то размером по умолчанию, а затем изменять его размер. Начальный размер можно указать либо через значения по умолчанию, загруженные в X-сервер, обычно с помощью программы, xdb
либо с помощью стандартной -geometry
команды для эмулятора терминала.