Tmux

Write Tmux Buffer of a Pane to a File

# get the %d pane number you want, e.g. %0
tmux list-panes
# write tmux buffer of that pane to file
tmux pipe-pane -o -t %0 "cat >> /home/user/out.log"
# stop writing to file
tmux pipe-pane -t %0 ''

Tmux options via https://git.causal.agency/catgirl/tree/scripts/chat.tmux.conf

# use `tmux -L chat -f ./chat.tmux.conf attach-session' (without any other
# options or parameters) to access this session group in its own tmux server,
# not interfering with existing servers/sessions/configurations

new-session -t chat

# catgirl(1) puts windows at the top
set-option -g   -- status-position  top

# intuitive navigation
set-option -g   -- mode-keys    vi
set-option -g   -- mouse    on

# indicate new messages
set-option -g   -- monitor-activity on
set-option -g   -- monitor-bell on

# hardcode names during window creation
set-option -g   -- automatic-rename off
set-option -g   -- allow-rename off
set-option -g   -- set-titles   off
set-option -g   -- renumber-windows on
# for the F1 binding, make hotkeys match window numbers
set-option -g   -- base-index   1


# clients exit on network errors, restart them automatically
# (use `kill-pane'/`C-b x' to destroy windows)
set-option -g   -- remain-on-exit   on
set-hook -g -- pane-died    respawn-pane


# disarm ^C to avoid accidentially losing logs
bind-key -n -N 'confirm INTR key'   -- C-c  \
    confirm-before -p 'Send ^C? (y/N)'  -- 'send-keys   -- C-c'

# one-click version of default `C-b w' (shows preview windows)
bind-key -n -N 'pick chat network'  -- F1   choose-tree -Z

# catgirl(1) might run in `-R'/`restrict'ed mode, i.e. `/help' is disabled
bind-key -n -N 'read catgirl help'  -- F2   \
    new-window -S -n help   -- man -s 1 -- catgirl

# intuitive refresh, just don't spam it ;-)
bind-key -n -N 'reconnect network'  -- F5   \
    confirm-before -p 'reconnect network? (y/N)'    -- 'respawn-pane -k'

# immersive mode ;-)
bind-key -n -N 'toggle fullscreen'  -- F11  set status


# this configuration is idempotent, i.e. reloading it only changes settings
# and never duplicates already existing windows
bind-key -N 'reload configuration'  -- R    {
    source-file -F  -- '#{source_files}'
    display-message -- 'configuration reloaded'
}


## do not double-quote commands to avoid running through "sh -c"

# IRC
new-window -d -S -n hackint -- catgirl  -- defaults hackint
new-window -d -S -n efnet   -- catgirl  -- defaults efnet