Мне нужно развернуть окно приложения, если оно свернуто только с помощью командной строки.
Итак, как это сделать, зная идентификатор процесса.
При работе с командой wmctrl
я получил следующую ошибку:
X Error of failed request: BadWindow (invalid Window parameter)
Major opcode of failed request: 20 (X_GetProperty)
Resource id in failed request: 0x6718
Serial number of failed request: 11
Current serial number in output stream: 11
Это должно работать:
xdotool windowactivate `xdotool search --pid YOUR_PID_HERE | tail -1`
xdootool сообщает довольно много оконных идентификаторов при поиске по pid, поэтому я «замкнул» вывод, чтобы получить только последний идентификатор окна из вывода. Для меня это хорошо работало как с Firefox, так и с gnome-калькулятором. Если xdotool сообщает только один идентификатор окна для вашего pid, то хвостовой канал, конечно, не нужен.
Вы можете использовать wmctrl
( man-страница ) для управления окнами из командной строки.
sudo apt-get install wmctrl
или любого другого менеджера пакетов, который вам удобнее. wmctrl -lp
перечислит все существующие окна с их идентификатором окна в первом и PID во втором столбце выходных данных. wmctrl -iR <window ID>
или wmctrl -ia <window ID>
, в зависимости от того, хотите ли вы переключиться на рабочий стол или переместить его на текущий. Это должно сделать это:
awk '$3 == 17213 {print $1}' <(wmctrl -lp) | xargs -i% sh -c "xwit -id % -pop -raise; wmctrl -i -r % -b add,maximized_vert,maximized_horz"
Вам нужно будет изменить идентификатор в выражении awk
, но это позволит развернуть окно и активировать окно. Вам также нужно будет установить xwit
(sudo apt-get install xwit
) для работы минимизации.
Причина, по которой это так сложно, заключается в том, что ни один инструмент не делает все, что вам нужно, а у тех, кто обладает небольшой способностью, есть проблемы с терминалом:
xdotool
не может найти PID (несмотря на то, что это рекламируемая функция) wmctrl
не знает, как минимизировать и максимизировать вещи xwit
не может изменить подсказки окна, но это может сводить к минимуму вещи В идеале это то, что вы должны делать только с xdotool
или wmctrl
, но их поиски PID не работают или не существуют соответственно.