Как я могу сделать ярлык, чтобы поднять окно приложения, если оно существует?
Я постоянно переключаюсь между Sublime Text, Terminal и Chrome. Я хотел бы связать ярлык, например, "Alt + 1", чтобы открыть мой текущий терминал и текущий Google Chrome.
Прямо сейчас, каждый раз, когда я запускаю Google Chrome или терминал, он открывает новое окно. Любая идея?
Спасибо!
2 ответа
Метод в ответе мороси будет работать, но имеет несколько недостатков
- Имеет задержку; при нажатии клавиши Super вам придется подождать около секунды, чтобы появились цифры.
Порядок элементов в панели запуска может меняться в зависимости от приложений, которые вы запускаете. Номер
Chrome
может быть другим тогда.
Альтернативный вариант
Вы можете просто сделать с помощью команды:
wmctrl -a chrome
который поднимет первое найденное окно с "хромом" в его названии. Это также подняло бы окно, в которое я сейчас пишу (a firefox
окно с именем: "Ярлык для открытия текущего Google Chrome...")
Использование pid окна предотвратит это. На мой взгляд, поэтому более элегантно поставить команду:
wmctrl -ia "$(wmctrl -lp | grep "$(pgrep chrome)" | tail -1 | awk '{ print $1 }')"
под сочетанием клавиш (Alt + 1 будет работать), учитывая тот факт, что вам нужно иметь wmctrl
установил тогда:
sudo apt-get install wmctrl
Как добавить команду в ярлык
устанавливать
wmctrl
sudo apt-get install wmctrl
создайте небольшой скрипт (откройте пустой файл, вставьте в него скрипт ниже)
#!/bin/bash wmctrl -ia "$(wmctrl -lp | grep "$(pgrep chrome)" | tail -1 | awk '{ print $1 }')"
Сохранить как
raise_chrome.sh
Добавьте скрипт в ярлык; выберите: Системные настройки> "Клавиатура" > "Ярлыки" > "Пользовательские ярлыки". Нажмите "+" и добавьте команду:
/bin/bash /path/to/raise_chrome.sh
(например) сочетание клавиш Alt + 1.
Примечание: используйте абсолютный путь, например, не
~
объяснение
Команда на самом деле является "преобразованием" этого, и объяснение аналогично:
В разделе:
"$(wmctrl -lp | grep "$(pgrep chrome)" | tail -1 | awk '{ print $1 }')"
команда:
wmctrl -lp
перечисляет все окна, включая их pid и идентификатор окна. Результат передан
grep "$(pgrep chrome)"
который фильтрует (списки) все вхождения Chrome
окна.
Затем,
tail -1
даст нам последний элемент в списке, который является последним созданным окном (так как wmctrl
списки окон в хронологическом порядке).
awk '{ print $1 }'
наконец, даст нам первую строку в строке (из вывода wmctrl
), который является идентификатором окна.
Команда:
wmctrl -ia <window_id>
Затем поднимет последнее созданное окно Chrome
Заметка
Не нужно говорить, что вы можете заменить chrome
в команде любого другого приложения (имя процесса) и поместите их в отдельные комбинации клавиш.
РЕДАКТИРОВАТЬ
использовать приложение в качестве аргумента
Поскольку вы упоминаете Sublime Text
, Terminal
а также Chrome
Вы можете использовать несколько ярлыков и запустить сценарий с приложением в качестве аргумента.
Сделать так
Используйте скрипт с небольшим отличием:
#!/bin/bash
app=$1
wmctrl -ia "$(wmctrl -lp | grep "$(pgrep "$app")" | tail -1 | awk '{ print $1 }')"
и запустить его впоследствии с помощью команд под сочетаниями клавиш:
sh /home/jacob/Bureaublad/raise.sh sublime_text
sh /home/jacob/Bureaublad/raise.sh gnome-terminal
а также
sh /home/jacob/Bureaublad/raise.sh chrome
Вы можете использовать alt-tab для быстрого переключения между программами.
Вы также можете использовать кнопку Super (также известную как кнопка Windows): Super+number. например. Super+3 откроет третье приложение в панели запуска вашего приложения. Чтобы быстро определить номера, связанные с приложениями, нажмите и удерживайте супер кнопку.