|
|
@ -1,11 +1,11 @@ |
|
|
|
#Gain focus |
|
|
|
#Gain focus |
|
|
|
|
|
|
|
|
|
|
|
gain_focus(){ |
|
|
|
gain_focus(){ |
|
|
|
export HASFOCUS="true" |
|
|
|
export HASFOCUS="true" |
|
|
|
set_prompts |
|
|
|
set_prompts |
|
|
|
zle reset-prompt |
|
|
|
zle reset-prompt |
|
|
|
} |
|
|
|
} |
|
|
|
zle -N gain_focus |
|
|
|
zle -N gain_focus |
|
|
|
|
|
|
|
bindkey '\033[I' gain_focus # Gain Focus |
|
|
|
|
|
|
|
|
|
|
|
loose_focus(){ |
|
|
|
loose_focus(){ |
|
|
|
export HASFOCUS="false" |
|
|
|
export HASFOCUS="false" |
|
|
@ -13,10 +13,21 @@ loose_focus(){ |
|
|
|
zle reset-prompt |
|
|
|
zle reset-prompt |
|
|
|
} |
|
|
|
} |
|
|
|
zle -N loose_focus |
|
|
|
zle -N loose_focus |
|
|
|
|
|
|
|
bindkey '\033[O' loose_focus # Loose Focus |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Stop terminal from sending focus events before a process runs |
|
|
|
|
|
|
|
# This eliviates the issue of getting weird characters when a read (or similar) prompt is visible |
|
|
|
|
|
|
|
dont_listen_for_focus(){ |
|
|
|
|
|
|
|
printf '\033[?1004l' |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
add-zsh-hook preexec dont_listen_for_focus |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Make the terminal send focus events again when the prompt is being drawn |
|
|
|
|
|
|
|
# This almost works, although, if a long running process finishes in the background, that terminal will still look like it has focus |
|
|
|
|
|
|
|
listen_for_focus(){ |
|
|
|
|
|
|
|
# This makes sc (and maybe other terminals?) send escape codes to the shell when focus is gained / lost |
|
|
|
|
|
|
|
printf '\033[?1004h' |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
add-zsh-hook precmd listen_for_focus |
|
|
|
|
|
|
|
|
|
|
|
# This makes sc (and maybe other terminals?) send escape codes to the shell when focus is gained / lost |
|
|
|
|
|
|
|
printf '\033[?1004h' |
|
|
|
|
|
|
|
bindkey '\033[I' gain_focus # Gain Focus |
|
|
|
|
|
|
|
bindkey '\033[O' loose_focus # Loose Focus |
|
|
|
|
|
|
|
HASFOCUS="true" |
|
|
|
HASFOCUS="true" |
|
|
|