diff options
author | William Carroll <wpcarro@gmail.com> | 2019-04-03T16·19+0100 |
---|---|---|
committer | William Carroll <wpcarro@gmail.com> | 2019-04-03T16·19+0100 |
commit | 4c1fbe01f64b18736e499c7600e6a0776c2c3436 (patch) | |
tree | a1fea80254ec65fec703b57c6bb6090af5a23688 /configs | |
parent | 10aef4e40d886473238e81d8f2e2866e3d99f4f4 (diff) |
Fix $DISPLAY issues with Tmux
Ensure that DISPLAY is set correctly so that commands executed in Tmux that require X windows don't disappear.
Diffstat (limited to 'configs')
-rw-r--r-- | configs/shared/zsh/.zshrc | 6 | ||||
-rw-r--r-- | configs/shared/zsh/functions.zsh | 15 |
2 files changed, 21 insertions, 0 deletions
diff --git a/configs/shared/zsh/.zshrc b/configs/shared/zsh/.zshrc index db60e3841059..b4ccd66a16c6 100644 --- a/configs/shared/zsh/.zshrc +++ b/configs/shared/zsh/.zshrc @@ -47,3 +47,9 @@ source "$DOTFILES/configs/shared/zsh/variables.zsh" source "$DOTFILES/configs/shared/zsh/aliases.zsh" source "$DOTFILES/configs/shared/zsh/functions.zsh" source "$DOTFILES/configs/shared/zsh/zle.zsh" + +preexec() { + # `preexec` runs before every command is run. + update_x11_forwarding +} + diff --git a/configs/shared/zsh/functions.zsh b/configs/shared/zsh/functions.zsh index 645426cd9044..c0f6e21e4613 100644 --- a/configs/shared/zsh/functions.zsh +++ b/configs/shared/zsh/functions.zsh @@ -202,6 +202,21 @@ kush() { } # Misc +update_x11_forwarding() { + # Sometime Tmux misbehaves with X11 applications (e.g. Emacs). This is because + # the DISPLAY variable is not set properly to `:0`. This function w + # Cache the DISPLAY when outside of Tmux. When inside of Tmux, use the cached + # value for DISPLAY. + # + # This cooperates with my `preexec` function, which runs before every command. + # Adapted from here: http://alexteichman.com/octo/blog/2014/01/01/x11-forwarding-and-terminal-multiplexers/ + if [ -z "$TMUX" ]; then + echo $DISPLAY > ~/.display.txt + else + export DISPLAY=$(cat ~/.display.txt) + fi +} + monzo_balance() { # Return the balance of my Monzo bank account. Intended to be used in my i3 # status bar. |