URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9955
[ Назад ]

Исходное сообщение
"Простой application launcher средствами shell - ?"

Отправлено bortnik , 17-Дек-14 10:06 
Пытаюсь написать скрипты, которые делали бы следующее:

1) открывается окно терминала (urxvt или xterm)
2) в терминале shell скрипт выводит подсказку и ждет нажатия кнопки (read -n 1)
3) в зависимости от нажатой кнопки, запускается то или иное приложение
4) окно терминала закрывается, приложение остается работать

Пока что это не удается: либо терминал прекращает работу вместе с запущенным приложением, либо он не закрывается, пока это приложение не завершится.

Про "nohup ... &" я в курсе, это не помогает. Тем не менее, уверен, что задача решаема, и готовое решение давно существует. Может ли кто-нибудь подсказать, где можно найти образцы скриптов с такой функциональностью?


Содержание

Сообщения в этом обсуждении
"Простой application launcher средствами shell - ?"
Отправлено pavlinux , 18-Дек-14 03:51 
> Пытаюсь ...
> Может ли ..

Ура, курсовые начались!

xterm -e 'bash -c "while read -p \"[G]oogole [F]irefox?\" i; do case "\$i" in [Gg]* ) exec google-chrome; break;; [Ff]* ) exec firefox; break;; esac; done;"'


"Простой application launcher средствами shell - ?"
Отправлено bortnik , 18-Дек-14 07:02 
> xterm -e 'bash -c "while read -p \"[G]oogole [F]irefox?\" i; do case
> "\$i" in [Gg]* ) exec google-chrome; break;; [Ff]* ) exec firefox;
> break;; esac; done;"'

Спасибо! Но это не совсем то, что нужно: xterm не закрывается после запуска приложения.

Но мне таки удалось добиться нужного эффекта.

Команда для запуска xterm:

xterm -e "sh ~/launcher"

Скрипт launcher:

#!/bin/sh

echo "b   browser"
echo "d   stardict"
echo "f   firefox"
echo "g   geany"
echo "k   keepassx"
echo "m   mail client"
read -n 1 key
COM=""
if [ "$key" = "b" ] ; then
    COM="chromium"
elif [ "$key" = "d" ] ; then
    COM="stardict"
elif [ "$key" = "f" ] ; then
    COM="firefox"
elif [ "$key" = "g" ] ; then
    COM="geany"
elif [ "$key" = "k" ] ; then
    COM="keepassx"
elif [ "$key" = "m" ] ; then
    COM="thunderbird"
fi
if [ "$COM" != "" ] ; then
    nohup $COM & 2>&1 >/dev/null
    sleep 0.1
fi


"Простой application launcher средствами shell - ?"
Отправлено pavlinux , 18-Дек-14 14:52 
> xterm -e "sh ~/launcher"

Не-е-е-е, так не честно.