From d95d41088d9f7f562c24c56516785eb6e3795110 Mon Sep 17 00:00:00 2001 From: Natsu Kagami Date: Mon, 17 Oct 2022 10:20:10 +0200 Subject: [PATCH] Restructure kitty a bit to allow more settings to pass to linux --- home/modules/programs/my-kitty/darwin.nix | 49 +--------------- home/modules/programs/my-kitty/default.nix | 38 ++++++++++--- home/modules/programs/my-kitty/linux.nix | 1 + home/modules/programs/my-kitty/tabs.nix | 65 +++++++++++++++------- 4 files changed, 75 insertions(+), 78 deletions(-) diff --git a/home/modules/programs/my-kitty/darwin.nix b/home/modules/programs/my-kitty/darwin.nix index ac21107..d90f12e 100644 --- a/home/modules/programs/my-kitty/darwin.nix +++ b/home/modules/programs/my-kitty/darwin.nix @@ -16,56 +16,9 @@ with lib; { keybindings = { # Backslash "0x5d" = "send_text all \\u005c"; - - "${cmd}+t" = "new_tab_with_cwd"; - "${cmd}+shift+t" = "new_tab"; - "${cmd}+shift+o" = "launch --cwd=current --location=vsplit"; - "${cmd}+o" = "launch --cwd=current --location=hsplit"; - "${cmd}+shift+r" = "layout_action rotate"; - ## Move the active window in the indicated direction - "${cmd}+shift+h" = "move_window left"; - "${cmd}+shift+k" = "move_window up"; - "${cmd}+shift+j" = "move_window down"; - "${cmd}+shift+l" = "move_window right"; - ## Switch focus to the neighboring window in the indicated direction - "${cmd}+h" = "neighboring_window left"; - "${cmd}+k" = "neighboring_window up"; - "${cmd}+j" = "neighboring_window down "; - "${cmd}+l" = "neighboring_window right"; - ## Detach window to its own tab - "${cmd}+d" = "detach_window new-tab"; - ## Change layout to fullscreen (stack) and back - "${cmd}+f" = "toggle_layout stack"; - ## Clear screen - "${cmd}+backspace" = "clear_terminal to_cursor active"; - "${cmd}+shift+backspace" = "clear_terminal reset active"; - ## Hints - "ctrl+shift+p>n" = "kitten hints --type=linenum --linenum-action=tab kak {path} +{line}"; - } - # Tab bindings - // builtins.listToAttrs - (map - (x: attrsets.nameValuePair "${cmd}+${toString x}" "goto_tab ${toString x}") - (lists.range 1 9)); + }; settings = { - # Tab settings - tab_bar_edge = "top"; - tab_bar_style = "powerline"; - tab_powerline_style = "slanted"; - tab_title_template = "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.lightgreen}{fmt.bold}[{index}]{fmt.nobold} {fmt.fg.tab}{title}"; - active_tab_title_template = "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title}"; - tab_bar_background = "#555"; - active_tab_font_style = "normal"; - - # Layouts - ## Mouse focus - focus_follows_mouse = true; - ## Layout options - # Layouts - enabled_layouts = "splits,stack"; - inactive_text_alpha = "0.65"; - # MacOS specific macos_option_as_alt = "left"; }; diff --git a/home/modules/programs/my-kitty/default.nix b/home/modules/programs/my-kitty/default.nix index 3849942..f29c41f 100644 --- a/home/modules/programs/my-kitty/default.nix +++ b/home/modules/programs/my-kitty/default.nix @@ -6,7 +6,7 @@ let in with lib; { - imports = [ ./darwin.nix ./linux.nix ]; + imports = [ ./darwin.nix ./linux.nix ./tabs.nix ]; options.nki.programs.kitty = { enable = mkEnableOption "Enable kitty"; @@ -23,12 +23,23 @@ with lib; default = 21; }; - background = mkOption - { - type = types.nullOr types.path; - description = "Path to the background image. If not set, default to a 0.9 opacity"; - default = null; - }; + background = mkOption { + type = types.nullOr types.path; + description = "Path to the background image. If not set, default to a 0.9 opacity"; + default = null; + }; + + cmd = mkOption { + type = types.str; + description = "The main control key"; + default = if pkgs.stdenv.isDarwin then "cmd" else "ctrl"; + }; + + enableTabs = mkOption { + type = types.bool; + description = "Enable tabs"; + default = pkgs.stdenc.isDarwin; + }; }; config.programs.kitty = mkIf cfg.enable { @@ -66,12 +77,21 @@ with lib; # Allow remote control (for kakoune integration) allow_remote_control = true; + + # Mouse focus + focus_follows_mouse = true; } ]; keybindings = { - "ctrl+shift+equal" = "no_op"; # Not possible with a JIS keyboard - "ctrl+shift+^" = "change_font_size all +2.0"; # ... so use ^ instead + "${cfg.cmd}+shift+equal" = "no_op"; # Not possible with a JIS keyboard + "${cfg.cmd}+shift+^" = "change_font_size all +2.0"; # ... so use ^ instead + + ## Clear screen + "${cfg.cmd}+backspace" = "clear_terminal to_cursor active"; + "${cfg.cmd}+shift+backspace" = "clear_terminal reset active"; + ## Hints + "${cfg.cmd}+shift+p>n" = "kitten hints --type=linenum --linenum-action=tab kak {path} +{line}"; }; }; } diff --git a/home/modules/programs/my-kitty/linux.nix b/home/modules/programs/my-kitty/linux.nix index fe745be..e30b774 100644 --- a/home/modules/programs/my-kitty/linux.nix +++ b/home/modules/programs/my-kitty/linux.nix @@ -9,6 +9,7 @@ with lib; settings.shell = "${config.programs.fish.package}/bin/fish"; keybindings = { + "0xa5" = "send_text all \\u005c"; "ctrl+shift+n" = "new_os_window_with_cwd"; "ctrl+shift+enter" = "new_window_with_cwd"; }; diff --git a/home/modules/programs/my-kitty/tabs.nix b/home/modules/programs/my-kitty/tabs.nix index 3524bd9..2adcbdf 100644 --- a/home/modules/programs/my-kitty/tabs.nix +++ b/home/modules/programs/my-kitty/tabs.nix @@ -1,30 +1,53 @@ { config, pkgs, lib, ... }: let - cfg = config.programs.my-kitty; + cfg = config.nki.programs.kitty; cmd = cfg.cmd; in with lib; { - programs.kitty.keybindings = mkIf cfg.enableTabs { - "${cmd}+t" = "new_tab_with_cwd"; - "${cmd}+shift+t" = "new_tab"; - "${cmd}+shift+o" = "launch --cwd=current --location=vsplit"; - "${cmd}+o" = "launch --cwd=current --location=hsplit"; - "${cmd}+shift+r" = "layout_action rotate"; - ## Move the active window in the indicated direction - "${cmd}+shift+h" = "move_window left"; - "${cmd}+shift+k" = "move_window up"; - "${cmd}+shift+j" = "move_window down"; - "${cmd}+shift+l" = "move_window right"; - ## Switch focus to the neighboring window in the indicated direction - "${cmd}+h" = "neighboring_window left"; - "${cmd}+k" = "neighboring_window up"; - "${cmd}+j" = "neighboring_window down "; - "${cmd}+l" = "neighboring_window right"; - ## Detach window to its own tab - "${cmd}+d" = "detach_window new-tab"; - ## Change layout to fullscreen (stack) and back - "${cmd}+f" = "toggle_layout stack"; + programs.kitty = mkIf cfg.enableTabs { + keybindings = { + "${cmd}+t" = "new_tab_with_cwd"; + "${cmd}+shift+t" = "new_tab"; + "${cmd}+shift+o" = "launch --cwd=current --location=vsplit"; + "${cmd}+o" = "launch --cwd=current --location=hsplit"; + "${cmd}+r" = "start_resizing_window"; + "${cmd}+shift+r" = "layout_action rotate"; + ## Move the active window in the indicated direction + "${cmd}+shift+h" = "move_window left"; + "${cmd}+shift+k" = "move_window up"; + "${cmd}+shift+j" = "move_window down"; + "${cmd}+shift+l" = "move_window right"; + ## Switch focus to the neighboring window in the indicated direction + "${cmd}+h" = "neighboring_window left"; + "${cmd}+k" = "neighboring_window up"; + "${cmd}+j" = "neighboring_window down "; + "${cmd}+l" = "neighboring_window right"; + ## Detach window to its own tab + "${cmd}+shift+d" = "detach_window new-tab"; + ## Change layout to fullscreen (stack) and back + "${cmd}+f" = "toggle_layout stack"; + } + # Tab bindings + // builtins.listToAttrs + (map + (x: attrsets.nameValuePair "${cmd}+${toString x}" "goto_tab ${toString x}") + (lists.range 1 9)); + settings = { + # Tab settings + tab_bar_edge = "top"; + tab_bar_style = "powerline"; + tab_powerline_style = "slanted"; + tab_title_template = "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.lightgreen}{fmt.bold}[{index}]{fmt.nobold} {fmt.fg.tab}{title}"; + active_tab_title_template = "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title}"; + tab_bar_background = "#555"; + active_tab_font_style = "normal"; + + ## Layout options + # Layouts + enabled_layouts = "splits,stack"; + inactive_text_alpha = "0.65"; + }; }; }