Команда для запуска приложения или отображения его окна, если оно уже запущено
Я хочу создать ярлык для 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) Наслаждайтесь;-)