summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRenaud (Nel) Morvan <nel@w3fu.com>2011-01-30 08:21:49 +0100
committerRenaud (Nel) Morvan <nel@w3fu.com>2011-01-30 09:19:47 +0100
commitfaac3ba8fcad6ad1742f82a7d508a37c0c70d809 (patch)
tree94feb00ea5aa2305656d8caecdb4d40a667cfaab /lib
parent01b0366f3e27cf30f3882870100f14625fc267d1 (diff)
downloadzsh-faac3ba8fcad6ad1742f82a7d508a37c0c70d809.tar.gz
zsh-faac3ba8fcad6ad1742f82a7d508a37c0c70d809.tar.bz2
zsh-faac3ba8fcad6ad1742f82a7d508a37c0c70d809.zip
Refactor window and tab title in tty
Term window title and tab title are now skinable Tab title can be different from window title (when supported by term) Default theme is optimized of usuability (no %u@%m: $~ in a 10 char tab) Cleanup code duplication and add comment for supported terms On osX it works great on iterm, and is decent once you tweak Terminal pref Tested under GNU screen, iTerm and Apple Terminal, need to be tested on linux TODO implement Konsole support (via dbus)
Diffstat (limited to 'lib')
-rw-r--r--lib/functions.zsh23
-rw-r--r--lib/termsupport.zsh47
2 files changed, 26 insertions, 44 deletions
diff --git a/lib/functions.zsh b/lib/functions.zsh
index 914f2ef25..6f5d015f7 100644
--- a/lib/functions.zsh
+++ b/lib/functions.zsh
@@ -1,26 +1,3 @@
-## fixme, i duplicated this in xterms - oops
-function title {
- if [[ $TERM == "screen" ]]; then
- # Use these two for GNU Screen:
- print -nR $'\033k'$1$'\033'\\\
-
- print -nR $'\033]0;'$2$'\a'
- elif [[ ($TERM =~ "^xterm") ]] || [[ ($TERM == "rxvt") ]]; then
- # Use this one instead for XTerms:
- print -nR $'\033]0;'$*$'\a'
- fi
-}
-
-function precmd {
- title zsh "$PWD"
-}
-
-function preexec {
- emulate -L zsh
- local -a cmd; cmd=(${(z)1})
- title $cmd[1]:t "$cmd[2,-1]"
-}
-
function zsh_stats() {
history | awk '{print $2}' | sort | uniq -c | sort -rn | head
}
diff --git a/lib/termsupport.zsh b/lib/termsupport.zsh
index fef978748..e1e536690 100644
--- a/lib/termsupport.zsh
+++ b/lib/termsupport.zsh
@@ -1,21 +1,26 @@
-case "$TERM" in
- xterm*|rxvt*)
- preexec () {
- print -Pn "\e]0;%n@%m: $1\a" # xterm
- }
- precmd () {
- print -Pn "\e]0;%n@%m: %~\a" # xterm
- }
- ;;
- screen*)
- preexec () {
- local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]}
- echo -ne "\ek$CMD\e\\"
- print -Pn "\e]0;%n@%m: $1\a" # xterm
- }
- precmd () {
- echo -ne "\ekzsh\e\\"
- print -Pn "\e]0;%n@%m: %~\a" # xterm
- }
- ;;
-esac \ No newline at end of file
+#usage: title short_tab_title looooooooooooooooooooooggggggg_windows_title
+#http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#ss3.1
+#Fully support screen, iterm, and probably most modern xterm and rxvt
+#Limited support for Apple Terminal (Terminal can't set window or tab separately)
+function title {
+ if [[ "$TERM" == "screen" ]]; then
+ print -Pn "\ek$1\e\\" #set screen hardstatus, usually truncated at 20 chars
+ elif [[ ($TERM =~ "^xterm") ]] || [[ ($TERM == "rxvt") ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then
+ print -Pn "\e]2;$2\a" #set window name
+ print -Pn "\e]1;$1\a" #set icon (=tab) name (will override window name on broken terminal)
+ fi
+}
+
+ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" #15 char left truncated PWD
+ZSH_THEME_TERM_TITLE_IDLE="%n@%m: %~"
+
+#Appears when you have the prompt
+function precmd {
+ title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE
+}
+
+#Appears at the beginning of (and during) of command execution
+function preexec {
+ local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]} #cmd name only, or if this is sudo or ssh, the next cmd
+ title "$CMD" "%100>...>$2%<<"
+}