Unix точно не имеет понятия «приложение» . Вместо того, чтобы использовать процессы, лучшим индикатором были бы окна верхнего уровня. Их легче точно обнаружить, и вы не обнаружите ложные приложения другого пользователя.
Каждое окно имеет класс, определяющий его приложение. Чтобы увидеть имя класса для приложения, выполните следующую команду в терминале и щелкните окно приложения:
xprop WM_CLASS
Здесь отображаются две строки: имя экземпляра и имя класса.
Наиболее полезными инструментами для отображения информации об окнах и выполнения некоторых основных действий с ними являются xdotool
и wmctrl
.
С помощью wmctrl
вы можете использовать wmctrl -F -x -a "$ instance. $ Class"
, чтобы активировать одно из окон с данным экземпляром и классом. Если подходящего окна нет, wmctrl
возвращает статус ошибки, поэтому вы можете выбрать запуск программы. Пример:
wmctrl -F -x -a Navigator.Firefox || firefox &
Эквивалентная команда xdotool:
xdotool search --class --maxdepth 2 Firefox windowactivate || firefox &
Если имеется несколько окон верхнего уровня, нет простого способа определить, какое из них будет активировано. Чтобы активировать самую последнюю версию, вам потребуется помощь вашего оконного менеджера - Openbox по умолчанию в LXDE. Я не знаком с Openbox, но он довольно скудный, поэтому он может не предлагать способ сообщить о последнем активированном окне. Я думаю, что LXDE можно использовать с другими оконными менеджерами, такими как sawfish , который является программируемым, так что вы можете закодировать эту функциональность внутри оконных менеджеров в несколько строк кода.
Используйте механизм настройки привязки клавиш вашего оконного менеджера , чтобы привязать нужные клавиши к одной из этих команд.