From 19f764780c12c1e0ee13998e980c64acf7dc9b0e Mon Sep 17 00:00:00 2001 From: Stefan Weigl-Bosker Date: Fri, 21 Mar 2025 17:29:53 -0400 Subject: tmux stuff --- modules/default.nix | 3 +- modules/fzf.nix | 46 +++++++++++++++++++++ modules/global.nix | 3 +- modules/tmux.nix | 79 ----------------------------------- modules/tmux/default.nix | 105 +++++++++++++++++++++++++++++++++++++++++++++++ modules/zsh/default.nix | 9 +++- 6 files changed, 163 insertions(+), 82 deletions(-) create mode 100644 modules/fzf.nix delete mode 100644 modules/tmux.nix create mode 100644 modules/tmux/default.nix diff --git a/modules/default.nix b/modules/default.nix index e094839..d46c392 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -4,7 +4,8 @@ ./foot.nix ./mako.nix ./neovide.nix - ./tmux.nix + ./fzf.nix + ./tmux ./zsh ./sway ./neovim diff --git a/modules/fzf.nix b/modules/fzf.nix new file mode 100644 index 0000000..7449874 --- /dev/null +++ b/modules/fzf.nix @@ -0,0 +1,46 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.modules.fzf; +in +{ + options.modules.fzf = { + enable = lib.mkEnableOption "fzf"; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + bat + fd + ]; + programs.fzf = { + enable = true; + enableZshIntegration = true; + colors = { + bg = "#0f0f0f"; + # "bg+" = "#0f0f0f"; + "bg+" = "#151515"; + spinner = "#8aabac"; + hl = "#8f8aac"; + header = "#8f8aac"; + info = "#aca98a"; + pointer = "#8aabac"; + marker = "red"; + fg = "#cacaca"; + "fg+" = "#8aac8b"; + }; + tmux = { + enableShellIntegration = true; + }; + defaultCommand = "fd . $HOME"; + defaultOptions = [ + "--style minimal" + "--bind ctrl-n:down,ctrl-e:up" + # "--style full" + ]; + fileWidgetOptions = [ + "--preview 'bat --style=numbers --theme base16 --line-range :500 {}'" +# "--preview 'head{}'" + ]; + }; + }; +} diff --git a/modules/global.nix b/modules/global.nix index c9fa3b6..30d39ec 100644 --- a/modules/global.nix +++ b/modules/global.nix @@ -33,6 +33,7 @@ in }; zsh.enable = true; tmux.enable = true; + fzf.enable = true; }; nixGL = lib.mkIf cfg.notNixOS { @@ -64,7 +65,7 @@ in username = "stefan"; homeDirectory = "/home/stefan"; stateVersion = "24.11"; - + shell.enableZshIntegration = true; packages = with pkgs; [ nerd-fonts.comic-shanns-mono diff --git a/modules/tmux.nix b/modules/tmux.nix deleted file mode 100644 index 5761120..0000000 --- a/modules/tmux.nix +++ /dev/null @@ -1,79 +0,0 @@ -{ config, lib, pkgs, ... }: -let - cfg = config.modules.tmux; -in -{ - options.modules.tmux = { - enable = lib.mkEnableOption "tmux"; - }; - - config = { - programs.tmux = lib.mkIf cfg.enable { - enable = true; - customPaneNavigationAndResize = true; - prefix = "C-Space"; - mouse = true; - keyMode = "vi"; - baseIndex = 1; - escapeTime = 0; - focusEvents = true; - extraConfig = '' - set-option -ga terminal-overrides ",xterm-256color:Tc" - set-option -g default-terminal "screen-256color" - - set -g renumber-windows on - - bind w switch-client -T split - bind t switch-client -T tab - - bind -T tab o choose-tree -Zw - bind -T tab c kill-window # warn? - bind -T tab m previous-window - bind -T tab i next-window - bind -T tab n new-window - - bind -T split i split-window -h - bind -T split n split-window - bind c kill-pane - - bind m select-pane -L - bind n select-pane -D - bind e select-pane -U - bind i select-pane -R - - bind -T copy-mode-vi m send-keys -X cursor-left - bind -T copy-mode-vi n send-keys -X cursor-down - bind -T copy-mode-vi e send-keys -X cursor-up - bind -T copy-mode-vi i send-keys -X cursor-right - - bind -T copy-mode-vi j send-keys -X search-again - bind -T copy-mode-vi J send-keys -X search-reverse - - bind -T copy-mode-vi k send-keys -X next-word-end - bind -T copy-mode-vi K send-keys -X next-space-end - - bind -T copy-mode-vi M send-keys -X top-line - bind -T copy-mode-vi N send-keys -X scroll-down - bind -T copy-mode-vi E send-keys -X scroll-up - bind -T copy-mode-vi I send-keys -X bottom-line - - bind -r M resize-pane -L 10 - bind -r N resize-pane -D 10 - bind -r E resize-pane -U 10 - bind -r I resize-pane -R 10 - - bind h select-pane -m - bind j next-window - bind l display-message - bind K select-layout -E - - set -g status-style bg='#191919',fg='#4c4c4c' - set-window-option -g window-status-style fg='#4c4c4c',bg='#191919' - set-window-option -g window-status-current-style fg='#ac8aac',bg='#191919' - - set -g pane-border-style fg='#191919' - set -g pane-active-border-style fg='#191919' - ''; - }; - }; -} diff --git a/modules/tmux/default.nix b/modules/tmux/default.nix new file mode 100644 index 0000000..dc36d8e --- /dev/null +++ b/modules/tmux/default.nix @@ -0,0 +1,105 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.modules.tmux; +in +{ + options.modules.tmux = { + enable = lib.mkEnableOption "tmux"; + }; + + config = { + programs.tmux = lib.mkIf cfg.enable { + enable = true; + customPaneNavigationAndResize = true; + prefix = "C-Space"; + mouse = true; + keyMode = "vi"; + baseIndex = 1; + escapeTime = 0; + focusEvents = true; + plugins = with pkgs.tmuxPlugins; [ + { + plugin = resurrect; + extraConfig = '' + set -g @resurrect-strategy-nvim 'session' + ''; + } + ]; + extraConfig = '' +# set -g default-terminal "screen-256color" +# screen-256 ls colors broken, zsh fixed +# screen ls colors fixed, zsh autosuggestions broken + set -g renumber-windows on + + bind r source-file ~/.config/tmux/tmux.conf + + bind w switch-client -T split + bind t switch-client -T tab + bind f switch-client -T file + bind F switch-client -T dir + + bind d detach-client + + bind -T tab o choose-tree -Zw + bind -T tab c kill-window # warn? + bind -T tab m previous-window + bind -T tab i next-window + bind -T tab n new-window + + bind -T dir o run-shell -b 'fd . $(pwd) -td | fzf --tmux | xargs --no-run-if-empty tmux split-window -h -c' + bind -T dir O run-shell -b 'fd . $(pwd) -td | fzf --tmux | xargs --no-run-if-empty tmux new-window -c' + bind -T file o run-shell -b 'fd . $(pwd) -tf | fzf --tmux | xargs --no-run-if-empty tmux split-window -h -c $(pwd) $EDITOR' + bind -T file O run-shell -b 'fd . $(pwd) -tf | fzf --tmux | xargs --no-run-if-empty tmux new-window -c $(pwd) $EDITOR' + + bind -T split i split-window -h + bind -T split n split-window + bind -T split w select-pane -t :.+ + bind c kill-pane + + bind m select-pane -L + bind n select-pane -D + bind e select-pane -U + bind i select-pane -R + + bind-key -T root m if -F "#{==:#{pane_mode},tree-mode}" "send h" "send m" + bind-key -T root n if -F "#{==:#{pane_mode},tree-mode}" "send j" "send n" + bind-key -T root e if -F "#{==:#{pane_mode},tree-mode}" "send k" "send e" + bind-key -T root i if -F "#{==:#{pane_mode},tree-mode}" "send l" "send i;" + + bind -T copy-mode-vi m send-keys -X cursor-left + bind -T copy-mode-vi n send-keys -X cursor-down + bind -T copy-mode-vi e send-keys -X cursor-up + bind -T copy-mode-vi i send-keys -X cursor-right + + bind -T copy-mode-vi j send-keys -X search-again + bind -T copy-mode-vi J send-keys -X search-reverse + + bind -T copy-mode-vi k send-keys -X next-word-end + bind -T copy-mode-vi K send-keys -X next-space-end + + bind -T copy-mode-vi M send-keys -X top-line + bind -T copy-mode-vi N send-keys -X scroll-down + bind -T copy-mode-vi E send-keys -X scroll-up + bind -T copy-mode-vi I send-keys -X bottom-line + + bind -r M resize-pane -L 10 + bind -r N resize-pane -D 10 + bind -r E resize-pane -U 10 + bind -r I resize-pane -R 10 + + bind h select-pane -m + bind j next-window + bind l display-message + bind K select-layout -E + + set -g status-style bg='#191919',fg='#4c4c4c' + set-window-option -g window-status-style fg='#4c4c4c',bg='#191919' + set-window-option -g window-status-current-style fg='#ac8aac',bg='#191919' + + set -g pane-border-style fg='#191919' + set -g pane-active-border-style fg='#191919' + + ''; + }; + }; +} diff --git a/modules/zsh/default.nix b/modules/zsh/default.nix index 3997ee2..c884333 100644 --- a/modules/zsh/default.nix +++ b/modules/zsh/default.nix @@ -46,7 +46,8 @@ in initExtra = '' source ~/.oh-my-zsh/themes/${cfg.theme}.zsh-theme setopt nobeep - export KEYTIMEOUT=1 # note, set higher if you want to use surround mode + export KEYTIMEOUT=1 +# export KEYTIMEOUT=20 # note, set higher if you want to use surround mode or any chording bindkey -M vicmd m vi-backward-char bindkey -M vicmd n vi-down-line-or-history @@ -64,7 +65,13 @@ in # vim style backspace (im a young soul) bindkey -v '^?' backward-delete-char + + bindkey '^F' fzf-cd-widget + bindkey -M vicmd / fzf-history-widget +# bindkey -M vicmd " f" fzf-cd-widget +# bindkey -M vicmd . fzf ''; }; }; } + -- cgit v1.2.3