#! /usr/bin/zsh # Change konsole tab to current path konsole-rename-path () { if [ -n "$KONSOLE_DCOP_SESSION" -o -n "$KONSOLE_DBUS_SESSION" ] then local DIR DIR=`print -P "%28<...<%~"` if [ -n "$KONSOLE_DCOP_SESSION" ] then dcop ${KONSOLE_DCOP_SESSION} renameSession "$DIR" elif [ -n "$KONSOLE_DBUS_SESSION" ] then qdbus ${KONSOLE_DBUS_SERVICE} ${KONSOLE_DBUS_SESSION} setTitle 0 "$DIR" > /dev/null 2>&1 qdbus ${KONSOLE_DBUS_SERVICE} ${KONSOLE_DBUS_SESSION} setTitle 1 "$DIR" > /dev/null 2>&1 fi fi } # Change konsole tab to current command konsole-rename-cmd () { if [ -n "$KONSOLE_DCOP_SESSION" -o -n "$KONSOLE_DBUS_SESSION" ] then # We don't need to change tab to "cd xyz" or precmd redefinition # Yes, this is a dirty hack if [[ "$1" != \ cd\ \"* && "$1" != \ precmd* ]] then local CMD CMD=`print -P "%30>...>$1"` if [ -n "$KONSOLE_DCOP_SESSION" ] then dcop ${KONSOLE_DCOP_SESSION} renameSession "$CMD" elif [ -n "$KONSOLE_DBUS_SESSION" ] then qdbus ${KONSOLE_DBUS_SERVICE} ${KONSOLE_DBUS_SESSION} setTitle 0 "$CMD" > /dev/null 2>&1 qdbus ${KONSOLE_DBUS_SERVICE} ${KONSOLE_DBUS_SESSION} setTitle 1 "$CMD" > /dev/null 2>&1 fi fi fi } precmd_functions+='konsole-rename-path' preexec_functions+='konsole-rename-cmd' # On changing directory, when in mc (automatically called). mc_chpwd () { if [ -n "$MC_SID" ] then konsole-rename-path fi }