[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: