Re: хочу "запускалку" программ.
sergio -> debian-russian@lists.debian.org @ Sun, 05 Oct 2008 22:45:58 +0400:
>> >>> Подскажите какую-нить "запускалку" программ, типа такой, которая
>> >>> выскакивает в kde/gnome/xfce по alt-f2.
>> >> urxvt. Одна из лучших "запускалок" :)
>>
>> s> &|exit в конец каждой комманды ты мне будешь добавлять?
>>
>> Мне zsh добавляет. Но не без глючка - если сразу из поиска по Ctrl-R
>> нажать Enter, то не добавляет. Если интересно, могу показать решение.
>>
s> интересно.
Магический тикловый скрипт xrsh (здесь не приводится для упрощения - он
есть быть суть отдельная песня), будучи вызван определенным образом,
выполняет команду
xterm -geometry 80x8 -title RunCmd@localhost -e zsh -i -t -s auto-bg
Что, соответственно, приводит в zsh к установке опций INTERACTIVE,
SINGLE_COMMAND и SHIN_STDIN. Последняя, если внимательно читать ман,
приводит к тому, что при выполнении .zshrc $1=auto-bg.
Далее, в .zshrc имеется следующий кусок кода:
if [[ -o interactive && -o single_command ]]; then
if [[ "$1" == auto-bg ]]; then
function auto-bg {
case "$BUFFER" in
{*}\ \&\|) ;;
\ *) BUFFER=" { $BUFFER } &|" ;;
*) print -s $BUFFER; BUFFER=" { $BUFFER } &|" ;;
esac
zle .accept-line
}
zle -N accept-line auto-bg
shift
fi
[[ -z "$1" ]] || print -z "$* "
fi
It's magic, я в курсе. Идея подсказана в рассылке zsh-users. Нет, _я_
понимаю, как оно работает. Но сам бы не догадался воспользоваться этим
механизмом.
Глюк полученного результата я уже описывал, workaround догадайся
самостоятельно.
На самом деле, у меня там бывает еще auto-wait (то же, но команда в
фореграунде, шелл дожидается ее завершения, и спрашивает, закрываться
или не стоит). Но оно как-то не прижилось. А этот вот кусок
используется.
--
Artem Chuprina
RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru
Штатными средствами среды я могу пририсовать "документу" оглавление,
обсуждение, усы и бороду
(c) Бо Беркгаут
Reply to: