Сфокусировать или открыть окно в гноме по сочетанию клавиш
Как описано здесь (Ask-ubuntu.ru/questions/234206/shortcut-to-switch-to-app/328842) wmctrl
дает вам доступ к вашим окнам. Таким образом, вы можете переключаться с помощью клавиатуры. Но мне нравится открывать и фокусировать один ярлык, если он еще открыт.
Есть ли инструмент для этого?
6 ответов
Еще одно решение.
Убедитесь, что у вас установлен wmctrl: sudo apt install wmctrl
Сделайте ярлык с помощью команды: bash -c "wmctrl -a chrome ; [ "$?" == "1" ] && google-chrome"
Пояснение: сначала мы попытаемся сосредоточиться на Chrome (wmctrl -vxa chrome
), затем мы проверяем, если мы успешно "$?" == "0" или нет "$?" == "1", а если нет, то мы запускаем Google Chrome ([ "$?" == "1" ] && google-chrome"
).
Вы также можете сделать ярлык bash -c "wmctrl -a chrome || google-chrome
||
означает, что если первая команда не выполнена, выполнить вторую.
У меня есть следующие непосредственно в качестве сочетания клавиш:
# Focus Chrome if it's running, start it otherwise.
sh -c "if test $(wmctrl -vxa chrome 2>&1 | wc -l) -eq 1; then google-chrome; fi"
Попробуйте эти инструкции (проверено):
- Сначала получите WM_CLASS название приложения
xprop | grep WM_CLASS
- Затем сделайте ярлык
bash -c "wmctrl -xa <WM_CLASS> || <WM_CLASS>"
- Например:
bash -c "wmctrl -xa google-chrome || google-chrome
- убедитесь, что он установлен:
sudo apt install wmctrl
- открыть гном
Settings
, тогдаKeyboard Shortcuts
. добавьте эту команду:
bash -c "wmctrl -a firefox || firefox"
Объяснение:
wmctrl
пытается открыть окно, если оно уже было открыто. В этом случае следующая команда не будет выполнена. Но если окно еще не было открыто, следующая команда выполнит и запустит нужную программу/скрипт (например,
firefox
).
PS:
Это определение
||
оператор.
Я использовал подход OlivierBlanvillain, но изменил для конкретного результата:
Я хотел, чтобы F12 переключался между Chrome или моим терминалом, в зависимости от того, что было сфокусировано. Я использую xdotool в дополнение к wmctrl.
if [[ $(xdotool getwindowfocus getwindowname) == *Google\ Chrome ]]; then wmctrl -a terminal; else wmctrl -a chrome; fi
Понял почти.
созданный /usr/local/bin/go
(sudo vim /usr/local/bin/go
) с этими строками:
#!/bin/bash
if wmctrl -l | grep -i --quiet "${1}"; then
wmctrl -a ${1}
else
${1}
fi
Сделано это исполняемым: sudo chmod ugo+x /usr/local/bin/go
И добавил несколько ярлыков в систему:
Название: Firefox
Команда: go firefox
через Super+F
Но Firefox не появляется. Через консоль это действует так, как должно.