From 2ffc6d64961cb46d58d80fc344795837d6f227c2 Mon Sep 17 00:00:00 2001 From: Sleroq <52239427+sleroq@users.noreply.github.com> Date: Sun, 5 Feb 2023 16:02:14 +0600 Subject: [PATCH] tmux: mouse support (#3642) Co-authored-by: Sleroq --- modules/programs/tmux.nix | 3 ++ .../modules/programs/tmux/default-shell.conf | 1 + tests/modules/programs/tmux/default.nix | 1 + .../tmux/disable-confirmation-prompt.conf | 1 + .../programs/tmux/emacs-with-plugins.conf | 1 + .../modules/programs/tmux/mouse-enabled.conf | 29 +++++++++++++++++++ tests/modules/programs/tmux/mouse-enabled.nix | 26 +++++++++++++++++ tests/modules/programs/tmux/prefix.conf | 1 + .../tmux/shortcut-without-prefix.conf | 1 + tests/modules/programs/tmux/vi-all-true.conf | 1 + 10 files changed, 65 insertions(+) create mode 100644 tests/modules/programs/tmux/mouse-enabled.conf create mode 100644 tests/modules/programs/tmux/mouse-enabled.nix diff --git a/modules/programs/tmux.nix b/modules/programs/tmux.nix index bf98a3f37..ed9876ea1 100644 --- a/modules/programs/tmux.nix +++ b/modules/programs/tmux.nix @@ -94,6 +94,7 @@ let bind-key -N "Kill the current pane" x kill-pane ''} + set -g mouse ${boolToStr cfg.mouse} setw -g aggressive-resize ${boolToStr cfg.aggressiveResize} setw -g clock-mode-style ${if cfg.clock24 then "24" else "12"} set -s escape-time ${toString cfg.escapeTime} @@ -204,6 +205,8 @@ in { description = "VI or Emacs style shortcuts."; }; + mouse = mkEnableOption "mouse support"; + newSession = mkOption { default = false; type = types.bool; diff --git a/tests/modules/programs/tmux/default-shell.conf b/tests/modules/programs/tmux/default-shell.conf index a33623630..8eb4e40fa 100644 --- a/tests/modules/programs/tmux/default-shell.conf +++ b/tests/modules/programs/tmux/default-shell.conf @@ -23,6 +23,7 @@ set -g mode-keys emacs +set -g mouse off setw -g aggressive-resize off setw -g clock-mode-style 12 set -s escape-time 500 diff --git a/tests/modules/programs/tmux/default.nix b/tests/modules/programs/tmux/default.nix index be78c2620..979774a71 100644 --- a/tests/modules/programs/tmux/default.nix +++ b/tests/modules/programs/tmux/default.nix @@ -7,4 +7,5 @@ tmux-default-shell = ./default-shell.nix; tmux-shortcut-without-prefix = ./shortcut-without-prefix.nix; tmux-prefix = ./prefix.nix; + tmux-mouse-enabled = ./mouse-enabled.nix; } diff --git a/tests/modules/programs/tmux/disable-confirmation-prompt.conf b/tests/modules/programs/tmux/disable-confirmation-prompt.conf index e97a94d19..b4359316c 100644 --- a/tests/modules/programs/tmux/disable-confirmation-prompt.conf +++ b/tests/modules/programs/tmux/disable-confirmation-prompt.conf @@ -23,6 +23,7 @@ bind-key -N "Kill the current window" & kill-window bind-key -N "Kill the current pane" x kill-pane +set -g mouse off setw -g aggressive-resize off setw -g clock-mode-style 12 set -s escape-time 500 diff --git a/tests/modules/programs/tmux/emacs-with-plugins.conf b/tests/modules/programs/tmux/emacs-with-plugins.conf index d01501925..54ddce136 100644 --- a/tests/modules/programs/tmux/emacs-with-plugins.conf +++ b/tests/modules/programs/tmux/emacs-with-plugins.conf @@ -23,6 +23,7 @@ set -g mode-keys emacs +set -g mouse off setw -g aggressive-resize on setw -g clock-mode-style 24 set -s escape-time 500 diff --git a/tests/modules/programs/tmux/mouse-enabled.conf b/tests/modules/programs/tmux/mouse-enabled.conf new file mode 100644 index 000000000..2069920de --- /dev/null +++ b/tests/modules/programs/tmux/mouse-enabled.conf @@ -0,0 +1,29 @@ +# ============================================= # +# Start with defaults from the Sensible plugin # +# --------------------------------------------- # +run-shell @sensible_rtp@ +# ============================================= # + +set -g default-terminal "screen" +set -g base-index 0 +setw -g pane-base-index 0 + + + + + +set -g status-keys emacs +set -g mode-keys emacs + + + + + + + +set -g mouse on +setw -g aggressive-resize off +setw -g clock-mode-style 12 +set -s escape-time 500 +set -g history-limit 2000 + diff --git a/tests/modules/programs/tmux/mouse-enabled.nix b/tests/modules/programs/tmux/mouse-enabled.nix new file mode 100644 index 000000000..6fc5b526e --- /dev/null +++ b/tests/modules/programs/tmux/mouse-enabled.nix @@ -0,0 +1,26 @@ +{ config, lib, pkgs, ... }: + +with lib; + +{ + config = { + programs.tmux = { + enable = true; + mouse = true; + }; + + nixpkgs.overlays = [ + (self: super: { + tmuxPlugins = super.tmuxPlugins // { + sensible = super.tmuxPlugins.sensible // { rtp = "@sensible_rtp@"; }; + }; + }) + ]; + + nmt.script = '' + assertFileExists home-files/.config/tmux/tmux.conf + assertFileContent home-files/.config/tmux/tmux.conf \ + ${./mouse-enabled.conf} + ''; + }; +} diff --git a/tests/modules/programs/tmux/prefix.conf b/tests/modules/programs/tmux/prefix.conf index 831ec3b0e..00f950e09 100644 --- a/tests/modules/programs/tmux/prefix.conf +++ b/tests/modules/programs/tmux/prefix.conf @@ -26,6 +26,7 @@ bind -N "Send the prefix key through to the application" \ +set -g mouse off setw -g aggressive-resize off setw -g clock-mode-style 12 set -s escape-time 500 diff --git a/tests/modules/programs/tmux/shortcut-without-prefix.conf b/tests/modules/programs/tmux/shortcut-without-prefix.conf index 4fd89ad24..938ecfa82 100644 --- a/tests/modules/programs/tmux/shortcut-without-prefix.conf +++ b/tests/modules/programs/tmux/shortcut-without-prefix.conf @@ -27,6 +27,7 @@ bind C-a last-window +set -g mouse off setw -g aggressive-resize off setw -g clock-mode-style 12 set -s escape-time 500 diff --git a/tests/modules/programs/tmux/vi-all-true.conf b/tests/modules/programs/tmux/vi-all-true.conf index 6a6fd6114..03bf2f5a1 100644 --- a/tests/modules/programs/tmux/vi-all-true.conf +++ b/tests/modules/programs/tmux/vi-all-true.conf @@ -23,6 +23,7 @@ set -g mode-keys vi +set -g mouse off setw -g aggressive-resize on setw -g clock-mode-style 24 set -s escape-time 500