From 505448286472936bb6faab2d75eede14016e9d61 Mon Sep 17 00:00:00 2001 From: Pocco81 Date: Fri, 3 Sep 2021 07:12:45 -0500 Subject: [PATCH] feat: tmux theme for Dark Catppuccino and a base tmux conf --- extra/tmux/.tmux.conf | 115 +++++++++++++++++++++++++++++++ extra/tmux/dark_catppuccino.conf | 70 +++++++++++++++++++ 2 files changed, 185 insertions(+) create mode 100644 extra/tmux/.tmux.conf create mode 100644 extra/tmux/dark_catppuccino.conf diff --git a/extra/tmux/.tmux.conf b/extra/tmux/.tmux.conf new file mode 100644 index 0000000..65c27d2 --- /dev/null +++ b/extra/tmux/.tmux.conf @@ -0,0 +1,115 @@ +# these are general settings for Tmux unrelated to Catppuccino +# Dependencies: +# + xclip + +# ----------------------------=== Settings ===-------------------------- + +# --------=== General +# set -g default-terminal "screen-256color" # colors! +# set -g default-terminal "xterm-kitty" # colors! +# set -g default-terminal "xterm-256color" # colors!, DON't USE THIS generates problems with keyboard and other stuff +set -g default-terminal "tmux-256color" + +# useful for fixing mismatching nvim colors while on Alacritty and other terminals. Follow: https://gist.github.com/andersevenrud/015e61af2fd264371032763d4ed965b6 +set -ag terminal-overrides ",xterm-256color:RGB" +# set-option -ga terminal-overrides ",tmux-256color:Tc" +setw -g xterm-keys on +set -s focus-events on + +# faster command sequences aka no delay when pressing certain keys (e.g. Esc) +set -sg escape-time 0 +set -sg repeat-time 400 # increase repeat timeout + +# --------=== Other + +# Automatically set window title +set-window-option -g automatic-rename on +set-option -g set-titles on +set -g history-limit 50000 +set -g mouse on +setw -q -g utf8 on # charset + +# --------=== Display + +set -g base-index 1 # start windows numbering at 1 +setw -g pane-base-index 1 # make pane numbering consistent with windows +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 0 # redraw status line every 10 seconds + +# --------=== Activity +set -g monitor-activity on +set -g visual-activity off +# set -g bell-action none +# set -g visual-bell off +# set -g visual-silence off + +# ----------------------------=== Key Bindings ===-------------------------- + +# see `man tmux` +# NOTE: -n: no prefix +# NOTE: -r: prefix not required after being pressed for `repeat-time` + +set-option -g prefix M-f # change default tmux prefix from Ctrl+b to Alt+f + +bind r source-file ~/.tmux.conf # source .tmux.conf at $HOME + +bind-key v split-window -h -c "#{pane_current_path}" # horizontally split current window +bind-key s split-window -v -c "#{pane_current_path}" # vertically split current window + +bind-key -r b set-option status # toggle statusline + +bind-key g display-popup -E "tmux new-session -A -s scratch" # aka floating terminal + +# thanks https://unix.stackexchange.com/a/525770 +bind -n M-PageDown swap-window -d -t -1 # Move current window to the left and switch to it +bind -n M-PageUp swap-window -d -t +1 # Move current window to the right and switch to it +# bind -n C-S-Left swap-window -d -t -1 +# bind -n C-S-Right swap-window -d -t +1 + +bind-key j choose-tree -swZ # TUI for moving around open windows + +bind-key J resize-pane -D 5 +bind-key K resize-pane -U 5 +bind-key H resize-pane -L 5 +bind-key L resize-pane -R 5 + +bind-key -n -r M-t new-window -c "#{pane_current_path}" # spawn a window in cwd +bind-key -n -r M-w kill-window # kill current window +bind-key -n -r M-c kill-pane # kill current pane + +bind-key -n M-1 select-window -t 1 +bind-key -n M-2 select-window -t 2 +bind-key -n M-3 select-window -t 3 +bind-key -n M-4 select-window -t 4 +bind-key -n M-5 select-window -t 5 +bind-key -n M-6 select-window -t 6 +bind-key -n M-7 select-window -t 7 +bind-key -n M-8 select-window -t 8 +bind-key -n M-9 select-window -t 9 +bind-key -n M-0 select-window -t 0 + +bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard' # use system clipboard + + +# bind-key -n M-S-Left resize-pane -D +# bind-key -n M-S-Right resize-pane -U +# bind-key -n M-S-Up resize-pane -L +# bind-key -n M-S-Down resize-pane -R + +# Use Alt-arrow keys without the prefix to switch panes +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 arrow to switch windows +bind -n S-Left previous-window +bind -n S-Right next-window + +# ----------------------------=== Modes ===-------------------------- + +set -g status-keys vi # vi status +setw -g mode-keys vi # vi shortcuts diff --git a/extra/tmux/dark_catppuccino.conf b/extra/tmux/dark_catppuccino.conf new file mode 100644 index 0000000..85dce7d --- /dev/null +++ b/extra/tmux/dark_catppuccino.conf @@ -0,0 +1,70 @@ +# ----------------------------=== Colorscheme ===-------------------------- + +# NOTE: you can use vars with $ and ${} as long as the str is double quoted: "" +# WARNING: hex colors can't contain capital letters + +# --> Dark Catppuccino +thm_bg="#0e171c" +thm_fg="#abb2bf" +thm_fg_gutter="#3b4261" +thm_black="#393b44" +thm_gray="#2a2e36" +thm_red="#c94f6d" +thm_green="#97c374" +thm_yellow="#dbc074" +thm_blue="#61afef" +thm_magenta="#c678dd" +thm_cyan="#63cdcf" +thm_white="#dfdfe0" +thm_orange="#f4a261" +thm_pink="#d67ad2" +thm_black_br="#7f8c98" +thm_red_br="#e06c75" +thm_green_br="#58cd8b" +thm_yellow_br="#ffe37e" +thm_blue_br="#84cee4" +thm_magenta_br="#b8a1e3" +thm_cyan_br="#59f0ff" +thm_white_br="#fdebc3" +thm_orange_br="#f6a878" +thm_pink_br="#df97db" + +# ----------------------------=== Theme ===-------------------------- + +# status +set -g status-position top +set -g status "on" +set -g status-bg "${thm_bg}" +set -g status-justify "left" +set -g status-left-length "100" +set -g status-right-length "100" + +# messages +set -g message-style fg="${thm_white_br}",bg="${thm_gray}",align="centre" +set -g message-command-style fg="${thm_white_br}",bg="${thm_gray}",align="centre" + +# panes +set -g pane-border-style fg="${thm_gray}" +set -g pane-active-border-style fg="${thm_blue_br}" + +# windows +setw -g window-status-activity-style fg="${thm_fg}",bg="${thm_bg}",none +setw -g window-status-separator "" +setw -g window-status-style fg="${thm_fg}",bg="${thm_bg}",none + +# --------=== Statusline + +set -g status-left "" +set -g status-right "#[fg=$thm_magenta,bg=$thm_bg,nobold,nounderscore,noitalics]#[fg=$thm_bg,bg=$thm_magenta,nobold,nounderscore,noitalics] #[fg=$thm_fg,bg=$thm_gray] #W #{?client_prefix,#[fg=$thm_red],#[fg=$thm_green_br]}#[bg=$thm_gray]#{?client_prefix,#[bg=$thm_red],#[bg=$thm_green_br]}#[fg=$thm_bg] #[fg=$thm_fg,bg=$thm_gray] #S " + +# current_dir +setw -g window-status-format "#[fg=$thm_bg,bg=$thm_blue] #I #[fg=$thm_fg,bg=$thm_gray] #{b:pane_current_path} " +setw -g window-status-current-format "#[fg=$thm_bg,bg=$thm_orange] #I #[fg=$thm_white_br,bg=$thm_bg] #{b:pane_current_path} " + +# parent_dir/current_dir +# setw -g window-status-format "#[fg=colour232,bg=colour111] #I #[fg=colour222,bg=colour235] #(echo "#{pane_current_path}" | rev | cut -d'/' -f-2 | rev) " +# setw -g window-status-current-format "#[fg=colour232,bg=colour208] #I #[fg=colour255,bg=colour237] #(echo "#{pane_current_path}" | rev | cut -d'/' -f-2 | rev) " + +# --------=== Modes +setw -g clock-mode-colour "${thm_blue}" +setw -g mode-style "fg=${thm_yellow} bg=${thm_bg} bold"