Непоследовательное поведение wmctrl при развертывании терминала из .bashrc

Непоследовательное поведение wmctrl при развертывании терминала из .bashrc

У меня есть это

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команды для эмулятора терминала.

Связанный контент