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

Реклама
Опубликовано в KDE, Linux, Tips&Tricks. 2 комментария »

комментария 2 to “Yakuake и Zsh”

  1. Kain Says:

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

  2. kaktyc Says:

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


Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: