about summary refs log tree commit diff
path: root/home/profiles/base-darwin/config/tmux.nix
diff options
context:
space:
mode:
authorsefidel <contact@sefidel.net>2022-09-09 17:49:03 +0900
committersefidel <contact@sefidel.net>2022-09-09 21:32:31 +0900
commit9e6145c031b47fc37398b80dec1b4dfc0cfb5183 (patch)
treef27e3c50a0c25223931e7057616e456432007de9 /home/profiles/base-darwin/config/tmux.nix
parent9e311725d4f6c68284e3999c01735ebe3665a14d (diff)
downloadnixrc-9e6145c031b47fc37398b80dec1b4dfc0cfb5183.tar.gz
nixrc-9e6145c031b47fc37398b80dec1b4dfc0cfb5183.zip
milestone: darwin!
feat(darwin/kompakt)!: support darwin

chore: reformat

feat(home/o32): manage neovim

feat(home/development): fix haskell lsp version mismatch

feat(darwin/*): stabilise
Diffstat (limited to 'home/profiles/base-darwin/config/tmux.nix')
-rw-r--r--home/profiles/base-darwin/config/tmux.nix81
1 files changed, 81 insertions, 0 deletions
diff --git a/home/profiles/base-darwin/config/tmux.nix b/home/profiles/base-darwin/config/tmux.nix
new file mode 100644
index 0000000..0b5eea4
--- /dev/null
+++ b/home/profiles/base-darwin/config/tmux.nix
@@ -0,0 +1,81 @@
+''
+  set -ga terminal-overrides ",*256col*:Tc"
+
+  setw -g automatic-rename on   # rename window to reflect current program
+  set -g renumber-windows on    # renumber windows when a window is closed
+
+  set -g set-titles on          # set terminal title
+
+  set -g display-panes-time 800 # slightly longer pane indicators display time
+  set -g display-time 1000      # slightly longer status messages display time
+
+  set -g status-interval 5     # redraw status line every 5 seconds
+
+  # better split bindings
+  unbind '"'
+  unbind %
+  # splitting
+  bind f if-shell "[ $(($(tmux display -p '8*#{pane_width}-20*#{pane_height}'))) -lt 0 ]" "splitw -v -c '#{pane_current_path}'" "splitw -h -c '#{pane_current_path}' "
+
+  # reload
+  bind r source-file ~/.config/tmux/tmux.conf
+
+  bind -n C-h select-pane -L
+  bind -n C-j select-pane -D
+  bind -n C-k select-pane -U
+  bind -n C-l select-pane -R
+
+  bind -n C-M-h resize-pane -L 2
+  bind -n C-M-j resize-pane -D 2
+  bind -n C-M-k resize-pane -U 2
+  bind -n C-M-l resize-pane -R 2
+
+  bind -n M-j swap-pane -U
+  bind -n M-k swap-pane -D
+
+  # prefix-m marks window, prefix-u swaps current with marked
+  bind u swap-pane
+
+  # kill current pane
+  unbind x
+  bind w kill-pane
+
+  # pane separator style
+  set -g pane-border-style "fg=black bg=terminal"
+  set -g pane-active-border-style "fg=black bg=black"
+
+  # new window on n, not c
+  unbind c
+  unbind n
+  bind n new-window
+
+  # enable mouse operation
+  set -g mouse on
+
+  # move status line to the top
+  set-option -g status-position top
+
+  set -g status-justify right
+
+  # transparent status background
+  set-option -g status-style bg=default
+
+  # left side length and style
+  set -g status-left-length 60
+  set -g status-left-style default
+
+  # display the session name
+  set -g status-left "#[fg=green] Stack #S #[default]"
+
+  # right side length and style
+  set -g status-right-length 140
+  set -g status-right-style default
+  set -g status-right ""
+
+  # inactive window style
+  set -g window-status-style fg=default,bg=default
+  set -g window-status-format ' #I #W '
+  # active window style
+  set -g window-status-current-style fg=blue,bg=default
+  set -g window-status-current-format ' #I #W '
+''