Сфокусировать или открыть окно в гноме по сочетанию клавиш
Как описано здесь (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 не появляется. Через консоль это действует так, как должно.