Сфокусировать или открыть окно в гноме по сочетанию клавиш

Как описано здесь (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
  1. убедитесь, что он установлен:

sudo apt install wmctrl

  1. открыть гном 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 не появляется. Через консоль это действует так, как должно.

Другие вопросы по тегам