Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
subjects:administration:tmux [2023/05/04 17:38] ¶ [tmux] |
subjects:administration:tmux [2025/04/24 19:06] (текущий) ¶ |
||
---|---|---|---|
Строка 7: | Строка 7: | ||
* __habr.com/post/516488__ | * __habr.com/post/516488__ | ||
* __github.com/samoshkin/tmux-config__ | * __github.com/samoshkin/tmux-config__ | ||
+ | * __github.com/aleclearmind/nested-tmux__ | ||
+ | * __stackoverflow.com/questions/35016458/how-to-write-if-statement-in-tmux-conf-to-set-different-options-for-different-t__ | ||
+ | * __github.com/r4ven-me/dots/tree/main/.config/tmux__ --- чужой конфиг | ||
+ | * __wiki.archlinux.org/title/Tmux__ :!: | ||
+ | * __stahlke.org/dan/tmux-nested__ | ||
* **The Tao of tmux** by //Tony Narlock//: | * **The Tao of tmux** by //Tony Narlock//: | ||
* __tao-of-tmux.readthedocs.io/en/latest__ | * __tao-of-tmux.readthedocs.io/en/latest__ | ||
Строка 36: | Строка 41: | ||
|''Ctrl+d''|отключение| | |''Ctrl+d''|отключение| | ||
- | ==== Choosing sessions, windows and panes ==== | + | ==== Закрыть ==== |
+ | |||
+ | - Войти в режим выбора: ''Ctrl+b'' ''w'' или ''Ctrl+b'' ''s''. | ||
+ | - Выбрать стрелочками. | ||
+ | - Запросить принудительное закрытие: ''Ctrl+b'' ''Ctrl+x''. | ||
+ | - Согласиться. | ||
+ | |||
+ | ++++ ☛ [EN] sessions, windows, panes and Detaching| | ||
+ | |||
+ | === Choosing sessions, windows and panes === | ||
There are two key bindings to enter tree mode: | There are two key bindings to enter tree mode: | ||
* ''Ctrl+b'' ''s'' starts showing only sessions and with the attached session selected; | * ''Ctrl+b'' ''s'' starts showing only sessions and with the attached session selected; | ||
Строка 66: | Строка 80: | ||
- | ==== Detaching other clients ==== | + | === Detaching other clients === |
:!: Принудительный разрыв соединений **других** клиентов: \\ | :!: Принудительный разрыв соединений **других** клиентов: \\ | ||
''Ctrl+b'' ''Shift+d'' → стрелками выбрать →''Enter''. | ''Ctrl+b'' ''Shift+d'' → стрелками выбрать →''Enter''. | ||
Строка 81: | Строка 95: | ||
Other than using client mode, the ''detach-client'' command has a ''-a'' flag to detach all clients other than the attached client. | Other than using client mode, the ''detach-client'' command has a ''-a'' flag to detach all clients other than the attached client. | ||
+ | |||
+ | |||
+ | ++++ | ||
==== Другое ==== | ==== Другое ==== | ||
Строка 125: | Строка 142: | ||
==== Автозапуск ==== | ==== Автозапуск ==== | ||
Чтобы автоматически запускать ''tmux'', отредактируйте ''~./bashrc''. | Чтобы автоматически запускать ''tmux'', отредактируйте ''~./bashrc''. | ||
- | |||
- | === Расшифровка условий === | ||
- | |||
- | * ''[ -z "$TMUX" ]'' --- если сессия ''tmux'' | ||
- | * ''[ -n "$SSH_TTY" ]'' --- если ''SSH'' | ||
- | * ''[ "$EUID" -ne 0 ]'' --- если **не** ''root''. | ||
- | * ''[ $- =~ i ]'' -- test for interactive terminal to allow tools like Ansible to work. | ||
- | |||
- | === Автозапуск на сервере === | ||
- | Для запуска ''tmux'' на удаленном сервере при входе в систему через **SSH** (''и только **SSH**''): | ||
- | <code bash>if [ -z "$TMUX" ] && [ -n "$SSH_TTY" ] && [ $- =~ i ]; then | ||
- | tmux attach-session -t ssh || tmux new-session -s ssh | ||
- | exit | ||
- | fi</code> | ||
- | Необходимо проверять ''$SSH_TTY'' вместо ''$SSH_CONNECTION'', что бы работал ''SFTP''. | ||
- | |||
- | === Автозапуск на Desktop === | ||
- | При любом входе: | ||
- | <code bash>if [ -z "$TMUX" ] && [ "$EUID" -ne 0 ] && [ $- =~ i ]; then | ||
- | tmux attach-session -t default || tmux new-session -s default | ||
- | exit | ||
- | fi</code> | ||
=== Автозапуск на Linux (универсальный) === | === Автозапуск на Linux (универсальный) === | ||
Строка 154: | Строка 149: | ||
if [[ $- =~ i ]] && [[ -z "$TMUX" ]] && [[ -n "$SSH_TTY" ]]; then # SSH | if [[ $- =~ i ]] && [[ -z "$TMUX" ]] && [[ -n "$SSH_TTY" ]]; then # SSH | ||
- | TMUX_SESSION="ssh $P_NAME" | + | TMUX_SESSION="$P_NAME" |
- | tmux attach-session -t $TMUX_SESSION || tmux new-session -s $TMUX_SESSION && exit | + | tmux attach-session -t "$TMUX_SESSION" || tmux new-session -s "$TMUX_SESSION" || tmux || vim && exit |
elif [[ $- =~ i ]] && [[ -z "$TMUX" ]] && [[ "$EUID" -ne 0 ]]; then # not root | elif [[ $- =~ i ]] && [[ -z "$TMUX" ]] && [[ "$EUID" -ne 0 ]]; then # not root | ||
TMUX_SESSION="$P_NAME" | TMUX_SESSION="$P_NAME" | ||
#tmux at || tmux && exit | #tmux at || tmux && exit | ||
- | tmux attach-session -t $TMUX_SESSION || tmux new-session -s "$TMUX_SESSION" && exit | + | tmux attach-session -t "$TMUX_SESSION" || tmux new-session -s "$TMUX_SESSION" || tmux || vim && exit |
fi | fi | ||
[[ -n "$TMUX" ]] && tmux ls # Вывод списка сессий | [[ -n "$TMUX" ]] && tmux ls # Вывод списка сессий | ||
################################################################################</code> | ################################################################################</code> | ||
+ | == Расшифровка условий == | ||
+ | * ''[ -z "$TMUX" ]'' --- если сессия ''tmux'' | ||
+ | * ''[ -n "$SSH_TTY" ]'' --- если ''SSH'' | ||
+ | * ''[ "$EUID" -ne 0 ]'' --- если **не** ''root''. | ||
+ | * ''[ $- =~ i ]'' -- test for interactive terminal to allow tools like Ansible to work. | ||
+ | Для запуска ''tmux'' на удаленном сервере при входе в систему через **SSH** (''и только **SSH**''): | ||
+ | Необходимо проверять ''$SSH_TTY'' вместо ''$SSH_CONNECTION'', что бы работал ''SFTP''. | ||
===== Конфигурация ===== | ===== Конфигурация ===== | ||
''~/.tmux.conf'' | ''~/.tmux.conf'' | ||
Строка 182: | Строка 184: | ||
==== Пример конфигурации ==== | ==== Пример конфигурации ==== | ||
+ | **Нюанс конфигурации** --- префих по-умолчанию стандартный: ''C-b'' (''Ctrl+b''), но если определяется, что работа идёт через SSH (''$SSH_CLIENT''), то префикс меняется на ''C-a'' (''Ctrl+a''), также меняется цвет статусбара и справа проступает надпись ''C-a''. | ||
+ | |||
+ | Проверено на tmux 1.8 и tmux 2.1 . | ||
+ | |||
<file bash .tmux.conf> | <file bash .tmux.conf> | ||
+ | ############################################################################### | ||
+ | ## (Re) Bind keys | ||
+ | # Reload tmux config | ||
+ | bind r source-file ~/.tmux.conf | ||
+ | ############################################################################### | ||
+ | |||
+ | ############################################################################### | ||
# Automatically set window title | # Automatically set window title | ||
set-window-option -g automatic-rename on | set-window-option -g automatic-rename on | ||
set-option -g set-titles on | set-option -g set-titles on | ||
+ | # | ||
+ | set-option -g allow-rename off # prevent window-status-format show very long path | ||
+ | set-option -g automatic-rename on | ||
+ | set-window-option -g automatic-rename on # rename window to reflect current program | ||
+ | ############################################################################### | ||
## set the default TERM | ## set the default TERM | ||
#set -g default-terminal "xterm" | #set -g default-terminal "xterm" | ||
Строка 193: | Строка 210: | ||
set -g terminal-overrides 'xterm*:smcup@:rmcup@' | set -g terminal-overrides 'xterm*:smcup@:rmcup@' | ||
set -g history-limit 10000 | set -g history-limit 10000 | ||
+ | # | ||
+ | #~ set-option -g default-command bash | ||
+ | set-option -g default-command bash | ||
+ | # | ||
+ | set -g display-time 1500 # Время в миллисекундах, сколько будут отображаться сообщения (в статусбаре к примеру) | ||
+ | # | ||
+ | setw -g monitor-activity on | ||
+ | ############################################################################### | ||
# If either of the VISUAL or EDITOR environment variables are set to something containing vi (such as vi, vim, nvi) when the tmux server is first started, both of these options are set to vi. | # If either of the VISUAL or EDITOR environment variables are set to something containing vi (such as vi, vim, nvi) when the tmux server is first started, both of these options are set to vi. | ||
set -g status-keys vi | set -g status-keys vi | ||
set -g mode-keys vi | set -g mode-keys vi | ||
setw -g mode-keys vi | setw -g mode-keys vi | ||
- | + | ############################################################################### | |
- | # Мышь | + | ## Мышь |
- | # До версии 2.1 | + | ## tmux 1.8 |
#set -g mouse-resize-pane on | #set -g mouse-resize-pane on | ||
#set -g mouse-select-pane on | #set -g mouse-select-pane on | ||
#set -g mouse-select-window on | #set -g mouse-select-window on | ||
#set -g mode-mouse on | #set -g mode-mouse on | ||
- | # С версии 2.1 | + | ## С версии 2.1 |
#setw -g mouse on | #setw -g mouse on | ||
set -g mouse on | set -g mouse on | ||
- | # | + | ############################################################################### |
- | setw -g monitor-activity on | + | |
- | + | ||
- | # Reload tmux config | + | |
- | bind r source-file ~/.tmux.conf | + | |
- | + | ||
- | # | + | |
- | set-option -g allow-rename off # prevent window-status-format show very long path | + | |
- | set-option -g automatic-rename on | + | |
- | set-window-option -g automatic-rename on # rename window to reflect current program | + | |
- | set-option -g default-command bash | + | |
- | + | ||
- | # | + | |
- | set -g display-time 1500 # Время в миллисекундах, сколько будут отображаться сообщения (в статусбаре к примеру) | + | |
- | + | ||
- | # THEME | + | |
- | # The colors available to tmux are: | + | ############################################################################### |
+ | ## THEME - help | ||
+ | ############################################################################### | ||
+ | # https://github.com/jimeh/tmux-themepack | ||
+ | ############################################################################### | ||
+ | ## The colors available to tmux are: | ||
# * black, red, green, yellow, blue, magenta, cyan, white. | # * black, red, green, yellow, blue, magenta, cyan, white. | ||
# * bright colors, such as brightred, brightgreen, brightyellow, brightblue, brightmagenta, brightcyan. | # * bright colors, such as brightred, brightgreen, brightyellow, brightblue, brightmagenta, brightcyan. | ||
Строка 233: | Строка 247: | ||
# | # | ||
# You can use [bg=color] and [fg=color] to adjust the text color and background within for status line text. This works on status-left and status-right. | # You can use [bg=color] and [fg=color] to adjust the text color and background within for status line text. This works on status-left and status-right. | ||
+ | # Мои примечания: Для лучшей совместимости рекомендую использовать только основные 7 цветов, причём светлым по тёмному (желательно чёрному). | ||
+ | # Для поддержки прозрачности термиинала, необходимо использовать bg=default | ||
+ | ############################################################################### | ||
+ | ## Задание опций | ||
+ | # Глобальное: | ||
+ | # set -g [имя] [значение] | ||
+ | # Для окна - следующие две строчки равнозначны: | ||
+ | # set-window-option -g window-* [зачение] | ||
+ | # set -gw window-* [зачение] | ||
+ | # Разобраться: помимо опций "g" и "w" есть "o" (кэширование?), "q" (значение?), "F" (распарсить q?) примеры: -goq; -gqF; -goqF; -gwF; | ||
+ | # set, setw, set-option, set-window-option | ||
+ | ############################################################################### | ||
+ | ## Перечень основных элементов: | ||
+ | #g display-panes-active-colour display-panes-colour | ||
+ | #g message-command-style message-style | ||
+ | #set -g status-utf8 on # tmux 1.8 | ||
+ | #g status [on/off] status-interval [int] status-position [top/bottom] status-justify [centre] status-style | ||
+ | #g status-left status-left-length [int] status-left-style | ||
+ | #g status-right status-right-length [int] status-right-style | ||
+ | #gw clock-mode-colour clock-mode-style [24] | ||
+ | #gw mode-style | ||
+ | #gw pane-active-border-style pane-border-style | ||
+ | #gw ?? window-status-activity-style window-status-style | ||
+ | #gw window-status-current-style window-status-current-format ["#I:#W#F"] window-status-format ["#I:#W#F"] window-status-separator | ||
+ | ## Примечания: | ||
+ | # Простые значения "-g" пишутся одним словом без ковычек. | ||
+ | # У всего, что заканчивается на "*-style" и не только есть возможность его расписать цвета как 3 компонента: "*-fg"; "*-bg"; "*-attr" (dim, bright). Ну или как строку: "fg=[color], bg=[color], [attr]". При этом, опции "*-style" нет в tmux 1.8. | ||
+ | # "*-length" означает не строго длину, а максимальную длину, int. | ||
+ | ############################################################################### | ||
+ | ## Пред-установленные значения, внутри кавычек, перед символ # | ||
+ | # status | ||
+ | # "#S" "#I" "#P" "#H" "%H:%M:%S" "%d-%b-%y" | ||
+ | # window-status | ||
+ | # "#I:#W#F" "#I:#W#F" | ||
+ | # Вызов значения из bash: | ||
+ | # '#(cut -d " " -f 1-3 /proc/loadavg)' '#(tmux ls|wc -l)' | ||
+ | ############################################################################### | ||
+ | |||
+ | ############################################################################### | ||
+ | # THEME | ||
+ | ############################################################################### | ||
+ | ## Предустановки: | ||
# Настройки стутусбара | # Настройки стутусбара | ||
- | #set -g status-utf8 on | + | #set -g status-utf8 on # tmux 1.8 |
set -g status on | set -g status on | ||
- | set -g status-interval 30 | + | set -g status-interval 3 # sec |
- | set -g status-position bottom # Позиция стутусбара | + | set -g status-position bottom |
+ | set -g status-justify centre | ||
+ | set -g status-bg default # tmux 1.8-2.1 | ||
- | # Цвета статусбара | + | #~ set -g status-left "#[bg=yellow,fg=black]#S#[fg=black,bg=white]#(tmux ls|wc -l)#[default] #[fg=green]#(whoami)#[fg=yellow]@#[fg=green]#H#[default]┇#I:#P┇" |
- | set -g status-fg white | + | #~ set -g status-left "#[fg=yellow,bg=default]#S#[fg=black,bg=white]#(tmux ls|wc -l)#[default] #[fg=green]#(whoami)#[fg=yellow]@#[fg=green]#H#[fg=white]┇#I:#P┇#[default]" |
- | set -g status-bg default | + | set -g status-left "#[fg=yellow,bg=default]#S#[fg=black,bg=white]#(tmux ls|wc -l)#[default] #[fg=green]#(whoami)#[fg=yellow]@#[fg=green]#H#[fg=white]┇#I:#P┇#[default]" |
- | + | ||
- | # | + | |
set -g status-left-length 40 # max-size | set -g status-left-length 40 # max-size | ||
- | set -g status-left-fg yellow | + | set -g status-left-bg black |
- | set -g status-left-bg default | + | |
- | #set -g status-left '(#S) #[fg=green]#(whoami)#[fg=yellow]@#[fg=green]#H ' | + | |
- | #set -g status-left '(#S)#[fg=white]:#[fg=red]#(tmux ls|wc -l)#[default] #[fg=green]#(whoami)#[fg=yellow]@#[fg=green]#H#[default]┇' | + | |
- | set -g status-left '#[bg=yellow,fg=black]#S#[fg=red,bg=white]#(tmux ls|wc -l)#[default] #[fg=green]#(whoami)#[fg=yellow]@#[fg=green]#H#[default]┇' | + | |
- | # | + | |
- | set -g status-right-length 30 # max-size | + | |
- | set -g status-right-fg green | + | |
- | set -g status-right-bg default | + | |
- | # set -g status-right ' #(cut -d " " -f 1-3 /proc/loadavg)#[default] #[fg=yellow]%H:%M#[default] ' | + | |
- | set -g status-right '#[fg=yellow]┇#[default]#(cut -d " " -f 1-3 /proc/loadavg)#[default]#[fg=black,bg=white,dim]%H:%M#[default]' | + | |
- | # Цвета активных окон | + | #~ set -g status-right "#[default]┇#[fg=yellow]#(cut -d ' ' -f 1-3 /proc/loadavg)#[default] #[fg=black,bg=white,dim]%H:%M#[default]" |
- | set-window-option -g window-status-current-fg black | + | #~ set -g status-right "#[fg=white]┇#[fg=green]#(cut -d ' ' -f 1-3 /proc/loadavg)#[default] #[fg=yellow,bg=default]%H:%M#[default]" |
- | set-window-option -g window-status-current-bg brightyellow | + | set -g status-right "#[fg=white]┇#[fg=default]C-a┇#[fg=green]#(cut -d ' ' -f 1-3 /proc/loadavg)#[default] #[fg=yellow,bg=black]%H:%M#[default]" |
- | set-window-option -g window-status-current-attr bright | + | set -g status-right-length 40 # max-size |
+ | set -g status-right-bg black | ||
- | # Цвета заголовков окон - ГЛЮЧИТ | + | set -gw window-status-activity-fg black # tmux 1.8-2.1 |
- | set-window-option -g window-status-fg blue | + | set -gw window-status-activity-bg white # tmux 1.8-2.1 |
- | set-window-option -g window-status-bg white | + | set -gw window-status-fg green # tmux 1.8-2.1 |
- | set-window-option -g window-status-attr dim | + | set -gw window-status-bg white # tmux 1.8-2.1 |
+ | set -gw window-status-current-fg white # tmux 1.8-2.1 | ||
+ | set -gw window-status-current-bg green # tmux 1.8-2.1 | ||
+ | set -gw window-status-current-attr bright # tmux 1.8-2.1 | ||
+ | set -gw window-status-separator "┇" | ||
+ | ############################################################################### | ||
+ | ## local and remote sessions | ||
+ | # if-shell "shell_command" "true" "false" | ||
+ | if-shell "test -n '$SSH_CLIENT'" \ | ||
+ | "set -g status-bg blue; set -g status-left-bg blue; set -g status-left-attr bright; set -g status-right-bg white; set -g status-right-fg brightred; set -g status-right-attr dim; unbind C-b; set -g prefix C-a; bind C-a send-prefix;" # Ctrl+a for Remote session, Ctrl+b (default) for local | ||
+ | ############################################################################### | ||
- | # Цвета командной строки | ||
- | set -g message-fg default | ||
- | set -g message-bg default | ||
- | set -g message-attr bright | ||
- | # | ||
</file> | </file> |