Skip to content

Instantly share code, notes, and snippets.

@samoshkin
Last active June 8, 2024 23:04
Show Gist options
  • Save samoshkin/05e65f7f1c9b55d3fc7690b59d678734 to your computer and use it in GitHub Desktop.
Save samoshkin/05e65f7f1c9b55d3fc7690b59d678734 to your computer and use it in GitHub Desktop.
tmux.conf excerpt to toggle on/off session keybindings and prefix handling
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"
@Jakob-Koschel
Copy link

@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?

@fidodido48
Copy link

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?

@niqodea
Copy link

niqodea commented Jul 2, 2023

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

@phuntik
Copy link

phuntik commented Sep 30, 2023

@niqodea

This is a minimal configuration for OFF mode (tmux 3.0a):

wow man, this minimal setup is so good. appreciate

@niqodea
Copy link

niqodea commented Dec 9, 2023

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!

@afh
Copy link

afh commented Jun 8, 2024

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,}"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment