You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

33 lines
945 B

#Gain focus
gain_focus(){
export HASFOCUS="true"
set_prompts
zle reset-prompt
}
zle -N gain_focus
bindkey '\033[I' gain_focus # Gain Focus
loose_focus(){
export HASFOCUS="false"
set_prompts
zle reset-prompt
}
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
HASFOCUS="true"