-
-
Save samoshkin/05e65f7f1c9b55d3fc7690b59d678734 to your computer and use it in GitHub Desktop.
bind -T root F12 \ | |
set prefix None \;\ | |
set key-table off \;\ | |
set status-style "fg=$color_status_text,bg=$color_window_off_status_bg" \;\ | |
set window-status-current-format "#[fg=$color_window_off_status_bg,bg=$color_window_off_status_current_bg]$separator_powerline_right#[default] #I:#W# #[fg=$color_window_off_status_current_bg,bg=$color_window_off_status_bg]$separator_powerline_right#[default]" \;\ | |
set window-status-current-style "fg=$color_dark,bold,bg=$color_window_off_status_current_bg" \;\ | |
if -F '#{pane_in_mode}' 'send-keys -X cancel' \;\ | |
refresh-client -S \;\ | |
bind -T off F12 \ | |
set -u prefix \;\ | |
set -u key-table \;\ | |
set -u status-style \;\ | |
set -u window-status-current-style \;\ | |
set -u window-status-current-format \;\ | |
refresh-client -S | |
wg_is_keys_off="#[fg=$color_light,bg=$color_window_off_indicator]#([ $(tmux show-option -qv key-table) = 'off' ] && echo 'OFF')#[default]" | |
set -g status-right "$wg_is_keys_off #{sysstat_cpu} | #{sysstat_mem} | #{sysstat_loadavg} | $wg_user_host" |
I get a "bad style bg= fg=" message when I hit F12 using this. Im a tmux newbie.
I get a "bad style bg= fg=" message when I hit F12 using this. Im a tmux newbie.
You have to define the variables used with something like this :
#Variables
color_status_text="colour245"
color_window_off_status_bg="colour238"
color_light="white" #colour015
color_dark="colour232" # black= colour232
color_window_off_status_current_bg="colour254"
This is amazingly useful. Thank you!
Thank you!
I've been using tmux locally and remotely for a long time but avoiding nesting by opening a special tmuxless terminal window for my remote sessions. All the while wishing there was an elegant solution to "tmuxing while I tmux". This solution is great! such a simple idea. Looking forward to trying it out.
This is the one I have been looking for. Thanks for sharing!
To display the user/host in the status bar, needs the following from the original config:
wg_user_host="#[fg=$color_secondary]#(whoami)#[default]@#H"<br class="Apple-interchange-newline">`
@Delt-A do you need to have a tmux session on every jump to your target network? couldn't you use something like https://www.redhat.com/sysadmin/ssh-proxy-bastion-proxyjump to ssh directly into the target (using the others only as jumps) and then have one tmux session there?
Hi,
I've got 2 sessions - (outer) s1 and inside there is (inner) s2.
When I press F10 (got toggle key bound to F10) on the keyboard it works as expected, but trying to do the same in the script ('tmux send -t s1 F10') disables not the outer, but the innser session (s2 instead of s1).
Here's terminal output:
$ tmux send -t s1 F10 (disables s2)
$ tmux send -t s2 F10 (echoes below)
^[[21~%)
Any ideas how to make it work?
This is a minimal configuration for OFF mode (tmux 3.0a):
# Activate OFF mode
bind -n M-o \
set prefix None \;\
set key-table off \;\
set status-style "fg=colour245,bg=colour238"
# Disable OFF mode
bind -T off M-O \
set -u prefix \;\
set -u key-table \;\
set -u status-style
- setting the status-style is enough for my liking
- removing the client refresh seems to still work just fine for some reason
- using a different keybind to enable and disable OFF mode means you can now technically go arbitrarily deep with the TMUX nesting
This is a minimal configuration for OFF mode (tmux 3.0a):
wow man, this minimal setup is so good. appreciate
Hey all, I just released tmux-nested, a plugin that takes inspiration from this gist to support arbitrary levels of nesting. Check it out, it might be of interest!
Folks interested in a shorter wg_is_keys_off
might be interested in the following:
wg_is_keys_off="#{?#{==:#(tmux show-option -qv key-table),off},#[reverse]OFF,}"
I have 4-time nested tmux session (Because of my work, I have to ssh 3 time to move between networks).
Completely unrelated to tmux, but have you heard of the ProxyJump setting of OpenSSH, @Delt-A ?
For instance, if you have machines named Bastion, Firewall, and Gateway, and Devbox, you set it up ~/.ssh/config
like this:
Host bastion
Hostname bastion.mywork.com
Host firewall
Hostname firewall.lan
ProxyJump bastion
Host gateway
Hostname gateway.inner
ProxyJump bastion,firewall
Host devbox
Hostname devbox.lan
ProxyJump bastion,firewall,gateway
Now you should be able to connect any of these 4 hosts by name, just by typing ssh devbox
or the like. I hope you have key-based authentication, so you won't have to type in your password 4 times. You can also override per-host port numbers or usernames, if needed.
If you need multiple sessions at the target machine, you could use tmux
, or you could do SSH connection multiplexing. To enable, add this to ~/.ssh/config
:
Host *
ControlPath ~/.ssh/%C.sock
ControlMaster auto
ControlPersist 10m
ServerAliveInterval 1
ServerAliveCountMax 3
This plugin might be helpful too, it allows you to suspend the local Tmux session: https://github.com/MunifTanjim/tmux-suspend
This is a minimal configuration for OFF mode (tmux 3.0a):
...
* using a different keybind to enable and disable OFF mode means you can now technically go arbitrarily deep with the TMUX nesting
It may be arbitrary, but it's not unlimited and we have to remember various keys.
Here is the true unlimited nested T-Mux:
### Nested T-Mux
bind-key -T prefix C-\\ \
set-option prefix none \;\
set-option key-table off \;\
set-option status-position top \;\
set-option status-style reverse \;\
if-shell -F '#{pane_in_mode}' 'send-keys -X cancel'
bind-key -T off C-\\ \
set-option key-table on \;\
set-option status-style reverse,blink
bind-key -T on C-\\ \
send-keys C-\\ \;\
set-option key-table off \;\
set-option status-style reverse,noblink
bind-key -T on C-Space \
set-option -u prefix \;\
set-option -u key-table \;\
set-option status-position bottom \;\
set-option -u status-style
I used on
key-table, but it's actually pre-on
, but it's just too long.
To send the get-out
key (Ctrl+) to child T-Mux, just repeat it, and so on. So once the child T-Mux also enter the on
key-table, now you have to press Ctrl+\
4x to send it to the grand-child T-Mux. It can be laborious, however it can be unlimited and the status indicator hopefully help us point out which T-Mux sessions are in the on
key-table.
The only caveats if you actually have local T-Mux of the same users nested (by hacking it via TMUX= tmux
) as in this case you will create a new session of T-Mux (connected to the same server). In this case, the set-option key-table ...
from any T-Mux sessions connected to the same server will affect their siblings in such whoever in the prefix
mode will reset back to root
. This may be T-Mux bug or unintended consequences as the command should only effect the "current" session, i.e. no -g
option is given.
If different users start the T-Mux, then it's fine as each user will have their own T-Mux server. If you must do locally nested T-Mux with the same user, then you need to force it to start a different server, via -L
or -S
option.
As an FYI, if you're on Ubuntu 16.04 (possibly only the mate desktop?) a terminal emulator called tilda uses the F12 key and intercepts it before tmux can.