Команда для запуска приложения или отображения его окна, если оно уже запущено
Я хочу создать ярлык для 1) запуска приложения, если оно еще не запущено, и 2) для отображения (или для вывода на передний план) окна приложения, если оно уже было запущено.
Например: F10 для запуска Stardict. Я создал собственный ярлык с командой "stardict" и клавишей F10, поэтому каждый раз, когда я нажимаю F10, система запускает новый экземпляр Stardict, но это не то, что мне нужно.
Кто-нибудь может помочь, пожалуйста?
Заранее спасибо.
ОБНОВЛЕНИЕ: Кроме того, я хочу добавить что-то вроде: если окно уже показано, нажатие клавиши быстрого доступа (всегда одинаковое) свернет его в системный трей.
Большое спасибо desgua за его полное решение ниже (раздел ответа). Кстати, перед тем, как desgua опубликовал свое решение, я нашел другое решение, но не проверенное: http://ubuntuforums.org/showthread.php?t=1464311
1 ответ
Запустить приложение или показать его окно, если оно уже запущено, или свернуть, если оно сфокусировано.
1) Установите wmctrl: sudo apt-get install wmctrl
2) Установите xdotool: sudo apt-get install xdotool
3) Сделать скрипт:
- Сделать файл
gedit ~/.focusshortcut
- И вставьте это:
#! / Bin / Баш # # Этот скрипт делает это: # запустить приложение, если оно еще не запущено, # сфокусировать приложение, если оно запущено, но не сфокусировано, # сверните приложение, если оно сфокусировано. # # by desgua - 2012/04/29, последнее обновление: 2012/12/11 # Инструкции name=$(echo $0 | sed 's/.*\///') if [ $# -ne 1 ]; затем эхо " Этот скрипт делает это: # запустить приложение, если оно еще не запущено, # сфокусировать приложение, если оно запущено, но не сфокусировано, # сверните приложение, если оно сфокусировано. Использование: $name app Пример: $ name gcalctool " выход 1 фи # Давайте проверим, установлены ли необходимые инструменты: tool1 = $ (который xdotool) tool2=$(который wmctrl) if [-z $ tool1]; затем echo "Xdotool необходим, вы хотите установить его сейчас? [Y/n]" читать если [[ $a == "Y" || $a == "y" || $a = "" ]]; затем sudo apt-get установить xdotool еще echo "Exiting then..." выход 1 фи фи if [ -z $tool2 ]; затем echo "Wmctrl необходим, вы хотите установить его сейчас? [Y/n]" читать если [[ $a == "Y" || $a == "y" || $a = "" ]]; затем sudo apt-get установить wmctrl еще echo "Exiting then..." выход 1 фи фи # Проверьте, запущено ли приложение pid = $ (pidof $ 1) # Если он не запущен, запустите if [ -z $pid ]; затем $ 1 выход 0 еще # Если он запущен, то проверьте, сфокусирован ли он foc = $ (xdotool getactivewindow getwindowpid) if [[$ pid == $ foc]]; затем # если оно сфокусировано, то минимизировать xdotool getactivewindow windowminimize выход 0 еще # если оно не сфокусировано, тогда сфокусируйтесь wmctrl -x -R $1 выход 0 фи фи выход 0
- Сделайте его исполняемым:
chmod +x ~/.focusshortcut
3) Сделайте вашу ссылку на / home / <user>
/.focusshortcut app_to_show
4) Наслаждайтесь;-)