Implement a kitty module
Squashed commit of the following: commit eb319d25ee2bc60dc4c58f3ee3e70ea2035a2b96 Author: Natsu Kagami <nki@nkagami.me> Date: Fri Jun 10 13:41:33 2022 -0400 Map yen sign to backslash commit 6d29a296ed789ac20bfcd6e74a48536d0e658582 Author: Natsu Kagami <nki@nkagami.me> Date: Fri Jun 10 13:23:30 2022 -0400 Add kitty options commit 47b366cbd0fd17c06c4e415b291e2329f8831939 Author: Natsu Kagami <nki@nkagami.me> Date: Fri Jun 10 11:42:51 2022 -0400 Some basic set up to make kitty happy
This commit is contained in:
parent
05c4fd1fd7
commit
21c8317fd2
|
@ -6,6 +6,7 @@
|
||||||
./fish/fish.nix
|
./fish/fish.nix
|
||||||
./modules/programs/my-broot.nix
|
./modules/programs/my-broot.nix
|
||||||
./modules/programs/my-sway
|
./modules/programs/my-sway
|
||||||
|
./modules/programs/my-kitty
|
||||||
./common-linux.nix
|
./common-linux.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -74,6 +75,8 @@
|
||||||
"~/.local/bin"
|
"~/.local/bin"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
nki.programs.kitty.enable = true;
|
||||||
|
|
||||||
# Programs
|
# Programs
|
||||||
programs = {
|
programs = {
|
||||||
bat = {
|
bat = {
|
||||||
|
|
|
@ -53,7 +53,16 @@
|
||||||
end
|
end
|
||||||
|
|
||||||
# Source iTerm2 integration
|
# Source iTerm2 integration
|
||||||
test -e ~/.iterm2_shell_integration.fish && source ~/.iterm2_shell_integration.fish
|
if test -e ~/.iterm2_shell_integration.fish; and test $__CFBundleIdentifier = "com.googlecode.iterm2"
|
||||||
|
source ~/.iterm2_shell_integration.fish
|
||||||
|
end
|
||||||
|
|
||||||
|
# Source Kitty integration
|
||||||
|
if set -q KITTY_INSTALLATION_DIR
|
||||||
|
set --global KITTY_SHELL_INTEGRATION enabled
|
||||||
|
source "$KITTY_INSTALLATION_DIR/shell-integration/fish/vendor_conf.d/kitty-shell-integration.fish"
|
||||||
|
set --prepend fish_complete_path "$KITTY_INSTALLATION_DIR/shell-integration/fish/vendor_completions.d"
|
||||||
|
end
|
||||||
|
|
||||||
# Enable vi keybindings
|
# Enable vi keybindings
|
||||||
fish_vi_key_bindings
|
fish_vi_key_bindings
|
||||||
|
|
BIN
home/images/chise-bg.png
Normal file
BIN
home/images/chise-bg.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.3 MiB |
|
@ -44,11 +44,11 @@ set global grepcmd "rg --line-number --no-column --no-heading --color=never ''"
|
||||||
# }
|
# }
|
||||||
# }
|
# }
|
||||||
# }
|
# }
|
||||||
map global user t -docstring "Open a side terminal on the current directory" ' :iterm-terminal-horizontal fish<ret>'
|
# map global user t -docstring "Open a side terminal on the current directory" ' :iterm-terminal-horizontal fish<ret>'
|
||||||
|
|
||||||
# fzf.kak
|
# fzf.kak
|
||||||
require-module fzf
|
require-module fzf
|
||||||
set global fzf_terminal_command 'iterm-terminal-horizontal kak -c %val{session} -e "%arg{@}"'
|
# set global fzf_terminal_command 'iterm-terminal-horizontal kak -c %val{session} -e "%arg{@}"'
|
||||||
# set global fzf_grep_command 'rg'
|
# set global fzf_grep_command 'rg'
|
||||||
set global fzf_highlight_command 'bat --style=plain --theme=GitHub --color=always {}'
|
set global fzf_highlight_command 'bat --style=plain --theme=GitHub --color=always {}'
|
||||||
map global user f -docstring "FZF mode" ': fzf-mode<ret>'
|
map global user f -docstring "FZF mode" ': fzf-mode<ret>'
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
programs.fish.shellAliases = {
|
programs.fish.shellAliases = {
|
||||||
brew64 = "arch -x86_64 /usr/local/bin/brew";
|
brew64 = "arch -x86_64 /usr/local/bin/brew";
|
||||||
};
|
};
|
||||||
|
nki.programs.kitty.background = ./images/chise-bg.png;
|
||||||
|
|
||||||
home.sessionPath = [
|
home.sessionPath = [
|
||||||
# Personal .bin
|
# Personal .bin
|
||||||
|
|
63
home/modules/programs/my-kitty/darwin.nix
Normal file
63
home/modules/programs/my-kitty/darwin.nix
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
{ pkgs, config, lib, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.nki.programs.kitty;
|
||||||
|
cmd = "cmd";
|
||||||
|
in
|
||||||
|
with lib; {
|
||||||
|
programs.kitty = mkIf (cfg.enable && pkgs.stdenv.isDarwin) {
|
||||||
|
|
||||||
|
# Darwin-specific setup
|
||||||
|
darwinLaunchOptions = [
|
||||||
|
"--single-instance"
|
||||||
|
"--start-as=fullscreen"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Tabs and layouts keybindings
|
||||||
|
keybindings = {
|
||||||
|
# Backslash
|
||||||
|
"0x5d" = "send_text all \\u005c";
|
||||||
|
|
||||||
|
"${cmd}+shift+o" = "launch --location=vsplit";
|
||||||
|
"${cmd}+o" = "launch --location=hsplit";
|
||||||
|
"${cmd}+shift+r" = "layout_action rotate";
|
||||||
|
## Move the active window in the indicated direction
|
||||||
|
"${cmd}+shift+h" = "move_window left";
|
||||||
|
"${cmd}+shift+j" = "move_window up";
|
||||||
|
"${cmd}+shift+k" = "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}+j" = "neighboring_window up";
|
||||||
|
"${cmd}+k" = "neighboring_window down ";
|
||||||
|
"${cmd}+l" = "neighboring_window right";
|
||||||
|
}
|
||||||
|
# Tab bindings
|
||||||
|
// builtins.listToAttrs
|
||||||
|
(map
|
||||||
|
(x: attrsets.nameValuePair "${cmd}+${toString x}" "goto_tab ${toString x}")
|
||||||
|
(lists.range 1 9));
|
||||||
|
|
||||||
|
extraConfig = mkAfter ''
|
||||||
|
# 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 yes
|
||||||
|
## Layout options
|
||||||
|
# Layouts
|
||||||
|
enabled_layouts Splits
|
||||||
|
inactive_text_alpha 0.65
|
||||||
|
|
||||||
|
# MacOS specific
|
||||||
|
macos_option_as_alt = left
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
85
home/modules/programs/my-kitty/default.nix
Normal file
85
home/modules/programs/my-kitty/default.nix
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
{ pkgs, config, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.nki.programs.kitty;
|
||||||
|
|
||||||
|
# iosevka = pkgs.iosevka.override {
|
||||||
|
# privateBuildPlan = ''
|
||||||
|
# [buildPlans.iosevka-kagami]
|
||||||
|
# family = "Iosevka Kagami"
|
||||||
|
# spacing = "normal"
|
||||||
|
# serifs = "sans"
|
||||||
|
# no-cv-ss = true
|
||||||
|
|
||||||
|
# [buildPlans.iosevka-kagami.variants]
|
||||||
|
# inherits = "ss06"
|
||||||
|
|
||||||
|
# [buildPlans.iosevka-kagami.variants.design]
|
||||||
|
# k = "cursive-serifless"
|
||||||
|
|
||||||
|
# [buildPlans.iosevka-kagami.ligations]
|
||||||
|
# inherits = "haskell"
|
||||||
|
# '';
|
||||||
|
# set = "kagami";
|
||||||
|
# };
|
||||||
|
|
||||||
|
cmd = if pkgs.stdenv.isDarwin then "cmd" else "ctrl";
|
||||||
|
in
|
||||||
|
with lib;
|
||||||
|
{
|
||||||
|
imports = [ ./darwin.nix ];
|
||||||
|
|
||||||
|
options.nki.programs.kitty = {
|
||||||
|
enable = mkEnableOption "Enable kitty";
|
||||||
|
|
||||||
|
# font
|
||||||
|
fontSize = mkOption {
|
||||||
|
type = types.int;
|
||||||
|
description = "Font size";
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config.programs.kitty = mkIf cfg.enable {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
font.package = pkgs.fantasque-sans-mono;
|
||||||
|
font.name = "Fantasque Sans Mono";
|
||||||
|
font.size = cfg.fontSize;
|
||||||
|
|
||||||
|
theme = "Ayu Light";
|
||||||
|
|
||||||
|
extraConfig =
|
||||||
|
let
|
||||||
|
background =
|
||||||
|
if isNull cfg.background then ''
|
||||||
|
background_opacity 1
|
||||||
|
dynamic_background_opacity yes
|
||||||
|
'' else ''
|
||||||
|
background_image ${cfg.background}
|
||||||
|
background_image_layout scaled
|
||||||
|
background_tint 0.85
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
''
|
||||||
|
# Background color and transparency
|
||||||
|
${background}
|
||||||
|
|
||||||
|
# Scrollback (128MBs)
|
||||||
|
scrollback_pager_history_size 128
|
||||||
|
|
||||||
|
# Disable Shell integration (leave it for Nix)
|
||||||
|
shell_integration no-rc
|
||||||
|
'';
|
||||||
|
|
||||||
|
keybindings = { };
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue