WMCTRL не работает после запуска xfce4-terminal

Если я наберу эти две команды в терминале:

xfce4-terminal --hide-menubar --hide-borders --hide-toolbars --title=dt wmctrl -r dt -e 0,10,10,720,720 

Я получаю желаемый результат (положение и изменение размера окна с заголовком dt , отмечая, чем в отличие от gnome-terminal , xfce4-terminal не переписывает назначенные вручную заголовки)

Естественно, я бы ожидал, что это сработает:

 #! /bin/bash xfce4-terminal --hide-menubar --hide-borders --hide-toolbars --title=dt && wmctrl -r dt -e 0,10,10,720,720 

Терминал отображает себя с правильными настройками и заголовком, но wmctrl не имеет никакого эффекта.

3 Solutions collect form web for “WMCTRL не работает после запуска xfce4-terminal”

Оператор && заставляет вторую команду выполнять не до тех пор, пока не выйдет первая команда ( xfce4-terminal ) (и только если статус выхода указывает на успех, поскольку это логический оператор короткого замыкания).

Вы должны получить поведение, которое ожидаете, если вы измените && на ; или просто поместите команду wmctrl в отдельную строку вашего скрипта.

Вы запускаете wmctrl непосредственно после выхода команды xfce4-terminal . Но если уже открыт экземпляр Xfce Terminal, xfce4-terminal ставит себя в фоновом режиме и сразу же возвращает командную строку, пока все еще находится в процессе настройки фактического экрана терминала. Таким образом, к моменту wmctrl окно с заголовком rd возможно, еще не существует.

Если вам не нужно вводить команду, как в примере с && , то wmctrl запускается слишком быстро. В первом примере ввод или выбор из истории достаточно задержки, чтобы иметь окно терминала с правом заголовком.

Если вы вырезаете и вставляете два ввода в командной строке из первого примера, вы, вероятно, столкнетесь с проблемой.

Перед wmctrl вы должны поместить команду wmctrl . Вы можете поэкспериментировать с продолжительностью, 1 секунда должна быть достаточной, так как заголовок терминала будет установлен до того, как запущенная оболочка должна обработать свои файлы запуска. (Если вы запустите Firefox / Chrom с URL-адресом, который требуется получить, ожидая, что ожидаемый заголовок может занять несколько секунд, и он может никогда не появиться, если есть сетевые ошибки).

Чтобы получить единообразное поведение, запустите xfce4-terminal в фоновом режиме, чтобы он не блокировался, даже если это первый экземпляр, который вы запускаете.

 xfce4-terminal --hide-menubar --hide-borders --hide-toolbars --title=dt & sleep 1 wmctrl -r dt -e 0,10,10,720,720 

Ответ Антона объясняет, что происходит. Использование wmctrl для изменения размера или перемещения окна после того, как факт является проблематичным; вам нужно полагаться на таймер, поэтому окно будет отображаться в неправильном положении на короткое время, а затем переместиться (или, если машина работает очень медленно, окно не будет перемещаться, потому что wmctrl запускается слишком рано). Кроме того, у вас может быть другое окно с тем же названием (если только вы не создадите уникальные уникальные названия, например, со случайной строкой или временной меткой).

К счастью, xfce4-terminal имеет возможность установить начальное положение и размер. Он следует стандартным синтаксисом геометрии X11 . Используйте его вместо вызова wmctrl . Обратите внимание, что размер выражается в ячейках символов, а не в пикселях.

 xfce4-terminal --geometry 80x40+10+10 --hide-menubar --hide-borders --hide-toolbars --title=dt 
  • Измените приглашение при запуске терминала из сценария bash (но не затрагивайте все терминалы)
  • Как отключить поддержку мыши в терминале?
  • Linux и Unix - лучшая ОС в мире.