# Tmux is a terminal multiplexer that allows you to run multiple terminal sessions in a single window. { pkgs, ... }: { programs.tmux = { enable = true; mouse = true; shell = "${pkgs.zsh}/bin/zsh"; prefix = "C-a"; terminal = "kitty"; keyMode = "vi"; extraConfig = '' set-option -g status-position top #set -g default-terminal "screen-256color" set-option -g history-limit 5000 unbind % unbind '"' bind-key h select-pane -L bind-key j select-pane -D bind-key k select-pane -U bind-key l select-pane -R set -gq allow-passthrough on bind-key x kill-pane # skip "kill-pane 1? (y/n)" prompt bind-key -n C-Tab next-window bind-key -n C-S-Tab previous-window bind-key -n M-Tab new-window # Start windows and panes index at 1, not 0. set -g base-index 1 setw -g pane-base-index 1 bind-key "|" split-window -h -c "#{pane_current_path}" bind-key "\\" split-window -fh -c "#{pane_current_path}" bind-key "-" split-window -v -c "#{pane_current_path}" bind-key "_" split-window -fv -c "#{pane_current_path}" bind -r C-j resize-pane -D 15 bind -r C-k resize-pane -U 15 bind -r C-h resize-pane -L 15 bind -r C-l resize-pane -R 15 # 'c' to new window bind-key c new-window # 'n' next window bind-key n next-window # 'p' next previous bind-key n previous-window unbind r bind r source-file ~/.config/tmux/tmux.conf bind -r m resize-pane -Z bind-key t clock-mode bind-key q display-panes bind-key u refresh-client bind-key o select-pane -t :.+ ##### Display Popups ##### bind C-y display-popup \ -d "#{pane_current_path}" \ -w 80% \ -h 80% \ -E "lazygit" bind C-n display-popup -E 'bash -i -c "read -p \"Session name: \" name; tmux new-session -d -s \$name && tmux switch-client -t \$name"' bind C-j display-popup -E "tmux list-sessions | sed -E 's/:.*$//' | grep -v \"^$(tmux display-message -p '#S')\$\" | fzf --reverse | xargs tmux switch-client -t" #bind C-p display-popup -E "ipython" #bind C-f display-popup \ # -w 80% \ # -h 80% \ # -E 'rmpc' bind C-r display-popup \ -d "#{pane_current_path}" \ -w 90% \ -h 90% \ -E "yazi" bind C-z display-popup \ -w 90% \ -h 90% \ -E 'nvim ~/ddubsos/flake.nix' #bind C-g display-popup -E "bash -i ~/.tmux/scripts/chat-popup.sh" bind C-t display-popup \ -d "#{pane_current_path}" \ -w 75% \ -h 75% \ -E "zsh" ##### Display Menu ##### bind d display-menu -T "#[align=centre]Dotfiles" -x C -y C \ "ZaneyOS flake.nix" f "display-popup -E 'nvim ~/garandos/flake.nix'" \ "ZaneyOS packages" p "display-popup -E 'nvim ~/garandos/modules/core/packages.nix'" \ "ZaneyOS keybinds" k "display-popup -E 'nvim ~/garandos/modules/home/hyprland/binds.nix'" \ "ZaneyOS env variables" e "display-popup -E 'nvim ~/garandos/modules/home/hyprland/env.nix'" \ "ZaneyOS windowrules" w "display-popup -E 'nvim ~/garandos/modules/home/hyprland/windowrules.nix'" \ "Exit" q "" ''; plugins = with pkgs; [ tmuxPlugins.vim-tmux-navigator tmuxPlugins.sensible tmuxPlugins.tokyo-night-tmux ]; }; }