Gnome (Ubuntu): як повернути вікно програми спереду за допомогою командного рядка з терміналу?


14

У мене є певне робоче середовище з десятками відкритих Windows. Як я можу запросити на передню частину вікно з відомим ім’ям / заголовком програмно або за допомогою командного рядка?

Відповіді:


12

Раніше я використовував wmctrl -a <name>, що працює чудово, але нещодавно перейшов xdotool, наприклад:

xdotool search --name <name-or-regex-for-name> windowraise

У нього є і багато інших особливостей.

Щоб встановити:

sudo apt-get install xdotool


5
xdotool windowraiseприводить вікно спереду, але не фокусує вікно або не перемикається на робочий стіл разом з вікном. натомість windowactivateзробить усі три.
jozxyqk

6

Ну, після sudo apt-get install wmctrl-ing, ви можете грати з цим сценарієм bash:

#! /bin/bash

WINTITLE="Mail/News" # Main Thunderbird window has this in titlebar
PROGNAME="mozilla-thunderbird" # This is the name of the binary for t-bird

# Use wmctrl to list all windows, count how many contain WINTITLE,
# and test if that count is non-zero:

if [ `wmctrl -l | grep -c "$WINTITLE"` != 0 ]
then
wmctrl -a "$WINTITLE" # If it exists, bring t-bird window to front
else
$PROGNAME & # Otherwise, just launch t-bird
fi
exit 0

Якого я тут знайшов


4
Немає необхідності в дужках і задній панелі:if ! wmctrl -l | grep -q "$WINTITLE"
Призупинено до подальшого повідомлення.

wmctrlмає -iопцію, яка підтримує роботу з вікном зі своїм шестигранним ідентифікатором. А значить, ви можете зробити це wmctrl -lp|grep 'whatever incomplete name'|cut -d' ' -f1|xargs wmctrl -ai- що зробить щось подібне
vlad-ardelean

0

Під час використання xdotoolздається, що важко вивести на фронт всі вікна для певної програми чи класу, використовуючи лише одну команду. Я маю кращі результати, загортаючи його в forпетлю на рівні оболонки. Використання Bash:

for WINDOW in $(xdotool search --desktop 0 Firefox); do
   xdotool windowactivate ${WINDOW}
done

Кілька зауважень:

  • За замовчуванням xdotool searchбуде шукати шаблон (тут Firefox) у назві вікна, класі та імені класу. Якщо ви хочете , щоб обмежити область пошуку, використовуйте відповідні --class, --nameабо --classnameваріанти.
  • Ця --desktop 0опція обмежує пошук на першому робочому столі. Це, мабуть, є способом уникнути XGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)згаданого в деяких коментарях.
  • На момент написання цього xdotoolпроекту проект зупиняється з 2015 року. Він все ще залишається моїм інструментом вибору. З особистих причин Джордан Сіссель (оригінальний автор) не такий активний, як раніше, тому не соромтесь внести свій внесок у проект.


Це копія відповіді, яку я опублікував на AskUbuntu , але я думаю, що це не залежно від смаку Linux, тому може бути корисним і тут.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.