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<...<%~)"
}
Что получилось:
