mirror of
https://github.com/prdlk/dotfiles.git
synced 2026-11-02 11:32:42 +00:00
135 lines
6.3 KiB
Plaintext
135 lines
6.3 KiB
Plaintext
# Font Configuration
|
||
font_size 11
|
||
font_family VictorMono Nerd Font
|
||
bold_italic_font auto
|
||
shell_integration enabled
|
||
# Control
|
||
allow_remote_control yes
|
||
listen_on unix:@mykitty
|
||
# Shell — every kitty OS window attaches to the shared tmux session
|
||
shell tmux new-session -A -s main
|
||
# Window Configuration
|
||
window_padding_width 12
|
||
background_opacity 0.9
|
||
hide_window_decorations yes
|
||
# Layouts now handled by tmux; keep fat available for any non-tmux use
|
||
enabled_layouts fat:bias=75;full_size=1;mirrored=false
|
||
# Cursor Configuration
|
||
cursor_blink_interval 1
|
||
# Scrollback (tmux owns scrollback in-session; this covers anything outside it)
|
||
scrollback_lines 3000
|
||
# Terminal features
|
||
copy_on_select auto
|
||
strip_trailing_spaces smart
|
||
# ── Key bindings → forwarded to tmux (prefix C-b = \x02) ────────────────
|
||
# send_text triggers the exact bind-keys in tmux.conf, in-session.
|
||
# Panes (kitty "windows" → tmux panes)
|
||
map super+w send_text all \x02x
|
||
map super+t send_text all \x02%
|
||
map super+n send_text all \x02"
|
||
# Clipboard (kitty-native)
|
||
map super+c copy_to_clipboard
|
||
map super+v paste_from_clipboard
|
||
map ctrl+v paste_from_clipboard
|
||
# Tabs (kitty "tabs" → tmux windows; your bind-key t/H/L)
|
||
map alt+h send_text all \x02H
|
||
map alt+l send_text all \x02L
|
||
map super+enter send_text all \x02t
|
||
# Pane navigation: pass ctrl+hjkl through to tmux/nvim
|
||
# (pass_keys.py kitten removed — vim-tmux-navigator replaces it)
|
||
# Pane resizing (prefix + ctrl+arrow = tmux default resize)
|
||
map super+left send_text all \x02\x1b[1;5D
|
||
map super+right send_text all \x02\x1b[1;5C
|
||
map super+up send_text all \x02\x1b[1;5A
|
||
map super+down send_text all \x02\x1b[1;5B
|
||
|
||
# Direct window jumps (tmux prefix+N)
|
||
map alt+q send_text all \x021
|
||
map alt+w send_text all \x022
|
||
map alt+e send_text all \x023
|
||
map alt+r send_text all \x024
|
||
map alt+t send_text all \x025
|
||
map alt+y send_text all \x026
|
||
map alt+u send_text all \x027
|
||
map alt+i send_text all \x028
|
||
map alt+o send_text all \x029
|
||
# Session controls
|
||
map super+d send_text all \x02d
|
||
map super+s send_text all \x02s
|
||
map super+z send_text all \x02z
|
||
# ── Tab bar: hidden — tmux-dotbar owns the status UI ────────────────────
|
||
tab_bar_style hidden
|
||
# BEGIN_KITTY_THEME
|
||
# cyberdream (current-theme.conf → themes/cyberdream.conf)
|
||
include current-theme.conf
|
||
# END_KITTY_THEME
|
||
#
|
||
active_opacity 0.9
|
||
|
||
|
||
# ── Plugins ──────────────────────────────────────────────────────────────
|
||
set -g @plugin 'tmux-plugins/tpm'
|
||
set -g @plugin 'tmux-plugins/tmux-sensible'
|
||
set -g @plugin 'vaaleyard/tmux-dotbar'
|
||
set -g @plugin 'joshmedeski/tmux-nerd-font-window-name'
|
||
set -g @plugin 'omerxx/tmux-sessionx'
|
||
# ── Kitty compatibility ──────────────────────────────────────────────────
|
||
set -g default-terminal "tmux-256color"
|
||
set -ga terminal-overrides ",xterm-kitty:Tc"
|
||
set -as terminal-features ",xterm-kitty:RGB:usstyle:hyperlinks:clipboard:extkeys"
|
||
set -s extended-keys on # kitty keyboard protocol → nvim
|
||
# Kitty graphics protocol passthrough (yazi / image preview)
|
||
set -g allow-passthrough on
|
||
set -ga update-environment TERM
|
||
set -ga update-environment TERM_PROGRAM
|
||
# ── Clipboard (Wayland / Niri) ───────────────────────────────────────────
|
||
set -g set-clipboard on # OSC 52 — covers ssh'd sessions
|
||
set -g mouse on
|
||
setw -g mode-keys vi
|
||
bind -T copy-mode-vi v send -X begin-selection
|
||
bind -T copy-mode-vi y send -X copy-pipe-and-cancel "wl-copy"
|
||
bind -T copy-mode-vi Y send -X copy-pipe-and-cancel "wl-copy" \; send -X cancel
|
||
bind -T copy-mode-vi MouseDragEnd1Pane send -X copy-pipe-and-cancel "wl-copy"
|
||
# ── Titles → Niri active window ──────────────────────────────────────────
|
||
set -g set-titles on
|
||
set -g set-titles-string "#S › #{pane_current_command} · #{b:pane_current_path}"
|
||
setw -g automatic-rename on
|
||
set -g automatic-rename-format "#{window_icon} #{b:pane_current_path}"
|
||
# ── QoL ──────────────────────────────────────────────────────────────────
|
||
set -g history-limit 50000
|
||
set -g base-index 1
|
||
setw -g pane-base-index 1
|
||
set -g renumber-windows on
|
||
# ── Keybinds ─────────────────────────────────────────────────────────────
|
||
bind-key t new-window -c "#{pane_current_path}"
|
||
bind-key [ previous-window
|
||
bind-key ] next-window
|
||
bind-key H previous-window
|
||
bind-key L next-window
|
||
# Splits inherit cwd (kitty super+t / super+n land here)
|
||
# vsplit: new pane right at 35% width · hsplit: new pane below at 25% height
|
||
bind % split-window -h -l 30% -c "#{pane_current_path}"
|
||
bind '"' split-window -v -l 25% -c "#{pane_current_path}"
|
||
# Copy-mode entry (default prefix+[ is rebound above)
|
||
bind Escape copy-mode
|
||
# ── Pane navigation: ctrl+hjkl, no prefix ────────────────────────────────
|
||
# Vim-aware: if the pane runs (n)vim, forward the key so vim handles its
|
||
# own window movement (pair with vim-tmux-navigator in AstroNvim).
|
||
is_vim="ps -o state= -o comm= -t '#{pane_tty}' | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|l?n?vim?x?|fzf)(diff)?$'"
|
||
bind -n C-h if-shell "$is_vim" 'send-keys C-h' 'select-pane -L'
|
||
bind -n C-j if-shell "$is_vim" 'send-keys C-j' 'select-pane -D'
|
||
bind -n C-k if-shell "$is_vim" 'send-keys C-k' 'select-pane -U'
|
||
bind -n C-l if-shell "$is_vim" 'send-keys C-l' 'select-pane -R'
|
||
# Same nav from inside copy-mode
|
||
bind -T copy-mode-vi C-h select-pane -L
|
||
bind -T copy-mode-vi C-j select-pane -D
|
||
bind -T copy-mode-vi C-k select-pane -U
|
||
bind -T copy-mode-vi C-l select-pane -R
|
||
# Clear-screen escape hatch (C-l is consumed above)
|
||
bind C-l send-keys C-l
|
||
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
|
||
run '~/.tmux/plugins/tpm/tpm'
|
||
|
||
|
||
Lets synchronize the Mod+H and Mod+L from niri to work with the tmux window bindings for optimized key productivity
|