Имеется debian 9 stretch LXDE. Открыта IDE, веб-браузер и терминал. Я хочу переключаться между ними не альт-табом, а по горячим клавишам. Я знаю, что это можно сделать с помощью рабочих столов, но у меня два монитора. Если раскидать приложения по рабочим столам, пространство экрана будет недоиспользовано.
В офтопике есть «закреплённые приложения» возле кнопки «Пуск». Когда нажимаем Win+1, Win-2 и т.п., запускается первое, второе и т.п. приложение . А если приложение уже запущено, то в него переключаюсь.
Можно ли так настроить LXDE? Или, может быть, есть какая-то ещё альтернатива?
РЕШЕНИЕ
# Установим программки...
> sudo apt-get install wmctrl wish xdg-utils
# Посмотрим, какие окошки у нас есть
> wmctrl -x -l
0x03000046 0 sun-awt-X11-XFramePeer.jetbrains-phpstorm deb8 rl [/y/rl] - ...ргт [rl] - PhpStorm
0x03600004 0 lxterminal.Lxterminal deb8 den73@deb8: ~
0x03c00001 0 google-chrome.Google-chrome deb8 Новая вкладка - Google Chrome
0x03c00014 0 google-chrome.Google-chrome deb8 Developer Tools - https://www.google.ru/...
0x03800003 0 leafpad.Leafpad deb8 (Без имени)
# Окошки можно искать по имени класса и по заголовку (man wmctrl).
Создадим скрипт для обработки горячих клавиш и запишем в файл ~/.config/горячие-клавиши-openbox.ш:
#!/bin/bash
function Диалог {
echo "wm withdraw .
tk_messageBox -title {Помощник горячих клавиш} -message \"$0 сообщает:
[list $1]\"
destroy ." | wish
}
command -v wmctrl || Диалог "Не установлена программа wmctrl"
case $1 in
(W-1)
wmctrl -x -a Lxterminal \
|| xdg-open ~/Рабочий\ стол/lxterminal.desktop;;
(W-2)
wmctrl -x -a "Doublecmd" \
|| ~/doublecmd/doublecmd.sh;;
(W-3)
wmctrl -a "- Google Chrome" \
|| google-chrome;;
(W-4)
wmctrl -a "Developer Tools -" \
|| Диалог "$1 только активирует Chrome Developer Tools, но не запускает их";;
(W-5) wmctrl -a "- Visual Studio Code" \
|| code;;
("") Диалог "В качестве параметра передай горячую клавишу, как она записана в OpenBox.";;
(*) Диалог "Неизвестная горячая клавиша «$1»"
esac
# Сделаем файл исполняемым
> chmod u+x ~/.config/горячие-клавиши-openbox.ш
# Настроим конфигурацию LXDE
# Для LXDE
> leafpad ~/.config/openbox/lxde-rc.xml
# Для Lubuntu-desktop
> leafpad ~/.config/openbox/lubuntu-rc.xml
Добавляем в секцию keyboard:
<keybind key="W-1"><action name="Execute">
<command>~/.config/горячие-клавиши-openbox.ш W-1</command></action></keybind>
<keybind key="W-2"><action name="Execute">
<command>~/.config/горячие-клавиши-openbox.ш W-2</command></action></keybind>
<keybind key="W-3"><action name="Execute">
<command>~/.config/горячие-клавиши-openbox.ш W-3</command></action></keybind>
<keybind key="W-4"><action name="Execute">
<command>~/.config/горячие-клавиши-openbox.ш W-4</command></action></keybind>
<keybind key="W-5"><action name="Execute">
<command>~/.config/горячие-клавиши-openbox.ш W-5</command></action></keybind>
Применяем
> openbox --reconfigure
Сочетания Win+1 .. Win+5 теперь вроде работают.
Теперь можно поместить эти команды в панель быстрого запуска, чтобы иметь наглядное напоминание о том, какая кнопка про что, но я, наоборот, очищу эту панель, чтобы место освободилось.
P.S. работает также в Ubuntu 12.04; также проверено в Ubuntu 16.04 для рабочего стола lubuntu-desktop