Yakuake и Zsh

Yakuake — это quake-подобный эмулятор терминала, который использует konsole в качестве основы. Последняя на данный момент версия — 2.7.5.
При активной работе с yakuake очень неудобно, когда создаются вкладки с “неговорящими” именами вида ‘Shell No. XXX’. Так очень легко запутаться, особенно, если открыто более 7 вкладок. Чтобы это исправить, можно воспользоваться технологией DCOP.
Чтобы поменять имя вкладки, необходимо выполнить команду

dcop yakuake DCOPInterface slotRenameSession $DCOP_YAKUAKE_SESSION "текст"

Вместо текста у меня отображается моё текущее положение в файловой системе

dcop yakuake DCOPInterface slotRenameSession $DCOP_YAKUAKE_SESSION "`pwd`"

Версия для эстетов :)

dcop yakuake DCOPInterface slotRenameSession $DCOP_YAKUAKE_SESSION "`pwd | sed "s,^$HOME,~,"`"

Теперь осталось сделать так, чтобы при каждом выполнении новой команды в шелле, у нас обновлялась информация. В Zsh есть специальная функция precmd(), которой мы и воспользуемся. В ~/.zshrc необходимо добавить следующий код:

function precmd() {
if [ "$DCOP_YAKUAKE_SESSION" ]
then
dcop yakuake DCOPInterface slotRenameSession $DCOP_YAKUAKE_SESSION “`pwd | sed “s,^$HOME,~,”`”
fi
}

И ещё маленький штрих. По умолчанию Zsh не меняет title терминала, в отличие от bash, что создает некоторые неудобства. Это тоже легко исправляется. На просторах Сети был найден такой код:

function title() {
# escape ‘%’ chars in $1, make nonprintables visible
a=${(V)1//\%/\%\%}

# Truncate command, and join lines.
a=$(print -Pn “%40>…>$a” | tr -d “\n”)

case $TERM in
screen)
print -Pn “\e]2;$a @ $2\a” # plain xterm title
print -Pn “\ek$a\e\\” # screen title (in ^A”)
print -Pn “\e_$2 \e\\” # screen location
;;
xterm*|rxvt)
print -Pn “\e]2;$a @ $2\a” # plain xterm title
;;
esac
}

Чтобы title менялся перед выполнением команды, необходимо использовать другую функцию — preexec().

function preexec() {
title “$1″ “%m(%35<…<%~)”
}

Что получилось:
yakuake.png

Posted in KDE, Linux, Tips&Tricks.

2 Responses to “Yakuake и Zsh”

  1. Kain Says:

    У меня заработало только после замены всех кавычек на нормальные.
    (хотя может это у меня с кодировкой проблемы)
    Большое спасибо за полезный совет.

  2. kaktyc Says:

    Это wordpress, не смотря на тег code, попортил исходник :(

Leave a Reply