Продолжение темы: пользовательская конфигурация tmux (адаптировано под Fedora 40+)
Ниже приведён адаптированный вариант рабочей конфигурации tmux, протестированный на Fedora 40 (tmux 3.3a/3.4).
Файл сохраняет оригинальную структуру и стиль, но приведён к современным синтаксическим требованиям.
Код: Выделить всё
# ----------------------------------------------
# TMUX конфигурация (Fedora 40+, tmux 3.3–3.4)
# Версия 2 (адаптация оригинала)
# ----------------------------------------------
# Режим клавиш emacs
set -gw mode-keys emacs
set -g status-keys emacs
# Поддержка UTF-8
set -g utf8 on
# Управление экраном
setw -g alternate-screen on
set -s escape-time 50
# Время отображения сообщений
set -g display-time 2000
set -g display-panes-time 3000
set -g repeat-time 0
# История
set -g history-limit 10000
# ----------------------------------------------
# Статус-бар
# ----------------------------------------------
set -g status-justify centre
set -g status-style bg=black,fg=cyan
set -g status-interval 5
set -g status-left-length 30
set -g status-right-length 30
set -g status-left '#[fg=magenta]Name Session:#S'
set -g status-right '#[fg=magenta]#(cut -d " " -f 1-3 /proc/loadavg)#[default]'
setw -g monitor-activity on
set -g window-status-current-style bg=green,fg=black,bold
set -g window-status-style fg=colour243
set -g pane-border-style fg=green
set -g pane-active-border-style fg=green
# Заголовки окон
set -g set-titles on
set -g set-titles-string '#S:#I.#P #W'
setw -g automatic-rename on
# Тип терминала
set -g terminal-overrides 'xterm*:smcup@:rmcup@'
set -g default-terminal "xterm-256color"
set -sg escape-time 0
# Часы
setw -g clock-mode-colour cyan
setw -g clock-mode-style 24
# Мониторинг активности
setw -g monitor-activity on
set -g visual-activity on
set -g visual-bell off
# Оформление сообщений
setw -g mode-style bg=magenta,fg=black
set -g message-style bg=magenta,fg=black
# Индексация окон и панелей с 1
set -g base-index 1
setw -g pane-base-index 1
# ----------------------------------------------
# Управление мышью и префиксом
# ----------------------------------------------
unbind %
unbind '"'
unbind x
unbind C-o
unbind k
unbind j
unbind h
unbind l
# Префикс на клавишу `
set -g prefix `
bind ` send-prefix
# Включение мыши
bind m \
set -g mouse on \;\
display 'Mouse: ON'
# Отключение мыши
bind M \
set -g mouse off \;\
display 'Mouse: OFF'
# ----------------------------------------------
# Управление окнами и панелями
# ----------------------------------------------
# Зум панели
bind + \
new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \;\
swap-pane -s tmux-zoom.0 \;\
select-window -t tmux-zoom
# Восстановление
bind - \
last-window \;\
swap-pane -s tmux-zoom.0 \;\
kill-window -t tmux-zoom
# Перечитать конфиг
unbind R
bind R source-file ~/.tmux.conf \; display-message "~/.tmux.conf reloaded"
# Быстрое редактирование конфига
bind E split-window -h "emacs ~/.tmux.conf"
# Управление окнами и панелями
bind H split-window -v
bind V split-window -h
bind a send-keys `
bind X kill-pane
bind K confirm-before kill-window
bind N rotate-window -U
bind P rotate-window -D
bind L clear-history
# Переключение между панелями Alt + стрелки
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# Переключение окон Shift + стрелки
bind -n S-Left previous-window
bind -n S-Right next-window
# Обмен панелями
bind F swap-pane -U
bind D swap-pane -D
# Двойное нажатие префикса — переход к последнему окну
bind ` last-window
Изменения и примечания:
- Опции status-bg, status-fg, pane-border-fg заменены на status-style и pane-border-style (новый синтаксис tmux ≥3.2).
- Удалён устаревший параметр status-utf8 — теперь UTF-8 включён по умолчанию.
- Добавлены объединённые конструкции и
- Обновлён синтаксиси(вместо старых)
- Конфигурация полностью совместима с tmux 3.3a и 3.4.
Заключение
Конфигурация обеспечивает удобный режим работы, поддержку мыши, быструю навигацию между окнами и панелями, а также оптимизирована под новые версии Fedora.
Если tmux используется для постоянных SSH-сессий, рекомендуется добавить автоматический запуск tmux при входе в систему (см. первый блок темы).
Продолжение темы: автоматический запуск и организация tmux-сессий
SSH и локальные сценарии Fedora
tmux можно запускать автоматически при подключении по SSH или при входе в систему локально.
Ниже представлены два проверенных варианта, которые можно комбинировать в зависимости от задач.
1. Автозапуск tmux при входе по SSH
Для удалённого администрирования удобно, когда tmux автоматически подключается при входе на сервер.
Добавьте следующую функцию в
~/.bash_profile или
~/.bashrc:
Код: Выделить всё
function TMUX_CONNECTION() {
if [[ -z "$TMUX" ]] && [[ -n "$SSH_CONNECTION" ]]; then
WHOAMI=$(whoami)
if tmux has-session -t $WHOAMI 2>/dev/null; then
tmux attach-session -t $WHOAMI
else
tmux new-session -s $WHOAMI -d
fi
fi
}
TMUX_CONNECTION
Что делает функция:
- Проверяет, запущен ли tmux (чтобы не создавать вложенные сессии).
- Активируется только при SSH-подключении.
- Использует имя пользователя как имя tmux-сессии.
- При наличии сессии — подключается к ней, иначе создаёт новую.
Такое решение удобно для серверов Fedora — при каждом входе вы автоматически попадаете в свою tmux-сессию,
которая сохраняет состояние окон и процессов между подключениями.
2. Расширенный автозапуск рабочих окон
Для постоянной работы в консоли можно использовать отдельный скрипт, который создаёт несколько окон и панелей.
Создайте файл
~/bin/tmux-start.sh:
Код: Выделить всё
#!/bin/bash
# -----------------------------------------
# Автозапуск tmux-сессии с рабочими окнами
# Fedora 40+
# -----------------------------------------
SESSION="main"
# Проверяем наличие сессии
tmux has-session -t $SESSION 2>/dev/null
if [ $? != 0 ]; then
echo "Создание новой сессии: $SESSION"
tmux new-session -d -s $SESSION -n sys
# Окно 1 — системное (мониторинг)
tmux send-keys -t $SESSION:sys 'htop' C-m
# Окно 2 — логи
tmux new-window -t $SESSION -n logs
tmux send-keys -t $SESSION:logs 'cd /var/log && sudo tail -f messages' C-m
# Окно 3 — обновления
tmux new-window -t $SESSION -n update
tmux send-keys -t $SESSION:update 'sudo dnf upgrade -y' C-m
# Окно 4 — рабочее (пользователь / root)
tmux new-window -t $SESSION -n work
tmux split-window -h -t $SESSION:work
tmux send-keys -t $SESSION:work.0 'cd ~ && ls' C-m
tmux send-keys -t $SESSION:work.1 'sudo -s' C-m
tmux select-window -t $SESSION:work
fi
# Подключаемся
tmux attach -t $SESSION
Сделайте его исполняемым:
При необходимости можно добавить вызов в
~/.bash_profile:
Код: Выделить всё
[[ $- != *i* ]] && return
[ -z "$TMUX" ] && exec ~/bin/tmux-start.sh
Теперь при каждом входе создаётся стандартное рабочее окружение с несколькими окнами.
3. Пример структуры рабочих окон
| Окно |
Назначение |
| sys |
Мониторинг (htop, iostat, free) |
| logs |
Просмотр системных логов |
| update |
Обновление пакетов Fedora |
| work |
Рабочая зона (пользователь и root) |
Заключение
Минимальный вариант
TMUX_CONNECTION() идеально подходит для SSH-сессий,
а скрипт
tmux-start.sh — для полноценного постоянного окружения администратора.
Оба способа совместимы и могут использоваться одновременно:
функция — для быстрого входа, скрипт — для сборки рабочей среды.