Compare commits

..
+16 -22
View File
@@ -5,7 +5,7 @@ let
#
# Written as escapes rather than literal glyphs. These are Private Use Area
# codepoints: they render only with a patched font, they survive copy/paste
# badly, and when they get stripped the loss is invisible -- the config still
# badly, and when they get stripped the loss is invisible, the config still
# parses, the status bar just quietly loses its separators. Nix has no \u
# escape of its own, but fromJSON does.
sep = builtins.fromJSON ''
@@ -19,28 +19,27 @@ let
in
{
programs.tmux = {
# defaults
enable = true;
prefix = "C-a";
keyMode = "vi";
mouse = true;
# tmux-256color gives truecolor, italics and undercurl in nvim.
# screen-256color has none of them. No terminfo gymnastics needed here --
# unlike macOS, NixOS ships a current ncurses that has the entry.
terminal = "tmux-256color";
# Default is 500ms. That is the lag you feel leaving insert mode in nvim,
# Default is 500ms. Causes lag you feel when leaving insert mode in nvim,
# because tmux is waiting to see whether Esc starts an escape sequence.
escapeTime = 10;
# nvim autoread / :checktime react to focus. home-manager defaults to false.
# nvim autoread / :checktime react to focus.
focusEvents = true;
# Default is 2000.
# History limit.
historyLimit = 50000;
# Window numbers matching the number row. Behaviour change, so opt in.
# baseIndex = 1;
# Window numbers matching the number row.
baseIndex = 1;
extraConfig = ''
# Status keys
@@ -49,16 +48,15 @@ in
# Tell tmux the outer terminal can do 24-bit colour (tmux >= 3.2).
set -sa terminal-features ",*:RGB"
# --- Shift+Enter / extended keys -----------------------------------
# Still the open topic; uncommenting these makes tmux forward CSI-u
# sequences unconditionally. Needs tmux >= 3.5 for the format option,
# and a `tmux kill-server` afterwards -- a config reload is not enough.
#set -s extended-keys always
#set -s extended-keys-format csi-u
#set -as terminal-features '*:extkeys'
# Shift+Enter / extended keys
# These make tmux forward CSI-u sequences unconditionally.
# Needs tmux >= 3.5 for the format option,
set -s extended-keys always
set -s extended-keys-format csi-u
set -as terminal-features '*:extkeys'
# Status bar options
set -g status-interval 5 # was 1; the clock only has minute resolution
set -g status-interval 5
set -g status-justify left
# Clock mode
@@ -69,11 +67,9 @@ in
set -g status-fg white
# Key bindings
# Reload configuration. tmux.conf is a read-only symlink into the nix
# store, so this only picks up changes after `home-manager switch`.
bind r source-file ~/.config/tmux/tmux.conf \; display-message "tmux.conf reloaded"
# Panel split and selection -- new panes/windows inherit the cwd
# Panel split and selection, new panes/windows inherit the cwd
unbind %
unbind '"'
bind v split-window -v -c "#{pane_current_path}"
@@ -88,7 +84,7 @@ in
bind k select-pane -U
bind l select-pane -R
# Resize panes -- -r makes them repeatable, hold instead of re-prefixing
# Resize panes
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
@@ -96,7 +92,6 @@ in
# Wayland clipboard integration
# Copy selection to both clipboard (Ctrl+V / Shift+Insert) and primary (middle-click)
# v/C-v added: you had no way to *start* a selection from the keyboard.
bind -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi C-v send-keys -X rectangle-toggle
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "wl-copy && wl-copy --primary"
@@ -107,7 +102,6 @@ in
#set -g set-clipboard on
# Kill commands
# Drop the `confirm-before -p "..."` part for the old single keystroke.
bind q confirm-before -p "kill window #W? (y/n)" kill-window
bind Q confirm-before -p "kill session #S? (y/n)" kill-session