- ~/.tmux.conf and ~/.tmux.conf.local
- $XDG_CONFIG_HOME/tmux/tmux.conf and $XDG_CONFIG_HOME/tmux/tmux.conf.local
- ~/.config/tmux/tmux.conf and ~/.config/tmux/tmux.conf.local
location of configuration files is determined by the following environment variables:
- TMUX_CONF
- TMUX_CONF_LOCAL
the TMUX_PROGRAM environment variable contains the path to the tmux executable
resolves#200, resolves#221, resolves#439, resolves#586, resolves#624
do not try to ignore the command if supplied
parsing the ssh command line is brittle and people sometimes pass
options after user@hostname, e.g.
ssh -p 222 user@hostname -I /usr/lib/x86_64-linux-gnu/pkcs11/opensc-pkcs11.so
on macOS, here are the steps to install tmux-256color system wide
$ $(brew --prefix ncurses)/bin/infocmp tmux-256color > /tmp/tmux-256color.info
$ /usr/bin/tic -x /tmp/tmux-256color.info
which will install tmux-256color in ~/.terminfo/74/tmux-256color
resolves#530, resolves#592, resolves#601
${EDITOR//gvim/vim} and ${EDITOR//mvim/vim} have been introduced to fix#416,
however the replace all substitution is not POSIX and is not supported by termux
or dash
the proper fix for #416 is to set EDITOR to 'gvim -f' or 'mvim -f'
inspired by css, any set/bind/unbind command ending with #!important will be
executed honored, e.g.:
bind-key -T copy-mode-vi Escape send-keys -X clear-selection #!important
you can set the following variables to 'disabled':
- tmux_conf_new_window_retain_current_path
- tmux_conf_new_pane_retain_current_path
- tmux_conf_new_pane_reconnect_ssh
- tmux_conf_new_session_prompt
- tmux_conf_copy_to_os_clipboard
considering the first child of a process
ps output is sorted by controlling terminal then pid
in case of a cmd1 | cmd2 | cmd3 pipe chain, we only consider the first child of
the parent process, which is cmd1 in the majority of cases
the rare situation when pids wrap around isn't worth additional work
on Linux
- we sort ps output by lstart in hope precision is enough to make cmd1 always
appear first even when pids wrap around
- the more complex solution involves inspecting /proc/<pid>/fd/0 to filter out
processes being piped to
finally, while lsof was promising, it won't list processes owned by other users
unless run as root
- renamed _tty_info() to _pane_info()
- pass both #{pane_pid} and #{pane_tty} to _pane_info()
- when inspecting ps output, walk down from #{pane_pid} to the child-most pid
it appears the Falcon anti-malware product for end-points slows down ps -t /dev/ttysXXX
commands 🤷
the workaround consists in passing ttysXXX instead of /dev/ttysXXX and is achieved
by removing the /dev/ prefix in #{pane_tty} expansion with the help of formats
substitutions
- automatically delete tpm when not used
- automatically delete unused plugins
- install plugins when subsequently enabling then in ~/.tmux.conf.local
- use <prefix> + u to update plugins as <prefix> + U is bound to Urlview, fixes#507