📅 2016-May-06 ⬩ ✍️ Ashwin Nanjappa ⬩ 🏷️ byobu, display, fish, tmux ⬩ 📚 Archive
I use Byobu (which is a wrapper on Tmux) to maintain shell sessions on the many servers I login to. I connect, disconnect and reconnect to the same Tmux sessions on these servers. When I reconnect back to an existing Tmux session, a new value is assigned to the DISPLAY
environment variable. If I create a new Tmux session, by opening a new split or tab, then Tmux sets the new DISPLAY
value correctly for that session. However, existing Tmux sessions have their old DISPLAY
value which gives the familiar cannot open display
error. I can find out the new DISPLAY
value and set it manually in the existing session, but that is cumbersome.
I found a simple solution to this problem. Whenever I SSH to a server, I save the new DISPLAY
assigned to this server in a .display.txt
file in the home directory. For example, this can be done in .bashrc
:
echo $DISPLAY > ~/.display.txt
To pick up the new DISPLAY
value from this file in existing sessions, create a shell alias or function that you can call when you realize that the environment variable is wrong.
For example, for Fish shell, I added a ~/.config/fish/functions/set_display.fish
file with these lines:
function set_display
set --export DISPLAY (cat ~/.display.txt)
end
When I need to update DISPLAY
, I just call set_display
at the shell! 😊
Tried with: Byobu 5.74, Tmux 1.8 and Fish 2.2.0