Bohdan's terminal configuration

Compare changes

Choose any two refs to compare.

+1
.gitignore
··· 1 + .aider*
+10 -4
README.md
··· 1 1 # bpavuk's Dotfiles! 2 2 3 - To install these dotfiles, clone this repository (preferably into 4 - `~/.dotfiles`), install GNU Stow, then type `stow <program-name>`. For Neovim, 5 - that would be `stow nvim`. Make sure to read relevant READMEs inside every 6 - dotfile directory to get a list of dependencies you need to install to make 3 + This repository serves as a home for my configuration files. It can be 4 + installed as a Nix flake (NixOS Unstable) or using Stow. 5 + 6 + To install these dotfiles using Stow, clone this repository (preferably 7 + into `~/.dotfiles`), install GNU Stow, then type `stow <program-name>`. 8 + For Neovim, that would be `stow nvim`. Make sure to read relevant READMEs inside 9 + every dotfile directory to get a list of dependencies you need to install to make 7 10 this work! 11 + 12 + With Nix, it is much simpler, but my settings may get superimposed on your 13 + current ones. More details in [NixOS folder README](./nixos/README.md).
+7
agents/.aider.conf.yml
··· 1 + read: 2 + - AGENTS.md 3 + 4 + auto-commits: false # this setting gets in the way of jj 5 + editor: nvim # Neovim all the way! 6 + model: gemini/gemini-2.5-flash 7 + vim: true
+27
agents/.gemini/settings.json
··· 1 + { 2 + "contextFileName": [ 3 + "GEMINI.md", 4 + "AGENTS.md" 5 + ], 6 + "mcpServers": { 7 + "jetbrains": { 8 + "command": "npx", 9 + "args": [ 10 + "-y", 11 + "@jetbrains/mcp-proxy" 12 + ] 13 + }, 14 + "context7": { 15 + "command": "npx", 16 + "args": [ 17 + "-y", 18 + "@upstash/context7-mcp" 19 + ] 20 + } 21 + }, 22 + "selectedAuthType": "oauth-personal", 23 + "theme": "Atom One", 24 + "usageStatisticsEnabled": false, 25 + "vimMode": true, 26 + "preferredEditor": "neovim" 27 + }
+7
agents/README.md
··· 1 + Some config files I like to keep around for various vibe coding and prototyping tools. 2 + I happen to prototype with language models a lot! 3 + 4 + **Installation:** `stow agents` 5 + 6 + **Supported models/agents/programs:** 7 + - Aider
+6
cava/config
··· 1 + [color] 2 + gradient = 1 3 + gradient_count = 3 4 + gradient_color_1 = '#8ccf7e' 5 + gradient_color_2 = '#6cbfbf' 6 + gradient_color_3 = '#67b0e8'
+102
eza/.config/eza/theme.yml
··· 1 + colourful: true 2 + 3 + filekinds: 4 + normal: {foreground: "#ebdbb2"} 5 + directory: {foreground: "#83a598"} 6 + symlink: {foreground: "#8ec07c"} 7 + pipe: {foreground: "#928374"} 8 + block_device: {foreground: "#fb4934"} 9 + char_device: {foreground: "#fb4934"} 10 + socket: {foreground: "#665c54"} 11 + special: {foreground: "#d3869b"} 12 + executable: {foreground: "#b8bb26"} 13 + mount_point: {foreground: "#fe8019"} 14 + 15 + perms: 16 + user_read: {foreground: "#ebdbb2"} 17 + user_write: {foreground: "#fabd2f"} 18 + user_execute_file: {foreground: "#b8bb26"} 19 + user_execute_other: {foreground: "#b8bb26"} 20 + group_read: {foreground: "#ebdbb2"} 21 + group_write: {foreground: "#fabd2f"} 22 + group_execute: {foreground: "#b8bb26"} 23 + other_read: {foreground: "#bdae93"} 24 + other_write: {foreground: "#fabd2f"} 25 + other_execute: {foreground: "#b8bb26"} 26 + special_user_file: {foreground: "#d3869b"} 27 + special_other: {foreground: "#928374"} 28 + attribute: {foreground: "#bdae93"} 29 + 30 + size: 31 + major: {foreground: "#bdae93"} 32 + minor: {foreground: "#8ec07c"} 33 + number_byte: {foreground: "#ebdbb2"} 34 + number_kilo: {foreground: "#ebdbb2"} 35 + number_mega: {foreground: "#83a598"} 36 + number_giga: {foreground: "#d3869b"} 37 + number_huge: {foreground: "#d3869b"} 38 + unit_byte: {foreground: "#bdae93"} 39 + unit_kilo: {foreground: "#83a598"} 40 + unit_mega: {foreground: "#d3869b"} 41 + unit_giga: {foreground: "#d3869b"} 42 + unit_huge: {foreground: "#fe8019"} 43 + 44 + users: 45 + user_you: {foreground: "#ebdbb2"} 46 + user_root: {foreground: "#fb4934"} 47 + user_other: {foreground: "#d3869b"} 48 + group_yours: {foreground: "#ebdbb2"} 49 + group_other: {foreground: "#928374"} 50 + group_root: {foreground: "#fb4934"} 51 + 52 + links: 53 + normal: {foreground: "#8ec07c"} 54 + multi_link_file: {foreground: "#fe8019"} 55 + 56 + git: 57 + new: {foreground: "#b8bb26"} 58 + modified: {foreground: "#fabd2f"} 59 + deleted: {foreground: "#fb4934"} 60 + renamed: {foreground: "#8ec07c"} 61 + typechange: {foreground: "#d3869b"} 62 + ignored: {foreground: "#928374"} 63 + conflicted: {foreground: "#cc241d"} 64 + 65 + git_repo: 66 + branch_main: {foreground: "#ebdbb2"} 67 + branch_other: {foreground: "#d3869b"} 68 + git_clean: {foreground: "#b8bb26"} 69 + git_dirty: {foreground: "#fb4934"} 70 + 71 + security_context: 72 + colon: {foreground: "#928374"} 73 + user: {foreground: "#ebdbb2"} 74 + role: {foreground: "#d3869b"} 75 + typ: {foreground: "#665c54"} 76 + range: {foreground: "#d3869b"} 77 + 78 + file_type: 79 + image: {foreground: "#fabd2f"} 80 + video: {foreground: "#fb4934"} 81 + music: {foreground: "#b8bb26"} 82 + lossless: {foreground: "#8ec07c"} 83 + crypto: {foreground: "#928374"} 84 + document: {foreground: "#ebdbb2"} 85 + compressed: {foreground: "#d3869b"} 86 + temp: {foreground: "#cc241d"} 87 + compiled: {foreground: "#83a598"} 88 + build: {foreground: "#928374"} 89 + source: {foreground: "#83a598"} 90 + 91 + punctuation: {foreground: "#928374"} 92 + date: {foreground: "#fabd2f"} 93 + inode: {foreground: "#bdae93"} 94 + blocks: {foreground: "#a89984"} 95 + header: {foreground: "#ebdbb2"} 96 + octal: {foreground: "#8ec07c"} 97 + flags: {foreground: "#d3869b"} 98 + 99 + symlink_path: {foreground: "#8ec07c"} 100 + control_char: {foreground: "#83a598"} 101 + broken_symlink: {foreground: "#fb4934"} 102 + broken_path_overlay: {foreground: "#928374"}
+5
eza/README.md
··· 1 + ## `eza` config 2 + 3 + Contains a `theme.yml` file in a `.config` directory. Theme is based on Gruvbox Dark from [here](https://github.com/eza-community/eza-themes?tab=readme-ov-file#themes). 4 + 5 + To install, run `stow eza`. In the [Nix config](../nixos/README.md), `eza` is also preconfigured with aliases replacing `ls` and `la` with what I think is a superior option, as well as a humorously named `la-blyat` alias for cases when one needs to debug permissions and file ownership.
+123
flake.lock
··· 1 + { 2 + "nodes": { 3 + "home-manager": { 4 + "inputs": { 5 + "nixpkgs": [ 6 + "nixpkgs" 7 + ] 8 + }, 9 + "locked": { 10 + "lastModified": 1767104570, 11 + "narHash": "sha256-GKgwu5//R+cLdKysZjGqvUEEOGXXLdt93sNXeb2M/Lk=", 12 + "owner": "nix-community", 13 + "repo": "home-manager", 14 + "rev": "e4e78a2cbeaddd07ab7238971b16468cc1d14daf", 15 + "type": "github" 16 + }, 17 + "original": { 18 + "owner": "nix-community", 19 + "repo": "home-manager", 20 + "type": "github" 21 + } 22 + }, 23 + "nixpkgs": { 24 + "locked": { 25 + "lastModified": 1767116409, 26 + "narHash": "sha256-5vKw92l1GyTnjoLzEagJy5V5mDFck72LiQWZSOnSicw=", 27 + "owner": "nixos", 28 + "repo": "nixpkgs", 29 + "rev": "cad22e7d996aea55ecab064e84834289143e44a0", 30 + "type": "github" 31 + }, 32 + "original": { 33 + "owner": "nixos", 34 + "ref": "nixos-unstable", 35 + "repo": "nixpkgs", 36 + "type": "github" 37 + } 38 + }, 39 + "nixpkgs_2": { 40 + "locked": { 41 + "lastModified": 1762111121, 42 + "narHash": "sha256-4vhDuZ7OZaZmKKrnDpxLZZpGIJvAeMtK6FKLJYUtAdw=", 43 + "owner": "NixOS", 44 + "repo": "nixpkgs", 45 + "rev": "b3d51a0365f6695e7dd5cdf3e180604530ed33b4", 46 + "type": "github" 47 + }, 48 + "original": { 49 + "owner": "NixOS", 50 + "ref": "nixos-unstable", 51 + "repo": "nixpkgs", 52 + "type": "github" 53 + } 54 + }, 55 + "root": { 56 + "inputs": { 57 + "home-manager": "home-manager", 58 + "nixpkgs": "nixpkgs", 59 + "vicinae": "vicinae", 60 + "zen-browser": "zen-browser" 61 + } 62 + }, 63 + "systems": { 64 + "locked": { 65 + "lastModified": 1681028828, 66 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 67 + "owner": "nix-systems", 68 + "repo": "default", 69 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 70 + "type": "github" 71 + }, 72 + "original": { 73 + "owner": "nix-systems", 74 + "repo": "default", 75 + "type": "github" 76 + } 77 + }, 78 + "vicinae": { 79 + "inputs": { 80 + "nixpkgs": "nixpkgs_2", 81 + "systems": "systems" 82 + }, 83 + "locked": { 84 + "lastModified": 1767353605, 85 + "narHash": "sha256-j2nuPawvb33wjTV93htSiMRxGeTLLrKhwOEqmmTu5uY=", 86 + "owner": "vicinaehq", 87 + "repo": "vicinae", 88 + "rev": "d89a9c9656486de144fd035bea7c2ea3b97fedf8", 89 + "type": "github" 90 + }, 91 + "original": { 92 + "owner": "vicinaehq", 93 + "repo": "vicinae", 94 + "type": "github" 95 + } 96 + }, 97 + "zen-browser": { 98 + "inputs": { 99 + "home-manager": [ 100 + "home-manager" 101 + ], 102 + "nixpkgs": [ 103 + "nixpkgs" 104 + ] 105 + }, 106 + "locked": { 107 + "lastModified": 1767325268, 108 + "narHash": "sha256-pfcdocdj2IChXdIwOdUSqP/uXa3JyphrUw+9fIPg5C8=", 109 + "owner": "0xc000022070", 110 + "repo": "zen-browser-flake", 111 + "rev": "ddc559d690ea07092d9c1fa52ead35394a613c80", 112 + "type": "github" 113 + }, 114 + "original": { 115 + "owner": "0xc000022070", 116 + "repo": "zen-browser-flake", 117 + "type": "github" 118 + } 119 + } 120 + }, 121 + "root": "root", 122 + "version": 7 123 + }
+60
flake.nix
··· 1 + { 2 + description = "bpavuk's desktop flake"; 3 + 4 + inputs = { 5 + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; 6 + 7 + home-manager = { 8 + url = "github:nix-community/home-manager"; 9 + inputs.nixpkgs.follows = "nixpkgs"; 10 + }; 11 + 12 + zen-browser = { 13 + url = "github:0xc000022070/zen-browser-flake"; 14 + inputs = { 15 + nixpkgs.follows = "nixpkgs"; 16 + home-manager.follows = "home-manager"; 17 + }; 18 + }; 19 + 20 + vicinae = { 21 + url = "github:vicinaehq/vicinae"; 22 + }; 23 + }; 24 + 25 + outputs = { self, nixpkgs, home-manager, zen-browser, vicinae, ... }@inputs: 26 + let 27 + system = "x86_64-linux"; 28 + in 29 + { 30 + nixosConfigurations."bpavuk-nixos" = nixpkgs.lib.nixosSystem { 31 + modules = [ 32 + ./nixos/hosts/bpavuk-nixos 33 + home-manager.nixosModules.home-manager 34 + { 35 + home-manager.useGlobalPkgs = true; 36 + home-manager.useUserPackages = true; 37 + home-manager.users.bpavuk = ./nixos/users/bpavuk.nix; 38 + 39 + home-manager.extraSpecialArgs = { 40 + zen-browser = zen-browser; 41 + vicinae = vicinae; 42 + }; 43 + } 44 + ]; 45 + }; 46 + 47 + homeConfigurations."bpavuk" = home-manager.lib.homeManagerConfiguration { 48 + modules = [ 49 + vicinae.homeManagerModules.default 50 + 51 + ./nixos/users/bpavuk.nix 52 + { programs.home-manager.enable = true; } 53 + ]; 54 + 55 + extraSpecialArgs = { 56 + zen-browser = zen-browser; 57 + }; 58 + }; 59 + }; 60 + }
+55
ghostty/.config/ghostty/config
··· 1 + # This is the configuration file for Ghostty. 2 + # 3 + # This template file has been automatically created at the following 4 + # path since Ghostty couldn't find any existing config files on your system: 5 + # 6 + # /home/bpavuk/.config/ghostty/config 7 + # 8 + # The template does not set any default options, since Ghostty ships 9 + # with sensible defaults for all options. Users should only need to set 10 + # options that they want to change from the default. 11 + # 12 + # Run `ghostty +show-config --default --docs` to view a list of 13 + # all available config options and their default values. 14 + # 15 + # Additionally, each config option is also explained in detail 16 + # on Ghostty's website, at https://ghostty.org/docs/config. 17 + # 18 + # Ghostty can reload the configuration while running by using the menu 19 + # options or the bound key (default: Command + Shift + comma on macOS and 20 + # Control + Shift + comma on other platforms). Not all config options can be 21 + # reloaded while running; some only apply to new windows and others may require 22 + # a full restart to take effect. 23 + 24 + # Config syntax crash course 25 + # ========================== 26 + # # The config file consists of simple key-value pairs, 27 + # # separated by equals signs. 28 + # font-family = Iosevka 29 + # window-padding-x = 2 30 + # 31 + # # Spacing around the equals sign does not matter. 32 + # # All of these are identical: 33 + # key=value 34 + # key= value 35 + # key =value 36 + # key = value 37 + # 38 + # # Any line beginning with a # is a comment. It's not possible to put 39 + # # a comment after a config option, since it would be interpreted as a 40 + # # part of the value. For example, this will have a value of "#123abc": 41 + # background = #123abc 42 + # 43 + # # Empty values are used to reset config keys to default. 44 + # key = 45 + # 46 + # # Some config options have unique syntaxes for their value, 47 + # # which is explained in the docs for that config option. 48 + # # Just for example: 49 + # resize-overlay-duration = 4s 200ms 50 + 51 + window-decoration = none 52 + 53 + theme = Gruvbox Dark Hard 54 + 55 + custom-shader = shaders/cursor_warp.glsl
+306
ghostty/.config/ghostty/shaders/cursor_warp.glsl
··· 1 + // Copyright (c) 2025 Sahaj Bhatt 2 + // original source located at https://github.com/sahaj-b/ghostty-cursor-shaders 3 + 4 + // --- CONFIGURATION --- 5 + vec4 TRAIL_COLOR = iCurrentCursorColor; // can change to eg: vec4(0.2, 0.6, 1.0, 0.5); 6 + const float DURATION = 0.2; // total animation time 7 + const float TRAIL_SIZE = 0.8; // 0.0 = all corners move together. 1.0 = max smear (leading corners jump instantly) 8 + const float THRESHOLD_MIN_DISTANCE = 1.5; // min distance to show trail (units of cursor height) 9 + const float BLUR = 1.0; // blur size in pixels (for antialiasing) 10 + const float TRAIL_THICKNESS = 1.0; // 1.0 = full cursor height, 0.0 = zero height, >1.0 = funky aah 11 + const float TRAIL_THICKNESS_X = 0.9; 12 + 13 + const float FADE_ENABLED = 0.0; // 1.0 to enable fade gradient along the trail, 0.0 to disable 14 + const float FADE_EXPONENT = 5.0; // exponent for fade gradient along the trail 15 + 16 + // --- CONSTANTS for easing functions --- 17 + const float PI = 3.14159265359; 18 + const float C1_BACK = 1.70158; 19 + const float C2_BACK = C1_BACK * 1.525; 20 + const float C3_BACK = C1_BACK + 1.0; 21 + const float C4_ELASTIC = (2.0 * PI) / 3.0; 22 + const float C5_ELASTIC = (2.0 * PI) / 4.5; 23 + const float SPRING_STIFFNESS = 9.0; 24 + const float SPRING_DAMPING = 0.9; 25 + 26 + // --- EASING FUNCTIONS --- 27 + 28 + // // Linear 29 + // float ease(float x) { 30 + // return x; 31 + // } 32 + 33 + // // EaseOutQuad 34 + // float ease(float x) { 35 + // return 1.0 - (1.0 - x) * (1.0 - x); 36 + // } 37 + 38 + // // EaseOutCubic 39 + // float ease(float x) { 40 + // return 1.0 - pow(1.0 - x, 3.0); 41 + // } 42 + 43 + // // EaseOutQuart 44 + // float ease(float x) { 45 + // return 1.0 - pow(1.0 - x, 4.0); 46 + // } 47 + 48 + // // EaseOutQuint 49 + // float ease(float x) { 50 + // return 1.0 - pow(1.0 - x, 5.0); 51 + // } 52 + 53 + // // EaseOutSine 54 + // float ease(float x) { 55 + // return sin((x * PI) / 2.0); 56 + // } 57 + 58 + // // EaseOutExpo 59 + // float ease(float x) { 60 + // return x == 1.0 ? 1.0 : 1.0 - pow(2.0, -10.0 * x); 61 + // } 62 + 63 + // EaseOutCirc 64 + float ease(float x) { 65 + return sqrt(1.0 - pow(x - 1.0, 2.0)); 66 + } 67 + 68 + // // EaseOutBack 69 + // float ease(float x) { 70 + // return 1.0 + C3_BACK * pow(x - 1.0, 3.0) + C1_BACK * pow(x - 1.0, 2.0); 71 + // } 72 + 73 + // // EaseOutElastic 74 + // float ease(float x) { 75 + // return x == 0.0 ? 0.0 76 + // : x == 1.0 ? 1.0 77 + // : pow(2.0, -10.0 * x) * sin((x * 10.0 - 0.75) * C4_ELASTIC) + 1.0; 78 + // } 79 + 80 + // // Parametric Spring 81 + // float ease(float x) { 82 + // x = clamp(x, 0.0, 1.0); 83 + // float decay = exp(-SPRING_DAMPING * SPRING_STIFFNESS * x); 84 + // float freq = sqrt(SPRING_STIFFNESS * (1.0 - SPRING_DAMPING * SPRING_DAMPING)); 85 + // float osc = cos(freq * 6.283185 * x) + (SPRING_DAMPING * sqrt(SPRING_STIFFNESS) / freq) * sin(freq * 6.283185 * x); 86 + // return 1.0 - decay * osc; 87 + // } 88 + 89 + float getSdfRectangle(in vec2 p, in vec2 xy, in vec2 b) 90 + { 91 + vec2 d = abs(p - xy) - b; 92 + return length(max(d, 0.0)) + min(max(d.x, d.y), 0.0); 93 + } 94 + 95 + // Based on Inigo Quilez's 2D distance functions article: https://iquilezles.org/articles/distfunctions2d/ 96 + // Potencially optimized by eliminating conditionals and loops to enhance performance and reduce branching 97 + float seg(in vec2 p, in vec2 a, in vec2 b, inout float s, float d) { 98 + vec2 e = b - a; 99 + vec2 w = p - a; 100 + vec2 proj = a + e * clamp(dot(w, e) / dot(e, e), 0.0, 1.0); 101 + float segd = dot(p - proj, p - proj); 102 + d = min(d, segd); 103 + 104 + float c0 = step(0.0, p.y - a.y); 105 + float c1 = 1.0 - step(0.0, p.y - b.y); 106 + float c2 = 1.0 - step(0.0, e.x * w.y - e.y * w.x); 107 + float allCond = c0 * c1 * c2; 108 + float noneCond = (1.0 - c0) * (1.0 - c1) * (1.0 - c2); 109 + float flip = mix(1.0, -1.0, step(0.5, allCond + noneCond)); 110 + s *= flip; 111 + return d; 112 + } 113 + 114 + float getSdfConvexQuad(in vec2 p, in vec2 v1, in vec2 v2, in vec2 v3, in vec2 v4) { 115 + float s = 1.0; 116 + float d = dot(p - v1, p - v1); 117 + 118 + d = seg(p, v1, v2, s, d); 119 + d = seg(p, v2, v3, s, d); 120 + d = seg(p, v3, v4, s, d); 121 + d = seg(p, v4, v1, s, d); 122 + 123 + return s * sqrt(d); 124 + } 125 + 126 + vec2 normalize(vec2 value, float isPosition) { 127 + return (value * 2.0 - (iResolution.xy * isPosition)) / iResolution.y; 128 + } 129 + 130 + float antialising(float distance, float blurAmount) { 131 + return 1. - smoothstep(0., normalize(vec2(blurAmount, blurAmount), 0.).x, distance); 132 + } 133 + 134 + // Determines animation duration based on a corner's alignment with the move direction(dot product) 135 + // dot_val will be in [-2, 2] 136 + // > 0.5 (1 or 2) = Leading 137 + // > -0.5 (0) = Side 138 + // <= -0.5 (-1 or -2) = Trailing 139 + float getDurationFromDot(float dot_val, float DURATION_LEAD, float DURATION_SIDE, float DURATION_TRAIL) { 140 + float isLead = step(0.5, dot_val); 141 + float isSide = step(-0.5, dot_val) * (1.0 - isLead); 142 + 143 + // Start with trailing duration 144 + float duration = mix(DURATION_TRAIL, DURATION_SIDE, isSide); 145 + // Mix in leading duration 146 + duration = mix(duration, DURATION_LEAD, isLead); 147 + return duration; 148 + } 149 + 150 + void mainImage(out vec4 fragColor, in vec2 fragCoord){ 151 + #if !defined(WEB) 152 + fragColor = texture(iChannel0, fragCoord.xy / iResolution.xy); 153 + #endif 154 + 155 + // normalization & setup(-1, 1 coords) 156 + vec2 vu = normalize(fragCoord, 1.); 157 + vec2 offsetFactor = vec2(-.5, 0.5); 158 + 159 + vec4 currentCursor = vec4(normalize(iCurrentCursor.xy, 1.), normalize(iCurrentCursor.zw, 0.)); 160 + vec4 previousCursor = vec4(normalize(iPreviousCursor.xy, 1.), normalize(iPreviousCursor.zw, 0.)); 161 + 162 + vec2 centerCC = currentCursor.xy - (currentCursor.zw * offsetFactor); 163 + vec2 halfSizeCC = currentCursor.zw * 0.5; 164 + vec2 centerCP = previousCursor.xy - (previousCursor.zw * offsetFactor); 165 + vec2 halfSizeCP = previousCursor.zw * 0.5; 166 + 167 + float sdfCurrentCursor = getSdfRectangle(vu, centerCC, halfSizeCC); 168 + 169 + float lineLength = distance(centerCC, centerCP); 170 + float minDist = currentCursor.w * THRESHOLD_MIN_DISTANCE; 171 + 172 + vec4 newColor = vec4(fragColor); 173 + 174 + float baseProgress = iTime - iTimeCursorChange; 175 + 176 + if (lineLength > minDist && baseProgress < DURATION - 0.001) { 177 + // defining corners of cursors 178 + 179 + // Y (Height) with TRAIL_THICKNESS 180 + float cc_half_height = currentCursor.w * 0.5; 181 + float cc_center_y = currentCursor.y - cc_half_height; 182 + float cc_new_half_height = cc_half_height * TRAIL_THICKNESS; 183 + float cc_new_top_y = cc_center_y + cc_new_half_height; 184 + float cc_new_bottom_y = cc_center_y - cc_new_half_height; 185 + 186 + // X (Width) with TRAIL_THICKNESS 187 + float cc_half_width = currentCursor.z * 0.5; 188 + float cc_center_x = currentCursor.x + cc_half_width; 189 + float cc_new_half_width = cc_half_width * TRAIL_THICKNESS_X; 190 + float cc_new_left_x = cc_center_x - cc_new_half_width; 191 + float cc_new_right_x = cc_center_x + cc_new_half_width; 192 + 193 + vec2 cc_tl = vec2(cc_new_left_x, cc_new_top_y); 194 + vec2 cc_tr = vec2(cc_new_right_x, cc_new_top_y); 195 + vec2 cc_bl = vec2(cc_new_left_x, cc_new_bottom_y); 196 + vec2 cc_br = vec2(cc_new_right_x, cc_new_bottom_y); 197 + 198 + // same thing for previous cursor 199 + float cp_half_height = previousCursor.w * 0.5; 200 + float cp_center_y = previousCursor.y - cp_half_height; 201 + float cp_new_half_height = cp_half_height * TRAIL_THICKNESS; 202 + float cp_new_top_y = cp_center_y + cp_new_half_height; 203 + float cp_new_bottom_y = cp_center_y - cp_new_half_height; 204 + 205 + float cp_half_width = previousCursor.z * 0.5; 206 + float cp_center_x = previousCursor.x + cp_half_width; 207 + float cp_new_half_width = cp_half_width * TRAIL_THICKNESS_X; 208 + float cp_new_left_x = cp_center_x - cp_new_half_width; 209 + float cp_new_right_x = cp_center_x + cp_new_half_width; 210 + 211 + vec2 cp_tl = vec2(cp_new_left_x, cp_new_top_y); 212 + vec2 cp_tr = vec2(cp_new_right_x, cp_new_top_y); 213 + vec2 cp_bl = vec2(cp_new_left_x, cp_new_bottom_y); 214 + vec2 cp_br = vec2(cp_new_right_x, cp_new_bottom_y); 215 + 216 + // calculating durations for every corner 217 + const float DURATION_TRAIL = DURATION; 218 + const float DURATION_LEAD = DURATION * (1.0 - TRAIL_SIZE); 219 + const float DURATION_SIDE = (DURATION_LEAD + DURATION_TRAIL) / 2.0; 220 + 221 + vec2 moveVec = centerCC - centerCP; 222 + vec2 s = sign(moveVec); 223 + 224 + // dot products for each corner, determining alignment with movement direction 225 + float dot_tl = dot(vec2(-1., 1.), s); 226 + float dot_tr = dot(vec2( 1., 1.), s); 227 + float dot_bl = dot(vec2(-1.,-1.), s); 228 + float dot_br = dot(vec2( 1.,-1.), s); 229 + 230 + // assign durations based on dot products 231 + float dur_tl = getDurationFromDot(dot_tl, DURATION_LEAD, DURATION_SIDE, DURATION_TRAIL); 232 + float dur_tr = getDurationFromDot(dot_tr, DURATION_LEAD, DURATION_SIDE, DURATION_TRAIL); 233 + float dur_bl = getDurationFromDot(dot_bl, DURATION_LEAD, DURATION_SIDE, DURATION_TRAIL); 234 + float dur_br = getDurationFromDot(dot_br, DURATION_LEAD, DURATION_SIDE, DURATION_TRAIL); 235 + 236 + // check direction of horizontal movement 237 + float isMovingRight = step(0.5, s.x); 238 + float isMovingLeft = step(0.5, -s.x); 239 + 240 + // calculate vertical-rail durations 241 + float dot_right_edge = (dot_tr + dot_br) * 0.5; 242 + float dur_right_rail = getDurationFromDot(dot_right_edge, DURATION_LEAD, DURATION_SIDE, DURATION_TRAIL); 243 + 244 + float dot_left_edge = (dot_tl + dot_bl) * 0.5; 245 + float dur_left_rail = getDurationFromDot(dot_left_edge, DURATION_LEAD, DURATION_SIDE, DURATION_TRAIL); 246 + 247 + float final_dur_tl = mix(dur_tl, dur_left_rail, isMovingLeft); 248 + float final_dur_bl = mix(dur_bl, dur_left_rail, isMovingLeft); 249 + 250 + float final_dur_tr = mix(dur_tr, dur_right_rail, isMovingRight); 251 + float final_dur_br = mix(dur_br, dur_right_rail, isMovingRight); 252 + 253 + // calculate progress for each corner based on the duration and time since cursor change 254 + float prog_tl = ease(clamp(baseProgress / final_dur_tl, 0.0, 1.0)); 255 + float prog_tr = ease(clamp(baseProgress / final_dur_tr, 0.0, 1.0)); 256 + float prog_bl = ease(clamp(baseProgress / final_dur_bl, 0.0, 1.0)); 257 + float prog_br = ease(clamp(baseProgress / final_dur_br, 0.0, 1.0)); 258 + 259 + // get the trial corner positions based on progress 260 + vec2 v_tl = mix(cp_tl, cc_tl, prog_tl); 261 + vec2 v_tr = mix(cp_tr, cc_tr, prog_tr); 262 + vec2 v_br = mix(cp_br, cc_br, prog_br); 263 + vec2 v_bl = mix(cp_bl, cc_bl, prog_bl); 264 + 265 + // DRAWING THE TRAIL 266 + float sdfTrail = getSdfConvexQuad(vu, v_tl, v_tr, v_br, v_bl); 267 + 268 + // --- FADE GRADIENT CALCULATION --- 269 + vec2 fragVec = vu - centerCP; 270 + 271 + // project fragment onto movement vector, normalize to [0, 1] 272 + // 0.0 at tail, 1.0 at head 273 + // tiny epsilon to avoid division by zero if moveVec is (0,0) 274 + float fadeProgress = clamp(dot(fragVec, moveVec) / (dot(moveVec, moveVec) + 1e-6), 0.0, 1.0); 275 + 276 + vec4 trail = TRAIL_COLOR; 277 + 278 + float effectiveBlur = BLUR; 279 + if (BLUR < 2.5) { 280 + // no antialising on horizontal/vertical movement, fixes 'pulse' like thing on end cursor 281 + float isDiagonal = abs(s.x) * abs(s.y); // 1.0 if diagonal, 0.0 if H/V 282 + float effectiveBlur = mix(0.0, BLUR, isDiagonal); 283 + } 284 + float shapeAlpha = antialising(sdfTrail, effectiveBlur); // shape mask 285 + 286 + if (FADE_ENABLED > 0.5) { 287 + // apply fade gradient along the trail 288 + // float fadeStart = 0.2; 289 + // float easedProgress = smoothstep(fadeStart, 1.0, fadeProgress); 290 + // easedProgress = pow(2.0, 10.0 * (fadeProgress - 1.0)); 291 + float easedProgress = pow(fadeProgress, FADE_EXPONENT); 292 + trail.a *= easedProgress; 293 + } 294 + 295 + float finalAlpha = trail.a * shapeAlpha; 296 + 297 + // newColor.a to preserve the background alpha. 298 + newColor = mix(newColor, vec4(trail.rgb, newColor.a), finalAlpha); 299 + 300 + // punch hole on the trail, so current cursor is drawn on top 301 + newColor = mix(newColor, fragColor, step(sdfCurrentCursor, 0.)); 302 + 303 + } 304 + 305 + fragColor = newColor; 306 + }
+3
ghostty/README.md
··· 1 + # Ghostty 2 + 3 + To install configuration files from here, run `stow ghostty`. On NixOS, Ghostty comes with this flake, preconfigured and enabled by default.
+24
nixos/README.md
··· 1 + # NixOS Configuration 2 + 3 + This is my personal NixOS configuration, managed with Flakes and Home Manager. 4 + 5 + ## Prerequisites 6 + 7 + - A running NixOS system with Flakes enabled. 8 + - This repository cloned onto the machine. 9 + 10 + ## Installation 11 + 12 + 1. Navigate to this directory (`/path/to/bpavuk.term`). 13 + 2. Replace the `./hosts/bpavuk-nixos/hardware-configuration.nix` file with your generated one, OR create your own host by modifying `flake.nix` and adding your host-specific configuration to the `hosts` folder. 14 + 3. Run the rebuild command, pointing it to the correct host configuration within the flake. 15 + 16 + ```sh 17 + sudo nixos-rebuild switch --flake .#bpavuk-nixos 18 + ``` 19 + 20 + ## Structure 21 + 22 + - `hosts/`: System-level configurations. Each subdirectory corresponds to a different machine. 23 + - `users/`: User-level configurations, managed via `home-manager`. 24 + - `home/`: Modular components for the user configurations (e.g., `development`, `life`, `fonts`).
+13
nixos/desktop/gnome.nix
··· 1 + { config, pkgs, ... }: 2 + 3 + { 4 + services.displayManager.gdm.enable = true; 5 + services.desktopManager.gnome.enable = true; 6 + 7 + services.gnome.gnome-browser-connector.enable = true; 8 + services.udev.packages = with pkgs; [ gnome-settings-daemon ]; 9 + 10 + qt.platformTheme = "gnome"; 11 + 12 + environment.systemPackages = with pkgs; [ gnome-software ]; 13 + }
+9
nixos/desktop/hyprland.nix
··· 1 + { pkgs, lib, config, ... }: 2 + 3 + { 4 + programs.hyprland.enable = true; 5 + 6 + environment.systemPackages = [ 7 + pkgs.kitty 8 + ]; 9 + }
+13
nixos/home/development/android.nix
··· 1 + { lib, pkgs, config, ... }: 2 + 3 + { 4 + home.packages = with pkgs; [ 5 + jdk17 6 + android-studio 7 + android-tools 8 + ]; 9 + 10 + home.sessionVariables = { 11 + JAVA_HOME = pkgs.jdk17.home; 12 + }; 13 + }
+29
nixos/home/development/default.nix
··· 1 + { config, lib, pkgs, ... }: 2 + 3 + { 4 + imports = [ 5 + (import ./android.nix {inherit config lib pkgs; }) 6 + # (import ./eza.nix {inherit config lib pkgs; }) # disabled because of nushell 7 + (import ./git.nix { inherit config lib pkgs; }) 8 + (import ./gradle.nix { inherit pkgs; }) 9 + (import ./neovim.nix { inherit config lib pkgs; }) 10 + (import ./ssh.nix { inherit config lib pkgs; }) 11 + (import ./tmux.nix { inherit config lib pkgs; }) 12 + (import ./zellij.nix { inherit config lib pkgs; }) 13 + (import ./zsh.nix { inherit config lib pkgs; }) 14 + ]; 15 + 16 + programs = { 17 + zoxide.enable = true; 18 + bash.enable = true; 19 + direnv.enable = true; 20 + }; 21 + 22 + home.packages = with pkgs; [ 23 + jetbrains-toolbox 24 + ]; 25 + 26 + home.sessionVariables = { 27 + EDITOR = "nvim"; 28 + }; 29 + }
+27
nixos/home/development/eza.nix
··· 1 + { pkgs, lib, config, ... }: 2 + 3 + { 4 + programs.eza = { 5 + enable = true; 6 + enableZshIntegration = true; 7 + enableNushellIntegration = true; 8 + 9 + icons = "auto"; 10 + colors = "auto"; 11 + git = true; 12 + extraOptions = [ 13 + "--group-directories-first" 14 + ]; 15 + }; 16 + 17 + xdg.configFile."eza/" = { 18 + source = ../../../eza/.config/eza; 19 + recursive = true; 20 + }; 21 + 22 + home.shellAliases = { 23 + ls = "eza"; 24 + la = "eza --long --no-user --no-permissions --git --group-directories-first -a"; 25 + la-blyat = "eza --long --git"; 26 + }; 27 + }
+20
nixos/home/development/git.nix
··· 1 + { config, lib, pkgs, ... }: 2 + 3 + { 4 + programs = { 5 + git = { 6 + enable = true; 7 + 8 + settings = { 9 + user.email = "boulderobscura@gmail.com"; 10 + user.name = "bpavuk"; 11 + }; 12 + }; 13 + gh.enable = true; 14 + }; 15 + 16 + home.packages = [ 17 + pkgs.glab 18 + pkgs.jujutsu 19 + ]; 20 + }
+8
nixos/home/development/gradle.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + home.packages = with pkgs; [ 5 + gradle 6 + # gradle-completion 7 + ]; 8 + }
+23
nixos/home/development/neovim.nix
··· 1 + { config, lib, pkgs, ... }: 2 + 3 + { 4 + programs = { 5 + neovim = { 6 + enable = true; 7 + withNodeJs = true; 8 + 9 + extraPackages = with pkgs; [ 10 + clang 11 + ripgrep 12 + luarocks 13 + ]; 14 + 15 + defaultEditor = true; 16 + }; 17 + }; 18 + 19 + xdg.configFile."nvim/" = { 20 + source = ../../../nvim/.config/nvim; 21 + recursive = true; 22 + }; 23 + }
+16
nixos/home/development/ssh.nix
··· 1 + { config, lib, pkgs }: 2 + 3 + { 4 + programs = { 5 + ssh = { 6 + enable = true; 7 + package = pkgs.openssh; 8 + enableDefaultConfig = false; 9 + }; 10 + }; 11 + 12 + home.file.".ssh/config" = { 13 + target = ".ssh/config_source"; 14 + onChange = ''cat ~/.ssh/config_source > ~/.ssh/config && chmod 400 ~/.ssh/config''; 15 + }; 16 + }
+17
nixos/home/development/tmux.nix
··· 1 + { config, lib, pkgs, ... }: 2 + 3 + { 4 + programs.tmux = { 5 + enable = true; 6 + mouse = true; 7 + shell = "${pkgs.zsh}/bin/zsh"; 8 + 9 + plugins = with pkgs.tmuxPlugins; [ 10 + cpu 11 + catppuccin 12 + vim-tmux-navigator 13 + ]; 14 + }; 15 + 16 + home.file.".tmux.conf".source = ../../../tmux/.tmux.conf; 17 + }
+12
nixos/home/development/zellij.nix
··· 1 + { config, lib, pkgs, ... }: 2 + 3 + { 4 + programs.zellij = { 5 + enable = true; 6 + }; 7 + 8 + xdg.configFile."zellij/" = { 9 + source = ../../../zellij/.config/zellij; 10 + recursive = true; 11 + }; 12 + }
+39
nixos/home/development/zsh.nix
··· 1 + { config, pkgs, lib }: 2 + 3 + { 4 + programs.zsh = { 5 + enable = true; 6 + enableCompletion = true; 7 + autosuggestion.enable = true; 8 + syntaxHighlighting.enable = true; 9 + history.size = 10000; 10 + autocd = false; 11 + }; 12 + 13 + programs.nushell = { 14 + enable = true; 15 + settings = { 16 + show_banner = false; 17 + completions.external = { 18 + enable = true; 19 + }; 20 + }; 21 + environmentVariables = config.home.sessionVariables; 22 + }; 23 + 24 + programs.pay-respects = { 25 + enable = true; 26 + enableZshIntegration = true; 27 + enableBashIntegration = true; 28 + options = [ "--alias" "fuck" ]; 29 + }; 30 + 31 + 32 + programs.starship = { 33 + enable = true; 34 + enableZshIntegration = true; 35 + enableBashIntegration = true; 36 + }; 37 + 38 + xdg.configFile."starship.toml".source = ../../../starship/.config/starship.toml; 39 + }
+9
nixos/home/fonts/default.nix
··· 1 + { config, lib, pkgs }: 2 + 3 + { 4 + fonts.fontconfig.enable = true; 5 + 6 + home.packages = with pkgs; [ 7 + nerd-fonts.jetbrains-mono 8 + ]; 9 + }
+11
nixos/home/life/creativity.nix
··· 1 + { lib, config, pkgs, ... }: 2 + 3 + { 4 + home.packages = with pkgs; [ 5 + # VIDEO 6 + # davinci-resolve 7 + 8 + # 3D 9 + blender-hip # TODO: implement AMD GPU detection, or maybe drop Cycles acceleration 10 + ]; 11 + }
+81
nixos/home/life/default.nix
··· 1 + { lib, config, pkgs, zen-browser, ... }: 2 + 3 + { 4 + imports = [ 5 + ./creativity.nix 6 + ./gaming.nix 7 + ./gnome.nix 8 + # ./hyprland 9 + ./music 10 + ./ghostty 11 + ]; 12 + 13 + home.packages = with pkgs; [ 14 + # browser 15 + zen-browser.packages."x86_64-linux".default 16 + 17 + obsidian 18 + 19 + discord 20 + signal-desktop-bin 21 + gpu-screen-recorder-gtk 22 + 23 + qbittorrent 24 + 25 + # zen 26 + cbonsai 27 + 28 + # system 29 + btop 30 + 31 + # safety and encryption 32 + gpg-tui 33 + pinentry-all 34 + cryptsetup 35 + 36 + # Nix Helper 37 + nh 38 + 39 + # RSS reader 40 + newsflash 41 + ]; 42 + 43 + services.vicinae = { 44 + enable = true; 45 + systemd = { 46 + autoStart = true; 47 + }; 48 + }; 49 + 50 + programs.yazi = { 51 + enable = true; 52 + enableNushellIntegration = true; 53 + enableZshIntegration = true; 54 + enableBashIntegration = true; 55 + }; 56 + 57 + xdg.configFile."yazi/" = { 58 + source = ../../../yazi/.config/yazi; 59 + recursive = true; 60 + }; 61 + 62 + services.gpg-agent = { 63 + enable = true; 64 + enableNushellIntegration = true; 65 + enableSshSupport = true; 66 + }; 67 + 68 + home.file.".gnupg/dirmngr.conf".text = '' 69 + keyserver hkps://keys.openpgp.org 70 + ''; 71 + 72 + services.syncthing.enable = true; 73 + 74 + # it must stay there, or else the cursor will be gone 75 + home.pointerCursor = { 76 + gtk.enable = true; 77 + 78 + package = pkgs.adwaita-icon-theme; 79 + name = "Adwaita"; 80 + }; 81 + }
+8
nixos/home/life/gaming.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + home.packages = with pkgs; [ 5 + lutris 6 + wineWowPackages.stable 7 + ]; 8 + }
+14
nixos/home/life/ghostty/default.nix
··· 1 + { pkgs, ... }: { 2 + programs.ghostty = { 3 + enable = true; 4 + systemd.enable = true; 5 + 6 + enableBashIntegration = true; 7 + enableZshIntegration = true; 8 + }; 9 + 10 + xdg.configFile."ghostty/" = { 11 + source = ../../../../ghostty/.config/ghostty; 12 + recursive = true; 13 + }; 14 + }
+20
nixos/home/life/gnome.nix
··· 1 + { config, pkgs, lib, ... }: 2 + 3 + { 4 + programs.gnome-shell = { 5 + enable = true; 6 + extensions = with pkgs.gnomeExtensions; [ 7 + { package = blur-my-shell; } 8 + { package = clipboard-history; } 9 + { package = dock-from-dash; } 10 + { package = appindicator; } 11 + { package = gsconnect; } 12 + { package = vicinae; } 13 + ]; 14 + }; 15 + 16 + dconf = { 17 + enable = true; 18 + settings."org/gnome/desktop/interface".color-scheme = "prefer-dark"; 19 + }; 20 + }
+19
nixos/home/life/hyprland/default.nix
··· 1 + { pkgs, lib, config, ... }: 2 + 3 + { 4 + imports = [ 5 + ./swww_waypaper.nix 6 + ./waybar.nix 7 + ]; 8 + 9 + wayland.windowManager.hyprland = { 10 + enable = true; 11 + package = null; 12 + portalPackage = null; 13 + }; 14 + 15 + xdg.configFile."hypr/" = { 16 + source = ../../../../window_manager/.config/hypr; 17 + recursive = true; 18 + }; 19 + }
+18
nixos/home/life/hyprland/swww_waypaper.nix
··· 1 + { pkgs, lib, config, ... }: 2 + 3 + { 4 + services.swww.enable = true; 5 + 6 + home.packages = with pkgs; [ 7 + waypaper 8 + ]; 9 + 10 + xdg.configFile."waypaper/" = { 11 + source = ../../../../window_manager/.config/waypaper; 12 + recursive = true; 13 + }; 14 + xdg.configFile."wallpaper/" = { 15 + source = ../../../../window_manager/.config/wallpaper; 16 + recursive = true; 17 + }; 18 + }
+17
nixos/home/life/hyprland/waybar.nix
··· 1 + { pkgs, lib, config, ... }: 2 + 3 + { 4 + # Waybar 5 + 6 + programs.waybar.enable = true; 7 + programs.eww.enable = true; 8 + 9 + xdg.configFile."waybar/" = { 10 + source = ../../../../window_manager/.config/waybar; 11 + recursive = true; 12 + }; 13 + xdg.configFile."eww/" = { 14 + source = ../../../../window_manager/.config/eww; 15 + recursive = true; 16 + }; 17 + }
+29
nixos/home/life/music/default.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + # gapless/g4music 5 + home.packages = with pkgs; [ 6 + gapless 7 + ]; 8 + 9 + # terminal (cava, cmus) 10 + programs = { 11 + cmus = { 12 + enable = true; 13 + theme = "gruvbox"; 14 + }; 15 + 16 + cava = { 17 + enable = true; 18 + }; 19 + }; 20 + 21 + xdg.configFile."cava/" = { 22 + recursive = true; 23 + source = ../../../../cava; 24 + }; 25 + 26 + home.shellAliases = { 27 + music = "cmus"; 28 + }; 29 + }
+12
nixos/home/re/default.nix
··· 1 + { lib, pkgs, config, ... }: 2 + 3 + { 4 + home.packages = with pkgs; [ 5 + ghidra 6 + 7 + (rizin.withPlugins (rp: [rp.rz-ghidra])) 8 + rizinPlugins.rz-ghidra 9 + 10 + binutils 11 + ]; 12 + }
+8
nixos/home/utils.nix
··· 1 + { pkgs, lib, config }: 2 + 3 + { 4 + home.packages = with pkgs; [ 5 + pciutils 6 + usbutils 7 + ]; 8 + }
+111
nixos/hosts/bpavuk-nixos/default.nix
··· 1 + # Edit this configuration file to define what should be installed on your system. Help is available in the configuration.nix(5) man page 2 + # and in the NixOS manual (accessible by running โ€˜nixos-helpโ€™). 3 + 4 + { config, pkgs, ... }: 5 + 6 + { 7 + imports = 8 + [ # Include the results of the hardware scan. 9 + ./hardware-configuration.nix 10 + ../common.nix 11 + ../virtualization.nix 12 + ../cachix.nix 13 + ../../desktop/gnome.nix 14 + ../../desktop/hyprland.nix 15 + ./networking.nix 16 + ]; 17 + 18 + boot.loader.systemd-boot.enable = true; 19 + boot.loader.efi.canTouchEfiVariables = true; 20 + 21 + # Use latest kernel. 22 + boot.kernelPackages = pkgs.linuxPackages_latest; 23 + 24 + # Set your time zone. 25 + time.timeZone = "Europe/Kyiv"; 26 + 27 + # Select internationalisation properties. 28 + i18n.defaultLocale = "en_US.UTF-8"; 29 + 30 + i18n.extraLocaleSettings = { 31 + LC_ADDRESS = "uk_UA.UTF-8"; 32 + LC_IDENTIFICATION = "uk_UA.UTF-8"; 33 + LC_MEASUREMENT = "uk_UA.UTF-8"; 34 + LC_MONETARY = "uk_UA.UTF-8"; 35 + LC_NAME = "uk_UA.UTF-8"; 36 + LC_NUMERIC = "uk_UA.UTF-8"; 37 + LC_PAPER = "uk_UA.UTF-8"; 38 + LC_TELEPHONE = "uk_UA.UTF-8"; 39 + LC_TIME = "uk_UA.UTF-8"; 40 + }; 41 + 42 + # Configure keymap in X11 43 + services.xserver.xkb = { 44 + layout = "us"; 45 + variant = ""; 46 + }; 47 + 48 + # Define a user account. Don't forget to set a password with โ€˜passwdโ€™. 49 + users.users.bpavuk = { 50 + isNormalUser = true; 51 + description = "Bohdan"; 52 + extraGroups = [ "networkmanager" "wheel" "kvm" "libvirtd" ]; 53 + packages = with pkgs; []; 54 + shell = pkgs.nushell; 55 + }; 56 + 57 + programs = { 58 + neovim = { 59 + enable = true; 60 + defaultEditor = true; 61 + }; 62 + firefox = { 63 + enable = true; 64 + }; 65 + }; 66 + 67 + hardware.graphics.extraPackages = with pkgs; [ 68 + rocmPackages.clr.icd 69 + ]; 70 + 71 + # Some programs need SUID wrappers, can be configured further or are 72 + # started in user sessions. 73 + # programs.mtr.enable = true; 74 + # programs.gnupg.agent = { 75 + # enable = true; 76 + # enableSSHSupport = true; 77 + # }; 78 + 79 + # List services that you want to enable: 80 + 81 + services.spice-vdagentd.enable = true; 82 + services.qemuGuest.enable = true; 83 + 84 + # Enable the OpenSSH daemon. 85 + services.openssh.enable = true; 86 + 87 + networking.firewall = rec { 88 + allowedTCPPorts = [ 89 + 80 90 + 443 91 + 3753 # qbittorrent port 92 + 8080 # dev port 93 + ]; 94 + allowedTCPPortRanges = [ { from = 1714; to = 1764; } ]; 95 + allowedUDPPortRanges = allowedTCPPortRanges; 96 + }; 97 + 98 + # Open ports in the firewall. 99 + # networking.firewall.allowedTCPPorts = [ ... ]; 100 + # networking.firewall.allowedUDPPorts = [ ... ]; 101 + # Or disable the firewall altogether. 102 + # networking.firewall.enable = false; 103 + 104 + # This value determines the NixOS release from which the default 105 + # settings for stateful data, like file locations and database versions 106 + # on your system were taken. Itโ€˜s perfectly fine and recommended to leave 107 + # this value at the release version of the first install of this system. 108 + # Before changing this value read the documentation for this option 109 + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). 110 + system.stateVersion = "25.05"; # Did you read the comment? 111 + }
+42
nixos/hosts/bpavuk-nixos/hardware-configuration.nix
··· 1 + # Do not modify this file! It was generated by โ€˜nixos-generate-configโ€™ 2 + # and may be overwritten by future invocations. Please make changes 3 + # to /etc/nixos/configuration.nix instead. 4 + { config, lib, pkgs, modulesPath, ... }: 5 + 6 + { 7 + imports = 8 + [ (modulesPath + "/installer/scan/not-detected.nix") 9 + ]; 10 + 11 + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; 12 + boot.initrd.kernelModules = [ ]; 13 + boot.kernelModules = [ "kvm-amd" ]; 14 + boot.extraModulePackages = [ ]; 15 + 16 + fileSystems."/" = 17 + { device = "/dev/disk/by-uuid/81cd8639-06e1-4a81-9a10-e946563567c0"; 18 + fsType = "ext4"; 19 + }; 20 + 21 + fileSystems."/boot" = 22 + { device = "/dev/disk/by-uuid/57E3-7646"; 23 + fsType = "vfat"; 24 + options = [ "fmask=0077" "dmask=0077" ]; 25 + }; 26 + 27 + swapDevices = 28 + [ { device = "/dev/disk/by-uuid/cd29dfe2-b26d-422d-8a21-d2bd7f431eec"; } 29 + ]; 30 + 31 + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking 32 + # (the default) this is the recommended approach. When using systemd-networkd it's 33 + # still possible to use this option, but it's recommended to use it in conjunction 34 + # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. 35 + networking.useDHCP = lib.mkDefault true; 36 + # networking.interfaces.enp6s0.useDHCP = lib.mkDefault true; 37 + # networking.interfaces.enp8s0f3u2.useDHCP = lib.mkDefault true; 38 + # networking.interfaces.wlp8s0f4u2.useDHCP = lib.mkDefault true; 39 + 40 + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 41 + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 42 + }
+8
nixos/hosts/bpavuk-nixos/networking.nix
··· 1 + { config, pkgs, ... }: 2 + 3 + { 4 + networking = { 5 + hostName = "bpavuk-nixos"; 6 + networkmanager.enable = true; 7 + }; 8 + }
+11
nixos/hosts/cachix.nix
··· 1 + { ... }: 2 + { 3 + nix.settings = { 4 + substituters = [ 5 + "https://vicinae.cachix.org" 6 + ]; 7 + trusted-public-keys = [ 8 + "vicinae.cachix.org-1:1kDrfienkGHPYbkpNj1mWTr7Fm1+zcenzgTizIcI3oc=" 9 + ]; 10 + }; 11 + }
+74
nixos/hosts/common.nix
··· 1 + { pkgs, ... }@hosts-common: 2 + 3 + { 4 + # Flakes and CLI 5 + nix.settings.experimental-features = [ "nix-command" "flakes" ]; 6 + 7 + nix.gc = { 8 + automatic = true; 9 + dates = "weekly"; 10 + options = "--delete-older-than 14d"; 11 + }; 12 + 13 + # Allow unfree packages 14 + nixpkgs.config.allowUnfree = true; 15 + 16 + # List packages installed in system profile. To search, run: 17 + # $ nix search wget 18 + environment.systemPackages = with pkgs; [ 19 + vim 20 + git 21 + # wget 22 + ]; 23 + 24 + # ZSH configuration 25 + programs.zsh.enable = true; 26 + users.defaultUserShell = pkgs.zsh; 27 + environment.pathsToLink = [ "/share/zsh" ]; 28 + 29 + environment.shells = with pkgs; [ zsh bash nushell ]; 30 + 31 + # Linux firmware 32 + hardware.enableRedistributableFirmware = true; 33 + 34 + # GPU 35 + hardware.graphics = { 36 + enable = true; 37 + enable32Bit = true; 38 + }; 39 + 40 + # Steam (system-wide until Home Manager config arrives) 41 + programs.steam = { 42 + enable = true; 43 + remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play 44 + dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server 45 + localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers 46 + }; 47 + 48 + services.flatpak.enable = true; 49 + environment.sessionVariables = { 50 + XDG_DATA_DIRS = [ 51 + "$HOME/.local/share/flatpak/exports/share" 52 + "/var/lib/flatpak/exports/share" 53 + ]; 54 + }; 55 + 56 + # PipeWire (you never know) 57 + security.rtkit.enable = true; 58 + services.pipewire = { 59 + enable = true; 60 + alsa.enable = true; 61 + alsa.support32Bit = true; 62 + pulse.enable = true; 63 + }; 64 + 65 + # Nix-ld 66 + programs.nix-ld.enable = true; 67 + 68 + # GnuPG Agent 69 + programs.gnupg.agent = { 70 + enable = true; 71 + enableSSHSupport = true; 72 + }; 73 + services.pcscd.enable = true; 74 + }
+7
nixos/hosts/virtualization.nix
··· 1 + { lib, pkgs, ... }: 2 + 3 + { 4 + programs.virt-manager.enable = true; 5 + virtualisation.libvirtd.enable = true; 6 + virtualisation.spiceUSBRedirection.enable = true; 7 + }
+37
nixos/users/bpavuk.nix
··· 1 + { config, pkgs, lib, zen-browser, vicinae, ... }: 2 + 3 + { 4 + home.username = "bpavuk"; 5 + home.homeDirectory = "/home/bpavuk"; 6 + home.stateVersion = "25.05"; 7 + 8 + home.keyboard = { 9 + layout = "us,ru,ua"; 10 + options = [ 11 + "grp:win_space_toggle" 12 + "caps:swapescape" 13 + ]; 14 + }; 15 + 16 + dconf.settings = { 17 + "org/gnome/desktop/input-sources" = { 18 + show-all-sources = true; 19 + sources = [ 20 + (lib.hm.gvariant.mkTuple [ "xkb" "us+altgr-intl" ]) 21 + (lib.hm.gvariant.mkTuple [ "xkb" "ru" ]) 22 + (lib.hm.gvariant.mkTuple [ "xkb" "ua" ]) 23 + ]; 24 + xkb-options = [ "caps:swapescape" "grp:win_space_toggle" ]; 25 + }; 26 + }; 27 + 28 + imports = [ 29 + vicinae.homeManagerModules.default 30 + 31 + (import ../home/development { inherit config pkgs lib; }) 32 + (import ../home/fonts { inherit config pkgs lib; }) 33 + (import ../home/utils.nix { inherit config pkgs lib; }) 34 + (import ../home/life { inherit config pkgs lib zen-browser; }) 35 + (import ../home/re { inherit config pkgs lib; }) 36 + ]; 37 + }
+1
nvim/.config/nvim/init.lua
··· 29 29 dofile(vim.g.base46_cache .. "defaults") 30 30 dofile(vim.g.base46_cache .. "statusline") 31 31 32 + -- require "configs.custom.jj_utils" 32 33 require "options" 33 34 require "nvchad.autocmds" 34 35 require "preferences"
-42
nvim/.config/nvim/lazy-lock.json
··· 1 - { 2 - "LuaSnip": { "branch": "master", "commit": "de10d8414235b0a8cabfeba60d07c24304e71f5c" }, 3 - "NvChad": { "branch": "v2.5", "commit": "29ebe31ea6a4edf351968c76a93285e6e108ea08" }, 4 - "Vim-Jinja2-Syntax": { "branch": "master", "commit": "2c17843b074b06a835f88587e1023ceff7e2c7d1" }, 5 - "base46": { "branch": "v3.0", "commit": "13a8a258da6ca87ce46014084063d5b846afd3bc" }, 6 - "cmp-async-path": { "branch": "main", "commit": "0ed1492f59e730c366d261a5ad822fa37e44c325" }, 7 - "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, 8 - "cmp-nvim-lsp": { "branch": "main", "commit": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3" }, 9 - "cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" }, 10 - "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, 11 - "conform.nvim": { "branch": "master", "commit": "973f3cb73887d510321653044791d7937c7ec0fa" }, 12 - "crates.nvim": { "branch": "main", "commit": "a49df0f70171adc77704eac70dd2c0d179065933" }, 13 - "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, 14 - "gitsigns.nvim": { "branch": "main", "commit": "6e3c66548035e50db7bd8e360a29aec6620c3641" }, 15 - "glslView-nvim": { "branch": "master", "commit": "2ad41cef51e658a0de1685728a950dd8c13788fd" }, 16 - "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" }, 17 - "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, 18 - "mason.nvim": { "branch": "main", "commit": "7dc4facca9702f95353d5a1f87daf23d78e31c2a" }, 19 - "menu": { "branch": "main", "commit": "7a0a4a2896b715c066cfbe320bdc048091874cc6" }, 20 - "mini.icons": { "branch": "main", "commit": "b8f6fa6f5a3fd0c56936252edcd691184e5aac0c" }, 21 - "minty": { "branch": "main", "commit": "aafc9e8e0afe6bf57580858a2849578d8d8db9e0" }, 22 - "nvim-autopairs": { "branch": "master", "commit": "23320e75953ac82e559c610bec5a90d9c6dfa743" }, 23 - "nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" }, 24 - "nvim-dap": { "branch": "master", "commit": "a479e25ed5b5d331fb46ee4b9e160ff02ac64310" }, 25 - "nvim-dap-ui": { "branch": "master", "commit": "cf91d5e2d07c72903d052f5207511bf7ecdb7122" }, 26 - "nvim-lspconfig": { "branch": "master", "commit": "3d66048f40ace2d8b8f0789f4346d4fc0a6de15f" }, 27 - "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, 28 - "nvim-tree.lua": { "branch": "master", "commit": "f0e9951778802526b14c934f7bf746e1e0ae5ed0" }, 29 - "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, 30 - "nvim-web-devicons": { "branch": "master", "commit": "c2599a81ecabaae07c49ff9b45dcd032a8d90f1a" }, 31 - "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, 32 - "render-markdown.nvim": { "branch": "main", "commit": "ca86b5941a56b04ac140837ee7a366cf3fa5cd88" }, 33 - "rustaceanvim": { "branch": "master", "commit": "e9c5aaba16fead831379d5f44617547a90b913c7" }, 34 - "telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" }, 35 - "tmux.nvim": { "branch": "main", "commit": "2c1c3be0ef287073cef963f2aefa31a15c8b9cd8" }, 36 - "ui": { "branch": "v3.0", "commit": "af4407decaf6528cb21a7b0fd8925664c8e573c0" }, 37 - "vim-slint": { "branch": "main", "commit": "9badce3860297562bb5e80ba1666628f9e0ac632" }, 38 - "volt": { "branch": "main", "commit": "7b8c5e790120d9f08c8487dcb80692db6d2087a1" }, 39 - "which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }, 40 - "yuck.vim": { "branch": "master", "commit": "9b5e0370f70cc30383e1dabd6c215475915fe5c3" }, 41 - "zola.nvim": { "branch": "main", "commit": "0319c188e443ecae90819cf013d46ff9bf387def" } 42 - }
+33 -5
nvim/.config/nvim/lua/chadrc.lua
··· 6 6 local M = {} 7 7 8 8 M.base46 = { 9 - theme = "scaryforest", 9 + theme = "everblush", 10 10 transparency = true, 11 11 12 - -- hl_override = { 13 - -- Comment = { italic = true }, 14 - -- ["@comment"] = { italic = true }, 15 - -- }, 12 + hl_override = { 13 + Comment = { italic = true, fg = "white" }, 14 + ["@comment"] = { italic = true, fg = "white" }, 15 + }, 16 + 17 + hl_add = { 18 + St_JJ_Text = { 19 + fg = "white", 20 + bg = "none" 21 + }, 22 + }, 23 + } 24 + 25 + M.ui = { 26 + statusline = { 27 + enabled = true, 28 + theme = "default", 29 + separator_style = "block", 30 + order = { "mode", "file", "jj_msg", "%=", "lsp_msg", "%=", "diagnostics", "lsp", "cwd", "cursor" }, 31 + 32 + modules = { 33 + jj_msg = function() 34 + local result = vim.b.jj_desc 35 + 36 + if not result then 37 + return "" 38 + end 39 + 40 + return "%#St_JJ_Text# ๓ฐœ˜ " .. result .. " " 41 + end, 42 + } 43 + } 16 44 } 17 45 18 46 return M
+44
nvim/.config/nvim/lua/configs/custom/jj_utils.lua
··· 1 + local M = {} 2 + 3 + M.update_jj_status = function() 4 + local current_file = vim.api.nvim_buf_get_name(0) 5 + if current_file == "" or current_file == nil then 6 + vim.b.jj_desc = nil 7 + return 8 + end 9 + 10 + local jj_root = vim.fs.find( 11 + ".jj", { 12 + upward = true, 13 + stop = vim.loop.os_homedir(), 14 + path = current_file, 15 + type = "directory", 16 + } 17 + )[1] 18 + 19 + if not jj_root then 20 + vim.b.jj_desc = "~no_jj_repo~" 21 + return 22 + end 23 + 24 + local repo_root = vim.fs.dirname(jj_root) 25 + local cmd = string.format("jj log -R %s -r @ -T description --no-graph", repo_root) 26 + local output = vim.fn.system(cmd) 27 + 28 + output = output:gsub("\n", ""):gsub("^%s*", ""):gsub("%s*$", "") 29 + 30 + if output == "" then output = "~no_desc~" end 31 + if #output > 50 then output = string.sub(output, 1, 47) .. "..." end 32 + 33 + vim.b.jj_desc = output 34 + end 35 + 36 + local function init() 37 + vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "FocusGained" }, { 38 + callback = M.update_jj_status, 39 + }) 40 + end 41 + 42 + init() 43 + 44 + return M
+22
nvim/.config/nvim/lua/configs/dap.lua
··· 1 + local dap = require("dap") 2 + 3 + dap.adapters.lldb = { 4 + type = "executable", 5 + command = "lldb-dap", 6 + name = "lldb", 7 + } 8 + 9 + dap.configurations.cpp = { 10 + { 11 + name = 'Launch', 12 + type = 'lldb', 13 + request = 'launch', 14 + program = function() 15 + return vim.fn.input('Tell me the executable path: ', vim.fn.getcwd() .. '/', 'file') 16 + end, 17 + cwd = '${workspaceFolder}', 18 + stopOnEntry = false, 19 + args = {}, 20 + } 21 + } 22 +
+1 -2
nvim/.config/nvim/lua/configs/dap_ui.lua
··· 1 - local dapui = require "dapui" 1 + local dapui, dap = require "dapui", require "dap" 2 2 dapui.setup() 3 3 4 4 dap.listeners.before.attach.dapui_config = function() ··· 13 13 dap.listeners.before.event_exited.dapui_config = function() 14 14 dapui.close() 15 15 end 16 -
+6
nvim/.config/nvim/lua/configs/lazy.lua
··· 2 2 defaults = { lazy = true }, 3 3 install = { colorscheme = { "nvchad" } }, 4 4 5 + dev = { 6 + path = "~/coding", 7 + patterns = { "jj-log.nvim" }, 8 + fallback = true, 9 + }, 10 + 5 11 ui = { 6 12 icons = { 7 13 ft = "๏ƒถ",
+17
nvim/.config/nvim/lua/configs/lspconfig.lua
··· 9 9 "slint_lsp", 10 10 "pyright", 11 11 "glsl_analyzer", 12 + "svelte", 13 + "kotlin_lsp", 12 14 } 13 15 vim.lsp.enable(servers) 14 16 ··· 34 36 }, 35 37 }, 36 38 }) 39 + 40 + vim.lsp.config('svelte', { 41 + filetypes = { "svelte" }, 42 + root_markers = { "svelte.config.ts" }, 43 + settings = { 44 + svelte = { 45 + plugin = { 46 + svelte = { 47 + defaultScriptLanguage = "ts", 48 + }, 49 + }, 50 + }, 51 + }, 52 + }); 53 +
+15
nvim/.config/nvim/lua/configs/rustacean.lua
··· 1 + vim.g.rustaceanvim = { 2 + server = { 3 + default_settings = { 4 + ['rust-analyzer'] = { 5 + workspace = { 6 + symbol = { 7 + search = { 8 + kind = 'all_symbols' 9 + } 10 + } 11 + } 12 + } 13 + } 14 + } 15 + }
+30 -19
nvim/.config/nvim/lua/mappings.lua
··· 3 3 -- add yours here 4 4 5 5 local map = vim.keymap.set 6 - local tmux = require "tmux" 6 + local telescope = { 7 + builtin = require "telescope.builtin", 8 + this = require "telescope", 9 + } 7 10 local dap = require "dap" 11 + local dap_ui = require "dapui" 8 12 9 13 map("n", ";", ":", { desc = "CMD enter command mode" }) 10 14 map("i", "jk", "<ESC>") ··· 12 16 vim.lsp.buf.rename() 13 17 end, { desc = "Rename the symbol at cursor" }) 14 18 15 - -- tmux navigation 16 - map("n", "<C-h>", function() 17 - tmux.move_left() 18 - end) 19 - map("n", "<C-j>", function() 20 - tmux.move_bottom() 21 - end) 22 - map("n", "<C-k>", function() 23 - tmux.move_top() 24 - end) 25 - map("n", "<C-l>", function() 26 - tmux.move_right() 27 - end) 19 + -- tmux 20 + 21 + -- map("n", "<C-h>", ":TmuxNavigateLeft<cr>") 22 + -- map("n", "<C-j>", ":TmuxNavigateDown<cr>") 23 + -- map("n", "<C-k>", ":TmuxNavigateUp<cr>") 24 + -- map("n", "<C-l>", ":TmuxNavigateRight<cr>") 25 + -- map("n", "<C-\\>", ":TmuxNavigatePrevious<cr>") 28 26 29 27 -- DAP 30 28 map("n", "<leader>dba", function() 31 29 dap.toggle_breakpoint() 32 - end, { desc = "Toggle breakpoint" }) 30 + end, { desc = "DAP: Toggle breakpoint" }) 33 31 map("n", "<leader>dbc", function() 34 32 dap.continue() 35 - end, { desc = "Continue debugging" }) 33 + end, { desc = "DAP: Continue" }) 36 34 map("n", "<leader>dbso", function() 37 35 dap.step_over() 38 - end, { desc = "Step over" }) 36 + end, { desc = "DAP: Step over" }) 39 37 map("n", "<leader>dbsi", function() 40 38 dap.step_into() 41 - end, { desc = "Step into" }) 39 + end, { desc = "DAP: Step into" }) 42 40 map("n", "<leader>dbsO", function() 43 41 dap.step_out() 44 - end, { desc = "Step out" }) 42 + end, { desc = "DAP: Step out" }) 43 + map("n", "<leader>dbx", ":DapNew<cr>", { desc = "DAP: Start debugger" }) 44 + 45 + map("n", "<leader>dbt", function() 46 + dap_ui.toggle() 47 + end, { desc = "DAP: Toggle UI" }) 48 + 49 + -- LSP 50 + map("n", "<leader>fe", function() 51 + telescope.builtin.lsp_workspace_symbols() 52 + end, { desc = "Find everything (LSP)" }) 53 + map("n", "<leader>a", function() 54 + vim.lsp.buf.code_action() 55 + end, { desc = "Code actions (LSP)" })
+2
nvim/.config/nvim/lua/options.lua
··· 10 10 command = "checktime", 11 11 }) 12 12 13 + vim.wo.relativenumber = true 14 +
+6
nvim/.config/nvim/lua/plugins/c.lua
··· 1 + return { 2 + { 3 + 'Civitasv/cmake-tools.nvim', 4 + opts = {} 5 + } 6 + }
+4
nvim/.config/nvim/lua/plugins/dap.lua
··· 1 1 return { 2 2 { 3 3 "mfussenegger/nvim-dap", 4 + config = function() 5 + require "configs.dap" 6 + end 4 7 }, 5 8 { 6 9 "rcarriga/nvim-dap-ui", ··· 10 13 }, 11 14 config = function() 12 15 require "configs.dap_ui" 16 + 13 17 end, 14 18 }, 15 19 }
+34 -6
nvim/.config/nvim/lua/plugins/init.lua
··· 21 21 }, 22 22 23 23 { 24 - "aserowy/tmux.nvim", 25 - config = function() 26 - return require("tmux").setup() 27 - end, 28 - lazy = false, 24 + "swaits/zellij-nav.nvim", 25 + lazy = true, 26 + event = "VeryLazy", 27 + keys = { 28 + { "<M-h>", "<cmd>ZellijNavigateLeftTab<cr>", { silent = true, desc = "navigate left or tab" } }, 29 + { "<M-j>", "<cmd>ZellijNavigateDown<cr>", { silent = true, desc = "navigate down" } }, 30 + { "<M-k>", "<cmd>ZellijNavigateUp<cr>", { silent = true, desc = "navigate up" } }, 31 + { "<M-l>", "<cmd>ZellijNavigateRightTab<cr>", { silent = true, desc = "navigate right or tab" } }, 32 + }, 33 + opts = {}, 29 34 }, 30 35 31 36 { ··· 35 40 36 41 { 37 42 "nvim-treesitter/nvim-treesitter", 43 + lazy = false, 44 + build = ":TSUpdate", 38 45 opts = { 39 46 ensure_installed = { 47 + -- Neovim 40 48 "vim", 41 49 "lua", 42 50 "vimdoc", 51 + -- Web 43 52 "html", 44 53 "htmldjango", 45 54 "css", 55 + "javascript", 56 + "typescript", 57 + "svelte", 58 + -- ๐Ÿคก 59 + "python", 60 + -- Proper development 46 61 "markdown", 47 62 "markdown_inline", 48 63 "c", 49 64 "cpp", 50 - "python", 51 65 "slint", 66 + "kotlin", 67 + "rust", 68 + -- eww 52 69 "yuck", 53 70 }, 71 + }, 72 + }, 73 + 74 + { 75 + "jj-log.nvim", 76 + url = "https://tangled.org/bpavuk.neocities.org/jj-log.nvim", 77 + dev = false, -- change to true when working on a local copy of jj-log 78 + opts = { 79 + out_no_desc = "NO DESC", 80 + out_no_jj_repo = "NO REPO", 81 + out_waiting = "๓ฐ”Ÿ", 54 82 }, 55 83 }, 56 84 }
+5 -1
nvim/.config/nvim/lua/plugins/rust.lua
··· 1 1 return { 2 2 { 3 3 "mrcjkb/rustaceanvim", 4 - version = "^5", -- Recommended 4 + version = "^6", -- Recommended 5 5 lazy = false, -- This plugin is already lazy 6 + config = function () 7 + require "configs.rustacean" 8 + end 6 9 }, 7 10 8 11 { ··· 21 24 ft = { "slint" }, 22 25 }, 23 26 } 27 +
+14
nvim/.config/nvim/lua/plugins/typescript.lua
··· 1 + return { 2 + { 3 + "pmizio/typescript-tools.nvim", 4 + ft = { 5 + "svelte", 6 + "typescript" 7 + }, 8 + dependencies = { 9 + "nvim-lua/plenary.nvim", 10 + "neovim/nvim-lspconfig" 11 + }, 12 + opts = {}, 13 + } 14 + }
+6
nvim/.config/nvim/lua/plugins/wakatime.lua
··· 1 + return { 2 + { 3 + 'wakatime/vim-wakatime', 4 + lazy = false, 5 + } 6 + }
+45
starship/.config/starship.toml
··· 1 + "$schema" = 'https://starship.rs/config-schema.json' 2 + 3 + format = """$character""" 4 + 5 + right_format = """$all""" 6 + 7 + [nix_shell] 8 + disabled = true 9 + 10 + [git_status] 11 + disabled = true 12 + 13 + [git_branch] 14 + disabled = true 15 + 16 + [git_state] 17 + disabled = true 18 + 19 + [git_commit] 20 + disabled = true 21 + 22 + [rust] 23 + format = "[${symbol}(${version} )]($style)" 24 + 25 + [kotlin] 26 + symbol = "๎ › " 27 + style = "bold #943ef5" 28 + format = "[${symbol}(${version} )]($style)" 29 + 30 + [gradle] 31 + symbol = "๎Ÿฒ " 32 + style = "bold #44a69d" 33 + format = "[${symbol}(${version} )]($style)" 34 + 35 + [java] 36 + format = "[${symbol}(${version} )]($style)" 37 + 38 + [c] 39 + symbol = "๎˜ž " 40 + format = "[$symbol($version(-$name) )]($style)" 41 + 42 + [cmake] 43 + symbol = "๎ž” " 44 + format = "[$symbol($version )]($style)" 45 +
+5
starship/README.md
··· 1 + ## Starship prompt 2 + 3 + Contains a `starship.toml` file in a `.config` directory. Essentially a debloated but close-to-default terminal prompt. 4 + 5 + To install, run `stow starship`. On NixOS or `home-manager`, Nix config does that for you.
+3 -26
tmux/.tmux.conf
··· 1 1 # custom options 2 - set -g default-terminal "tmux-256color" 2 + set -g default-terminal "xterm-256color" 3 + set -ag terminal-overrides ",xterm-256color:RGB" 3 4 4 5 ## enable clipboard 5 6 set -g set-clipboard on ··· 29 30 set -ag status-right "#{E:@catppuccin_status_session}" 30 31 set -ag status-right "#{E:@catppuccin_status_uptime}" 31 32 32 - # zsh 33 - set-option -g default-shell /usr/bin/zsh 34 - 35 33 # window enumeration 36 34 set -g base-index 1 37 35 setw -g pane-base-index 1 ··· 45 43 ### some additions to the status bar 46 44 set -g @plugin 'tmux-plugins/tmux-cpu' 47 45 48 - ## nvim 49 - set -g @plugin 'aserowy/tmux.nvim' 50 - 51 - ### navigation 52 - set -g @tmux-nvim-navigation true 53 - set -g @tmux-nvim-navigation-cycle true 54 - set -g @tmux-nvim-navigation-keybinding-left 'C-h' 55 - set -g @tmux-nvim-navigation-keybinding-down 'C-j' 56 - set -g @tmux-nvim-navigation-keybinding-up 'C-k' 57 - set -g @tmux-nvim-navigation-keybinding-right 'C-l' 58 - 59 - ### resize 60 - set -g @tmux-nvim-resize true 61 - set -g @tmux-nvim-resize-step-x 1 62 - set -g @tmux-nvim-resize-step-y 1 63 - set -g @tmux-nvim-resize-keybinding-left 'M-h' 64 - set -g @tmux-nvim-resize-keybinding-down 'M-j' 65 - set -g @tmux-nvim-resize-keybinding-up 'M-k' 66 - set -g @tmux-nvim-resize-keybinding-right 'M-l' 67 - 68 - 69 - run '~/.tmux/plugins/tpm/tpm' 46 + set -g @plugin 'christoomey/vim-tmux-navigator'
-22
window_manager/.config/fuzzel/fuzzel.ini
··· 1 - [main] 2 - 3 - # text 4 - font = JetBrainsMono Nerd Font:size=12:weight=bold 5 - use-bold = yes 6 - placeholder = find anything... 7 - 8 - # misc 9 - 10 - terminal = kitty -e 11 - 12 - [colors] 13 - 14 - background = 032221ff 15 - text = f1f7f6ff 16 - prompt = 00df81ff 17 - placeholder = 03624cff 18 - input = 2cc295ff 19 - match = 00df81ff 20 - selection = 00df81ff 21 - selection-text = 032221ff 22 - selection-match = f1f7f6ff
+2 -2
window_manager/.config/hypr/hyprland/apps.conf
··· 1 1 $terminal = kitty 2 2 $fileManager = dolphin 3 - $menu = fuzzel 4 - $browser = flatpak run app.zen_browser.zen 3 + $menu = vicinae 4 + $browser = zen 5 5
+3
window_manager/.config/hypr/hyprland/autostart.conf
··· 12 12 # eww 13 13 exec-once = eww daemon 14 14 15 + # waybar 16 + exec-once = waybar 17 + 15 18 # clipboard history 16 19 exec-once = wl-paste --type text --watch cliphist store # Stores only text data 17 20 exec-once = wl-paste --type image --watch cliphist store # Stores only image data
+1 -3
window_manager/.config/hypr/hyprland/input.conf
··· 14 14 } 15 15 16 16 # https://wiki.hyprland.org/Configuring/Variables/#gestures 17 - gestures { 18 - workspace_swipe = true 19 - } 17 + gesture = 3, horizontal, workspace 20 18 21 19 # Example per-device config 22 20 # See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
+19 -19
window_manager/.config/hypr/hyprland/look_and_feel.conf
··· 8 8 border_size = 3 9 9 10 10 # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors 11 - col.active_border = rgba(00df81ff) rgba(032221ff) rgba(03624cff) rgba(2cc295ff) rgba(00df81ff) 45deg 12 - col.inactive_border = rgba(595959aa) 11 + col.active_border = rgb(6cbfbf) 12 + col.inactive_border = rgb(595959) 13 13 14 14 # Set to true enable resizing windows by clicking and dragging on borders and gaps 15 15 resize_on_border = true ··· 45 45 46 46 # https://wiki.hyprland.org/Configuring/Variables/#animations 47 47 animations { 48 - enabled = no 48 + enabled = yes 49 49 50 50 # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more 51 51 ··· 55 55 bezier = almostLinear,0.5,0.5,0.75,1.0 56 56 bezier = quick,0.15,0,0.1,1 57 57 58 - animation = global, 1, 10, default 59 - animation = border, 1, 5.39, easeOutQuint 60 - animation = windows, 1, 4.79, easeOutQuint 61 - animation = windowsIn, 1, 4.1, easeOutQuint, popin 87% 62 - animation = windowsOut, 1, 1.49, linear, popin 87% 63 - animation = fadeIn, 1, 1.73, almostLinear 64 - animation = fadeOut, 1, 1.46, almostLinear 65 - animation = fade, 1, 3.03, quick 66 - animation = layers, 1, 3.81, easeOutQuint 67 - animation = layersIn, 1, 4, easeOutQuint, fade 68 - animation = layersOut, 1, 1.5, linear, fade 69 - animation = fadeLayersIn, 1, 1.79, almostLinear 70 - animation = fadeLayersOut, 1, 1.39, almostLinear 71 - animation = workspaces, 1, 1.94, almostLinear, fade 72 - animation = workspacesIn, 1, 1.21, almostLinear, fade 73 - animation = workspacesOut, 1, 1.94, almostLinear, fade 58 + animation = global, 1, 5, default 59 + animation = border, 1, 2.7, easeOutQuint 60 + animation = windows, 1, 2.4, easeOutQuint 61 + animation = windowsIn, 1, 2, easeOutQuint 62 + animation = windowsOut, 1, 0.7, linear 63 + animation = fadeIn, 1, 0.8, almostLinear 64 + animation = fadeOut, 1, 0.9, almostLinear 65 + animation = fade, 1, 1.5, quick 66 + animation = layers, 1, 1.9, easeOutQuint 67 + animation = layersIn, 1, 2, easeOutQuint, fade 68 + animation = layersOut, 1, 0.7, linear, fade 69 + animation = fadeLayersIn, 1, 0.9, almostLinear 70 + animation = fadeLayersOut, 1, 0.7, almostLinear 71 + animation = workspaces, 1, 4, easeOutQuint, slide 72 + animation = workspacesIn, 1, 4, easeOutQuint, slide 73 + animation = workspacesOut, 1, 4, easeOutQuint, slide 74 74 } 75 75 76 76 # Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
-2720
window_manager/.config/kitty/kitty.conf
··· 1 - # vim:fileencoding=utf-8:foldmethod=marker 2 - 3 - # BEGIN_KITTY_FONTS 4 - font_family family="JetBrainsMono Nerd Font" 5 - bold_font auto 6 - italic_font auto 7 - bold_italic_font auto 8 - # END_KITTY_FONTS 9 - 10 - #: Fonts {{{ 11 - 12 - #: kitty has very powerful font management. You can configure 13 - #: individual font faces and even specify special fonts for particular 14 - #: characters. 15 - 16 - # font_family monospace 17 - # bold_font auto 18 - # italic_font auto 19 - # bold_italic_font auto 20 - 21 - #: You can specify different fonts for the bold/italic/bold-italic 22 - #: variants. The easiest way to select fonts is to run the `kitten 23 - #: choose-fonts` command which will present a nice UI for you to 24 - #: select the fonts you want with previews and support for selecting 25 - #: variable fonts and font features. If you want to learn to select 26 - #: fonts manually, read the font specification syntax 27 - #: <https://sw.kovidgoyal.net/kitty/kittens/choose-fonts/#font-spec- 28 - #: syntax>. 29 - 30 - # font_size 11.0 31 - 32 - #: Font size (in pts). 33 - 34 - # force_ltr no 35 - 36 - #: kitty does not support BIDI (bidirectional text), however, for RTL 37 - #: scripts, words are automatically displayed in RTL. That is to say, 38 - #: in an RTL script, the words "HELLO WORLD" display in kitty as 39 - #: "WORLD HELLO", and if you try to select a substring of an RTL- 40 - #: shaped string, you will get the character that would be there had 41 - #: the string been LTR. For example, assuming the Hebrew word ื™ืจื•ืฉืœื™ื, 42 - #: selecting the character that on the screen appears to be ื actually 43 - #: writes into the selection buffer the character ื™. kitty's default 44 - #: behavior is useful in conjunction with a filter to reverse the word 45 - #: order, however, if you wish to manipulate RTL glyphs, it can be 46 - #: very challenging to work with, so this option is provided to turn 47 - #: it off. Furthermore, this option can be used with the command line 48 - #: program GNU FriBidi <https://github.com/fribidi/fribidi#executable> 49 - #: to get BIDI support, because it will force kitty to always treat 50 - #: the text as LTR, which FriBidi expects for terminals. 51 - 52 - # symbol_map 53 - 54 - #: E.g. symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols 55 - 56 - #: Map the specified Unicode codepoints to a particular font. Useful 57 - #: if you need special rendering for some symbols, such as for 58 - #: Powerline. Avoids the need for patched fonts. Each Unicode code 59 - #: point is specified in the form `U+<code point in hexadecimal>`. You 60 - #: can specify multiple code points, separated by commas and ranges 61 - #: separated by hyphens. This option can be specified multiple times. 62 - #: The syntax is:: 63 - 64 - #: symbol_map codepoints Font Family Name 65 - 66 - # narrow_symbols 67 - 68 - #: E.g. narrow_symbols U+E0A0-U+E0A3,U+E0C0-U+E0C7 1 69 - 70 - #: Usually, for Private Use Unicode characters and some symbol/dingbat 71 - #: characters, if the character is followed by one or more spaces, 72 - #: kitty will use those extra cells to render the character larger, if 73 - #: the character in the font has a wide aspect ratio. Using this 74 - #: option you can force kitty to restrict the specified code points to 75 - #: render in the specified number of cells (defaulting to one cell). 76 - #: This option can be specified multiple times. The syntax is:: 77 - 78 - #: narrow_symbols codepoints [optionally the number of cells] 79 - 80 - # disable_ligatures never 81 - 82 - #: Choose how you want to handle multi-character ligatures. The 83 - #: default is to always render them. You can tell kitty to not render 84 - #: them when the cursor is over them by using cursor to make editing 85 - #: easier, or have kitty never render them at all by using always, if 86 - #: you don't like them. The ligature strategy can be set per-window 87 - #: either using the kitty remote control facility or by defining 88 - #: shortcuts for it in kitty.conf, for example:: 89 - 90 - #: map alt+1 disable_ligatures_in active always 91 - #: map alt+2 disable_ligatures_in all never 92 - #: map alt+3 disable_ligatures_in tab cursor 93 - 94 - #: Note that this refers to programming ligatures, typically 95 - #: implemented using the calt OpenType feature. For disabling general 96 - #: ligatures, use the font_features option. 97 - 98 - # font_features 99 - 100 - #: E.g. font_features none 101 - 102 - #: Choose exactly which OpenType features to enable or disable. Note 103 - #: that for the main fonts, features can be specified when selecting 104 - #: the font using the choose-fonts kitten. This setting is useful for 105 - #: fallback fonts. 106 - 107 - #: Some fonts might have features worthwhile in a terminal. For 108 - #: example, Fira Code includes a discretionary feature, zero, which in 109 - #: that font changes the appearance of the zero (0), to make it more 110 - #: easily distinguishable from ร˜. Fira Code also includes other 111 - #: discretionary features known as Stylistic Sets which have the tags 112 - #: ss01 through ss20. 113 - 114 - #: For the exact syntax to use for individual features, see the 115 - #: HarfBuzz documentation <https://harfbuzz.github.io/harfbuzz-hb- 116 - #: common.html#hb-feature-from-string>. 117 - 118 - #: Note that this code is indexed by PostScript name, and not the font 119 - #: family. This allows you to define very precise feature settings; 120 - #: e.g. you can disable a feature in the italic font but not in the 121 - #: regular font. 122 - 123 - #: On Linux, font features are first read from the FontConfig database 124 - #: and then this option is applied, so they can be configured in a 125 - #: single, central place. 126 - 127 - #: To get the PostScript name for a font, use the `fc-scan file.ttf` 128 - #: command on Linux or the `Font Book tool on macOS 129 - #: <https://apple.stackexchange.com/questions/79875/how-can-i-get-the- 130 - #: postscript-name-of-a-ttf-font-installed-in-os-x>`__. 131 - 132 - #: Enable alternate zero and oldstyle numerals:: 133 - 134 - #: font_features FiraCode-Retina +zero +onum 135 - 136 - #: Enable only alternate zero in the bold font:: 137 - 138 - #: font_features FiraCode-Bold +zero 139 - 140 - #: Disable the normal ligatures, but keep the calt feature which (in 141 - #: this font) breaks up monotony:: 142 - 143 - #: font_features TT2020StyleB-Regular -liga +calt 144 - 145 - #: In conjunction with force_ltr, you may want to disable Arabic 146 - #: shaping entirely, and only look at their isolated forms if they 147 - #: show up in a document. You can do this with e.g.:: 148 - 149 - #: font_features UnifontMedium +isol -medi -fina -init 150 - 151 - # modify_font 152 - 153 - #: Modify font characteristics such as the position or thickness of 154 - #: the underline and strikethrough. The modifications can have the 155 - #: suffix px for pixels or % for percentage of original value. No 156 - #: suffix means use pts. For example:: 157 - 158 - #: modify_font underline_position -2 159 - #: modify_font underline_thickness 150% 160 - #: modify_font strikethrough_position 2px 161 - 162 - #: Additionally, you can modify the size of the cell in which each 163 - #: font glyph is rendered and the baseline at which the glyph is 164 - #: placed in the cell. For example:: 165 - 166 - #: modify_font cell_width 80% 167 - #: modify_font cell_height -2px 168 - #: modify_font baseline 3 169 - 170 - #: Note that modifying the baseline will automatically adjust the 171 - #: underline and strikethrough positions by the same amount. 172 - #: Increasing the baseline raises glyphs inside the cell and 173 - #: decreasing it lowers them. Decreasing the cell size might cause 174 - #: rendering artifacts, so use with care. 175 - 176 - # box_drawing_scale 0.001, 1, 1.5, 2 177 - 178 - #: The sizes of the lines used for the box drawing Unicode characters. 179 - #: These values are in pts. They will be scaled by the monitor DPI to 180 - #: arrive at a pixel value. There must be four values corresponding to 181 - #: thin, normal, thick, and very thick lines. 182 - 183 - # undercurl_style thin-sparse 184 - 185 - #: The style with which undercurls are rendered. This option takes the 186 - #: form (thin|thick)-(sparse|dense). Thin and thick control the 187 - #: thickness of the undercurl. Sparse and dense control how often the 188 - #: curl oscillates. With sparse the curl will peak once per character, 189 - #: with dense twice. Changing this option dynamically via reloading 190 - #: the config or remote control is undefined. 191 - 192 - # underline_exclusion 1 193 - 194 - #: By default kitty renders gaps in underlines when they overlap with 195 - #: descenders (the parts of letters below the baseline, such as for y, 196 - #: q, p etc.). This option controls the thickness of the gaps. It can 197 - #: be either a unitless number in which case it is a fraction of the 198 - #: underline thickness as specified in the font or it can have a 199 - #: suffix of px for pixels or pt for points. Set to zero to disable 200 - #: the gaps. Changing this option dynamically via reloading the config 201 - #: or remote control is undefined. 202 - 203 - # text_composition_strategy platform 204 - 205 - #: Control how kitty composites text glyphs onto the background color. 206 - #: The default value of platform tries for text rendering as close to 207 - #: "native" for the platform kitty is running on as possible. 208 - 209 - #: A value of legacy uses the old (pre kitty 0.28) strategy for how 210 - #: glyphs are composited. This will make dark text on light 211 - #: backgrounds look thicker and light text on dark backgrounds 212 - #: thinner. It might also make some text appear like the strokes are 213 - #: uneven. 214 - 215 - #: You can fine tune the actual contrast curve used for glyph 216 - #: composition by specifying up to two space-separated numbers for 217 - #: this setting. 218 - 219 - #: The first number is the gamma adjustment, which controls the 220 - #: thickness of dark text on light backgrounds. Increasing the value 221 - #: will make text appear thicker. The default value for this is 1.0 on 222 - #: Linux and 1.7 on macOS. Valid values are 0.01 and above. The result 223 - #: is scaled based on the luminance difference between the background 224 - #: and the foreground. Dark text on light backgrounds receives the 225 - #: full impact of the curve while light text on dark backgrounds is 226 - #: affected very little. 227 - 228 - #: The second number is an additional multiplicative contrast. It is 229 - #: percentage ranging from 0 to 100. The default value is 0 on Linux 230 - #: and 30 on macOS. 231 - 232 - #: If you wish to achieve similar looking thickness in light and dark 233 - #: themes, a good way to experiment is start by setting the value to 234 - #: 1.0 0 and use a dark theme. Then adjust the second parameter until 235 - #: it looks good. Then switch to a light theme and adjust the first 236 - #: parameter until the perceived thickness matches the dark theme. 237 - 238 - # text_fg_override_threshold 0 239 - 240 - #: A setting to prevent low contrast between foreground and background 241 - #: colors. Useful when working with applications that use colors that 242 - #: do not contrast well with your preferred color scheme. The default 243 - #: value is 0, which means no color overriding is performed. There are 244 - #: two modes of operation: 245 - 246 - #: A value with the suffix ratio represents the minimum accepted 247 - #: contrast ratio between the foreground and background color. 248 - #: Possible values range from 0.0 ratio to 21.0 ratio. For example, to 249 - #: meet WCAG level AA 250 - #: <https://en.wikipedia.org/wiki/Web_Content_Accessibility_Guidelines> 251 - #: a value of 4.5 ratio can be provided. The algorithm is implemented 252 - #: using HSLuv <https://www.hsluv.org/> which enables it to change the 253 - #: perceived lightness of a color just as much as needed without 254 - #: really changing its hue and saturation. 255 - 256 - #: A value with the suffix % represents the minimum accepted 257 - #: difference in luminance between the foreground and background 258 - #: color, below which kitty will override the foreground color. It is 259 - #: percentage ranging from 0 % to 100 %. If the difference in 260 - #: luminance of the foreground and background is below this threshold, 261 - #: the foreground color will be set to white if the background is dark 262 - #: or black if the background is light. 263 - 264 - #: WARNING: Some programs use characters (such as block characters) 265 - #: for graphics display and may expect to be able to set the 266 - #: foreground and background to the same color (or similar colors). If 267 - #: you see unexpected stripes, dots, lines, incorrect color, no color 268 - #: where you expect color, or any kind of graphic display problem try 269 - #: setting text_fg_override_threshold to 0 to see if this is the cause 270 - #: of the problem or consider using the ratio mode of operation 271 - #: described above instead of the % mode of operation. 272 - 273 - #: }}} 274 - 275 - #: Text cursor customization {{{ 276 - 277 - # cursor #cccccc 278 - 279 - #: Default text cursor color. If set to the special value none the 280 - #: cursor will be rendered with a "reverse video" effect. Its color 281 - #: will be the color of the text in the cell it is over and the text 282 - #: will be rendered with the background color of the cell. Note that 283 - #: if the program running in the terminal sets a cursor color, this 284 - #: takes precedence. Also, the cursor colors are modified if the cell 285 - #: background and foreground colors have very low contrast. Note that 286 - #: some themes set this value, so if you want to override it, place 287 - #: your value after the lines where the theme file is included. 288 - 289 - # cursor_text_color #111111 290 - 291 - #: The color of text under the cursor. If you want it rendered with 292 - #: the background color of the cell underneath instead, use the 293 - #: special keyword: `background`. Note that if cursor is set to none 294 - #: then this option is ignored. Note that some themes set this value, 295 - #: so if you want to override it, place your value after the lines 296 - #: where the theme file is included. 297 - 298 - # cursor_shape block 299 - 300 - #: The cursor shape can be one of block, beam, underline. Note that 301 - #: when reloading the config this will be changed only if the cursor 302 - #: shape has not been set by the program running in the terminal. This 303 - #: sets the default cursor shape, applications running in the terminal 304 - #: can override it. In particular, shell integration 305 - #: <https://sw.kovidgoyal.net/kitty/shell-integration/> in kitty sets 306 - #: the cursor shape to beam at shell prompts. You can avoid this by 307 - #: setting shell_integration to no-cursor. 308 - 309 - # cursor_shape_unfocused hollow 310 - 311 - #: Defines the text cursor shape when the OS window is not focused. 312 - #: The unfocused cursor shape can be one of block, beam, underline, 313 - #: hollow and unchanged (leave the cursor shape as it is). 314 - 315 - # cursor_beam_thickness 1.5 316 - 317 - #: The thickness of the beam cursor (in pts). 318 - 319 - # cursor_underline_thickness 2.0 320 - 321 - #: The thickness of the underline cursor (in pts). 322 - 323 - # cursor_blink_interval -1 324 - 325 - #: The interval to blink the cursor (in seconds). Set to zero to 326 - #: disable blinking. Negative values mean use system default. Note 327 - #: that the minimum interval will be limited to repaint_delay. You can 328 - #: also animate the cursor blink by specifying an easing function. For 329 - #: example, setting this to option to 0.5 ease-in-out will cause the 330 - #: cursor blink to be animated over a second, in the first half of the 331 - #: second it will go from opaque to transparent and then back again 332 - #: over the next half. You can specify different easing functions for 333 - #: the two halves, for example: -1 linear ease-out. kitty supports all 334 - #: the CSS easing functions <https://developer.mozilla.org/en- 335 - #: US/docs/Web/CSS/easing-function>. Note that turning on animations 336 - #: uses extra power as it means the screen is redrawn multiple times 337 - #: per blink interval. See also, cursor_stop_blinking_after. 338 - 339 - # cursor_stop_blinking_after 15.0 340 - 341 - #: Stop blinking cursor after the specified number of seconds of 342 - #: keyboard inactivity. Set to zero to never stop blinking. 343 - 344 - # cursor_trail 0 345 - 346 - #: Set this to a value larger than zero to enable a "cursor trail" 347 - #: animation. This is an animation that shows a "trail" following the 348 - #: movement of the text cursor. It makes it easy to follow large 349 - #: cursor jumps and makes for a cool visual effect of the cursor 350 - #: zooming around the screen. The actual value of this option controls 351 - #: when the animation is triggered. It is a number of milliseconds. 352 - #: The trail animation only follows cursors that have stayed in their 353 - #: position for longer than the specified number of milliseconds. This 354 - #: prevents trails from appearing for cursors that rapidly change 355 - #: their positions during UI updates in complex applications. See 356 - #: cursor_trail_decay to control the animation speed and 357 - #: cursor_trail_start_threshold to control when a cursor trail is 358 - #: started. 359 - 360 - # cursor_trail_decay 0.1 0.4 361 - 362 - #: Controls the decay times for the cursor trail effect when the 363 - #: cursor_trail is enabled. This option accepts two positive float 364 - #: values specifying the fastest and slowest decay times in seconds. 365 - #: The first value corresponds to the fastest decay time (minimum), 366 - #: and the second value corresponds to the slowest decay time 367 - #: (maximum). The second value must be equal to or greater than the 368 - #: first value. Smaller values result in a faster decay of the cursor 369 - #: trail. Adjust these values to control how quickly the cursor trail 370 - #: fades away. 371 - 372 - # cursor_trail_start_threshold 2 373 - 374 - #: Set the distance threshold for starting the cursor trail. This 375 - #: option accepts a positive integer value that represents the minimum 376 - #: number of cells the cursor must move before the trail is started. 377 - #: When the cursor moves less than this threshold, the trail is 378 - #: skipped, reducing unnecessary cursor trail animation. 379 - 380 - #: }}} 381 - 382 - #: Scrollback {{{ 383 - 384 - # scrollback_lines 2000 385 - 386 - #: Number of lines of history to keep in memory for scrolling back. 387 - #: Memory is allocated on demand. Negative numbers are (effectively) 388 - #: infinite scrollback. Note that using very large scrollback is not 389 - #: recommended as it can slow down performance of the terminal and 390 - #: also use large amounts of RAM. Instead, consider using 391 - #: scrollback_pager_history_size. Note that on config reload if this 392 - #: is changed it will only affect newly created windows, not existing 393 - #: ones. 394 - 395 - # scrollback_indicator_opacity 1.0 396 - 397 - #: The opacity of the scrollback indicator which is a small colored 398 - #: rectangle that moves along the right hand side of the window as you 399 - #: scroll, indicating what fraction you have scrolled. The default is 400 - #: one which means fully opaque, aka visible. Set to a value between 401 - #: zero and one to make the indicator less visible. 402 - 403 - # scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER 404 - 405 - #: Program with which to view scrollback in a new window. The 406 - #: scrollback buffer is passed as STDIN to this program. If you change 407 - #: it, make sure the program you use can handle ANSI escape sequences 408 - #: for colors and text formatting. INPUT_LINE_NUMBER in the command 409 - #: line above will be replaced by an integer representing which line 410 - #: should be at the top of the screen. Similarly CURSOR_LINE and 411 - #: CURSOR_COLUMN will be replaced by the current cursor position or 412 - #: set to 0 if there is no cursor, for example, when showing the last 413 - #: command output. 414 - 415 - # scrollback_pager_history_size 0 416 - 417 - #: Separate scrollback history size (in MB), used only for browsing 418 - #: the scrollback buffer with pager. This separate buffer is not 419 - #: available for interactive scrolling but will be piped to the pager 420 - #: program when viewing scrollback buffer in a separate window. The 421 - #: current implementation stores the data in UTF-8, so approximately 422 - #: 10000 lines per megabyte at 100 chars per line, for pure ASCII, 423 - #: unformatted text. A value of zero or less disables this feature. 424 - #: The maximum allowed size is 4GB. Note that on config reload if this 425 - #: is changed it will only affect newly created windows, not existing 426 - #: ones. 427 - 428 - # scrollback_fill_enlarged_window no 429 - 430 - #: Fill new space with lines from the scrollback buffer after 431 - #: enlarging a window. 432 - 433 - # wheel_scroll_multiplier 5.0 434 - 435 - #: Multiplier for the number of lines scrolled by the mouse wheel. 436 - #: Note that this is only used for low precision scrolling devices, 437 - #: not for high precision scrolling devices on platforms such as macOS 438 - #: and Wayland. Use negative numbers to change scroll direction. See 439 - #: also wheel_scroll_min_lines. 440 - 441 - # wheel_scroll_min_lines 1 442 - 443 - #: The minimum number of lines scrolled by the mouse wheel. The scroll 444 - #: multiplier wheel_scroll_multiplier only takes effect after it 445 - #: reaches this number. Note that this is only used for low precision 446 - #: scrolling devices like wheel mice that scroll by very small amounts 447 - #: when using the wheel. With a negative number, the minimum number of 448 - #: lines will always be added. 449 - 450 - # touch_scroll_multiplier 1.0 451 - 452 - #: Multiplier for the number of lines scrolled by a touchpad. Note 453 - #: that this is only used for high precision scrolling devices on 454 - #: platforms such as macOS and Wayland. Use negative numbers to change 455 - #: scroll direction. 456 - 457 - #: }}} 458 - 459 - #: Mouse {{{ 460 - 461 - # mouse_hide_wait 3.0 462 - 463 - #: Hide mouse cursor after the specified number of seconds of the 464 - #: mouse not being used. Set to zero to disable mouse cursor hiding. 465 - #: Set to a negative value to hide the mouse cursor immediately when 466 - #: typing text. Disabled by default on macOS as getting it to work 467 - #: robustly with the ever-changing sea of bugs that is Cocoa is too 468 - #: much effort. 469 - 470 - # url_color #0087bd 471 - # url_style curly 472 - 473 - #: The color and style for highlighting URLs on mouse-over. url_style 474 - #: can be one of: none, straight, double, curly, dotted, dashed. 475 - 476 - # open_url_with default 477 - 478 - #: The program to open clicked URLs. The special value default will 479 - #: first look for any URL handlers defined via the open_actions 480 - #: <https://sw.kovidgoyal.net/kitty/open_actions/> facility and if non 481 - #: are found, it will use the Operating System's default URL handler 482 - #: (open on macOS and xdg-open on Linux). 483 - 484 - # url_prefixes file ftp ftps gemini git gopher http https irc ircs kitty mailto news sftp ssh 485 - 486 - #: The set of URL prefixes to look for when detecting a URL under the 487 - #: mouse cursor. 488 - 489 - # detect_urls yes 490 - 491 - #: Detect URLs under the mouse. Detected URLs are highlighted with an 492 - #: underline and the mouse cursor becomes a hand over them. Even if 493 - #: this option is disabled, URLs are still clickable. See also the 494 - #: underline_hyperlinks option to control how hyperlinks (as opposed 495 - #: to plain text URLs) are displayed. 496 - 497 - # url_excluded_characters 498 - 499 - #: Additional characters to be disallowed from URLs, when detecting 500 - #: URLs under the mouse cursor. By default, all characters that are 501 - #: legal in URLs are allowed. Additionally, newlines are allowed (but 502 - #: stripped). This is to accommodate programs such as mutt that add 503 - #: hard line breaks even for continued lines. \n can be added to this 504 - #: option to disable this behavior. Special characters can be 505 - #: specified using backslash escapes, to specify a backslash use a 506 - #: double backslash. 507 - 508 - # show_hyperlink_targets no 509 - 510 - #: When the mouse hovers over a terminal hyperlink, show the actual 511 - #: URL that will be activated when the hyperlink is clicked. 512 - 513 - # underline_hyperlinks hover 514 - 515 - #: Control how hyperlinks are underlined. They can either be 516 - #: underlined on mouse hover, always (i.e. permanently underlined) or 517 - #: never which means that kitty will not apply any underline styling 518 - #: to hyperlinks. Note that the value of always only applies to real 519 - #: (OSC 8) hyperlinks not text that is detected to be a URL on mouse 520 - #: hover. Uses the url_style and url_color settings for the underline 521 - #: style. Note that reloading the config and changing this value 522 - #: to/from always will only affect text subsequently received by 523 - #: kitty. 524 - 525 - # copy_on_select no 526 - 527 - #: Copy to clipboard or a private buffer on select. With this set to 528 - #: clipboard, selecting text with the mouse will cause the text to be 529 - #: copied to clipboard. Useful on platforms such as macOS that do not 530 - #: have the concept of primary selection. You can instead specify a 531 - #: name such as a1 to copy to a private kitty buffer. Map a shortcut 532 - #: with the paste_from_buffer action to paste from this private 533 - #: buffer. For example:: 534 - 535 - #: copy_on_select a1 536 - #: map shift+cmd+v paste_from_buffer a1 537 - 538 - #: Note that copying to the clipboard is a security risk, as all 539 - #: programs, including websites open in your browser can read the 540 - #: contents of the system clipboard. 541 - 542 - # clear_selection_on_clipboard_loss no 543 - 544 - #: When the contents of the clipboard no longer reflect the current 545 - #: selection, clear it. This is primarily useful on platforms such as 546 - #: Linux where selecting text automatically copies it to a special 547 - #: "primary selection" clipboard or if you have copy_on_select set to 548 - #: clipboard. 549 - 550 - #: Note that on macOS the system does not provide notifications when 551 - #: the clipboard owner is changed, so there, copying to clipboard in a 552 - #: non-kitty application will not clear selections even if 553 - #: copy_on_select is enabled. 554 - 555 - # paste_actions quote-urls-at-prompt,confirm 556 - 557 - #: A comma separated list of actions to take when pasting text into 558 - #: the terminal. The supported paste actions are: 559 - 560 - #: quote-urls-at-prompt: 561 - #: If the text being pasted is a URL and the cursor is at a shell prompt, 562 - #: automatically quote the URL (needs shell_integration). 563 - #: replace-dangerous-control-codes 564 - #: Replace dangerous control codes from pasted text, without confirmation. 565 - #: replace-newline 566 - #: Replace the newline character from pasted text, without confirmation. 567 - #: confirm: 568 - #: Confirm the paste if the text to be pasted contains any terminal control codes 569 - #: as this can be dangerous, leading to code execution if the shell/program running 570 - #: in the terminal does not properly handle these. 571 - #: confirm-if-large 572 - #: Confirm the paste if it is very large (larger than 16KB) as pasting 573 - #: large amounts of text into shells can be very slow. 574 - #: filter: 575 - #: Run the filter_paste() function from the file paste-actions.py in 576 - #: the kitty config directory on the pasted text. The text returned by the 577 - #: function will be actually pasted. 578 - #: no-op: 579 - #: Has no effect. 580 - 581 - # strip_trailing_spaces never 582 - 583 - #: Remove spaces at the end of lines when copying to clipboard. A 584 - #: value of smart will do it when using normal selections, but not 585 - #: rectangle selections. A value of always will always do it. 586 - 587 - # select_by_word_characters @-./_~?&=%+# 588 - 589 - #: Characters considered part of a word when double clicking. In 590 - #: addition to these characters any character that is marked as an 591 - #: alphanumeric character in the Unicode database will be matched. 592 - 593 - # select_by_word_characters_forward 594 - 595 - #: Characters considered part of a word when extending the selection 596 - #: forward on double clicking. In addition to these characters any 597 - #: character that is marked as an alphanumeric character in the 598 - #: Unicode database will be matched. 599 - 600 - #: If empty (default) select_by_word_characters will be used for both 601 - #: directions. 602 - 603 - # click_interval -1.0 604 - 605 - #: The interval between successive clicks to detect double/triple 606 - #: clicks (in seconds). Negative numbers will use the system default 607 - #: instead, if available, or fallback to 0.5. 608 - 609 - # focus_follows_mouse no 610 - 611 - #: Set the active window to the window under the mouse when moving the 612 - #: mouse around. On macOS, this will also cause the OS Window under 613 - #: the mouse to be focused automatically when the mouse enters it. 614 - 615 - # pointer_shape_when_grabbed arrow 616 - 617 - #: The shape of the mouse pointer when the program running in the 618 - #: terminal grabs the mouse. 619 - 620 - # default_pointer_shape beam 621 - 622 - #: The default shape of the mouse pointer. 623 - 624 - # pointer_shape_when_dragging beam crosshair 625 - 626 - #: The default shape of the mouse pointer when dragging across text. 627 - #: The optional second value sets the shape when dragging in 628 - #: rectangular selection mode. 629 - 630 - #: Mouse actions {{{ 631 - 632 - #: Mouse buttons can be mapped to perform arbitrary actions. The 633 - #: syntax is: 634 - 635 - #: .. code-block:: none 636 - 637 - #: mouse_map button-name event-type modes action 638 - 639 - #: Where button-name is one of left, middle, right, b1 ... b8 with 640 - #: added keyboard modifiers. For example: ctrl+shift+left refers to 641 - #: holding the Ctrl+Shift keys while clicking with the left mouse 642 - #: button. The value b1 ... b8 can be used to refer to up to eight 643 - #: buttons on a mouse. 644 - 645 - #: event-type is one of press, release, doublepress, triplepress, 646 - #: click, doubleclick. modes indicates whether the action is performed 647 - #: when the mouse is grabbed by the program running in the terminal, 648 - #: or not. The values are grabbed or ungrabbed or a comma separated 649 - #: combination of them. grabbed refers to when the program running in 650 - #: the terminal has requested mouse events. Note that the click and 651 - #: double click events have a delay of click_interval to disambiguate 652 - #: from double and triple presses. 653 - 654 - #: You can run kitty with the kitty --debug-input command line option 655 - #: to see mouse events. See the builtin actions below to get a sense 656 - #: of what is possible. 657 - 658 - #: If you want to unmap a button, map it to nothing. For example, to 659 - #: disable opening of URLs with a plain click:: 660 - 661 - #: mouse_map left click ungrabbed 662 - 663 - #: See all the mappable actions including mouse actions here 664 - #: <https://sw.kovidgoyal.net/kitty/actions/>. 665 - 666 - #: .. note:: 667 - #: Once a selection is started, releasing the button that started it will 668 - #: automatically end it and no release event will be dispatched. 669 - 670 - # clear_all_mouse_actions no 671 - 672 - #: Remove all mouse action definitions up to this point. Useful, for 673 - #: instance, to remove the default mouse actions. 674 - 675 - #: Click the link under the mouse or move the cursor 676 - 677 - # mouse_map left click ungrabbed mouse_handle_click selection link prompt 678 - 679 - #:: First check for a selection and if one exists do nothing. Then 680 - #:: check for a link under the mouse cursor and if one exists, click 681 - #:: it. Finally check if the click happened at the current shell 682 - #:: prompt and if so, move the cursor to the click location. Note 683 - #:: that this requires shell integration 684 - #:: <https://sw.kovidgoyal.net/kitty/shell-integration/> to work. 685 - 686 - #: Click the link under the mouse or move the cursor even when grabbed 687 - 688 - # mouse_map shift+left click grabbed,ungrabbed mouse_handle_click selection link prompt 689 - 690 - #:: Same as above, except that the action is performed even when the 691 - #:: mouse is grabbed by the program running in the terminal. 692 - 693 - #: Click the link under the mouse cursor 694 - 695 - # mouse_map ctrl+shift+left release grabbed,ungrabbed mouse_handle_click link 696 - 697 - #:: Variant with Ctrl+Shift is present because the simple click based 698 - #:: version has an unavoidable delay of click_interval, to 699 - #:: disambiguate clicks from double clicks. 700 - 701 - #: Discard press event for link click 702 - 703 - # mouse_map ctrl+shift+left press grabbed discard_event 704 - 705 - #:: Prevent this press event from being sent to the program that has 706 - #:: grabbed the mouse, as the corresponding release event is used to 707 - #:: open a URL. 708 - 709 - #: Paste from the primary selection 710 - 711 - # mouse_map middle release ungrabbed paste_from_selection 712 - 713 - #: Start selecting text 714 - 715 - # mouse_map left press ungrabbed mouse_selection normal 716 - 717 - #: Start selecting text in a rectangle 718 - 719 - # mouse_map ctrl+alt+left press ungrabbed mouse_selection rectangle 720 - 721 - #: Select a word 722 - 723 - # mouse_map left doublepress ungrabbed mouse_selection word 724 - 725 - #: Select a line 726 - 727 - # mouse_map left triplepress ungrabbed mouse_selection line 728 - 729 - #: Select line from point 730 - 731 - # mouse_map ctrl+alt+left triplepress ungrabbed mouse_selection line_from_point 732 - 733 - #:: Select from the clicked point to the end of the line. If you 734 - #:: would like to select the word at the point and then extend to the 735 - #:: rest of the line, change `line_from_point` to 736 - #:: `word_and_line_from_point`. 737 - 738 - #: Extend the current selection 739 - 740 - # mouse_map right press ungrabbed mouse_selection extend 741 - 742 - #:: If you want only the end of the selection to be moved instead of 743 - #:: the nearest boundary, use move-end instead of extend. 744 - 745 - #: Paste from the primary selection even when grabbed 746 - 747 - # mouse_map shift+middle release ungrabbed,grabbed paste_selection 748 - # mouse_map shift+middle press grabbed discard_event 749 - 750 - #: Start selecting text even when grabbed 751 - 752 - # mouse_map shift+left press ungrabbed,grabbed mouse_selection normal 753 - 754 - #: Start selecting text in a rectangle even when grabbed 755 - 756 - # mouse_map ctrl+shift+alt+left press ungrabbed,grabbed mouse_selection rectangle 757 - 758 - #: Select a word even when grabbed 759 - 760 - # mouse_map shift+left doublepress ungrabbed,grabbed mouse_selection word 761 - 762 - #: Select a line even when grabbed 763 - 764 - # mouse_map shift+left triplepress ungrabbed,grabbed mouse_selection line 765 - 766 - #: Select line from point even when grabbed 767 - 768 - # mouse_map ctrl+shift+alt+left triplepress ungrabbed,grabbed mouse_selection line_from_point 769 - 770 - #:: Select from the clicked point to the end of the line even when 771 - #:: grabbed. If you would like to select the word at the point and 772 - #:: then extend to the rest of the line, change `line_from_point` to 773 - #:: `word_and_line_from_point`. 774 - 775 - #: Extend the current selection even when grabbed 776 - 777 - # mouse_map shift+right press ungrabbed,grabbed mouse_selection extend 778 - 779 - #: Show clicked command output in pager 780 - 781 - # mouse_map ctrl+shift+right press ungrabbed mouse_show_command_output 782 - 783 - #:: Requires shell integration 784 - #:: <https://sw.kovidgoyal.net/kitty/shell-integration/> to work. 785 - 786 - #: }}} 787 - 788 - #: }}} 789 - 790 - #: Performance tuning {{{ 791 - 792 - # repaint_delay 10 793 - 794 - #: Delay between screen updates (in milliseconds). Decreasing it, 795 - #: increases frames-per-second (FPS) at the cost of more CPU usage. 796 - #: The default value yields ~100 FPS which is more than sufficient for 797 - #: most uses. Note that to actually achieve 100 FPS, you have to 798 - #: either set sync_to_monitor to no or use a monitor with a high 799 - #: refresh rate. Also, to minimize latency when there is pending input 800 - #: to be processed, this option is ignored. 801 - 802 - # input_delay 3 803 - 804 - #: Delay before input from the program running in the terminal is 805 - #: processed (in milliseconds). Note that decreasing it will increase 806 - #: responsiveness, but also increase CPU usage and might cause flicker 807 - #: in full screen programs that redraw the entire screen on each loop, 808 - #: because kitty is so fast that partial screen updates will be drawn. 809 - #: This setting is ignored when the input buffer is almost full. 810 - 811 - # sync_to_monitor yes 812 - 813 - #: Sync screen updates to the refresh rate of the monitor. This 814 - #: prevents screen tearing 815 - #: <https://en.wikipedia.org/wiki/Screen_tearing> when scrolling. 816 - #: However, it limits the rendering speed to the refresh rate of your 817 - #: monitor. With a very high speed mouse/high keyboard repeat rate, 818 - #: you may notice some slight input latency. If so, set this to no. 819 - 820 - #: }}} 821 - 822 - #: Terminal bell {{{ 823 - 824 - enable_audio_bell yes 825 - 826 - #: The audio bell. Useful to disable it in environments that require 827 - #: silence. 828 - 829 - # visual_bell_duration 0.0 830 - 831 - #: The visual bell duration (in seconds). Flash the screen when a bell 832 - #: occurs for the specified number of seconds. Set to zero to disable. 833 - #: The flash is animated, fading in and out over the specified 834 - #: duration. The easing function used for the fading can be 835 - #: controlled. For example, 2.0 linear will casuse the flash to fade 836 - #: in and out linearly. The default if unspecified is to use ease-in- 837 - #: out which fades slowly at the start, middle and end. You can 838 - #: specify different easing functions for the fade-in and fade-out 839 - #: parts, like this: 2.0 ease-in linear. kitty supports all the CSS 840 - #: easing functions <https://developer.mozilla.org/en- 841 - #: US/docs/Web/CSS/easing-function>. 842 - 843 - # visual_bell_color none 844 - 845 - #: The color used by visual bell. Set to none will fall back to 846 - #: selection background color. If you feel that the visual bell is too 847 - #: bright, you can set it to a darker color. 848 - 849 - # window_alert_on_bell yes 850 - 851 - #: Request window attention on bell. Makes the dock icon bounce on 852 - #: macOS or the taskbar flash on Linux. 853 - 854 - # bell_on_tab "๐Ÿ”” " 855 - 856 - #: Some text or a Unicode symbol to show on the tab if a window in the 857 - #: tab that does not have focus has a bell. If you want to use leading 858 - #: or trailing spaces, surround the text with quotes. See 859 - #: tab_title_template for how this is rendered. 860 - 861 - #: For backwards compatibility, values of yes, y and true are 862 - #: converted to the default bell symbol and no, n, false and none are 863 - #: converted to the empty string. 864 - 865 - # command_on_bell none 866 - 867 - #: Program to run when a bell occurs. The environment variable 868 - #: KITTY_CHILD_CMDLINE can be used to get the program running in the 869 - #: window in which the bell occurred. 870 - 871 - # bell_path none 872 - 873 - #: Path to a sound file to play as the bell sound. If set to none, the 874 - #: system default bell sound is used. Must be in a format supported by 875 - #: the operating systems sound API, such as WAV or OGA on Linux 876 - #: (libcanberra) or AIFF, MP3 or WAV on macOS (NSSound). 877 - 878 - # linux_bell_theme __custom 879 - 880 - #: The XDG Sound Theme kitty will use to play the bell sound. Defaults 881 - #: to the custom theme name specified in the XDG Sound theme 882 - #: specification <https://specifications.freedesktop.org/sound-theme- 883 - #: spec/latest/sound_lookup.html>, falling back to the default 884 - #: freedesktop theme if it does not exist. To change your sound theme 885 - #: desktop wide, create 886 - #: :file:~/.local/share/sounds/__custom/index.theme` with the 887 - #: contents: 888 - 889 - #: [Sound Theme] 890 - 891 - #: Inherits=name-of-the-sound-theme-you-want-to-use 892 - 893 - #: Replace name-of-the-sound-theme-you-want-to-use with the actual 894 - #: theme name. Now all compliant applications should use sounds from 895 - #: this theme. 896 - 897 - #: }}} 898 - 899 - #: Window layout {{{ 900 - 901 - # remember_window_size yes 902 - # initial_window_width 640 903 - # initial_window_height 400 904 - 905 - #: If enabled, the OS Window size will be remembered so that new 906 - #: instances of kitty will have the same size as the previous 907 - #: instance. If disabled, the OS Window will initially have size 908 - #: configured by initial_window_width/height, in pixels. You can use a 909 - #: suffix of "c" on the width/height values to have them interpreted 910 - #: as number of cells instead of pixels. 911 - 912 - # enabled_layouts * 913 - 914 - #: The enabled window layouts. A comma separated list of layout names. 915 - #: The special value all means all layouts. The first listed layout 916 - #: will be used as the startup layout. Default configuration is all 917 - #: layouts in alphabetical order. For a list of available layouts, see 918 - #: the layouts <https://sw.kovidgoyal.net/kitty/overview/#layouts>. 919 - 920 - # window_resize_step_cells 2 921 - # window_resize_step_lines 2 922 - 923 - #: The step size (in units of cell width/cell height) to use when 924 - #: resizing kitty windows in a layout with the shortcut 925 - #: start_resizing_window. The cells value is used for horizontal 926 - #: resizing, and the lines value is used for vertical resizing. 927 - 928 - # window_border_width 0.5pt 929 - 930 - #: The width of window borders. Can be either in pixels (px) or pts 931 - #: (pt). Values in pts will be rounded to the nearest number of pixels 932 - #: based on screen resolution. If not specified, the unit is assumed 933 - #: to be pts. Note that borders are displayed only when more than one 934 - #: window is visible. They are meant to separate multiple windows. 935 - 936 - # draw_minimal_borders yes 937 - 938 - #: Draw only the minimum borders needed. This means that only the 939 - #: borders that separate the window from a neighbor are drawn. Note 940 - #: that setting a non-zero window_margin_width overrides this and 941 - #: causes all borders to be drawn. 942 - 943 - # window_margin_width 0 944 - 945 - #: The window margin (in pts) (blank area outside the border). A 946 - #: single value sets all four sides. Two values set the vertical and 947 - #: horizontal sides. Three values set top, horizontal and bottom. Four 948 - #: values set top, right, bottom and left. 949 - 950 - # single_window_margin_width -1 951 - 952 - #: The window margin to use when only a single window is visible (in 953 - #: pts). Negative values will cause the value of window_margin_width 954 - #: to be used instead. A single value sets all four sides. Two values 955 - #: set the vertical and horizontal sides. Three values set top, 956 - #: horizontal and bottom. Four values set top, right, bottom and left. 957 - 958 - # window_padding_width 0 959 - 960 - #: The window padding (in pts) (blank area between the text and the 961 - #: window border). A single value sets all four sides. Two values set 962 - #: the vertical and horizontal sides. Three values set top, horizontal 963 - #: and bottom. Four values set top, right, bottom and left. 964 - 965 - # single_window_padding_width -1 966 - 967 - #: The window padding to use when only a single window is visible (in 968 - #: pts). Negative values will cause the value of window_padding_width 969 - #: to be used instead. A single value sets all four sides. Two values 970 - #: set the vertical and horizontal sides. Three values set top, 971 - #: horizontal and bottom. Four values set top, right, bottom and left. 972 - 973 - # placement_strategy center 974 - 975 - #: When the window size is not an exact multiple of the cell size, the 976 - #: cell area of the terminal window will have some extra padding on 977 - #: the sides. You can control how that padding is distributed with 978 - #: this option. Using a value of center means the cell area will be 979 - #: placed centrally. A value of top-left means the padding will be 980 - #: only at the bottom and right edges. The value can be one of: top- 981 - #: left, top, top-right, left, center, right, bottom-left, bottom, 982 - #: bottom-right. 983 - 984 - # active_border_color #00ff00 985 - 986 - #: The color for the border of the active window. Set this to none to 987 - #: not draw borders around the active window. 988 - 989 - # inactive_border_color #cccccc 990 - 991 - #: The color for the border of inactive windows. 992 - 993 - # bell_border_color #ff5a00 994 - 995 - #: The color for the border of inactive windows in which a bell has 996 - #: occurred. 997 - 998 - # inactive_text_alpha 1.0 999 - 1000 - #: Fade the text in inactive windows by the specified amount (a number 1001 - #: between zero and one, with zero being fully faded). 1002 - 1003 - # hide_window_decorations no 1004 - 1005 - #: Hide the window decorations (title-bar and window borders) with 1006 - #: yes. On macOS, titlebar-only and titlebar-and-corners can be used 1007 - #: to only hide the titlebar and the rounded corners. Whether this 1008 - #: works and exactly what effect it has depends on the window 1009 - #: manager/operating system. Note that the effects of changing this 1010 - #: option when reloading config are undefined. When using titlebar- 1011 - #: only, it is useful to also set window_margin_width and 1012 - #: placement_strategy to prevent the rounded corners from clipping 1013 - #: text. Or use titlebar-and-corners. 1014 - 1015 - # window_logo_path none 1016 - 1017 - #: Path to a logo image. Must be in PNG/JPEG/WEBP/GIF/TIFF/BMP format. 1018 - #: Relative paths are interpreted relative to the kitty config 1019 - #: directory. The logo is displayed in a corner of every kitty window. 1020 - #: The position is controlled by window_logo_position. Individual 1021 - #: windows can be configured to have different logos either using the 1022 - #: launch action or the remote control 1023 - #: <https://sw.kovidgoyal.net/kitty/remote-control/> facility. 1024 - 1025 - # window_logo_position bottom-right 1026 - 1027 - #: Where to position the window logo in the window. The value can be 1028 - #: one of: top-left, top, top-right, left, center, right, bottom-left, 1029 - #: bottom, bottom-right. 1030 - 1031 - # window_logo_alpha 0.5 1032 - 1033 - #: The amount the logo should be faded into the background. With zero 1034 - #: being fully faded and one being fully opaque. 1035 - 1036 - # window_logo_scale 0 1037 - 1038 - #: The percentage (0-100] of the window size to which the logo should 1039 - #: scale. Using a single number means the logo is scaled to that 1040 - #: percentage of the shortest window dimension, while preserving 1041 - #: aspect ratio of the logo image. 1042 - 1043 - #: Using two numbers means the width and height of the logo are scaled 1044 - #: to the respective percentage of the window's width and height. 1045 - 1046 - #: Using zero as the percentage disables scaling in that dimension. A 1047 - #: single zero (the default) disables all scaling of the window logo. 1048 - 1049 - # resize_debounce_time 0.1 0.5 1050 - 1051 - #: The time to wait (in seconds) before asking the program running in 1052 - #: kitty to resize and redraw the screen during a live resize of the 1053 - #: OS window, when no new resize events have been received, i.e. when 1054 - #: resizing is either paused or finished. On platforms such as macOS, 1055 - #: where the operating system sends events corresponding to the start 1056 - #: and end of a live resize, the second number is used for redraw- 1057 - #: after-pause since kitty can distinguish between a pause and end of 1058 - #: resizing. On such systems the first number is ignored and redraw is 1059 - #: immediate after end of resize. On other systems only the first 1060 - #: number is used so that kitty is "ready" quickly after the end of 1061 - #: resizing, while not also continuously redrawing, to save energy. 1062 - 1063 - # resize_in_steps no 1064 - 1065 - #: Resize the OS window in steps as large as the cells, instead of 1066 - #: with the usual pixel accuracy. Combined with initial_window_width 1067 - #: and initial_window_height in number of cells, this option can be 1068 - #: used to keep the margins as small as possible when resizing the OS 1069 - #: window. Note that this does not currently work on Wayland. 1070 - 1071 - # visual_window_select_characters 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ 1072 - 1073 - #: The list of characters for visual window selection. For example, 1074 - #: for selecting a window to focus on with focus_visible_window. The 1075 - #: value should be a series of unique numbers or alphabets, case 1076 - #: insensitive, from the set 0-9A-Z\-=[];',./\\`. Specify your 1077 - #: preference as a string of characters. 1078 - 1079 - # confirm_os_window_close -1 1080 - 1081 - #: Ask for confirmation when closing an OS window or a tab with at 1082 - #: least this number of kitty windows in it by window manager (e.g. 1083 - #: clicking the window close button or pressing the operating system 1084 - #: shortcut to close windows) or by the close_tab action. A value of 1085 - #: zero disables confirmation. This confirmation also applies to 1086 - #: requests to quit the entire application (all OS windows, via the 1087 - #: quit action). Negative values are converted to positive ones, 1088 - #: however, with shell_integration enabled, using negative values 1089 - #: means windows sitting at a shell prompt are not counted, only 1090 - #: windows where some command is currently running. You can also have 1091 - #: backgrounded jobs prevent closing, by adding count-background to 1092 - #: the setting, for example: -1 count-background. Note that if you 1093 - #: want confirmation when closing individual windows, you can map the 1094 - #: close_window_with_confirmation action. 1095 - 1096 - #: }}} 1097 - 1098 - #: Tab bar {{{ 1099 - 1100 - # tab_bar_edge bottom 1101 - 1102 - #: The edge to show the tab bar on, top or bottom. 1103 - 1104 - # tab_bar_margin_width 0.0 1105 - 1106 - #: The margin to the left and right of the tab bar (in pts). 1107 - 1108 - # tab_bar_margin_height 0.0 0.0 1109 - 1110 - #: The margin above and below the tab bar (in pts). The first number 1111 - #: is the margin between the edge of the OS Window and the tab bar. 1112 - #: The second number is the margin between the tab bar and the 1113 - #: contents of the current tab. 1114 - 1115 - # tab_bar_style fade 1116 - 1117 - #: The tab bar style, can be one of: 1118 - 1119 - #: fade 1120 - #: Each tab's edges fade into the background color. (See also tab_fade) 1121 - #: slant 1122 - #: Tabs look like the tabs in a physical file. 1123 - #: separator 1124 - #: Tabs are separated by a configurable separator. (See also 1125 - #: tab_separator) 1126 - #: powerline 1127 - #: Tabs are shown as a continuous line with "fancy" separators. 1128 - #: (See also tab_powerline_style) 1129 - #: custom 1130 - #: A user-supplied Python function called draw_tab is loaded from the file 1131 - #: tab_bar.py in the kitty config directory. For examples of how to 1132 - #: write such a function, see the functions named draw_tab_with_* in 1133 - #: kitty's source code: kitty/tab_bar.py. See also 1134 - #: this discussion <https://github.com/kovidgoyal/kitty/discussions/4447> 1135 - #: for examples from kitty users. 1136 - #: hidden 1137 - #: The tab bar is hidden. If you use this, you might want to create 1138 - #: a mapping for the select_tab action which presents you with a list of 1139 - #: tabs and allows for easy switching to a tab. 1140 - 1141 - # tab_bar_align left 1142 - 1143 - #: The horizontal alignment of the tab bar, can be one of: left, 1144 - #: center, right. 1145 - 1146 - # tab_bar_min_tabs 2 1147 - 1148 - #: The minimum number of tabs that must exist before the tab bar is 1149 - #: shown. 1150 - 1151 - # tab_switch_strategy previous 1152 - 1153 - #: The algorithm to use when switching to a tab when the current tab 1154 - #: is closed. The default of previous will switch to the last used 1155 - #: tab. A value of left will switch to the tab to the left of the 1156 - #: closed tab. A value of right will switch to the tab to the right of 1157 - #: the closed tab. A value of last will switch to the right-most tab. 1158 - 1159 - # tab_fade 0.25 0.5 0.75 1 1160 - 1161 - #: Control how each tab fades into the background when using fade for 1162 - #: the tab_bar_style. Each number is an alpha (between zero and one) 1163 - #: that controls how much the corresponding cell fades into the 1164 - #: background, with zero being no fade and one being full fade. You 1165 - #: can change the number of cells used by adding/removing entries to 1166 - #: this list. 1167 - 1168 - # tab_separator " โ”‡" 1169 - 1170 - #: The separator between tabs in the tab bar when using separator as 1171 - #: the tab_bar_style. 1172 - 1173 - # tab_powerline_style angled 1174 - 1175 - #: The powerline separator style between tabs in the tab bar when 1176 - #: using powerline as the tab_bar_style, can be one of: angled, 1177 - #: slanted, round. 1178 - 1179 - # tab_activity_symbol none 1180 - 1181 - #: Some text or a Unicode symbol to show on the tab if a window in the 1182 - #: tab that does not have focus has some activity. If you want to use 1183 - #: leading or trailing spaces, surround the text with quotes. See 1184 - #: tab_title_template for how this is rendered. 1185 - 1186 - # tab_title_max_length 0 1187 - 1188 - #: The maximum number of cells that can be used to render the text in 1189 - #: a tab. A value of zero means that no limit is applied. 1190 - 1191 - # tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{tab.last_focused_progress_percent}{title}" 1192 - 1193 - #: A template to render the tab title. The default just renders the 1194 - #: title with optional symbols for bell and activity. If you wish to 1195 - #: include the tab-index as well, use something like: {index}:{title}. 1196 - #: Useful if you have shortcuts mapped for goto_tab N. If you prefer 1197 - #: to see the index as a superscript, use {sup.index}. All data 1198 - #: available is: 1199 - 1200 - #: title 1201 - #: The current tab title. 1202 - #: index 1203 - #: The tab index usable with goto_tab N goto_tab shortcuts. 1204 - #: layout_name 1205 - #: The current layout name. 1206 - #: num_windows 1207 - #: The number of windows in the tab. 1208 - #: num_window_groups 1209 - #: The number of window groups (a window group is a window and all of its overlay windows) in the tab. 1210 - #: tab.active_wd 1211 - #: The working directory of the currently active window in the tab 1212 - #: (expensive, requires syscall). Use tab.active_oldest_wd to get 1213 - #: the directory of the oldest foreground process rather than the newest. 1214 - #: tab.active_exe 1215 - #: The name of the executable running in the foreground of the currently 1216 - #: active window in the tab (expensive, requires syscall). Use 1217 - #: tab.active_oldest_exe for the oldest foreground process. 1218 - #: max_title_length 1219 - #: The maximum title length available. 1220 - #: keyboard_mode 1221 - #: The name of the current keyboard mode <https://sw.kovidgoyal.net/kitty/mapping/#modal-mappings> or the empty string if no keyboard mode is active. 1222 - #: tab.last_focused_progress_percent 1223 - #: If a command running in a window reports the progress for a task, show this progress as a percentage 1224 - #: from the most recently focused window in the tab. Empty string if no progress is reported. 1225 - #: tab.progress_percent 1226 - #: If a command running in a window reports the progress for a task, show this progress as a percentage 1227 - #: from all windows in the tab, averaged. Empty string is no progress is reported. 1228 - 1229 - #: Note that formatting is done by Python's string formatting 1230 - #: machinery, so you can use, for instance, {layout_name[:2].upper()} 1231 - #: to show only the first two letters of the layout name, upper-cased. 1232 - #: If you want to style the text, you can use styling directives, for 1233 - #: example: 1234 - #: `{fmt.fg.red}red{fmt.fg.tab}normal{fmt.bg._00FF00}greenbg{fmt.bg.tab}`. 1235 - #: Similarly, for bold and italic: 1236 - #: `{fmt.bold}bold{fmt.nobold}normal{fmt.italic}italic{fmt.noitalic}`. 1237 - #: The 256 eight terminal colors can be used as `fmt.fg.color0` 1238 - #: through `fmt.fg.color255`. Note that for backward compatibility, if 1239 - #: {bell_symbol} or {activity_symbol} are not present in the template, 1240 - #: they are prepended to it. 1241 - 1242 - # active_tab_title_template none 1243 - 1244 - #: Template to use for active tabs. If not specified falls back to 1245 - #: tab_title_template. 1246 - 1247 - # active_tab_foreground #000 1248 - # active_tab_background #eee 1249 - # active_tab_font_style bold-italic 1250 - # inactive_tab_foreground #444 1251 - # inactive_tab_background #999 1252 - # inactive_tab_font_style normal 1253 - 1254 - #: Tab bar colors and styles. 1255 - 1256 - # tab_bar_background none 1257 - 1258 - #: Background color for the tab bar. Defaults to using the terminal 1259 - #: background color. 1260 - 1261 - # tab_bar_margin_color none 1262 - 1263 - #: Color for the tab bar margin area. Defaults to using the terminal 1264 - #: background color for margins above and below the tab bar. For side 1265 - #: margins the default color is chosen to match the background color 1266 - #: of the neighboring tab. 1267 - 1268 - #: }}} 1269 - 1270 - #: Color scheme {{{ 1271 - 1272 - # foreground #dddddd 1273 - # background #000000 1274 - 1275 - #: The foreground and background colors. 1276 - 1277 - background_opacity 0.7 1278 - 1279 - #: The opacity of the background. A number between zero and one, where 1280 - #: one is opaque and zero is fully transparent. This will only work if 1281 - #: supported by the OS (for instance, when using a compositor under 1282 - #: X11). Note that it only sets the background color's opacity in 1283 - #: cells that have the same background color as the default terminal 1284 - #: background, so that things like the status bar in vim, powerline 1285 - #: prompts, etc. still look good. But it means that if you use a color 1286 - #: theme with a background color in your editor, it will not be 1287 - #: rendered as transparent. Instead you should change the default 1288 - #: background color in your kitty config and not use a background 1289 - #: color in the editor color scheme. Or use the escape codes to set 1290 - #: the terminals default colors in a shell script to launch your 1291 - #: editor. See also transparent_background_colors. Be aware that using 1292 - #: a value less than 1.0 is a (possibly significant) performance hit. 1293 - #: When using a low value for this setting, it is desirable that you 1294 - #: set the background color to a color the matches the general color 1295 - #: of the desktop background, for best text rendering. Note that to 1296 - #: workaround window managers not doing gamma-corrected blending kitty 1297 - #: makes background_opacity non-linear which means, especially for 1298 - #: light backgrounds you might need to make the value much lower than 1299 - #: you expect to get good results, see 6218 1300 - #: <https://github.com/kovidgoyal/kitty/issues/6218> for details. 1301 - 1302 - #: If you want to dynamically change transparency of windows, set 1303 - #: dynamic_background_opacity to yes (this is off by default as it has 1304 - #: a performance cost). Changing this option when reloading the config 1305 - #: will only work if dynamic_background_opacity was enabled in the 1306 - #: original config. 1307 - 1308 - # background_blur 0 1309 - 1310 - #: Set to a positive value to enable background blur (blurring of the 1311 - #: visuals behind a transparent window) on platforms that support it. 1312 - #: Only takes effect when background_opacity is less than one. On 1313 - #: macOS, this will also control the blur radius (amount of blurring). 1314 - #: Setting it to too high a value will cause severe performance issues 1315 - #: and/or rendering artifacts. Usually, values up to 64 work well. 1316 - #: Note that this might cause performance issues, depending on how the 1317 - #: platform implements it, so use with care. Currently supported on 1318 - #: macOS and KDE. 1319 - 1320 - # background_image none 1321 - 1322 - #: Path to a background image. Must be in PNG/JPEG/WEBP/TIFF/GIF/BMP 1323 - #: format. 1324 - 1325 - # background_image_layout tiled 1326 - 1327 - #: Whether to tile, scale or clamp the background image. The value can 1328 - #: be one of tiled, mirror-tiled, scaled, clamped, centered or 1329 - #: cscaled. The scaled and cscaled values scale the image to the 1330 - #: window size, with cscaled preserving the image aspect ratio. 1331 - 1332 - # background_image_linear no 1333 - 1334 - #: When background image is scaled, whether linear interpolation 1335 - #: should be used. 1336 - 1337 - # transparent_background_colors 1338 - 1339 - #: A space separated list of upto 7 colors, with opacity. When the 1340 - #: background color of a cell matches one of these colors, it is 1341 - #: rendered semi-transparent using the specified opacity. 1342 - 1343 - #: Useful in more complex UIs like editors where you could want more 1344 - #: than a single background color to be rendered as transparent, for 1345 - #: instance, for a cursor highlight line background or a highlighted 1346 - #: block. Terminal applications can set this color using The kitty 1347 - #: color control <https://sw.kovidgoyal.net/kitty/color-stack/#color- 1348 - #: control> escape code. 1349 - 1350 - #: The syntax for specifying colors is: color@opacity, where the 1351 - #: @opacity part is optional. When unspecified, the value of 1352 - #: background_opacity is used. For example:: 1353 - 1354 - #: transparent_background_colors red@0.5 #00ff00@0.3 1355 - 1356 - # dynamic_background_opacity no 1357 - 1358 - #: Allow changing of the background_opacity dynamically, using either 1359 - #: keyboard shortcuts (increase_background_opacity and 1360 - #: decrease_background_opacity) or the remote control facility. 1361 - #: Changing this option by reloading the config is not supported. 1362 - 1363 - # background_tint 0.0 1364 - 1365 - #: How much to tint the background image by the background color. This 1366 - #: option makes it easier to read the text. Tinting is done using the 1367 - #: current background color for each window. This option applies only 1368 - #: if background_opacity is set and transparent windows are supported 1369 - #: or background_image is set. 1370 - 1371 - # background_tint_gaps 1.0 1372 - 1373 - #: How much to tint the background image at the window gaps by the 1374 - #: background color, after applying background_tint. Since this is 1375 - #: multiplicative with background_tint, it can be used to lighten the 1376 - #: tint over the window gaps for a *separated* look. 1377 - 1378 - # dim_opacity 0.4 1379 - 1380 - #: How much to dim text that has the DIM/FAINT attribute set. One 1381 - #: means no dimming and zero means fully dimmed (i.e. invisible). 1382 - 1383 - # selection_foreground #000000 1384 - # selection_background #fffacd 1385 - 1386 - #: The foreground and background colors for text selected with the 1387 - #: mouse. Setting both of these to none will cause a "reverse video" 1388 - #: effect for selections, where the selection will be the cell text 1389 - #: color and the text will become the cell background color. Setting 1390 - #: only selection_foreground to none will cause the foreground color 1391 - #: to be used unchanged. Note that these colors can be overridden by 1392 - #: the program running in the terminal. 1393 - 1394 - #: The color table {{{ 1395 - 1396 - #: The 256 terminal colors. There are 8 basic colors, each color has a 1397 - #: dull and bright version, for the first 16 colors. You can set the 1398 - #: remaining 240 colors as color16 to color255. 1399 - 1400 - # color0 #000000 1401 - # color8 #767676 1402 - 1403 - #: black 1404 - 1405 - # color1 #cc0403 1406 - # color9 #f2201f 1407 - 1408 - #: red 1409 - 1410 - # color2 #19cb00 1411 - # color10 #23fd00 1412 - 1413 - #: green 1414 - 1415 - # color3 #cecb00 1416 - # color11 #fffd00 1417 - 1418 - #: yellow 1419 - 1420 - # color4 #0d73cc 1421 - # color12 #1a8fff 1422 - 1423 - #: blue 1424 - 1425 - # color5 #cb1ed1 1426 - # color13 #fd28ff 1427 - 1428 - #: magenta 1429 - 1430 - # color6 #0dcdcd 1431 - # color14 #14ffff 1432 - 1433 - #: cyan 1434 - 1435 - # color7 #dddddd 1436 - # color15 #ffffff 1437 - 1438 - #: white 1439 - 1440 - # mark1_foreground black 1441 - 1442 - #: Color for marks of type 1 1443 - 1444 - # mark1_background #98d3cb 1445 - 1446 - #: Color for marks of type 1 (light steel blue) 1447 - 1448 - # mark2_foreground black 1449 - 1450 - #: Color for marks of type 2 1451 - 1452 - # mark2_background #f2dcd3 1453 - 1454 - #: Color for marks of type 1 (beige) 1455 - 1456 - # mark3_foreground black 1457 - 1458 - #: Color for marks of type 3 1459 - 1460 - # mark3_background #f274bc 1461 - 1462 - #: Color for marks of type 3 (violet) 1463 - 1464 - #: }}} 1465 - 1466 - #: }}} 1467 - 1468 - #: Advanced {{{ 1469 - 1470 - # shell . 1471 - 1472 - #: The shell program to execute. The default value of . means to use 1473 - #: the value of of the SHELL environment variable or if unset, 1474 - #: whatever shell is set as the default shell for the current user. 1475 - #: Note that on macOS if you change this, you might need to add 1476 - #: --login and --interactive to ensure that the shell starts in 1477 - #: interactive mode and reads its startup rc files. Environment 1478 - #: variables are expanded in this setting. 1479 - 1480 - # editor . 1481 - 1482 - #: The terminal based text editor (such as vim or nano) to use when 1483 - #: editing the kitty config file or similar tasks. 1484 - 1485 - #: The default value of . means to use the environment variables 1486 - #: VISUAL and EDITOR in that order. If these variables aren't set, 1487 - #: kitty will run your shell ($SHELL -l -i -c env) to see if your 1488 - #: shell startup rc files set VISUAL or EDITOR. If that doesn't work, 1489 - #: kitty will cycle through various known editors (vim, emacs, etc.) 1490 - #: and take the first one that exists on your system. 1491 - 1492 - # close_on_child_death no 1493 - 1494 - #: Close the window when the child process (usually the shell) exits. 1495 - #: With the default value no, the terminal will remain open when the 1496 - #: child exits as long as there are still other processes outputting 1497 - #: to the terminal (for example disowned or backgrounded processes). 1498 - #: When enabled with yes, the window will close as soon as the child 1499 - #: process exits. Note that setting it to yes means that any 1500 - #: background processes still using the terminal can fail silently 1501 - #: because their stdout/stderr/stdin no longer work. 1502 - 1503 - # remote_control_password 1504 - 1505 - #: Allow other programs to control kitty using passwords. This option 1506 - #: can be specified multiple times to add multiple passwords. If no 1507 - #: passwords are present kitty will ask the user for permission if a 1508 - #: program tries to use remote control with a password. A password can 1509 - #: also *optionally* be associated with a set of allowed remote 1510 - #: control actions. For example:: 1511 - 1512 - #: remote_control_password "my passphrase" get-colors set-colors focus-window focus-tab 1513 - 1514 - #: Only the specified actions will be allowed when using this 1515 - #: password. Glob patterns can be used too, for example:: 1516 - 1517 - #: remote_control_password "my passphrase" set-tab-* resize-* 1518 - 1519 - #: To get a list of available actions, run:: 1520 - 1521 - #: kitten @ --help 1522 - 1523 - #: A set of actions to be allowed when no password is sent can be 1524 - #: specified by using an empty password. For example:: 1525 - 1526 - #: remote_control_password "" *-colors 1527 - 1528 - #: Finally, the path to a python module can be specified that provides 1529 - #: a function is_cmd_allowed that is used to check every remote 1530 - #: control command. For example:: 1531 - 1532 - #: remote_control_password "my passphrase" my_rc_command_checker.py 1533 - 1534 - #: Relative paths are resolved from the kitty configuration directory. 1535 - #: See rc_custom_auth <https://sw.kovidgoyal.net/kitty/remote- 1536 - #: control/#rc-custom-auth> for details. 1537 - 1538 - # allow_remote_control no 1539 - 1540 - #: Allow other programs to control kitty. If you turn this on, other 1541 - #: programs can control all aspects of kitty, including sending text 1542 - #: to kitty windows, opening new windows, closing windows, reading the 1543 - #: content of windows, etc. Note that this even works over SSH 1544 - #: connections. The default setting of no prevents any form of remote 1545 - #: control. The meaning of the various values are: 1546 - 1547 - #: password 1548 - #: Remote control requests received over both the TTY device and the socket 1549 - #: are confirmed based on passwords, see remote_control_password. 1550 - 1551 - #: socket-only 1552 - #: Remote control requests received over a socket are accepted 1553 - #: unconditionally. Requests received over the TTY are denied. 1554 - #: See listen_on. 1555 - 1556 - #: socket 1557 - #: Remote control requests received over a socket are accepted 1558 - #: unconditionally. Requests received over the TTY are confirmed based on 1559 - #: password. 1560 - 1561 - #: no 1562 - #: Remote control is completely disabled. 1563 - 1564 - #: yes 1565 - #: Remote control requests are always accepted. 1566 - 1567 - # listen_on none 1568 - 1569 - #: Listen to the specified socket for remote control connections. Note 1570 - #: that this will apply to all kitty instances. It can be overridden 1571 - #: by the kitty --listen-on command line option. For UNIX sockets, 1572 - #: such as unix:${TEMP}/mykitty or unix:@mykitty (on Linux). 1573 - #: Environment variables are expanded and relative paths are resolved 1574 - #: with respect to the temporary directory. If {kitty_pid} is present, 1575 - #: then it is replaced by the PID of the kitty process, otherwise the 1576 - #: PID of the kitty process is appended to the value, with a hyphen. 1577 - #: For TCP sockets such as tcp:localhost:0 a random port is always 1578 - #: used even if a non-zero port number is specified. See the help for 1579 - #: kitty --listen-on for more details. Note that this will be ignored 1580 - #: unless allow_remote_control is set to either: yes, socket or 1581 - #: socket-only. Changing this option by reloading the config is not 1582 - #: supported. 1583 - 1584 - # env 1585 - 1586 - #: Specify the environment variables to be set in all child processes. 1587 - #: Using the name with an equal sign (e.g. env VAR=) will set it to 1588 - #: the empty string. Specifying only the name (e.g. env VAR) will 1589 - #: remove the variable from the child process' environment. Note that 1590 - #: environment variables are expanded recursively, for example:: 1591 - 1592 - #: env VAR1=a 1593 - #: env VAR2=${HOME}/${VAR1}/b 1594 - 1595 - #: The value of VAR2 will be <path to home directory>/a/b. 1596 - 1597 - # filter_notification 1598 - 1599 - #: Specify rules to filter out notifications sent by applications 1600 - #: running in kitty. Can be specified multiple times to create 1601 - #: multiple filter rules. A rule specification is of the form 1602 - #: field:regexp. A filter rule can match on any of the fields: title, 1603 - #: body, app, type. The special value of all filters out all 1604 - #: notifications. Rules can be combined using Boolean operators. Some 1605 - #: examples:: 1606 - 1607 - #: filter_notification title:hello or body:"abc.*def" 1608 - #: # filter out notification from vim except for ones about updates, (?i) 1609 - #: # makes matching case insensitive. 1610 - #: filter_notification app:"[ng]?vim" and not body:"(?i)update" 1611 - #: # filter out all notifications 1612 - #: filter_notification all 1613 - 1614 - #: The field app is the name of the application sending the 1615 - #: notification and type is the type of the notification. Not all 1616 - #: applications will send these fields, so you can also match on the 1617 - #: title and body of the notification text. More sophisticated 1618 - #: programmatic filtering and custom actions on notifications can be 1619 - #: done by creating a notifications.py file in the kitty config 1620 - #: directory (~/.config/kitty). An annotated sample is available 1621 - #: <https://github.com/kovidgoyal/kitty/blob/master/docs/notifications.py>. 1622 - 1623 - # watcher 1624 - 1625 - #: Path to python file which will be loaded for watchers 1626 - #: <https://sw.kovidgoyal.net/kitty/launch/#watchers>. Can be 1627 - #: specified more than once to load multiple watchers. The watchers 1628 - #: will be added to every kitty window. Relative paths are resolved 1629 - #: relative to the kitty config directory. Note that reloading the 1630 - #: config will only affect windows created after the reload. 1631 - 1632 - # exe_search_path 1633 - 1634 - #: Control where kitty finds the programs to run. The default search 1635 - #: order is: First search the system wide PATH, then ~/.local/bin and 1636 - #: ~/bin. If still not found, the PATH defined in the login shell 1637 - #: after sourcing all its startup files is tried. Finally, if present, 1638 - #: the PATH specified by the env option is tried. 1639 - 1640 - #: This option allows you to prepend, append, or remove paths from 1641 - #: this search order. It can be specified multiple times for multiple 1642 - #: paths. A simple path will be prepended to the search order. A path 1643 - #: that starts with the + sign will be append to the search order, 1644 - #: after ~/bin above. A path that starts with the - sign will be 1645 - #: removed from the entire search order. For example:: 1646 - 1647 - #: exe_search_path /some/prepended/path 1648 - #: exe_search_path +/some/appended/path 1649 - #: exe_search_path -/some/excluded/path 1650 - 1651 - # update_check_interval 24 1652 - 1653 - #: The interval to periodically check if an update to kitty is 1654 - #: available (in hours). If an update is found, a system notification 1655 - #: is displayed informing you of the available update. The default is 1656 - #: to check every 24 hours, set to zero to disable. Update checking is 1657 - #: only done by the official binary builds. Distro packages or source 1658 - #: builds do not do update checking. Changing this option by reloading 1659 - #: the config is not supported. 1660 - 1661 - # startup_session none 1662 - 1663 - #: Path to a session file to use for all kitty instances. Can be 1664 - #: overridden by using the kitty --session =none command line option 1665 - #: for individual instances. See sessions 1666 - #: <https://sw.kovidgoyal.net/kitty/overview/#sessions> in the kitty 1667 - #: documentation for details. Note that relative paths are interpreted 1668 - #: with respect to the kitty config directory. Environment variables 1669 - #: in the path are expanded. Changing this option by reloading the 1670 - #: config is not supported. Note that if kitty is invoked with command 1671 - #: line arguments specifying a command to run, this option is ignored. 1672 - 1673 - # clipboard_control write-clipboard write-primary read-clipboard-ask read-primary-ask 1674 - 1675 - #: Allow programs running in kitty to read and write from the 1676 - #: clipboard. You can control exactly which actions are allowed. The 1677 - #: possible actions are: write-clipboard, read-clipboard, write- 1678 - #: primary, read-primary, read-clipboard-ask, read-primary-ask. The 1679 - #: default is to allow writing to the clipboard and primary selection 1680 - #: and to ask for permission when a program tries to read from the 1681 - #: clipboard. Note that disabling the read confirmation is a security 1682 - #: risk as it means that any program, even the ones running on a 1683 - #: remote server via SSH can read your clipboard. See also 1684 - #: clipboard_max_size. 1685 - 1686 - # clipboard_max_size 512 1687 - 1688 - #: The maximum size (in MB) of data from programs running in kitty 1689 - #: that will be stored for writing to the system clipboard. A value of 1690 - #: zero means no size limit is applied. See also clipboard_control. 1691 - 1692 - # file_transfer_confirmation_bypass 1693 - 1694 - #: The password that can be supplied to the file transfer kitten 1695 - #: <https://sw.kovidgoyal.net/kitty/kittens/transfer/> to skip the 1696 - #: transfer confirmation prompt. This should only be used when 1697 - #: initiating transfers from trusted computers, over trusted networks 1698 - #: or encrypted transports, as it allows any programs running on the 1699 - #: remote machine to read/write to the local filesystem, without 1700 - #: permission. 1701 - 1702 - # allow_hyperlinks yes 1703 - 1704 - #: Process hyperlink escape sequences (OSC 8). If disabled OSC 8 1705 - #: escape sequences are ignored. Otherwise they become clickable 1706 - #: links, that you can click with the mouse or by using the hints 1707 - #: kitten <https://sw.kovidgoyal.net/kitty/kittens/hints/>. The 1708 - #: special value of ask means that kitty will ask before opening the 1709 - #: link when clicked. 1710 - 1711 - # shell_integration enabled 1712 - 1713 - #: Enable shell integration on supported shells. This enables features 1714 - #: such as jumping to previous prompts, browsing the output of the 1715 - #: previous command in a pager, etc. on supported shells. Set to 1716 - #: disabled to turn off shell integration, completely. It is also 1717 - #: possible to disable individual features, set to a space separated 1718 - #: list of these values: no-rc, no-cursor, no-title, no-cwd, no- 1719 - #: prompt-mark, no-complete, no-sudo. See Shell integration 1720 - #: <https://sw.kovidgoyal.net/kitty/shell-integration/> for details. 1721 - 1722 - # allow_cloning ask 1723 - 1724 - #: Control whether programs running in the terminal can request new 1725 - #: windows to be created. The canonical example is clone-in-kitty 1726 - #: <https://sw.kovidgoyal.net/kitty/shell-integration/#clone-shell>. 1727 - #: By default, kitty will ask for permission for each clone request. 1728 - #: Allowing cloning unconditionally gives programs running in the 1729 - #: terminal (including over SSH) permission to execute arbitrary code, 1730 - #: as the user who is running the terminal, on the computer that the 1731 - #: terminal is running on. 1732 - 1733 - # clone_source_strategies venv,conda,env_var,path 1734 - 1735 - #: Control what shell code is sourced when running clone-in-kitty in 1736 - #: the newly cloned window. The supported strategies are: 1737 - 1738 - #: venv 1739 - #: Source the file $VIRTUAL_ENV/bin/activate. This is used by the 1740 - #: Python stdlib venv module and allows cloning venvs automatically. 1741 - #: conda 1742 - #: Run conda activate $CONDA_DEFAULT_ENV. This supports the virtual 1743 - #: environments created by conda. 1744 - #: env_var 1745 - #: Execute the contents of the environment variable 1746 - #: KITTY_CLONE_SOURCE_CODE with eval. 1747 - #: path 1748 - #: Source the file pointed to by the environment variable 1749 - #: KITTY_CLONE_SOURCE_PATH. 1750 - 1751 - #: This option must be a comma separated list of the above values. 1752 - #: Only the first valid match, in the order specified, is sourced. 1753 - 1754 - # notify_on_cmd_finish never 1755 - 1756 - #: Show a desktop notification when a long-running command finishes 1757 - #: (needs shell_integration). The possible values are: 1758 - 1759 - #: never 1760 - #: Never send a notification. 1761 - 1762 - #: unfocused 1763 - #: Only send a notification when the window does not have keyboard focus. 1764 - 1765 - #: invisible 1766 - #: Only send a notification when the window both is unfocused and not visible 1767 - #: to the user, for example, because it is in an inactive tab or its OS window 1768 - #: is not currently visible (on platforms that support OS window visibility querying 1769 - #: this considers an OS Window visible iff it is active). 1770 - 1771 - #: always 1772 - #: Always send a notification, regardless of window state. 1773 - 1774 - #: There are two optional arguments: 1775 - 1776 - #: First, the minimum duration for what is considered a long running 1777 - #: command. The default is 5 seconds. Specify a second argument to set 1778 - #: the duration. For example: invisible 15. Do not set the value too 1779 - #: small, otherwise a command that launches a new OS Window and exits 1780 - #: will spam a notification. 1781 - 1782 - #: Second, the action to perform. The default is notify. The possible 1783 - #: values are: 1784 - 1785 - #: notify 1786 - #: Send a desktop notification. The subsequent arguments are optional and specify when 1787 - #: the notification is automatically cleared. The set of possible events when the notification is 1788 - #: cleared are: focus and next. focus means that when the notification 1789 - #: policy is unfocused or invisible the notification is automatically cleared 1790 - #: when the window regains focus. The value of next means that the previous notification 1791 - #: is cleared when the next notification is shown. The default when no arguments are specified 1792 - #: is: focus next. 1793 - 1794 - #: bell 1795 - #: Ring the terminal bell. 1796 - 1797 - #: command 1798 - #: Run a custom command. All subsequent arguments are the cmdline to run. 1799 - 1800 - #: Some more examples:: 1801 - 1802 - #: # Send a notification when a command takes more than 5 seconds in an unfocused window 1803 - #: notify_on_cmd_finish unfocused 1804 - #: # Send a notification when a command takes more than 10 seconds in a invisible window 1805 - #: notify_on_cmd_finish invisible 10.0 1806 - #: # Ring a bell when a command takes more than 10 seconds in a invisible window 1807 - #: notify_on_cmd_finish invisible 10.0 bell 1808 - #: # Run 'notify-send' when a command takes more than 10 seconds in a invisible window 1809 - #: # Here %c is replaced by the current command line and %s by the job exit code 1810 - #: notify_on_cmd_finish invisible 10.0 command notify-send "job finished with status: %s" %c 1811 - #: # Do not clear previous notification when next command finishes or window regains focus 1812 - #: notify_on_cmd_finish invisible 5.0 notify 1813 - 1814 - # term xterm-kitty 1815 - 1816 - #: The value of the TERM environment variable to set. Changing this 1817 - #: can break many terminal programs, only change it if you know what 1818 - #: you are doing, not because you read some advice on "Stack Overflow" 1819 - #: to change it. The TERM variable is used by various programs to get 1820 - #: information about the capabilities and behavior of the terminal. If 1821 - #: you change it, depending on what programs you run, and how 1822 - #: different the terminal you are changing it to is, various things 1823 - #: from key-presses, to colors, to various advanced features may not 1824 - #: work. Changing this option by reloading the config will only affect 1825 - #: newly created windows. 1826 - 1827 - # terminfo_type path 1828 - 1829 - #: The value of the TERMINFO environment variable to set. This 1830 - #: variable is used by programs running in the terminal to search for 1831 - #: terminfo databases. The default value of path causes kitty to set 1832 - #: it to a filesystem location containing the kitty terminfo database. 1833 - #: A value of direct means put the entire database into the env var 1834 - #: directly. This can be useful when connecting to containers, for 1835 - #: example. But, note that not all software supports this. A value of 1836 - #: none means do not touch the variable. 1837 - 1838 - # forward_stdio no 1839 - 1840 - #: Forward STDOUT and STDERR of the kitty process to child processes. 1841 - #: This is useful for debugging as it allows child processes to print 1842 - #: to kitty's STDOUT directly. For example, echo hello world 1843 - #: >&$KITTY_STDIO_FORWARDED in a shell will print to the parent 1844 - #: kitty's STDOUT. Sets the KITTY_STDIO_FORWARDED=fdnum environment 1845 - #: variable so child processes know about the forwarding. Note that on 1846 - #: macOS this prevents the shell from being run via the login utility 1847 - #: so getlogin() will not work in programs run in this session. 1848 - 1849 - # menu_map 1850 - 1851 - #: Specify entries for various menus in kitty. Currently only the 1852 - #: global menubar on macOS is supported. For example:: 1853 - 1854 - #: menu_map global "Actions::Launch something special" launch --hold --type=os-window sh -c "echo hello world" 1855 - 1856 - #: This will create a menu entry named "Launch something special" in 1857 - #: an "Actions" menu in the macOS global menubar. Sub-menus can be 1858 - #: created by adding more levels separated by the :: characters. 1859 - 1860 - #: }}} 1861 - 1862 - #: OS specific tweaks {{{ 1863 - 1864 - # wayland_titlebar_color system 1865 - 1866 - #: The color of the kitty window's titlebar on Wayland systems with 1867 - #: client side window decorations such as GNOME. A value of system 1868 - #: means to use the default system colors, a value of background means 1869 - #: to use the background color of the currently active kitty window 1870 - #: and finally you can use an arbitrary color, such as #12af59 or red. 1871 - 1872 - # macos_titlebar_color system 1873 - 1874 - #: The color of the kitty window's titlebar on macOS. A value of 1875 - #: system means to use the default system color, light or dark can 1876 - #: also be used to set it explicitly. A value of background means to 1877 - #: use the background color of the currently active window and finally 1878 - #: you can use an arbitrary color, such as #12af59 or red. WARNING: 1879 - #: This option works by using a hack when arbitrary color (or 1880 - #: background) is configured, as there is no proper Cocoa API for it. 1881 - #: It sets the background color of the entire window and makes the 1882 - #: titlebar transparent. As such it is incompatible with 1883 - #: background_opacity. If you want to use both, you are probably 1884 - #: better off just hiding the titlebar with hide_window_decorations. 1885 - 1886 - # macos_option_as_alt no 1887 - 1888 - #: Use the Option key as an Alt key on macOS. With this set to no, 1889 - #: kitty will use the macOS native Option+Key to enter Unicode 1890 - #: character behavior. This will break any Alt+Key keyboard shortcuts 1891 - #: in your terminal programs, but you can use the macOS Unicode input 1892 - #: technique. You can use the values: left, right or both to use only 1893 - #: the left, right or both Option keys as Alt, instead. Note that 1894 - #: kitty itself always treats Option the same as Alt. This means you 1895 - #: cannot use this option to configure different kitty shortcuts for 1896 - #: Option+Key vs. Alt+Key. Also, any kitty shortcuts using 1897 - #: Option/Alt+Key will take priority, so that any such key presses 1898 - #: will not be passed to terminal programs running inside kitty. 1899 - #: Changing this option by reloading the config is not supported. 1900 - 1901 - # macos_hide_from_tasks no 1902 - 1903 - #: Hide the kitty window from running tasks on macOS (โŒ˜+Tab and the 1904 - #: Dock). Changing this option by reloading the config is not 1905 - #: supported. 1906 - 1907 - # macos_quit_when_last_window_closed no 1908 - 1909 - #: Have kitty quit when all the top-level windows are closed on macOS. 1910 - #: By default, kitty will stay running, even with no open windows, as 1911 - #: is the expected behavior on macOS. 1912 - 1913 - # macos_window_resizable yes 1914 - 1915 - #: Disable this if you want kitty top-level OS windows to not be 1916 - #: resizable on macOS. 1917 - 1918 - # macos_thicken_font 0 1919 - 1920 - #: Draw an extra border around the font with the given width, to 1921 - #: increase legibility at small font sizes on macOS. For example, a 1922 - #: value of 0.75 will result in rendering that looks similar to sub- 1923 - #: pixel antialiasing at common font sizes. Note that in modern kitty, 1924 - #: this option is obsolete (although still supported). Consider using 1925 - #: text_composition_strategy instead. 1926 - 1927 - # macos_traditional_fullscreen no 1928 - 1929 - #: Use the macOS traditional full-screen transition, that is faster, 1930 - #: but less pretty. 1931 - 1932 - # macos_show_window_title_in all 1933 - 1934 - #: Control where the window title is displayed on macOS. A value of 1935 - #: window will show the title of the currently active window at the 1936 - #: top of the macOS window. A value of menubar will show the title of 1937 - #: the currently active window in the macOS global menu bar, making 1938 - #: use of otherwise wasted space. A value of all will show the title 1939 - #: in both places, and none hides the title. See 1940 - #: macos_menubar_title_max_length for how to control the length of the 1941 - #: title in the menu bar. 1942 - 1943 - # macos_menubar_title_max_length 0 1944 - 1945 - #: The maximum number of characters from the window title to show in 1946 - #: the macOS global menu bar. Values less than one means that there is 1947 - #: no maximum limit. 1948 - 1949 - # macos_custom_beam_cursor no 1950 - 1951 - #: Use a custom mouse cursor for macOS that is easier to see on both 1952 - #: light and dark backgrounds. Nowadays, the default macOS cursor 1953 - #: already comes with a white border. WARNING: this might make your 1954 - #: mouse cursor invisible on dual GPU machines. Changing this option 1955 - #: by reloading the config is not supported. 1956 - 1957 - # macos_colorspace srgb 1958 - 1959 - #: The colorspace in which to interpret terminal colors. The default 1960 - #: of srgb will cause colors to match those seen in web browsers. The 1961 - #: value of default will use whatever the native colorspace of the 1962 - #: display is. The value of displayp3 will use Apple's special 1963 - #: snowflake display P3 color space, which will result in over 1964 - #: saturated (brighter) colors with some color shift. Reloading 1965 - #: configuration will change this value only for newly created OS 1966 - #: windows. 1967 - 1968 - # linux_display_server auto 1969 - 1970 - #: Choose between Wayland and X11 backends. By default, an appropriate 1971 - #: backend based on the system state is chosen automatically. Set it 1972 - #: to x11 or wayland to force the choice. Changing this option by 1973 - #: reloading the config is not supported. 1974 - 1975 - # wayland_enable_ime yes 1976 - 1977 - #: Enable Input Method Extension on Wayland. This is typically used 1978 - #: for inputting text in East Asian languages. However, its 1979 - #: implementation in Wayland is often buggy and introduces latency 1980 - #: into the input loop, so disable this if you know you dont need it. 1981 - #: Changing this option by reloading the config is not supported, it 1982 - #: will not have any effect. 1983 - 1984 - #: }}} 1985 - 1986 - #: Keyboard shortcuts {{{ 1987 - 1988 - #: Keys are identified simply by their lowercase Unicode characters. 1989 - #: For example: a for the A key, [ for the left square bracket key, 1990 - #: etc. For functional keys, such as Enter or Escape, the names are 1991 - #: present at Functional key definitions 1992 - #: <https://sw.kovidgoyal.net/kitty/keyboard-protocol/#functional>. 1993 - #: For modifier keys, the names are ctrl (control, โŒƒ), shift (โ‡ง), alt 1994 - #: (opt, option, โŒฅ), super (cmd, command, โŒ˜). 1995 - 1996 - #: Simple shortcut mapping is done with the map directive. For full 1997 - #: details on advanced mapping including modal and per application 1998 - #: maps, see mapping <https://sw.kovidgoyal.net/kitty/mapping/>. Some 1999 - #: quick examples to illustrate common tasks:: 2000 - 2001 - #: # unmap a keyboard shortcut, passing it to the program running in kitty 2002 - #: map kitty_mod+space 2003 - #: # completely ignore a keyboard event 2004 - #: map ctrl+alt+f1 discard_event 2005 - #: # combine multiple actions 2006 - #: map kitty_mod+e combine : new_window : next_layout 2007 - #: # multi-key shortcuts 2008 - #: map ctrl+x>ctrl+y>z action 2009 - 2010 - #: The full list of actions that can be mapped to key presses is 2011 - #: available here <https://sw.kovidgoyal.net/kitty/actions/>. 2012 - 2013 - # kitty_mod ctrl+shift 2014 - 2015 - #: Special modifier key alias for default shortcuts. You can change 2016 - #: the value of this option to alter all default shortcuts that use 2017 - #: kitty_mod. 2018 - 2019 - # clear_all_shortcuts no 2020 - 2021 - #: Remove all shortcut definitions up to this point. Useful, for 2022 - #: instance, to remove the default shortcuts. 2023 - 2024 - # action_alias 2025 - 2026 - #: E.g. action_alias launch_tab launch --type=tab --cwd=current 2027 - 2028 - #: Define action aliases to avoid repeating the same options in 2029 - #: multiple mappings. Aliases can be defined for any action and will 2030 - #: be expanded recursively. For example, the above alias allows you to 2031 - #: create mappings to launch a new tab in the current working 2032 - #: directory without duplication:: 2033 - 2034 - #: map f1 launch_tab vim 2035 - #: map f2 launch_tab emacs 2036 - 2037 - #: Similarly, to alias kitten invocation:: 2038 - 2039 - #: action_alias hints kitten hints --hints-offset=0 2040 - 2041 - # kitten_alias 2042 - 2043 - #: E.g. kitten_alias hints hints --hints-offset=0 2044 - 2045 - #: Like action_alias above, but specifically for kittens. Generally, 2046 - #: prefer to use action_alias. This option is a legacy version, 2047 - #: present for backwards compatibility. It causes all invocations of 2048 - #: the aliased kitten to be substituted. So the example above will 2049 - #: cause all invocations of the hints kitten to have the --hints- 2050 - #: offset=0 option applied. 2051 - 2052 - #: Clipboard {{{ 2053 - 2054 - #: Copy to clipboard 2055 - 2056 - # map kitty_mod+c copy_to_clipboard 2057 - # map cmd+c copy_to_clipboard 2058 - 2059 - #:: There is also a copy_or_interrupt action that can be optionally 2060 - #:: mapped to Ctrl+C. It will copy only if there is a selection and 2061 - #:: send an interrupt otherwise. Similarly, 2062 - #:: copy_and_clear_or_interrupt will copy and clear the selection or 2063 - #:: send an interrupt if there is no selection. 2064 - 2065 - #: Paste from clipboard 2066 - 2067 - # map kitty_mod+v paste_from_clipboard 2068 - # map cmd+v paste_from_clipboard 2069 - 2070 - #: Paste from selection 2071 - 2072 - # map kitty_mod+s paste_from_selection 2073 - # map shift+insert paste_from_selection 2074 - 2075 - #: Pass selection to program 2076 - 2077 - # map kitty_mod+o pass_selection_to_program 2078 - 2079 - #:: You can also pass the contents of the current selection to any 2080 - #:: program with pass_selection_to_program. By default, the system's 2081 - #:: open program is used, but you can specify your own, the selection 2082 - #:: will be passed as a command line argument to the program. For 2083 - #:: example:: 2084 - 2085 - #:: map kitty_mod+o pass_selection_to_program firefox 2086 - 2087 - #:: You can pass the current selection to a terminal program running 2088 - #:: in a new kitty window, by using the @selection placeholder:: 2089 - 2090 - #:: map kitty_mod+y new_window less @selection 2091 - 2092 - #: }}} 2093 - 2094 - #: Scrolling {{{ 2095 - 2096 - #: Scroll line up 2097 - 2098 - # map kitty_mod+up scroll_line_up 2099 - # map kitty_mod+k scroll_line_up 2100 - # map opt+cmd+page_up scroll_line_up 2101 - # map cmd+up scroll_line_up 2102 - 2103 - #: Scroll line down 2104 - 2105 - # map kitty_mod+down scroll_line_down 2106 - # map kitty_mod+j scroll_line_down 2107 - # map opt+cmd+page_down scroll_line_down 2108 - # map cmd+down scroll_line_down 2109 - 2110 - #: Scroll page up 2111 - 2112 - # map kitty_mod+page_up scroll_page_up 2113 - # map cmd+page_up scroll_page_up 2114 - 2115 - #: Scroll page down 2116 - 2117 - # map kitty_mod+page_down scroll_page_down 2118 - # map cmd+page_down scroll_page_down 2119 - 2120 - #: Scroll to top 2121 - 2122 - # map kitty_mod+home scroll_home 2123 - # map cmd+home scroll_home 2124 - 2125 - #: Scroll to bottom 2126 - 2127 - # map kitty_mod+end scroll_end 2128 - # map cmd+end scroll_end 2129 - 2130 - #: Scroll to previous shell prompt 2131 - 2132 - # map kitty_mod+z scroll_to_prompt -1 2133 - 2134 - #:: Use a parameter of 0 for scroll_to_prompt to scroll to the last 2135 - #:: jumped to or the last clicked position. Requires shell 2136 - #:: integration <https://sw.kovidgoyal.net/kitty/shell-integration/> 2137 - #:: to work. 2138 - 2139 - #: Scroll to next shell prompt 2140 - 2141 - # map kitty_mod+x scroll_to_prompt 1 2142 - 2143 - #: Browse scrollback buffer in pager 2144 - 2145 - # map kitty_mod+h show_scrollback 2146 - 2147 - #:: You can pipe the contents of the current screen and history 2148 - #:: buffer as STDIN to an arbitrary program using launch --stdin- 2149 - #:: source. For example, the following opens the scrollback buffer in 2150 - #:: less in an overlay window:: 2151 - 2152 - #:: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R 2153 - 2154 - #:: For more details on piping screen and buffer contents to external 2155 - #:: programs, see launch <https://sw.kovidgoyal.net/kitty/launch/>. 2156 - 2157 - #: Browse output of the last shell command in pager 2158 - 2159 - # map kitty_mod+g show_last_command_output 2160 - 2161 - #:: You can also define additional shortcuts to get the command 2162 - #:: output. For example, to get the first command output on screen:: 2163 - 2164 - #:: map f1 show_first_command_output_on_screen 2165 - 2166 - #:: To get the command output that was last accessed by a keyboard 2167 - #:: action or mouse action:: 2168 - 2169 - #:: map f1 show_last_visited_command_output 2170 - 2171 - #:: You can pipe the output of the last command run in the shell 2172 - #:: using the launch action. For example, the following opens the 2173 - #:: output in less in an overlay window:: 2174 - 2175 - #:: map f1 launch --stdin-source=@last_cmd_output --stdin-add-formatting --type=overlay less +G -R 2176 - 2177 - #:: To get the output of the first command on the screen, use 2178 - #:: @first_cmd_output_on_screen. To get the output of the last jumped 2179 - #:: to command, use @last_visited_cmd_output. 2180 - 2181 - #:: Requires shell integration 2182 - #:: <https://sw.kovidgoyal.net/kitty/shell-integration/> to work. 2183 - 2184 - #: }}} 2185 - 2186 - #: Window management {{{ 2187 - 2188 - #: New window 2189 - 2190 - # map kitty_mod+enter new_window 2191 - # map cmd+enter new_window 2192 - 2193 - #:: You can open a new kitty window running an arbitrary program, for 2194 - #:: example:: 2195 - 2196 - #:: map kitty_mod+y launch mutt 2197 - 2198 - #:: You can open a new window with the current working directory set 2199 - #:: to the working directory of the current window using:: 2200 - 2201 - #:: map ctrl+alt+enter launch --cwd=current 2202 - 2203 - #:: You can open a new window that is allowed to control kitty via 2204 - #:: the kitty remote control facility with launch --allow-remote- 2205 - #:: control. Any programs running in that window will be allowed to 2206 - #:: control kitty. For example:: 2207 - 2208 - #:: map ctrl+enter launch --allow-remote-control some_program 2209 - 2210 - #:: You can open a new window next to the currently active window or 2211 - #:: as the first window, with:: 2212 - 2213 - #:: map ctrl+n launch --location=neighbor 2214 - #:: map ctrl+f launch --location=first 2215 - 2216 - #:: For more details, see launch 2217 - #:: <https://sw.kovidgoyal.net/kitty/launch/>. 2218 - 2219 - #: New OS window 2220 - 2221 - # map kitty_mod+n new_os_window 2222 - # map cmd+n new_os_window 2223 - 2224 - #:: Works like new_window above, except that it opens a top-level OS 2225 - #:: window. In particular you can use new_os_window_with_cwd to open 2226 - #:: a window with the current working directory. 2227 - 2228 - #: Close window 2229 - 2230 - # map kitty_mod+w close_window 2231 - # map shift+cmd+d close_window 2232 - 2233 - #: Next window 2234 - 2235 - # map kitty_mod+] next_window 2236 - 2237 - #: Previous window 2238 - 2239 - # map kitty_mod+[ previous_window 2240 - 2241 - #: Move window forward 2242 - 2243 - # map kitty_mod+f move_window_forward 2244 - 2245 - #: Move window backward 2246 - 2247 - # map kitty_mod+b move_window_backward 2248 - 2249 - #: Move window to top 2250 - 2251 - # map kitty_mod+` move_window_to_top 2252 - 2253 - #: Start resizing window 2254 - 2255 - # map kitty_mod+r start_resizing_window 2256 - # map cmd+r start_resizing_window 2257 - 2258 - #: First window 2259 - 2260 - # map kitty_mod+1 first_window 2261 - # map cmd+1 first_window 2262 - 2263 - #: Second window 2264 - 2265 - # map kitty_mod+2 second_window 2266 - # map cmd+2 second_window 2267 - 2268 - #: Third window 2269 - 2270 - # map kitty_mod+3 third_window 2271 - # map cmd+3 third_window 2272 - 2273 - #: Fourth window 2274 - 2275 - # map kitty_mod+4 fourth_window 2276 - # map cmd+4 fourth_window 2277 - 2278 - #: Fifth window 2279 - 2280 - # map kitty_mod+5 fifth_window 2281 - # map cmd+5 fifth_window 2282 - 2283 - #: Sixth window 2284 - 2285 - # map kitty_mod+6 sixth_window 2286 - # map cmd+6 sixth_window 2287 - 2288 - #: Seventh window 2289 - 2290 - # map kitty_mod+7 seventh_window 2291 - # map cmd+7 seventh_window 2292 - 2293 - #: Eighth window 2294 - 2295 - # map kitty_mod+8 eighth_window 2296 - # map cmd+8 eighth_window 2297 - 2298 - #: Ninth window 2299 - 2300 - # map kitty_mod+9 ninth_window 2301 - # map cmd+9 ninth_window 2302 - 2303 - #: Tenth window 2304 - 2305 - # map kitty_mod+0 tenth_window 2306 - 2307 - #: Visually select and focus window 2308 - 2309 - # map kitty_mod+f7 focus_visible_window 2310 - 2311 - #:: Display overlay numbers and alphabets on the window, and switch 2312 - #:: the focus to the window when you press the key. When there are 2313 - #:: only two windows, the focus will be switched directly without 2314 - #:: displaying the overlay. You can change the overlay characters and 2315 - #:: their order with option visual_window_select_characters. 2316 - 2317 - #: Visually swap window with another 2318 - 2319 - # map kitty_mod+f8 swap_with_window 2320 - 2321 - #:: Works like focus_visible_window above, but swaps the window. 2322 - 2323 - #: }}} 2324 - 2325 - #: Tab management {{{ 2326 - 2327 - #: Next tab 2328 - 2329 - # map kitty_mod+right next_tab 2330 - # map shift+cmd+] next_tab 2331 - # map ctrl+tab next_tab 2332 - 2333 - #: Previous tab 2334 - 2335 - # map kitty_mod+left previous_tab 2336 - # map shift+cmd+[ previous_tab 2337 - # map ctrl+shift+tab previous_tab 2338 - 2339 - #: New tab 2340 - 2341 - # map kitty_mod+t new_tab 2342 - # map cmd+t new_tab 2343 - 2344 - #: Close tab 2345 - 2346 - # map kitty_mod+q close_tab 2347 - # map cmd+w close_tab 2348 - 2349 - #: Close OS window 2350 - 2351 - # map shift+cmd+w close_os_window 2352 - 2353 - #: Move tab forward 2354 - 2355 - # map kitty_mod+. move_tab_forward 2356 - 2357 - #: Move tab backward 2358 - 2359 - # map kitty_mod+, move_tab_backward 2360 - 2361 - #: Set tab title 2362 - 2363 - # map kitty_mod+alt+t set_tab_title 2364 - # map shift+cmd+i set_tab_title 2365 - 2366 - 2367 - #: You can also create shortcuts to go to specific tabs, with 1 being 2368 - #: the first tab, 2 the second tab and -1 being the previously active 2369 - #: tab, -2 being the tab active before the previously active tab and 2370 - #: so on. Any number larger than the number of tabs goes to the last 2371 - #: tab and any number less than the number of previously used tabs in 2372 - #: the history goes to the oldest previously used tab in the history:: 2373 - 2374 - #: map ctrl+alt+1 goto_tab 1 2375 - #: map ctrl+alt+2 goto_tab 2 2376 - 2377 - #: Just as with new_window above, you can also pass the name of 2378 - #: arbitrary commands to run when using new_tab and new_tab_with_cwd. 2379 - #: Finally, if you want the new tab to open next to the current tab 2380 - #: rather than at the end of the tabs list, use:: 2381 - 2382 - #: map ctrl+t new_tab !neighbor [optional cmd to run] 2383 - #: }}} 2384 - 2385 - #: Layout management {{{ 2386 - 2387 - #: Next layout 2388 - 2389 - # map kitty_mod+l next_layout 2390 - 2391 - 2392 - #: You can also create shortcuts to switch to specific layouts:: 2393 - 2394 - #: map ctrl+alt+t goto_layout tall 2395 - #: map ctrl+alt+s goto_layout stack 2396 - 2397 - #: Similarly, to switch back to the previous layout:: 2398 - 2399 - #: map ctrl+alt+p last_used_layout 2400 - 2401 - #: There is also a toggle_layout action that switches to the named 2402 - #: layout or back to the previous layout if in the named layout. 2403 - #: Useful to temporarily "zoom" the active window by switching to the 2404 - #: stack layout:: 2405 - 2406 - #: map ctrl+alt+z toggle_layout stack 2407 - #: }}} 2408 - 2409 - #: Font sizes {{{ 2410 - 2411 - #: You can change the font size for all top-level kitty OS windows at 2412 - #: a time or only the current one. 2413 - 2414 - #: Increase font size 2415 - 2416 - # map kitty_mod+equal change_font_size all +2.0 2417 - # map kitty_mod+plus change_font_size all +2.0 2418 - # map kitty_mod+kp_add change_font_size all +2.0 2419 - # map cmd+plus change_font_size all +2.0 2420 - # map cmd+equal change_font_size all +2.0 2421 - # map shift+cmd+equal change_font_size all +2.0 2422 - 2423 - #: Decrease font size 2424 - 2425 - # map kitty_mod+minus change_font_size all -2.0 2426 - # map kitty_mod+kp_subtract change_font_size all -2.0 2427 - # map cmd+minus change_font_size all -2.0 2428 - # map shift+cmd+minus change_font_size all -2.0 2429 - 2430 - #: Reset font size 2431 - 2432 - # map kitty_mod+backspace change_font_size all 0 2433 - # map cmd+0 change_font_size all 0 2434 - 2435 - 2436 - #: To setup shortcuts for specific font sizes:: 2437 - 2438 - #: map kitty_mod+f6 change_font_size all 10.0 2439 - 2440 - #: To setup shortcuts to change only the current OS window's font 2441 - #: size:: 2442 - 2443 - #: map kitty_mod+f6 change_font_size current 10.0 2444 - #: }}} 2445 - 2446 - #: Select and act on visible text {{{ 2447 - 2448 - #: Use the hints kitten to select text and either pass it to an 2449 - #: external program or insert it into the terminal or copy it to the 2450 - #: clipboard. 2451 - 2452 - #: Open URL 2453 - 2454 - # map kitty_mod+e open_url_with_hints 2455 - 2456 - #:: Open a currently visible URL using the keyboard. The program used 2457 - #:: to open the URL is specified in open_url_with. 2458 - 2459 - #: Insert selected path 2460 - 2461 - # map kitty_mod+p>f kitten hints --type path --program - 2462 - 2463 - #:: Select a path/filename and insert it into the terminal. Useful, 2464 - #:: for instance to run git commands on a filename output from a 2465 - #:: previous git command. 2466 - 2467 - #: Open selected path 2468 - 2469 - # map kitty_mod+p>shift+f kitten hints --type path 2470 - 2471 - #:: Select a path/filename and open it with the default open program. 2472 - 2473 - #: Insert selected line 2474 - 2475 - # map kitty_mod+p>l kitten hints --type line --program - 2476 - 2477 - #:: Select a line of text and insert it into the terminal. Useful for 2478 - #:: the output of things like: `ls -1`. 2479 - 2480 - #: Insert selected word 2481 - 2482 - # map kitty_mod+p>w kitten hints --type word --program - 2483 - 2484 - #:: Select words and insert into terminal. 2485 - 2486 - #: Insert selected hash 2487 - 2488 - # map kitty_mod+p>h kitten hints --type hash --program - 2489 - 2490 - #:: Select something that looks like a hash and insert it into the 2491 - #:: terminal. Useful with git, which uses SHA1 hashes to identify 2492 - #:: commits. 2493 - 2494 - #: Open the selected file at the selected line 2495 - 2496 - # map kitty_mod+p>n kitten hints --type linenum 2497 - 2498 - #:: Select something that looks like filename:linenum and open it in 2499 - #:: your default editor at the specified line number. 2500 - 2501 - #: Open the selected hyperlink 2502 - 2503 - # map kitty_mod+p>y kitten hints --type hyperlink 2504 - 2505 - #:: Select a hyperlink (i.e. a URL that has been marked as such by 2506 - #:: the terminal program, for example, by `ls --hyperlink=auto`). 2507 - 2508 - 2509 - #: The hints kitten has many more modes of operation that you can map 2510 - #: to different shortcuts. For a full description see hints kitten 2511 - #: <https://sw.kovidgoyal.net/kitty/kittens/hints/>. 2512 - #: }}} 2513 - 2514 - #: Miscellaneous {{{ 2515 - 2516 - #: Show documentation 2517 - 2518 - # map kitty_mod+f1 show_kitty_doc overview 2519 - 2520 - #: Toggle fullscreen 2521 - 2522 - # map kitty_mod+f11 toggle_fullscreen 2523 - # map ctrl+cmd+f toggle_fullscreen 2524 - 2525 - #: Toggle maximized 2526 - 2527 - # map kitty_mod+f10 toggle_maximized 2528 - 2529 - #: Toggle macOS secure keyboard entry 2530 - 2531 - # map opt+cmd+s toggle_macos_secure_keyboard_entry 2532 - 2533 - #: Unicode input 2534 - 2535 - # map kitty_mod+u kitten unicode_input 2536 - # map ctrl+cmd+space kitten unicode_input 2537 - 2538 - #: Edit config file 2539 - 2540 - # map kitty_mod+f2 edit_config_file 2541 - # map cmd+, edit_config_file 2542 - 2543 - #: Open the kitty command shell 2544 - 2545 - # map kitty_mod+escape kitty_shell window 2546 - 2547 - #:: Open the kitty shell in a new window / tab / overlay / os_window 2548 - #:: to control kitty using commands. 2549 - 2550 - #: Increase background opacity 2551 - 2552 - # map kitty_mod+a>m set_background_opacity +0.1 2553 - 2554 - #: Decrease background opacity 2555 - 2556 - # map kitty_mod+a>l set_background_opacity -0.1 2557 - 2558 - #: Make background fully opaque 2559 - 2560 - # map kitty_mod+a>1 set_background_opacity 1 2561 - 2562 - #: Reset background opacity 2563 - 2564 - # map kitty_mod+a>d set_background_opacity default 2565 - 2566 - #: Reset the terminal 2567 - 2568 - # map kitty_mod+delete clear_terminal reset active 2569 - # map opt+cmd+r clear_terminal reset active 2570 - 2571 - #:: You can create shortcuts to clear/reset the terminal. For 2572 - #:: example:: 2573 - 2574 - #:: # Reset the terminal 2575 - #:: map f1 clear_terminal reset active 2576 - #:: # Clear the terminal screen by erasing all contents 2577 - #:: map f1 clear_terminal clear active 2578 - #:: # Clear the terminal scrollback by erasing it 2579 - #:: map f1 clear_terminal scrollback active 2580 - #:: # Scroll the contents of the screen into the scrollback 2581 - #:: map f1 clear_terminal scroll active 2582 - #:: # Clear everything on screen up to the line with the cursor or the start of the current prompt (needs shell integration) 2583 - #:: map f1 clear_terminal to_cursor active 2584 - #:: # Same as above except cleared lines are moved into scrollback 2585 - #:: map f1 clear_terminal to_cursor_scroll active 2586 - 2587 - #:: If you want to operate on all kitty windows instead of just the 2588 - #:: current one, use all instead of active. 2589 - 2590 - #:: Some useful functions that can be defined in the shell rc files 2591 - #:: to perform various kinds of clearing of the current window: 2592 - 2593 - #:: .. code-block:: sh 2594 - 2595 - #:: clear-only-screen() { 2596 - #:: printf "\e[H\e[2J" 2597 - #:: } 2598 - 2599 - #:: clear-screen-and-scrollback() { 2600 - #:: printf "\e[H\e[3J" 2601 - #:: } 2602 - 2603 - #:: clear-screen-saving-contents-in-scrollback() { 2604 - #:: printf "\e[H\e[22J" 2605 - #:: } 2606 - 2607 - #:: For instance, using these escape codes, it is possible to remap 2608 - #:: Ctrl+L to both scroll the current screen contents into the 2609 - #:: scrollback buffer and clear the screen, instead of just clearing 2610 - #:: the screen. For ZSH, in ~/.zshrc, add: 2611 - 2612 - #:: .. code-block:: zsh 2613 - 2614 - #:: ctrl_l() { 2615 - #:: builtin print -rn -- $'\r\e[0J\e[H\e[22J' >"$TTY" 2616 - #:: builtin zle .reset-prompt 2617 - #:: builtin zle -R 2618 - #:: } 2619 - #:: zle -N ctrl_l 2620 - #:: bindkey '^l' ctrl_l 2621 - 2622 - #:: Alternatively, you can just add map ctrl+l clear_terminal 2623 - #:: to_cursor_scroll active to kitty.conf which works with no changes 2624 - #:: to the shell rc files, but only clears up to the prompt, it does 2625 - #:: not clear any text at the prompt itself. 2626 - 2627 - #: Clear to start 2628 - 2629 - # map cmd+k clear_terminal to_cursor active 2630 - 2631 - #: Clear scrollback 2632 - 2633 - # map option+cmd+k clear_terminal scrollback active 2634 - 2635 - #: Clear screen 2636 - 2637 - # map cmd+ctrl+l clear_terminal to_cursor_scroll active 2638 - 2639 - #: Reload kitty.conf 2640 - 2641 - # map kitty_mod+f5 load_config_file 2642 - # map ctrl+cmd+, load_config_file 2643 - 2644 - #:: Reload kitty.conf, applying any changes since the last time it 2645 - #:: was loaded. Note that a handful of options cannot be dynamically 2646 - #:: changed and require a full restart of kitty. Particularly, when 2647 - #:: changing shortcuts for actions located on the macOS global menu 2648 - #:: bar, a full restart is needed. You can also map a keybinding to 2649 - #:: load a different config file, for example:: 2650 - 2651 - #:: map f5 load_config /path/to/alternative/kitty.conf 2652 - 2653 - #:: Note that all options from the original kitty.conf are discarded, 2654 - #:: in other words the new configuration *replace* the old ones. 2655 - 2656 - #: Debug kitty configuration 2657 - 2658 - # map kitty_mod+f6 debug_config 2659 - # map opt+cmd+, debug_config 2660 - 2661 - #:: Show details about exactly what configuration kitty is running 2662 - #:: with and its host environment. Useful for debugging issues. 2663 - 2664 - #: Send arbitrary text on key presses 2665 - 2666 - #:: E.g. map ctrl+shift+alt+h send_text all Hello World 2667 - 2668 - #:: You can tell kitty to send arbitrary (UTF-8) encoded text to the 2669 - #:: client program when pressing specified shortcut keys. For 2670 - #:: example:: 2671 - 2672 - #:: map ctrl+alt+a send_text all Special text 2673 - 2674 - #:: This will send "Special text" when you press the Ctrl+Alt+A key 2675 - #:: combination. The text to be sent decodes ANSI C escapes 2676 - #:: <https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC- 2677 - #:: Quoting.html> so you can use escapes like \e to send control 2678 - #:: codes or \u21fb to send Unicode characters (or you can just input 2679 - #:: the Unicode characters directly as UTF-8 text). You can use 2680 - #:: `kitten show-key` to get the key escape codes you want to 2681 - #:: emulate. 2682 - 2683 - #:: The first argument to send_text is the keyboard modes in which to 2684 - #:: activate the shortcut. The possible values are normal, 2685 - #:: application, kitty or a comma separated combination of them. The 2686 - #:: modes normal and application refer to the DECCKM cursor key mode 2687 - #:: for terminals, and kitty refers to the kitty extended keyboard 2688 - #:: protocol. The special value all means all of them. 2689 - 2690 - #:: Some more examples:: 2691 - 2692 - #:: # Output a word and move the cursor to the start of the line (like typing and pressing Home) 2693 - #:: map ctrl+alt+a send_text normal Word\e[H 2694 - #:: map ctrl+alt+a send_text application Word\eOH 2695 - #:: # Run a command at a shell prompt (like typing the command and pressing Enter) 2696 - #:: map ctrl+alt+a send_text normal,application some command with arguments\r 2697 - 2698 - #: Open kitty Website 2699 - 2700 - # map shift+cmd+/ open_url https://sw.kovidgoyal.net/kitty/ 2701 - 2702 - #: Hide macOS kitty application 2703 - 2704 - # map cmd+h hide_macos_app 2705 - 2706 - #: Hide macOS other applications 2707 - 2708 - # map opt+cmd+h hide_macos_other_apps 2709 - 2710 - #: Minimize macOS window 2711 - 2712 - # map cmd+m minimize_macos_window 2713 - 2714 - #: Quit kitty 2715 - 2716 - # map cmd+q quit 2717 - 2718 - #: }}} 2719 - 2720 - #: }}}
-2720
window_manager/.config/kitty/kitty.conf.bak
··· 1 - # vim:fileencoding=utf-8:foldmethod=marker 2 - 3 - # BEGIN_KITTY_FONTS 4 - font_family family="JetBrainsMono Nerd Font Mono" 5 - bold_font auto 6 - italic_font auto 7 - bold_italic_font auto 8 - # END_KITTY_FONTS 9 - 10 - #: Fonts {{{ 11 - 12 - #: kitty has very powerful font management. You can configure 13 - #: individual font faces and even specify special fonts for particular 14 - #: characters. 15 - 16 - # font_family monospace 17 - # bold_font auto 18 - # italic_font auto 19 - # bold_italic_font auto 20 - 21 - #: You can specify different fonts for the bold/italic/bold-italic 22 - #: variants. The easiest way to select fonts is to run the `kitten 23 - #: choose-fonts` command which will present a nice UI for you to 24 - #: select the fonts you want with previews and support for selecting 25 - #: variable fonts and font features. If you want to learn to select 26 - #: fonts manually, read the font specification syntax 27 - #: <https://sw.kovidgoyal.net/kitty/kittens/choose-fonts/#font-spec- 28 - #: syntax>. 29 - 30 - # font_size 11.0 31 - 32 - #: Font size (in pts). 33 - 34 - # force_ltr no 35 - 36 - #: kitty does not support BIDI (bidirectional text), however, for RTL 37 - #: scripts, words are automatically displayed in RTL. That is to say, 38 - #: in an RTL script, the words "HELLO WORLD" display in kitty as 39 - #: "WORLD HELLO", and if you try to select a substring of an RTL- 40 - #: shaped string, you will get the character that would be there had 41 - #: the string been LTR. For example, assuming the Hebrew word ื™ืจื•ืฉืœื™ื, 42 - #: selecting the character that on the screen appears to be ื actually 43 - #: writes into the selection buffer the character ื™. kitty's default 44 - #: behavior is useful in conjunction with a filter to reverse the word 45 - #: order, however, if you wish to manipulate RTL glyphs, it can be 46 - #: very challenging to work with, so this option is provided to turn 47 - #: it off. Furthermore, this option can be used with the command line 48 - #: program GNU FriBidi <https://github.com/fribidi/fribidi#executable> 49 - #: to get BIDI support, because it will force kitty to always treat 50 - #: the text as LTR, which FriBidi expects for terminals. 51 - 52 - # symbol_map 53 - 54 - #: E.g. symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols 55 - 56 - #: Map the specified Unicode codepoints to a particular font. Useful 57 - #: if you need special rendering for some symbols, such as for 58 - #: Powerline. Avoids the need for patched fonts. Each Unicode code 59 - #: point is specified in the form `U+<code point in hexadecimal>`. You 60 - #: can specify multiple code points, separated by commas and ranges 61 - #: separated by hyphens. This option can be specified multiple times. 62 - #: The syntax is:: 63 - 64 - #: symbol_map codepoints Font Family Name 65 - 66 - # narrow_symbols 67 - 68 - #: E.g. narrow_symbols U+E0A0-U+E0A3,U+E0C0-U+E0C7 1 69 - 70 - #: Usually, for Private Use Unicode characters and some symbol/dingbat 71 - #: characters, if the character is followed by one or more spaces, 72 - #: kitty will use those extra cells to render the character larger, if 73 - #: the character in the font has a wide aspect ratio. Using this 74 - #: option you can force kitty to restrict the specified code points to 75 - #: render in the specified number of cells (defaulting to one cell). 76 - #: This option can be specified multiple times. The syntax is:: 77 - 78 - #: narrow_symbols codepoints [optionally the number of cells] 79 - 80 - # disable_ligatures never 81 - 82 - #: Choose how you want to handle multi-character ligatures. The 83 - #: default is to always render them. You can tell kitty to not render 84 - #: them when the cursor is over them by using cursor to make editing 85 - #: easier, or have kitty never render them at all by using always, if 86 - #: you don't like them. The ligature strategy can be set per-window 87 - #: either using the kitty remote control facility or by defining 88 - #: shortcuts for it in kitty.conf, for example:: 89 - 90 - #: map alt+1 disable_ligatures_in active always 91 - #: map alt+2 disable_ligatures_in all never 92 - #: map alt+3 disable_ligatures_in tab cursor 93 - 94 - #: Note that this refers to programming ligatures, typically 95 - #: implemented using the calt OpenType feature. For disabling general 96 - #: ligatures, use the font_features option. 97 - 98 - # font_features 99 - 100 - #: E.g. font_features none 101 - 102 - #: Choose exactly which OpenType features to enable or disable. Note 103 - #: that for the main fonts, features can be specified when selecting 104 - #: the font using the choose-fonts kitten. This setting is useful for 105 - #: fallback fonts. 106 - 107 - #: Some fonts might have features worthwhile in a terminal. For 108 - #: example, Fira Code includes a discretionary feature, zero, which in 109 - #: that font changes the appearance of the zero (0), to make it more 110 - #: easily distinguishable from ร˜. Fira Code also includes other 111 - #: discretionary features known as Stylistic Sets which have the tags 112 - #: ss01 through ss20. 113 - 114 - #: For the exact syntax to use for individual features, see the 115 - #: HarfBuzz documentation <https://harfbuzz.github.io/harfbuzz-hb- 116 - #: common.html#hb-feature-from-string>. 117 - 118 - #: Note that this code is indexed by PostScript name, and not the font 119 - #: family. This allows you to define very precise feature settings; 120 - #: e.g. you can disable a feature in the italic font but not in the 121 - #: regular font. 122 - 123 - #: On Linux, font features are first read from the FontConfig database 124 - #: and then this option is applied, so they can be configured in a 125 - #: single, central place. 126 - 127 - #: To get the PostScript name for a font, use the `fc-scan file.ttf` 128 - #: command on Linux or the `Font Book tool on macOS 129 - #: <https://apple.stackexchange.com/questions/79875/how-can-i-get-the- 130 - #: postscript-name-of-a-ttf-font-installed-in-os-x>`__. 131 - 132 - #: Enable alternate zero and oldstyle numerals:: 133 - 134 - #: font_features FiraCode-Retina +zero +onum 135 - 136 - #: Enable only alternate zero in the bold font:: 137 - 138 - #: font_features FiraCode-Bold +zero 139 - 140 - #: Disable the normal ligatures, but keep the calt feature which (in 141 - #: this font) breaks up monotony:: 142 - 143 - #: font_features TT2020StyleB-Regular -liga +calt 144 - 145 - #: In conjunction with force_ltr, you may want to disable Arabic 146 - #: shaping entirely, and only look at their isolated forms if they 147 - #: show up in a document. You can do this with e.g.:: 148 - 149 - #: font_features UnifontMedium +isol -medi -fina -init 150 - 151 - # modify_font 152 - 153 - #: Modify font characteristics such as the position or thickness of 154 - #: the underline and strikethrough. The modifications can have the 155 - #: suffix px for pixels or % for percentage of original value. No 156 - #: suffix means use pts. For example:: 157 - 158 - #: modify_font underline_position -2 159 - #: modify_font underline_thickness 150% 160 - #: modify_font strikethrough_position 2px 161 - 162 - #: Additionally, you can modify the size of the cell in which each 163 - #: font glyph is rendered and the baseline at which the glyph is 164 - #: placed in the cell. For example:: 165 - 166 - #: modify_font cell_width 80% 167 - #: modify_font cell_height -2px 168 - #: modify_font baseline 3 169 - 170 - #: Note that modifying the baseline will automatically adjust the 171 - #: underline and strikethrough positions by the same amount. 172 - #: Increasing the baseline raises glyphs inside the cell and 173 - #: decreasing it lowers them. Decreasing the cell size might cause 174 - #: rendering artifacts, so use with care. 175 - 176 - # box_drawing_scale 0.001, 1, 1.5, 2 177 - 178 - #: The sizes of the lines used for the box drawing Unicode characters. 179 - #: These values are in pts. They will be scaled by the monitor DPI to 180 - #: arrive at a pixel value. There must be four values corresponding to 181 - #: thin, normal, thick, and very thick lines. 182 - 183 - # undercurl_style thin-sparse 184 - 185 - #: The style with which undercurls are rendered. This option takes the 186 - #: form (thin|thick)-(sparse|dense). Thin and thick control the 187 - #: thickness of the undercurl. Sparse and dense control how often the 188 - #: curl oscillates. With sparse the curl will peak once per character, 189 - #: with dense twice. Changing this option dynamically via reloading 190 - #: the config or remote control is undefined. 191 - 192 - # underline_exclusion 1 193 - 194 - #: By default kitty renders gaps in underlines when they overlap with 195 - #: descenders (the parts of letters below the baseline, such as for y, 196 - #: q, p etc.). This option controls the thickness of the gaps. It can 197 - #: be either a unitless number in which case it is a fraction of the 198 - #: underline thickness as specified in the font or it can have a 199 - #: suffix of px for pixels or pt for points. Set to zero to disable 200 - #: the gaps. Changing this option dynamically via reloading the config 201 - #: or remote control is undefined. 202 - 203 - # text_composition_strategy platform 204 - 205 - #: Control how kitty composites text glyphs onto the background color. 206 - #: The default value of platform tries for text rendering as close to 207 - #: "native" for the platform kitty is running on as possible. 208 - 209 - #: A value of legacy uses the old (pre kitty 0.28) strategy for how 210 - #: glyphs are composited. This will make dark text on light 211 - #: backgrounds look thicker and light text on dark backgrounds 212 - #: thinner. It might also make some text appear like the strokes are 213 - #: uneven. 214 - 215 - #: You can fine tune the actual contrast curve used for glyph 216 - #: composition by specifying up to two space-separated numbers for 217 - #: this setting. 218 - 219 - #: The first number is the gamma adjustment, which controls the 220 - #: thickness of dark text on light backgrounds. Increasing the value 221 - #: will make text appear thicker. The default value for this is 1.0 on 222 - #: Linux and 1.7 on macOS. Valid values are 0.01 and above. The result 223 - #: is scaled based on the luminance difference between the background 224 - #: and the foreground. Dark text on light backgrounds receives the 225 - #: full impact of the curve while light text on dark backgrounds is 226 - #: affected very little. 227 - 228 - #: The second number is an additional multiplicative contrast. It is 229 - #: percentage ranging from 0 to 100. The default value is 0 on Linux 230 - #: and 30 on macOS. 231 - 232 - #: If you wish to achieve similar looking thickness in light and dark 233 - #: themes, a good way to experiment is start by setting the value to 234 - #: 1.0 0 and use a dark theme. Then adjust the second parameter until 235 - #: it looks good. Then switch to a light theme and adjust the first 236 - #: parameter until the perceived thickness matches the dark theme. 237 - 238 - # text_fg_override_threshold 0 239 - 240 - #: A setting to prevent low contrast between foreground and background 241 - #: colors. Useful when working with applications that use colors that 242 - #: do not contrast well with your preferred color scheme. The default 243 - #: value is 0, which means no color overriding is performed. There are 244 - #: two modes of operation: 245 - 246 - #: A value with the suffix ratio represents the minimum accepted 247 - #: contrast ratio between the foreground and background color. 248 - #: Possible values range from 0.0 ratio to 21.0 ratio. For example, to 249 - #: meet WCAG level AA 250 - #: <https://en.wikipedia.org/wiki/Web_Content_Accessibility_Guidelines> 251 - #: a value of 4.5 ratio can be provided. The algorithm is implemented 252 - #: using HSLuv <https://www.hsluv.org/> which enables it to change the 253 - #: perceived lightness of a color just as much as needed without 254 - #: really changing its hue and saturation. 255 - 256 - #: A value with the suffix % represents the minimum accepted 257 - #: difference in luminance between the foreground and background 258 - #: color, below which kitty will override the foreground color. It is 259 - #: percentage ranging from 0 % to 100 %. If the difference in 260 - #: luminance of the foreground and background is below this threshold, 261 - #: the foreground color will be set to white if the background is dark 262 - #: or black if the background is light. 263 - 264 - #: WARNING: Some programs use characters (such as block characters) 265 - #: for graphics display and may expect to be able to set the 266 - #: foreground and background to the same color (or similar colors). If 267 - #: you see unexpected stripes, dots, lines, incorrect color, no color 268 - #: where you expect color, or any kind of graphic display problem try 269 - #: setting text_fg_override_threshold to 0 to see if this is the cause 270 - #: of the problem or consider using the ratio mode of operation 271 - #: described above instead of the % mode of operation. 272 - 273 - #: }}} 274 - 275 - #: Text cursor customization {{{ 276 - 277 - # cursor #cccccc 278 - 279 - #: Default text cursor color. If set to the special value none the 280 - #: cursor will be rendered with a "reverse video" effect. Its color 281 - #: will be the color of the text in the cell it is over and the text 282 - #: will be rendered with the background color of the cell. Note that 283 - #: if the program running in the terminal sets a cursor color, this 284 - #: takes precedence. Also, the cursor colors are modified if the cell 285 - #: background and foreground colors have very low contrast. Note that 286 - #: some themes set this value, so if you want to override it, place 287 - #: your value after the lines where the theme file is included. 288 - 289 - # cursor_text_color #111111 290 - 291 - #: The color of text under the cursor. If you want it rendered with 292 - #: the background color of the cell underneath instead, use the 293 - #: special keyword: `background`. Note that if cursor is set to none 294 - #: then this option is ignored. Note that some themes set this value, 295 - #: so if you want to override it, place your value after the lines 296 - #: where the theme file is included. 297 - 298 - # cursor_shape block 299 - 300 - #: The cursor shape can be one of block, beam, underline. Note that 301 - #: when reloading the config this will be changed only if the cursor 302 - #: shape has not been set by the program running in the terminal. This 303 - #: sets the default cursor shape, applications running in the terminal 304 - #: can override it. In particular, shell integration 305 - #: <https://sw.kovidgoyal.net/kitty/shell-integration/> in kitty sets 306 - #: the cursor shape to beam at shell prompts. You can avoid this by 307 - #: setting shell_integration to no-cursor. 308 - 309 - # cursor_shape_unfocused hollow 310 - 311 - #: Defines the text cursor shape when the OS window is not focused. 312 - #: The unfocused cursor shape can be one of block, beam, underline, 313 - #: hollow and unchanged (leave the cursor shape as it is). 314 - 315 - # cursor_beam_thickness 1.5 316 - 317 - #: The thickness of the beam cursor (in pts). 318 - 319 - # cursor_underline_thickness 2.0 320 - 321 - #: The thickness of the underline cursor (in pts). 322 - 323 - # cursor_blink_interval -1 324 - 325 - #: The interval to blink the cursor (in seconds). Set to zero to 326 - #: disable blinking. Negative values mean use system default. Note 327 - #: that the minimum interval will be limited to repaint_delay. You can 328 - #: also animate the cursor blink by specifying an easing function. For 329 - #: example, setting this to option to 0.5 ease-in-out will cause the 330 - #: cursor blink to be animated over a second, in the first half of the 331 - #: second it will go from opaque to transparent and then back again 332 - #: over the next half. You can specify different easing functions for 333 - #: the two halves, for example: -1 linear ease-out. kitty supports all 334 - #: the CSS easing functions <https://developer.mozilla.org/en- 335 - #: US/docs/Web/CSS/easing-function>. Note that turning on animations 336 - #: uses extra power as it means the screen is redrawn multiple times 337 - #: per blink interval. See also, cursor_stop_blinking_after. 338 - 339 - # cursor_stop_blinking_after 15.0 340 - 341 - #: Stop blinking cursor after the specified number of seconds of 342 - #: keyboard inactivity. Set to zero to never stop blinking. 343 - 344 - # cursor_trail 0 345 - 346 - #: Set this to a value larger than zero to enable a "cursor trail" 347 - #: animation. This is an animation that shows a "trail" following the 348 - #: movement of the text cursor. It makes it easy to follow large 349 - #: cursor jumps and makes for a cool visual effect of the cursor 350 - #: zooming around the screen. The actual value of this option controls 351 - #: when the animation is triggered. It is a number of milliseconds. 352 - #: The trail animation only follows cursors that have stayed in their 353 - #: position for longer than the specified number of milliseconds. This 354 - #: prevents trails from appearing for cursors that rapidly change 355 - #: their positions during UI updates in complex applications. See 356 - #: cursor_trail_decay to control the animation speed and 357 - #: cursor_trail_start_threshold to control when a cursor trail is 358 - #: started. 359 - 360 - # cursor_trail_decay 0.1 0.4 361 - 362 - #: Controls the decay times for the cursor trail effect when the 363 - #: cursor_trail is enabled. This option accepts two positive float 364 - #: values specifying the fastest and slowest decay times in seconds. 365 - #: The first value corresponds to the fastest decay time (minimum), 366 - #: and the second value corresponds to the slowest decay time 367 - #: (maximum). The second value must be equal to or greater than the 368 - #: first value. Smaller values result in a faster decay of the cursor 369 - #: trail. Adjust these values to control how quickly the cursor trail 370 - #: fades away. 371 - 372 - # cursor_trail_start_threshold 2 373 - 374 - #: Set the distance threshold for starting the cursor trail. This 375 - #: option accepts a positive integer value that represents the minimum 376 - #: number of cells the cursor must move before the trail is started. 377 - #: When the cursor moves less than this threshold, the trail is 378 - #: skipped, reducing unnecessary cursor trail animation. 379 - 380 - #: }}} 381 - 382 - #: Scrollback {{{ 383 - 384 - # scrollback_lines 2000 385 - 386 - #: Number of lines of history to keep in memory for scrolling back. 387 - #: Memory is allocated on demand. Negative numbers are (effectively) 388 - #: infinite scrollback. Note that using very large scrollback is not 389 - #: recommended as it can slow down performance of the terminal and 390 - #: also use large amounts of RAM. Instead, consider using 391 - #: scrollback_pager_history_size. Note that on config reload if this 392 - #: is changed it will only affect newly created windows, not existing 393 - #: ones. 394 - 395 - # scrollback_indicator_opacity 1.0 396 - 397 - #: The opacity of the scrollback indicator which is a small colored 398 - #: rectangle that moves along the right hand side of the window as you 399 - #: scroll, indicating what fraction you have scrolled. The default is 400 - #: one which means fully opaque, aka visible. Set to a value between 401 - #: zero and one to make the indicator less visible. 402 - 403 - # scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER 404 - 405 - #: Program with which to view scrollback in a new window. The 406 - #: scrollback buffer is passed as STDIN to this program. If you change 407 - #: it, make sure the program you use can handle ANSI escape sequences 408 - #: for colors and text formatting. INPUT_LINE_NUMBER in the command 409 - #: line above will be replaced by an integer representing which line 410 - #: should be at the top of the screen. Similarly CURSOR_LINE and 411 - #: CURSOR_COLUMN will be replaced by the current cursor position or 412 - #: set to 0 if there is no cursor, for example, when showing the last 413 - #: command output. 414 - 415 - # scrollback_pager_history_size 0 416 - 417 - #: Separate scrollback history size (in MB), used only for browsing 418 - #: the scrollback buffer with pager. This separate buffer is not 419 - #: available for interactive scrolling but will be piped to the pager 420 - #: program when viewing scrollback buffer in a separate window. The 421 - #: current implementation stores the data in UTF-8, so approximately 422 - #: 10000 lines per megabyte at 100 chars per line, for pure ASCII, 423 - #: unformatted text. A value of zero or less disables this feature. 424 - #: The maximum allowed size is 4GB. Note that on config reload if this 425 - #: is changed it will only affect newly created windows, not existing 426 - #: ones. 427 - 428 - # scrollback_fill_enlarged_window no 429 - 430 - #: Fill new space with lines from the scrollback buffer after 431 - #: enlarging a window. 432 - 433 - # wheel_scroll_multiplier 5.0 434 - 435 - #: Multiplier for the number of lines scrolled by the mouse wheel. 436 - #: Note that this is only used for low precision scrolling devices, 437 - #: not for high precision scrolling devices on platforms such as macOS 438 - #: and Wayland. Use negative numbers to change scroll direction. See 439 - #: also wheel_scroll_min_lines. 440 - 441 - # wheel_scroll_min_lines 1 442 - 443 - #: The minimum number of lines scrolled by the mouse wheel. The scroll 444 - #: multiplier wheel_scroll_multiplier only takes effect after it 445 - #: reaches this number. Note that this is only used for low precision 446 - #: scrolling devices like wheel mice that scroll by very small amounts 447 - #: when using the wheel. With a negative number, the minimum number of 448 - #: lines will always be added. 449 - 450 - # touch_scroll_multiplier 1.0 451 - 452 - #: Multiplier for the number of lines scrolled by a touchpad. Note 453 - #: that this is only used for high precision scrolling devices on 454 - #: platforms such as macOS and Wayland. Use negative numbers to change 455 - #: scroll direction. 456 - 457 - #: }}} 458 - 459 - #: Mouse {{{ 460 - 461 - # mouse_hide_wait 3.0 462 - 463 - #: Hide mouse cursor after the specified number of seconds of the 464 - #: mouse not being used. Set to zero to disable mouse cursor hiding. 465 - #: Set to a negative value to hide the mouse cursor immediately when 466 - #: typing text. Disabled by default on macOS as getting it to work 467 - #: robustly with the ever-changing sea of bugs that is Cocoa is too 468 - #: much effort. 469 - 470 - # url_color #0087bd 471 - # url_style curly 472 - 473 - #: The color and style for highlighting URLs on mouse-over. url_style 474 - #: can be one of: none, straight, double, curly, dotted, dashed. 475 - 476 - # open_url_with default 477 - 478 - #: The program to open clicked URLs. The special value default will 479 - #: first look for any URL handlers defined via the open_actions 480 - #: <https://sw.kovidgoyal.net/kitty/open_actions/> facility and if non 481 - #: are found, it will use the Operating System's default URL handler 482 - #: (open on macOS and xdg-open on Linux). 483 - 484 - # url_prefixes file ftp ftps gemini git gopher http https irc ircs kitty mailto news sftp ssh 485 - 486 - #: The set of URL prefixes to look for when detecting a URL under the 487 - #: mouse cursor. 488 - 489 - # detect_urls yes 490 - 491 - #: Detect URLs under the mouse. Detected URLs are highlighted with an 492 - #: underline and the mouse cursor becomes a hand over them. Even if 493 - #: this option is disabled, URLs are still clickable. See also the 494 - #: underline_hyperlinks option to control how hyperlinks (as opposed 495 - #: to plain text URLs) are displayed. 496 - 497 - # url_excluded_characters 498 - 499 - #: Additional characters to be disallowed from URLs, when detecting 500 - #: URLs under the mouse cursor. By default, all characters that are 501 - #: legal in URLs are allowed. Additionally, newlines are allowed (but 502 - #: stripped). This is to accommodate programs such as mutt that add 503 - #: hard line breaks even for continued lines. \n can be added to this 504 - #: option to disable this behavior. Special characters can be 505 - #: specified using backslash escapes, to specify a backslash use a 506 - #: double backslash. 507 - 508 - # show_hyperlink_targets no 509 - 510 - #: When the mouse hovers over a terminal hyperlink, show the actual 511 - #: URL that will be activated when the hyperlink is clicked. 512 - 513 - # underline_hyperlinks hover 514 - 515 - #: Control how hyperlinks are underlined. They can either be 516 - #: underlined on mouse hover, always (i.e. permanently underlined) or 517 - #: never which means that kitty will not apply any underline styling 518 - #: to hyperlinks. Note that the value of always only applies to real 519 - #: (OSC 8) hyperlinks not text that is detected to be a URL on mouse 520 - #: hover. Uses the url_style and url_color settings for the underline 521 - #: style. Note that reloading the config and changing this value 522 - #: to/from always will only affect text subsequently received by 523 - #: kitty. 524 - 525 - # copy_on_select no 526 - 527 - #: Copy to clipboard or a private buffer on select. With this set to 528 - #: clipboard, selecting text with the mouse will cause the text to be 529 - #: copied to clipboard. Useful on platforms such as macOS that do not 530 - #: have the concept of primary selection. You can instead specify a 531 - #: name such as a1 to copy to a private kitty buffer. Map a shortcut 532 - #: with the paste_from_buffer action to paste from this private 533 - #: buffer. For example:: 534 - 535 - #: copy_on_select a1 536 - #: map shift+cmd+v paste_from_buffer a1 537 - 538 - #: Note that copying to the clipboard is a security risk, as all 539 - #: programs, including websites open in your browser can read the 540 - #: contents of the system clipboard. 541 - 542 - # clear_selection_on_clipboard_loss no 543 - 544 - #: When the contents of the clipboard no longer reflect the current 545 - #: selection, clear it. This is primarily useful on platforms such as 546 - #: Linux where selecting text automatically copies it to a special 547 - #: "primary selection" clipboard or if you have copy_on_select set to 548 - #: clipboard. 549 - 550 - #: Note that on macOS the system does not provide notifications when 551 - #: the clipboard owner is changed, so there, copying to clipboard in a 552 - #: non-kitty application will not clear selections even if 553 - #: copy_on_select is enabled. 554 - 555 - # paste_actions quote-urls-at-prompt,confirm 556 - 557 - #: A comma separated list of actions to take when pasting text into 558 - #: the terminal. The supported paste actions are: 559 - 560 - #: quote-urls-at-prompt: 561 - #: If the text being pasted is a URL and the cursor is at a shell prompt, 562 - #: automatically quote the URL (needs shell_integration). 563 - #: replace-dangerous-control-codes 564 - #: Replace dangerous control codes from pasted text, without confirmation. 565 - #: replace-newline 566 - #: Replace the newline character from pasted text, without confirmation. 567 - #: confirm: 568 - #: Confirm the paste if the text to be pasted contains any terminal control codes 569 - #: as this can be dangerous, leading to code execution if the shell/program running 570 - #: in the terminal does not properly handle these. 571 - #: confirm-if-large 572 - #: Confirm the paste if it is very large (larger than 16KB) as pasting 573 - #: large amounts of text into shells can be very slow. 574 - #: filter: 575 - #: Run the filter_paste() function from the file paste-actions.py in 576 - #: the kitty config directory on the pasted text. The text returned by the 577 - #: function will be actually pasted. 578 - #: no-op: 579 - #: Has no effect. 580 - 581 - # strip_trailing_spaces never 582 - 583 - #: Remove spaces at the end of lines when copying to clipboard. A 584 - #: value of smart will do it when using normal selections, but not 585 - #: rectangle selections. A value of always will always do it. 586 - 587 - # select_by_word_characters @-./_~?&=%+# 588 - 589 - #: Characters considered part of a word when double clicking. In 590 - #: addition to these characters any character that is marked as an 591 - #: alphanumeric character in the Unicode database will be matched. 592 - 593 - # select_by_word_characters_forward 594 - 595 - #: Characters considered part of a word when extending the selection 596 - #: forward on double clicking. In addition to these characters any 597 - #: character that is marked as an alphanumeric character in the 598 - #: Unicode database will be matched. 599 - 600 - #: If empty (default) select_by_word_characters will be used for both 601 - #: directions. 602 - 603 - # click_interval -1.0 604 - 605 - #: The interval between successive clicks to detect double/triple 606 - #: clicks (in seconds). Negative numbers will use the system default 607 - #: instead, if available, or fallback to 0.5. 608 - 609 - # focus_follows_mouse no 610 - 611 - #: Set the active window to the window under the mouse when moving the 612 - #: mouse around. On macOS, this will also cause the OS Window under 613 - #: the mouse to be focused automatically when the mouse enters it. 614 - 615 - # pointer_shape_when_grabbed arrow 616 - 617 - #: The shape of the mouse pointer when the program running in the 618 - #: terminal grabs the mouse. 619 - 620 - # default_pointer_shape beam 621 - 622 - #: The default shape of the mouse pointer. 623 - 624 - # pointer_shape_when_dragging beam crosshair 625 - 626 - #: The default shape of the mouse pointer when dragging across text. 627 - #: The optional second value sets the shape when dragging in 628 - #: rectangular selection mode. 629 - 630 - #: Mouse actions {{{ 631 - 632 - #: Mouse buttons can be mapped to perform arbitrary actions. The 633 - #: syntax is: 634 - 635 - #: .. code-block:: none 636 - 637 - #: mouse_map button-name event-type modes action 638 - 639 - #: Where button-name is one of left, middle, right, b1 ... b8 with 640 - #: added keyboard modifiers. For example: ctrl+shift+left refers to 641 - #: holding the Ctrl+Shift keys while clicking with the left mouse 642 - #: button. The value b1 ... b8 can be used to refer to up to eight 643 - #: buttons on a mouse. 644 - 645 - #: event-type is one of press, release, doublepress, triplepress, 646 - #: click, doubleclick. modes indicates whether the action is performed 647 - #: when the mouse is grabbed by the program running in the terminal, 648 - #: or not. The values are grabbed or ungrabbed or a comma separated 649 - #: combination of them. grabbed refers to when the program running in 650 - #: the terminal has requested mouse events. Note that the click and 651 - #: double click events have a delay of click_interval to disambiguate 652 - #: from double and triple presses. 653 - 654 - #: You can run kitty with the kitty --debug-input command line option 655 - #: to see mouse events. See the builtin actions below to get a sense 656 - #: of what is possible. 657 - 658 - #: If you want to unmap a button, map it to nothing. For example, to 659 - #: disable opening of URLs with a plain click:: 660 - 661 - #: mouse_map left click ungrabbed 662 - 663 - #: See all the mappable actions including mouse actions here 664 - #: <https://sw.kovidgoyal.net/kitty/actions/>. 665 - 666 - #: .. note:: 667 - #: Once a selection is started, releasing the button that started it will 668 - #: automatically end it and no release event will be dispatched. 669 - 670 - # clear_all_mouse_actions no 671 - 672 - #: Remove all mouse action definitions up to this point. Useful, for 673 - #: instance, to remove the default mouse actions. 674 - 675 - #: Click the link under the mouse or move the cursor 676 - 677 - # mouse_map left click ungrabbed mouse_handle_click selection link prompt 678 - 679 - #:: First check for a selection and if one exists do nothing. Then 680 - #:: check for a link under the mouse cursor and if one exists, click 681 - #:: it. Finally check if the click happened at the current shell 682 - #:: prompt and if so, move the cursor to the click location. Note 683 - #:: that this requires shell integration 684 - #:: <https://sw.kovidgoyal.net/kitty/shell-integration/> to work. 685 - 686 - #: Click the link under the mouse or move the cursor even when grabbed 687 - 688 - # mouse_map shift+left click grabbed,ungrabbed mouse_handle_click selection link prompt 689 - 690 - #:: Same as above, except that the action is performed even when the 691 - #:: mouse is grabbed by the program running in the terminal. 692 - 693 - #: Click the link under the mouse cursor 694 - 695 - # mouse_map ctrl+shift+left release grabbed,ungrabbed mouse_handle_click link 696 - 697 - #:: Variant with Ctrl+Shift is present because the simple click based 698 - #:: version has an unavoidable delay of click_interval, to 699 - #:: disambiguate clicks from double clicks. 700 - 701 - #: Discard press event for link click 702 - 703 - # mouse_map ctrl+shift+left press grabbed discard_event 704 - 705 - #:: Prevent this press event from being sent to the program that has 706 - #:: grabbed the mouse, as the corresponding release event is used to 707 - #:: open a URL. 708 - 709 - #: Paste from the primary selection 710 - 711 - # mouse_map middle release ungrabbed paste_from_selection 712 - 713 - #: Start selecting text 714 - 715 - # mouse_map left press ungrabbed mouse_selection normal 716 - 717 - #: Start selecting text in a rectangle 718 - 719 - # mouse_map ctrl+alt+left press ungrabbed mouse_selection rectangle 720 - 721 - #: Select a word 722 - 723 - # mouse_map left doublepress ungrabbed mouse_selection word 724 - 725 - #: Select a line 726 - 727 - # mouse_map left triplepress ungrabbed mouse_selection line 728 - 729 - #: Select line from point 730 - 731 - # mouse_map ctrl+alt+left triplepress ungrabbed mouse_selection line_from_point 732 - 733 - #:: Select from the clicked point to the end of the line. If you 734 - #:: would like to select the word at the point and then extend to the 735 - #:: rest of the line, change `line_from_point` to 736 - #:: `word_and_line_from_point`. 737 - 738 - #: Extend the current selection 739 - 740 - # mouse_map right press ungrabbed mouse_selection extend 741 - 742 - #:: If you want only the end of the selection to be moved instead of 743 - #:: the nearest boundary, use move-end instead of extend. 744 - 745 - #: Paste from the primary selection even when grabbed 746 - 747 - # mouse_map shift+middle release ungrabbed,grabbed paste_selection 748 - # mouse_map shift+middle press grabbed discard_event 749 - 750 - #: Start selecting text even when grabbed 751 - 752 - # mouse_map shift+left press ungrabbed,grabbed mouse_selection normal 753 - 754 - #: Start selecting text in a rectangle even when grabbed 755 - 756 - # mouse_map ctrl+shift+alt+left press ungrabbed,grabbed mouse_selection rectangle 757 - 758 - #: Select a word even when grabbed 759 - 760 - # mouse_map shift+left doublepress ungrabbed,grabbed mouse_selection word 761 - 762 - #: Select a line even when grabbed 763 - 764 - # mouse_map shift+left triplepress ungrabbed,grabbed mouse_selection line 765 - 766 - #: Select line from point even when grabbed 767 - 768 - # mouse_map ctrl+shift+alt+left triplepress ungrabbed,grabbed mouse_selection line_from_point 769 - 770 - #:: Select from the clicked point to the end of the line even when 771 - #:: grabbed. If you would like to select the word at the point and 772 - #:: then extend to the rest of the line, change `line_from_point` to 773 - #:: `word_and_line_from_point`. 774 - 775 - #: Extend the current selection even when grabbed 776 - 777 - # mouse_map shift+right press ungrabbed,grabbed mouse_selection extend 778 - 779 - #: Show clicked command output in pager 780 - 781 - # mouse_map ctrl+shift+right press ungrabbed mouse_show_command_output 782 - 783 - #:: Requires shell integration 784 - #:: <https://sw.kovidgoyal.net/kitty/shell-integration/> to work. 785 - 786 - #: }}} 787 - 788 - #: }}} 789 - 790 - #: Performance tuning {{{ 791 - 792 - # repaint_delay 10 793 - 794 - #: Delay between screen updates (in milliseconds). Decreasing it, 795 - #: increases frames-per-second (FPS) at the cost of more CPU usage. 796 - #: The default value yields ~100 FPS which is more than sufficient for 797 - #: most uses. Note that to actually achieve 100 FPS, you have to 798 - #: either set sync_to_monitor to no or use a monitor with a high 799 - #: refresh rate. Also, to minimize latency when there is pending input 800 - #: to be processed, this option is ignored. 801 - 802 - # input_delay 3 803 - 804 - #: Delay before input from the program running in the terminal is 805 - #: processed (in milliseconds). Note that decreasing it will increase 806 - #: responsiveness, but also increase CPU usage and might cause flicker 807 - #: in full screen programs that redraw the entire screen on each loop, 808 - #: because kitty is so fast that partial screen updates will be drawn. 809 - #: This setting is ignored when the input buffer is almost full. 810 - 811 - # sync_to_monitor yes 812 - 813 - #: Sync screen updates to the refresh rate of the monitor. This 814 - #: prevents screen tearing 815 - #: <https://en.wikipedia.org/wiki/Screen_tearing> when scrolling. 816 - #: However, it limits the rendering speed to the refresh rate of your 817 - #: monitor. With a very high speed mouse/high keyboard repeat rate, 818 - #: you may notice some slight input latency. If so, set this to no. 819 - 820 - #: }}} 821 - 822 - #: Terminal bell {{{ 823 - 824 - # enable_audio_bell yes 825 - 826 - #: The audio bell. Useful to disable it in environments that require 827 - #: silence. 828 - 829 - # visual_bell_duration 0.0 830 - 831 - #: The visual bell duration (in seconds). Flash the screen when a bell 832 - #: occurs for the specified number of seconds. Set to zero to disable. 833 - #: The flash is animated, fading in and out over the specified 834 - #: duration. The easing function used for the fading can be 835 - #: controlled. For example, 2.0 linear will casuse the flash to fade 836 - #: in and out linearly. The default if unspecified is to use ease-in- 837 - #: out which fades slowly at the start, middle and end. You can 838 - #: specify different easing functions for the fade-in and fade-out 839 - #: parts, like this: 2.0 ease-in linear. kitty supports all the CSS 840 - #: easing functions <https://developer.mozilla.org/en- 841 - #: US/docs/Web/CSS/easing-function>. 842 - 843 - # visual_bell_color none 844 - 845 - #: The color used by visual bell. Set to none will fall back to 846 - #: selection background color. If you feel that the visual bell is too 847 - #: bright, you can set it to a darker color. 848 - 849 - # window_alert_on_bell yes 850 - 851 - #: Request window attention on bell. Makes the dock icon bounce on 852 - #: macOS or the taskbar flash on Linux. 853 - 854 - # bell_on_tab "๐Ÿ”” " 855 - 856 - #: Some text or a Unicode symbol to show on the tab if a window in the 857 - #: tab that does not have focus has a bell. If you want to use leading 858 - #: or trailing spaces, surround the text with quotes. See 859 - #: tab_title_template for how this is rendered. 860 - 861 - #: For backwards compatibility, values of yes, y and true are 862 - #: converted to the default bell symbol and no, n, false and none are 863 - #: converted to the empty string. 864 - 865 - # command_on_bell none 866 - 867 - #: Program to run when a bell occurs. The environment variable 868 - #: KITTY_CHILD_CMDLINE can be used to get the program running in the 869 - #: window in which the bell occurred. 870 - 871 - # bell_path none 872 - 873 - #: Path to a sound file to play as the bell sound. If set to none, the 874 - #: system default bell sound is used. Must be in a format supported by 875 - #: the operating systems sound API, such as WAV or OGA on Linux 876 - #: (libcanberra) or AIFF, MP3 or WAV on macOS (NSSound). 877 - 878 - # linux_bell_theme __custom 879 - 880 - #: The XDG Sound Theme kitty will use to play the bell sound. Defaults 881 - #: to the custom theme name specified in the XDG Sound theme 882 - #: specification <https://specifications.freedesktop.org/sound-theme- 883 - #: spec/latest/sound_lookup.html>, falling back to the default 884 - #: freedesktop theme if it does not exist. To change your sound theme 885 - #: desktop wide, create 886 - #: :file:~/.local/share/sounds/__custom/index.theme` with the 887 - #: contents: 888 - 889 - #: [Sound Theme] 890 - 891 - #: Inherits=name-of-the-sound-theme-you-want-to-use 892 - 893 - #: Replace name-of-the-sound-theme-you-want-to-use with the actual 894 - #: theme name. Now all compliant applications should use sounds from 895 - #: this theme. 896 - 897 - #: }}} 898 - 899 - #: Window layout {{{ 900 - 901 - # remember_window_size yes 902 - # initial_window_width 640 903 - # initial_window_height 400 904 - 905 - #: If enabled, the OS Window size will be remembered so that new 906 - #: instances of kitty will have the same size as the previous 907 - #: instance. If disabled, the OS Window will initially have size 908 - #: configured by initial_window_width/height, in pixels. You can use a 909 - #: suffix of "c" on the width/height values to have them interpreted 910 - #: as number of cells instead of pixels. 911 - 912 - # enabled_layouts * 913 - 914 - #: The enabled window layouts. A comma separated list of layout names. 915 - #: The special value all means all layouts. The first listed layout 916 - #: will be used as the startup layout. Default configuration is all 917 - #: layouts in alphabetical order. For a list of available layouts, see 918 - #: the layouts <https://sw.kovidgoyal.net/kitty/overview/#layouts>. 919 - 920 - # window_resize_step_cells 2 921 - # window_resize_step_lines 2 922 - 923 - #: The step size (in units of cell width/cell height) to use when 924 - #: resizing kitty windows in a layout with the shortcut 925 - #: start_resizing_window. The cells value is used for horizontal 926 - #: resizing, and the lines value is used for vertical resizing. 927 - 928 - # window_border_width 0.5pt 929 - 930 - #: The width of window borders. Can be either in pixels (px) or pts 931 - #: (pt). Values in pts will be rounded to the nearest number of pixels 932 - #: based on screen resolution. If not specified, the unit is assumed 933 - #: to be pts. Note that borders are displayed only when more than one 934 - #: window is visible. They are meant to separate multiple windows. 935 - 936 - # draw_minimal_borders yes 937 - 938 - #: Draw only the minimum borders needed. This means that only the 939 - #: borders that separate the window from a neighbor are drawn. Note 940 - #: that setting a non-zero window_margin_width overrides this and 941 - #: causes all borders to be drawn. 942 - 943 - # window_margin_width 0 944 - 945 - #: The window margin (in pts) (blank area outside the border). A 946 - #: single value sets all four sides. Two values set the vertical and 947 - #: horizontal sides. Three values set top, horizontal and bottom. Four 948 - #: values set top, right, bottom and left. 949 - 950 - # single_window_margin_width -1 951 - 952 - #: The window margin to use when only a single window is visible (in 953 - #: pts). Negative values will cause the value of window_margin_width 954 - #: to be used instead. A single value sets all four sides. Two values 955 - #: set the vertical and horizontal sides. Three values set top, 956 - #: horizontal and bottom. Four values set top, right, bottom and left. 957 - 958 - # window_padding_width 0 959 - 960 - #: The window padding (in pts) (blank area between the text and the 961 - #: window border). A single value sets all four sides. Two values set 962 - #: the vertical and horizontal sides. Three values set top, horizontal 963 - #: and bottom. Four values set top, right, bottom and left. 964 - 965 - # single_window_padding_width -1 966 - 967 - #: The window padding to use when only a single window is visible (in 968 - #: pts). Negative values will cause the value of window_padding_width 969 - #: to be used instead. A single value sets all four sides. Two values 970 - #: set the vertical and horizontal sides. Three values set top, 971 - #: horizontal and bottom. Four values set top, right, bottom and left. 972 - 973 - # placement_strategy center 974 - 975 - #: When the window size is not an exact multiple of the cell size, the 976 - #: cell area of the terminal window will have some extra padding on 977 - #: the sides. You can control how that padding is distributed with 978 - #: this option. Using a value of center means the cell area will be 979 - #: placed centrally. A value of top-left means the padding will be 980 - #: only at the bottom and right edges. The value can be one of: top- 981 - #: left, top, top-right, left, center, right, bottom-left, bottom, 982 - #: bottom-right. 983 - 984 - # active_border_color #00ff00 985 - 986 - #: The color for the border of the active window. Set this to none to 987 - #: not draw borders around the active window. 988 - 989 - # inactive_border_color #cccccc 990 - 991 - #: The color for the border of inactive windows. 992 - 993 - # bell_border_color #ff5a00 994 - 995 - #: The color for the border of inactive windows in which a bell has 996 - #: occurred. 997 - 998 - # inactive_text_alpha 1.0 999 - 1000 - #: Fade the text in inactive windows by the specified amount (a number 1001 - #: between zero and one, with zero being fully faded). 1002 - 1003 - # hide_window_decorations no 1004 - 1005 - #: Hide the window decorations (title-bar and window borders) with 1006 - #: yes. On macOS, titlebar-only and titlebar-and-corners can be used 1007 - #: to only hide the titlebar and the rounded corners. Whether this 1008 - #: works and exactly what effect it has depends on the window 1009 - #: manager/operating system. Note that the effects of changing this 1010 - #: option when reloading config are undefined. When using titlebar- 1011 - #: only, it is useful to also set window_margin_width and 1012 - #: placement_strategy to prevent the rounded corners from clipping 1013 - #: text. Or use titlebar-and-corners. 1014 - 1015 - # window_logo_path none 1016 - 1017 - #: Path to a logo image. Must be in PNG/JPEG/WEBP/GIF/TIFF/BMP format. 1018 - #: Relative paths are interpreted relative to the kitty config 1019 - #: directory. The logo is displayed in a corner of every kitty window. 1020 - #: The position is controlled by window_logo_position. Individual 1021 - #: windows can be configured to have different logos either using the 1022 - #: launch action or the remote control 1023 - #: <https://sw.kovidgoyal.net/kitty/remote-control/> facility. 1024 - 1025 - # window_logo_position bottom-right 1026 - 1027 - #: Where to position the window logo in the window. The value can be 1028 - #: one of: top-left, top, top-right, left, center, right, bottom-left, 1029 - #: bottom, bottom-right. 1030 - 1031 - # window_logo_alpha 0.5 1032 - 1033 - #: The amount the logo should be faded into the background. With zero 1034 - #: being fully faded and one being fully opaque. 1035 - 1036 - # window_logo_scale 0 1037 - 1038 - #: The percentage (0-100] of the window size to which the logo should 1039 - #: scale. Using a single number means the logo is scaled to that 1040 - #: percentage of the shortest window dimension, while preserving 1041 - #: aspect ratio of the logo image. 1042 - 1043 - #: Using two numbers means the width and height of the logo are scaled 1044 - #: to the respective percentage of the window's width and height. 1045 - 1046 - #: Using zero as the percentage disables scaling in that dimension. A 1047 - #: single zero (the default) disables all scaling of the window logo. 1048 - 1049 - # resize_debounce_time 0.1 0.5 1050 - 1051 - #: The time to wait (in seconds) before asking the program running in 1052 - #: kitty to resize and redraw the screen during a live resize of the 1053 - #: OS window, when no new resize events have been received, i.e. when 1054 - #: resizing is either paused or finished. On platforms such as macOS, 1055 - #: where the operating system sends events corresponding to the start 1056 - #: and end of a live resize, the second number is used for redraw- 1057 - #: after-pause since kitty can distinguish between a pause and end of 1058 - #: resizing. On such systems the first number is ignored and redraw is 1059 - #: immediate after end of resize. On other systems only the first 1060 - #: number is used so that kitty is "ready" quickly after the end of 1061 - #: resizing, while not also continuously redrawing, to save energy. 1062 - 1063 - # resize_in_steps no 1064 - 1065 - #: Resize the OS window in steps as large as the cells, instead of 1066 - #: with the usual pixel accuracy. Combined with initial_window_width 1067 - #: and initial_window_height in number of cells, this option can be 1068 - #: used to keep the margins as small as possible when resizing the OS 1069 - #: window. Note that this does not currently work on Wayland. 1070 - 1071 - # visual_window_select_characters 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ 1072 - 1073 - #: The list of characters for visual window selection. For example, 1074 - #: for selecting a window to focus on with focus_visible_window. The 1075 - #: value should be a series of unique numbers or alphabets, case 1076 - #: insensitive, from the set 0-9A-Z\-=[];',./\\`. Specify your 1077 - #: preference as a string of characters. 1078 - 1079 - # confirm_os_window_close -1 1080 - 1081 - #: Ask for confirmation when closing an OS window or a tab with at 1082 - #: least this number of kitty windows in it by window manager (e.g. 1083 - #: clicking the window close button or pressing the operating system 1084 - #: shortcut to close windows) or by the close_tab action. A value of 1085 - #: zero disables confirmation. This confirmation also applies to 1086 - #: requests to quit the entire application (all OS windows, via the 1087 - #: quit action). Negative values are converted to positive ones, 1088 - #: however, with shell_integration enabled, using negative values 1089 - #: means windows sitting at a shell prompt are not counted, only 1090 - #: windows where some command is currently running. You can also have 1091 - #: backgrounded jobs prevent closing, by adding count-background to 1092 - #: the setting, for example: -1 count-background. Note that if you 1093 - #: want confirmation when closing individual windows, you can map the 1094 - #: close_window_with_confirmation action. 1095 - 1096 - #: }}} 1097 - 1098 - #: Tab bar {{{ 1099 - 1100 - # tab_bar_edge bottom 1101 - 1102 - #: The edge to show the tab bar on, top or bottom. 1103 - 1104 - # tab_bar_margin_width 0.0 1105 - 1106 - #: The margin to the left and right of the tab bar (in pts). 1107 - 1108 - # tab_bar_margin_height 0.0 0.0 1109 - 1110 - #: The margin above and below the tab bar (in pts). The first number 1111 - #: is the margin between the edge of the OS Window and the tab bar. 1112 - #: The second number is the margin between the tab bar and the 1113 - #: contents of the current tab. 1114 - 1115 - # tab_bar_style fade 1116 - 1117 - #: The tab bar style, can be one of: 1118 - 1119 - #: fade 1120 - #: Each tab's edges fade into the background color. (See also tab_fade) 1121 - #: slant 1122 - #: Tabs look like the tabs in a physical file. 1123 - #: separator 1124 - #: Tabs are separated by a configurable separator. (See also 1125 - #: tab_separator) 1126 - #: powerline 1127 - #: Tabs are shown as a continuous line with "fancy" separators. 1128 - #: (See also tab_powerline_style) 1129 - #: custom 1130 - #: A user-supplied Python function called draw_tab is loaded from the file 1131 - #: tab_bar.py in the kitty config directory. For examples of how to 1132 - #: write such a function, see the functions named draw_tab_with_* in 1133 - #: kitty's source code: kitty/tab_bar.py. See also 1134 - #: this discussion <https://github.com/kovidgoyal/kitty/discussions/4447> 1135 - #: for examples from kitty users. 1136 - #: hidden 1137 - #: The tab bar is hidden. If you use this, you might want to create 1138 - #: a mapping for the select_tab action which presents you with a list of 1139 - #: tabs and allows for easy switching to a tab. 1140 - 1141 - # tab_bar_align left 1142 - 1143 - #: The horizontal alignment of the tab bar, can be one of: left, 1144 - #: center, right. 1145 - 1146 - # tab_bar_min_tabs 2 1147 - 1148 - #: The minimum number of tabs that must exist before the tab bar is 1149 - #: shown. 1150 - 1151 - # tab_switch_strategy previous 1152 - 1153 - #: The algorithm to use when switching to a tab when the current tab 1154 - #: is closed. The default of previous will switch to the last used 1155 - #: tab. A value of left will switch to the tab to the left of the 1156 - #: closed tab. A value of right will switch to the tab to the right of 1157 - #: the closed tab. A value of last will switch to the right-most tab. 1158 - 1159 - # tab_fade 0.25 0.5 0.75 1 1160 - 1161 - #: Control how each tab fades into the background when using fade for 1162 - #: the tab_bar_style. Each number is an alpha (between zero and one) 1163 - #: that controls how much the corresponding cell fades into the 1164 - #: background, with zero being no fade and one being full fade. You 1165 - #: can change the number of cells used by adding/removing entries to 1166 - #: this list. 1167 - 1168 - # tab_separator " โ”‡" 1169 - 1170 - #: The separator between tabs in the tab bar when using separator as 1171 - #: the tab_bar_style. 1172 - 1173 - # tab_powerline_style angled 1174 - 1175 - #: The powerline separator style between tabs in the tab bar when 1176 - #: using powerline as the tab_bar_style, can be one of: angled, 1177 - #: slanted, round. 1178 - 1179 - # tab_activity_symbol none 1180 - 1181 - #: Some text or a Unicode symbol to show on the tab if a window in the 1182 - #: tab that does not have focus has some activity. If you want to use 1183 - #: leading or trailing spaces, surround the text with quotes. See 1184 - #: tab_title_template for how this is rendered. 1185 - 1186 - # tab_title_max_length 0 1187 - 1188 - #: The maximum number of cells that can be used to render the text in 1189 - #: a tab. A value of zero means that no limit is applied. 1190 - 1191 - # tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{tab.last_focused_progress_percent}{title}" 1192 - 1193 - #: A template to render the tab title. The default just renders the 1194 - #: title with optional symbols for bell and activity. If you wish to 1195 - #: include the tab-index as well, use something like: {index}:{title}. 1196 - #: Useful if you have shortcuts mapped for goto_tab N. If you prefer 1197 - #: to see the index as a superscript, use {sup.index}. All data 1198 - #: available is: 1199 - 1200 - #: title 1201 - #: The current tab title. 1202 - #: index 1203 - #: The tab index usable with goto_tab N goto_tab shortcuts. 1204 - #: layout_name 1205 - #: The current layout name. 1206 - #: num_windows 1207 - #: The number of windows in the tab. 1208 - #: num_window_groups 1209 - #: The number of window groups (a window group is a window and all of its overlay windows) in the tab. 1210 - #: tab.active_wd 1211 - #: The working directory of the currently active window in the tab 1212 - #: (expensive, requires syscall). Use tab.active_oldest_wd to get 1213 - #: the directory of the oldest foreground process rather than the newest. 1214 - #: tab.active_exe 1215 - #: The name of the executable running in the foreground of the currently 1216 - #: active window in the tab (expensive, requires syscall). Use 1217 - #: tab.active_oldest_exe for the oldest foreground process. 1218 - #: max_title_length 1219 - #: The maximum title length available. 1220 - #: keyboard_mode 1221 - #: The name of the current keyboard mode <https://sw.kovidgoyal.net/kitty/mapping/#modal-mappings> or the empty string if no keyboard mode is active. 1222 - #: tab.last_focused_progress_percent 1223 - #: If a command running in a window reports the progress for a task, show this progress as a percentage 1224 - #: from the most recently focused window in the tab. Empty string if no progress is reported. 1225 - #: tab.progress_percent 1226 - #: If a command running in a window reports the progress for a task, show this progress as a percentage 1227 - #: from all windows in the tab, averaged. Empty string is no progress is reported. 1228 - 1229 - #: Note that formatting is done by Python's string formatting 1230 - #: machinery, so you can use, for instance, {layout_name[:2].upper()} 1231 - #: to show only the first two letters of the layout name, upper-cased. 1232 - #: If you want to style the text, you can use styling directives, for 1233 - #: example: 1234 - #: `{fmt.fg.red}red{fmt.fg.tab}normal{fmt.bg._00FF00}greenbg{fmt.bg.tab}`. 1235 - #: Similarly, for bold and italic: 1236 - #: `{fmt.bold}bold{fmt.nobold}normal{fmt.italic}italic{fmt.noitalic}`. 1237 - #: The 256 eight terminal colors can be used as `fmt.fg.color0` 1238 - #: through `fmt.fg.color255`. Note that for backward compatibility, if 1239 - #: {bell_symbol} or {activity_symbol} are not present in the template, 1240 - #: they are prepended to it. 1241 - 1242 - # active_tab_title_template none 1243 - 1244 - #: Template to use for active tabs. If not specified falls back to 1245 - #: tab_title_template. 1246 - 1247 - # active_tab_foreground #000 1248 - # active_tab_background #eee 1249 - # active_tab_font_style bold-italic 1250 - # inactive_tab_foreground #444 1251 - # inactive_tab_background #999 1252 - # inactive_tab_font_style normal 1253 - 1254 - #: Tab bar colors and styles. 1255 - 1256 - # tab_bar_background none 1257 - 1258 - #: Background color for the tab bar. Defaults to using the terminal 1259 - #: background color. 1260 - 1261 - # tab_bar_margin_color none 1262 - 1263 - #: Color for the tab bar margin area. Defaults to using the terminal 1264 - #: background color for margins above and below the tab bar. For side 1265 - #: margins the default color is chosen to match the background color 1266 - #: of the neighboring tab. 1267 - 1268 - #: }}} 1269 - 1270 - #: Color scheme {{{ 1271 - 1272 - # foreground #dddddd 1273 - # background #000000 1274 - 1275 - #: The foreground and background colors. 1276 - 1277 - # background_opacity 1.0 1278 - 1279 - #: The opacity of the background. A number between zero and one, where 1280 - #: one is opaque and zero is fully transparent. This will only work if 1281 - #: supported by the OS (for instance, when using a compositor under 1282 - #: X11). Note that it only sets the background color's opacity in 1283 - #: cells that have the same background color as the default terminal 1284 - #: background, so that things like the status bar in vim, powerline 1285 - #: prompts, etc. still look good. But it means that if you use a color 1286 - #: theme with a background color in your editor, it will not be 1287 - #: rendered as transparent. Instead you should change the default 1288 - #: background color in your kitty config and not use a background 1289 - #: color in the editor color scheme. Or use the escape codes to set 1290 - #: the terminals default colors in a shell script to launch your 1291 - #: editor. See also transparent_background_colors. Be aware that using 1292 - #: a value less than 1.0 is a (possibly significant) performance hit. 1293 - #: When using a low value for this setting, it is desirable that you 1294 - #: set the background color to a color the matches the general color 1295 - #: of the desktop background, for best text rendering. Note that to 1296 - #: workaround window managers not doing gamma-corrected blending kitty 1297 - #: makes background_opacity non-linear which means, especially for 1298 - #: light backgrounds you might need to make the value much lower than 1299 - #: you expect to get good results, see 6218 1300 - #: <https://github.com/kovidgoyal/kitty/issues/6218> for details. 1301 - 1302 - #: If you want to dynamically change transparency of windows, set 1303 - #: dynamic_background_opacity to yes (this is off by default as it has 1304 - #: a performance cost). Changing this option when reloading the config 1305 - #: will only work if dynamic_background_opacity was enabled in the 1306 - #: original config. 1307 - 1308 - # background_blur 0 1309 - 1310 - #: Set to a positive value to enable background blur (blurring of the 1311 - #: visuals behind a transparent window) on platforms that support it. 1312 - #: Only takes effect when background_opacity is less than one. On 1313 - #: macOS, this will also control the blur radius (amount of blurring). 1314 - #: Setting it to too high a value will cause severe performance issues 1315 - #: and/or rendering artifacts. Usually, values up to 64 work well. 1316 - #: Note that this might cause performance issues, depending on how the 1317 - #: platform implements it, so use with care. Currently supported on 1318 - #: macOS and KDE. 1319 - 1320 - # background_image none 1321 - 1322 - #: Path to a background image. Must be in PNG/JPEG/WEBP/TIFF/GIF/BMP 1323 - #: format. 1324 - 1325 - # background_image_layout tiled 1326 - 1327 - #: Whether to tile, scale or clamp the background image. The value can 1328 - #: be one of tiled, mirror-tiled, scaled, clamped, centered or 1329 - #: cscaled. The scaled and cscaled values scale the image to the 1330 - #: window size, with cscaled preserving the image aspect ratio. 1331 - 1332 - # background_image_linear no 1333 - 1334 - #: When background image is scaled, whether linear interpolation 1335 - #: should be used. 1336 - 1337 - # transparent_background_colors 1338 - 1339 - #: A space separated list of upto 7 colors, with opacity. When the 1340 - #: background color of a cell matches one of these colors, it is 1341 - #: rendered semi-transparent using the specified opacity. 1342 - 1343 - #: Useful in more complex UIs like editors where you could want more 1344 - #: than a single background color to be rendered as transparent, for 1345 - #: instance, for a cursor highlight line background or a highlighted 1346 - #: block. Terminal applications can set this color using The kitty 1347 - #: color control <https://sw.kovidgoyal.net/kitty/color-stack/#color- 1348 - #: control> escape code. 1349 - 1350 - #: The syntax for specifying colors is: color@opacity, where the 1351 - #: @opacity part is optional. When unspecified, the value of 1352 - #: background_opacity is used. For example:: 1353 - 1354 - #: transparent_background_colors red@0.5 #00ff00@0.3 1355 - 1356 - # dynamic_background_opacity no 1357 - 1358 - #: Allow changing of the background_opacity dynamically, using either 1359 - #: keyboard shortcuts (increase_background_opacity and 1360 - #: decrease_background_opacity) or the remote control facility. 1361 - #: Changing this option by reloading the config is not supported. 1362 - 1363 - # background_tint 0.0 1364 - 1365 - #: How much to tint the background image by the background color. This 1366 - #: option makes it easier to read the text. Tinting is done using the 1367 - #: current background color for each window. This option applies only 1368 - #: if background_opacity is set and transparent windows are supported 1369 - #: or background_image is set. 1370 - 1371 - # background_tint_gaps 1.0 1372 - 1373 - #: How much to tint the background image at the window gaps by the 1374 - #: background color, after applying background_tint. Since this is 1375 - #: multiplicative with background_tint, it can be used to lighten the 1376 - #: tint over the window gaps for a *separated* look. 1377 - 1378 - # dim_opacity 0.4 1379 - 1380 - #: How much to dim text that has the DIM/FAINT attribute set. One 1381 - #: means no dimming and zero means fully dimmed (i.e. invisible). 1382 - 1383 - # selection_foreground #000000 1384 - # selection_background #fffacd 1385 - 1386 - #: The foreground and background colors for text selected with the 1387 - #: mouse. Setting both of these to none will cause a "reverse video" 1388 - #: effect for selections, where the selection will be the cell text 1389 - #: color and the text will become the cell background color. Setting 1390 - #: only selection_foreground to none will cause the foreground color 1391 - #: to be used unchanged. Note that these colors can be overridden by 1392 - #: the program running in the terminal. 1393 - 1394 - #: The color table {{{ 1395 - 1396 - #: The 256 terminal colors. There are 8 basic colors, each color has a 1397 - #: dull and bright version, for the first 16 colors. You can set the 1398 - #: remaining 240 colors as color16 to color255. 1399 - 1400 - # color0 #000000 1401 - # color8 #767676 1402 - 1403 - #: black 1404 - 1405 - # color1 #cc0403 1406 - # color9 #f2201f 1407 - 1408 - #: red 1409 - 1410 - # color2 #19cb00 1411 - # color10 #23fd00 1412 - 1413 - #: green 1414 - 1415 - # color3 #cecb00 1416 - # color11 #fffd00 1417 - 1418 - #: yellow 1419 - 1420 - # color4 #0d73cc 1421 - # color12 #1a8fff 1422 - 1423 - #: blue 1424 - 1425 - # color5 #cb1ed1 1426 - # color13 #fd28ff 1427 - 1428 - #: magenta 1429 - 1430 - # color6 #0dcdcd 1431 - # color14 #14ffff 1432 - 1433 - #: cyan 1434 - 1435 - # color7 #dddddd 1436 - # color15 #ffffff 1437 - 1438 - #: white 1439 - 1440 - # mark1_foreground black 1441 - 1442 - #: Color for marks of type 1 1443 - 1444 - # mark1_background #98d3cb 1445 - 1446 - #: Color for marks of type 1 (light steel blue) 1447 - 1448 - # mark2_foreground black 1449 - 1450 - #: Color for marks of type 2 1451 - 1452 - # mark2_background #f2dcd3 1453 - 1454 - #: Color for marks of type 1 (beige) 1455 - 1456 - # mark3_foreground black 1457 - 1458 - #: Color for marks of type 3 1459 - 1460 - # mark3_background #f274bc 1461 - 1462 - #: Color for marks of type 3 (violet) 1463 - 1464 - #: }}} 1465 - 1466 - #: }}} 1467 - 1468 - #: Advanced {{{ 1469 - 1470 - # shell . 1471 - 1472 - #: The shell program to execute. The default value of . means to use 1473 - #: the value of of the SHELL environment variable or if unset, 1474 - #: whatever shell is set as the default shell for the current user. 1475 - #: Note that on macOS if you change this, you might need to add 1476 - #: --login and --interactive to ensure that the shell starts in 1477 - #: interactive mode and reads its startup rc files. Environment 1478 - #: variables are expanded in this setting. 1479 - 1480 - # editor . 1481 - 1482 - #: The terminal based text editor (such as vim or nano) to use when 1483 - #: editing the kitty config file or similar tasks. 1484 - 1485 - #: The default value of . means to use the environment variables 1486 - #: VISUAL and EDITOR in that order. If these variables aren't set, 1487 - #: kitty will run your shell ($SHELL -l -i -c env) to see if your 1488 - #: shell startup rc files set VISUAL or EDITOR. If that doesn't work, 1489 - #: kitty will cycle through various known editors (vim, emacs, etc.) 1490 - #: and take the first one that exists on your system. 1491 - 1492 - # close_on_child_death no 1493 - 1494 - #: Close the window when the child process (usually the shell) exits. 1495 - #: With the default value no, the terminal will remain open when the 1496 - #: child exits as long as there are still other processes outputting 1497 - #: to the terminal (for example disowned or backgrounded processes). 1498 - #: When enabled with yes, the window will close as soon as the child 1499 - #: process exits. Note that setting it to yes means that any 1500 - #: background processes still using the terminal can fail silently 1501 - #: because their stdout/stderr/stdin no longer work. 1502 - 1503 - # remote_control_password 1504 - 1505 - #: Allow other programs to control kitty using passwords. This option 1506 - #: can be specified multiple times to add multiple passwords. If no 1507 - #: passwords are present kitty will ask the user for permission if a 1508 - #: program tries to use remote control with a password. A password can 1509 - #: also *optionally* be associated with a set of allowed remote 1510 - #: control actions. For example:: 1511 - 1512 - #: remote_control_password "my passphrase" get-colors set-colors focus-window focus-tab 1513 - 1514 - #: Only the specified actions will be allowed when using this 1515 - #: password. Glob patterns can be used too, for example:: 1516 - 1517 - #: remote_control_password "my passphrase" set-tab-* resize-* 1518 - 1519 - #: To get a list of available actions, run:: 1520 - 1521 - #: kitten @ --help 1522 - 1523 - #: A set of actions to be allowed when no password is sent can be 1524 - #: specified by using an empty password. For example:: 1525 - 1526 - #: remote_control_password "" *-colors 1527 - 1528 - #: Finally, the path to a python module can be specified that provides 1529 - #: a function is_cmd_allowed that is used to check every remote 1530 - #: control command. For example:: 1531 - 1532 - #: remote_control_password "my passphrase" my_rc_command_checker.py 1533 - 1534 - #: Relative paths are resolved from the kitty configuration directory. 1535 - #: See rc_custom_auth <https://sw.kovidgoyal.net/kitty/remote- 1536 - #: control/#rc-custom-auth> for details. 1537 - 1538 - # allow_remote_control no 1539 - 1540 - #: Allow other programs to control kitty. If you turn this on, other 1541 - #: programs can control all aspects of kitty, including sending text 1542 - #: to kitty windows, opening new windows, closing windows, reading the 1543 - #: content of windows, etc. Note that this even works over SSH 1544 - #: connections. The default setting of no prevents any form of remote 1545 - #: control. The meaning of the various values are: 1546 - 1547 - #: password 1548 - #: Remote control requests received over both the TTY device and the socket 1549 - #: are confirmed based on passwords, see remote_control_password. 1550 - 1551 - #: socket-only 1552 - #: Remote control requests received over a socket are accepted 1553 - #: unconditionally. Requests received over the TTY are denied. 1554 - #: See listen_on. 1555 - 1556 - #: socket 1557 - #: Remote control requests received over a socket are accepted 1558 - #: unconditionally. Requests received over the TTY are confirmed based on 1559 - #: password. 1560 - 1561 - #: no 1562 - #: Remote control is completely disabled. 1563 - 1564 - #: yes 1565 - #: Remote control requests are always accepted. 1566 - 1567 - # listen_on none 1568 - 1569 - #: Listen to the specified socket for remote control connections. Note 1570 - #: that this will apply to all kitty instances. It can be overridden 1571 - #: by the kitty --listen-on command line option. For UNIX sockets, 1572 - #: such as unix:${TEMP}/mykitty or unix:@mykitty (on Linux). 1573 - #: Environment variables are expanded and relative paths are resolved 1574 - #: with respect to the temporary directory. If {kitty_pid} is present, 1575 - #: then it is replaced by the PID of the kitty process, otherwise the 1576 - #: PID of the kitty process is appended to the value, with a hyphen. 1577 - #: For TCP sockets such as tcp:localhost:0 a random port is always 1578 - #: used even if a non-zero port number is specified. See the help for 1579 - #: kitty --listen-on for more details. Note that this will be ignored 1580 - #: unless allow_remote_control is set to either: yes, socket or 1581 - #: socket-only. Changing this option by reloading the config is not 1582 - #: supported. 1583 - 1584 - # env 1585 - 1586 - #: Specify the environment variables to be set in all child processes. 1587 - #: Using the name with an equal sign (e.g. env VAR=) will set it to 1588 - #: the empty string. Specifying only the name (e.g. env VAR) will 1589 - #: remove the variable from the child process' environment. Note that 1590 - #: environment variables are expanded recursively, for example:: 1591 - 1592 - #: env VAR1=a 1593 - #: env VAR2=${HOME}/${VAR1}/b 1594 - 1595 - #: The value of VAR2 will be <path to home directory>/a/b. 1596 - 1597 - # filter_notification 1598 - 1599 - #: Specify rules to filter out notifications sent by applications 1600 - #: running in kitty. Can be specified multiple times to create 1601 - #: multiple filter rules. A rule specification is of the form 1602 - #: field:regexp. A filter rule can match on any of the fields: title, 1603 - #: body, app, type. The special value of all filters out all 1604 - #: notifications. Rules can be combined using Boolean operators. Some 1605 - #: examples:: 1606 - 1607 - #: filter_notification title:hello or body:"abc.*def" 1608 - #: # filter out notification from vim except for ones about updates, (?i) 1609 - #: # makes matching case insensitive. 1610 - #: filter_notification app:"[ng]?vim" and not body:"(?i)update" 1611 - #: # filter out all notifications 1612 - #: filter_notification all 1613 - 1614 - #: The field app is the name of the application sending the 1615 - #: notification and type is the type of the notification. Not all 1616 - #: applications will send these fields, so you can also match on the 1617 - #: title and body of the notification text. More sophisticated 1618 - #: programmatic filtering and custom actions on notifications can be 1619 - #: done by creating a notifications.py file in the kitty config 1620 - #: directory (~/.config/kitty). An annotated sample is available 1621 - #: <https://github.com/kovidgoyal/kitty/blob/master/docs/notifications.py>. 1622 - 1623 - # watcher 1624 - 1625 - #: Path to python file which will be loaded for watchers 1626 - #: <https://sw.kovidgoyal.net/kitty/launch/#watchers>. Can be 1627 - #: specified more than once to load multiple watchers. The watchers 1628 - #: will be added to every kitty window. Relative paths are resolved 1629 - #: relative to the kitty config directory. Note that reloading the 1630 - #: config will only affect windows created after the reload. 1631 - 1632 - # exe_search_path 1633 - 1634 - #: Control where kitty finds the programs to run. The default search 1635 - #: order is: First search the system wide PATH, then ~/.local/bin and 1636 - #: ~/bin. If still not found, the PATH defined in the login shell 1637 - #: after sourcing all its startup files is tried. Finally, if present, 1638 - #: the PATH specified by the env option is tried. 1639 - 1640 - #: This option allows you to prepend, append, or remove paths from 1641 - #: this search order. It can be specified multiple times for multiple 1642 - #: paths. A simple path will be prepended to the search order. A path 1643 - #: that starts with the + sign will be append to the search order, 1644 - #: after ~/bin above. A path that starts with the - sign will be 1645 - #: removed from the entire search order. For example:: 1646 - 1647 - #: exe_search_path /some/prepended/path 1648 - #: exe_search_path +/some/appended/path 1649 - #: exe_search_path -/some/excluded/path 1650 - 1651 - # update_check_interval 24 1652 - 1653 - #: The interval to periodically check if an update to kitty is 1654 - #: available (in hours). If an update is found, a system notification 1655 - #: is displayed informing you of the available update. The default is 1656 - #: to check every 24 hours, set to zero to disable. Update checking is 1657 - #: only done by the official binary builds. Distro packages or source 1658 - #: builds do not do update checking. Changing this option by reloading 1659 - #: the config is not supported. 1660 - 1661 - # startup_session none 1662 - 1663 - #: Path to a session file to use for all kitty instances. Can be 1664 - #: overridden by using the kitty --session =none command line option 1665 - #: for individual instances. See sessions 1666 - #: <https://sw.kovidgoyal.net/kitty/overview/#sessions> in the kitty 1667 - #: documentation for details. Note that relative paths are interpreted 1668 - #: with respect to the kitty config directory. Environment variables 1669 - #: in the path are expanded. Changing this option by reloading the 1670 - #: config is not supported. Note that if kitty is invoked with command 1671 - #: line arguments specifying a command to run, this option is ignored. 1672 - 1673 - # clipboard_control write-clipboard write-primary read-clipboard-ask read-primary-ask 1674 - 1675 - #: Allow programs running in kitty to read and write from the 1676 - #: clipboard. You can control exactly which actions are allowed. The 1677 - #: possible actions are: write-clipboard, read-clipboard, write- 1678 - #: primary, read-primary, read-clipboard-ask, read-primary-ask. The 1679 - #: default is to allow writing to the clipboard and primary selection 1680 - #: and to ask for permission when a program tries to read from the 1681 - #: clipboard. Note that disabling the read confirmation is a security 1682 - #: risk as it means that any program, even the ones running on a 1683 - #: remote server via SSH can read your clipboard. See also 1684 - #: clipboard_max_size. 1685 - 1686 - # clipboard_max_size 512 1687 - 1688 - #: The maximum size (in MB) of data from programs running in kitty 1689 - #: that will be stored for writing to the system clipboard. A value of 1690 - #: zero means no size limit is applied. See also clipboard_control. 1691 - 1692 - # file_transfer_confirmation_bypass 1693 - 1694 - #: The password that can be supplied to the file transfer kitten 1695 - #: <https://sw.kovidgoyal.net/kitty/kittens/transfer/> to skip the 1696 - #: transfer confirmation prompt. This should only be used when 1697 - #: initiating transfers from trusted computers, over trusted networks 1698 - #: or encrypted transports, as it allows any programs running on the 1699 - #: remote machine to read/write to the local filesystem, without 1700 - #: permission. 1701 - 1702 - # allow_hyperlinks yes 1703 - 1704 - #: Process hyperlink escape sequences (OSC 8). If disabled OSC 8 1705 - #: escape sequences are ignored. Otherwise they become clickable 1706 - #: links, that you can click with the mouse or by using the hints 1707 - #: kitten <https://sw.kovidgoyal.net/kitty/kittens/hints/>. The 1708 - #: special value of ask means that kitty will ask before opening the 1709 - #: link when clicked. 1710 - 1711 - # shell_integration enabled 1712 - 1713 - #: Enable shell integration on supported shells. This enables features 1714 - #: such as jumping to previous prompts, browsing the output of the 1715 - #: previous command in a pager, etc. on supported shells. Set to 1716 - #: disabled to turn off shell integration, completely. It is also 1717 - #: possible to disable individual features, set to a space separated 1718 - #: list of these values: no-rc, no-cursor, no-title, no-cwd, no- 1719 - #: prompt-mark, no-complete, no-sudo. See Shell integration 1720 - #: <https://sw.kovidgoyal.net/kitty/shell-integration/> for details. 1721 - 1722 - # allow_cloning ask 1723 - 1724 - #: Control whether programs running in the terminal can request new 1725 - #: windows to be created. The canonical example is clone-in-kitty 1726 - #: <https://sw.kovidgoyal.net/kitty/shell-integration/#clone-shell>. 1727 - #: By default, kitty will ask for permission for each clone request. 1728 - #: Allowing cloning unconditionally gives programs running in the 1729 - #: terminal (including over SSH) permission to execute arbitrary code, 1730 - #: as the user who is running the terminal, on the computer that the 1731 - #: terminal is running on. 1732 - 1733 - # clone_source_strategies venv,conda,env_var,path 1734 - 1735 - #: Control what shell code is sourced when running clone-in-kitty in 1736 - #: the newly cloned window. The supported strategies are: 1737 - 1738 - #: venv 1739 - #: Source the file $VIRTUAL_ENV/bin/activate. This is used by the 1740 - #: Python stdlib venv module and allows cloning venvs automatically. 1741 - #: conda 1742 - #: Run conda activate $CONDA_DEFAULT_ENV. This supports the virtual 1743 - #: environments created by conda. 1744 - #: env_var 1745 - #: Execute the contents of the environment variable 1746 - #: KITTY_CLONE_SOURCE_CODE with eval. 1747 - #: path 1748 - #: Source the file pointed to by the environment variable 1749 - #: KITTY_CLONE_SOURCE_PATH. 1750 - 1751 - #: This option must be a comma separated list of the above values. 1752 - #: Only the first valid match, in the order specified, is sourced. 1753 - 1754 - # notify_on_cmd_finish never 1755 - 1756 - #: Show a desktop notification when a long-running command finishes 1757 - #: (needs shell_integration). The possible values are: 1758 - 1759 - #: never 1760 - #: Never send a notification. 1761 - 1762 - #: unfocused 1763 - #: Only send a notification when the window does not have keyboard focus. 1764 - 1765 - #: invisible 1766 - #: Only send a notification when the window both is unfocused and not visible 1767 - #: to the user, for example, because it is in an inactive tab or its OS window 1768 - #: is not currently visible (on platforms that support OS window visibility querying 1769 - #: this considers an OS Window visible iff it is active). 1770 - 1771 - #: always 1772 - #: Always send a notification, regardless of window state. 1773 - 1774 - #: There are two optional arguments: 1775 - 1776 - #: First, the minimum duration for what is considered a long running 1777 - #: command. The default is 5 seconds. Specify a second argument to set 1778 - #: the duration. For example: invisible 15. Do not set the value too 1779 - #: small, otherwise a command that launches a new OS Window and exits 1780 - #: will spam a notification. 1781 - 1782 - #: Second, the action to perform. The default is notify. The possible 1783 - #: values are: 1784 - 1785 - #: notify 1786 - #: Send a desktop notification. The subsequent arguments are optional and specify when 1787 - #: the notification is automatically cleared. The set of possible events when the notification is 1788 - #: cleared are: focus and next. focus means that when the notification 1789 - #: policy is unfocused or invisible the notification is automatically cleared 1790 - #: when the window regains focus. The value of next means that the previous notification 1791 - #: is cleared when the next notification is shown. The default when no arguments are specified 1792 - #: is: focus next. 1793 - 1794 - #: bell 1795 - #: Ring the terminal bell. 1796 - 1797 - #: command 1798 - #: Run a custom command. All subsequent arguments are the cmdline to run. 1799 - 1800 - #: Some more examples:: 1801 - 1802 - #: # Send a notification when a command takes more than 5 seconds in an unfocused window 1803 - #: notify_on_cmd_finish unfocused 1804 - #: # Send a notification when a command takes more than 10 seconds in a invisible window 1805 - #: notify_on_cmd_finish invisible 10.0 1806 - #: # Ring a bell when a command takes more than 10 seconds in a invisible window 1807 - #: notify_on_cmd_finish invisible 10.0 bell 1808 - #: # Run 'notify-send' when a command takes more than 10 seconds in a invisible window 1809 - #: # Here %c is replaced by the current command line and %s by the job exit code 1810 - #: notify_on_cmd_finish invisible 10.0 command notify-send "job finished with status: %s" %c 1811 - #: # Do not clear previous notification when next command finishes or window regains focus 1812 - #: notify_on_cmd_finish invisible 5.0 notify 1813 - 1814 - # term xterm-kitty 1815 - 1816 - #: The value of the TERM environment variable to set. Changing this 1817 - #: can break many terminal programs, only change it if you know what 1818 - #: you are doing, not because you read some advice on "Stack Overflow" 1819 - #: to change it. The TERM variable is used by various programs to get 1820 - #: information about the capabilities and behavior of the terminal. If 1821 - #: you change it, depending on what programs you run, and how 1822 - #: different the terminal you are changing it to is, various things 1823 - #: from key-presses, to colors, to various advanced features may not 1824 - #: work. Changing this option by reloading the config will only affect 1825 - #: newly created windows. 1826 - 1827 - # terminfo_type path 1828 - 1829 - #: The value of the TERMINFO environment variable to set. This 1830 - #: variable is used by programs running in the terminal to search for 1831 - #: terminfo databases. The default value of path causes kitty to set 1832 - #: it to a filesystem location containing the kitty terminfo database. 1833 - #: A value of direct means put the entire database into the env var 1834 - #: directly. This can be useful when connecting to containers, for 1835 - #: example. But, note that not all software supports this. A value of 1836 - #: none means do not touch the variable. 1837 - 1838 - # forward_stdio no 1839 - 1840 - #: Forward STDOUT and STDERR of the kitty process to child processes. 1841 - #: This is useful for debugging as it allows child processes to print 1842 - #: to kitty's STDOUT directly. For example, echo hello world 1843 - #: >&$KITTY_STDIO_FORWARDED in a shell will print to the parent 1844 - #: kitty's STDOUT. Sets the KITTY_STDIO_FORWARDED=fdnum environment 1845 - #: variable so child processes know about the forwarding. Note that on 1846 - #: macOS this prevents the shell from being run via the login utility 1847 - #: so getlogin() will not work in programs run in this session. 1848 - 1849 - # menu_map 1850 - 1851 - #: Specify entries for various menus in kitty. Currently only the 1852 - #: global menubar on macOS is supported. For example:: 1853 - 1854 - #: menu_map global "Actions::Launch something special" launch --hold --type=os-window sh -c "echo hello world" 1855 - 1856 - #: This will create a menu entry named "Launch something special" in 1857 - #: an "Actions" menu in the macOS global menubar. Sub-menus can be 1858 - #: created by adding more levels separated by the :: characters. 1859 - 1860 - #: }}} 1861 - 1862 - #: OS specific tweaks {{{ 1863 - 1864 - # wayland_titlebar_color system 1865 - 1866 - #: The color of the kitty window's titlebar on Wayland systems with 1867 - #: client side window decorations such as GNOME. A value of system 1868 - #: means to use the default system colors, a value of background means 1869 - #: to use the background color of the currently active kitty window 1870 - #: and finally you can use an arbitrary color, such as #12af59 or red. 1871 - 1872 - # macos_titlebar_color system 1873 - 1874 - #: The color of the kitty window's titlebar on macOS. A value of 1875 - #: system means to use the default system color, light or dark can 1876 - #: also be used to set it explicitly. A value of background means to 1877 - #: use the background color of the currently active window and finally 1878 - #: you can use an arbitrary color, such as #12af59 or red. WARNING: 1879 - #: This option works by using a hack when arbitrary color (or 1880 - #: background) is configured, as there is no proper Cocoa API for it. 1881 - #: It sets the background color of the entire window and makes the 1882 - #: titlebar transparent. As such it is incompatible with 1883 - #: background_opacity. If you want to use both, you are probably 1884 - #: better off just hiding the titlebar with hide_window_decorations. 1885 - 1886 - # macos_option_as_alt no 1887 - 1888 - #: Use the Option key as an Alt key on macOS. With this set to no, 1889 - #: kitty will use the macOS native Option+Key to enter Unicode 1890 - #: character behavior. This will break any Alt+Key keyboard shortcuts 1891 - #: in your terminal programs, but you can use the macOS Unicode input 1892 - #: technique. You can use the values: left, right or both to use only 1893 - #: the left, right or both Option keys as Alt, instead. Note that 1894 - #: kitty itself always treats Option the same as Alt. This means you 1895 - #: cannot use this option to configure different kitty shortcuts for 1896 - #: Option+Key vs. Alt+Key. Also, any kitty shortcuts using 1897 - #: Option/Alt+Key will take priority, so that any such key presses 1898 - #: will not be passed to terminal programs running inside kitty. 1899 - #: Changing this option by reloading the config is not supported. 1900 - 1901 - # macos_hide_from_tasks no 1902 - 1903 - #: Hide the kitty window from running tasks on macOS (โŒ˜+Tab and the 1904 - #: Dock). Changing this option by reloading the config is not 1905 - #: supported. 1906 - 1907 - # macos_quit_when_last_window_closed no 1908 - 1909 - #: Have kitty quit when all the top-level windows are closed on macOS. 1910 - #: By default, kitty will stay running, even with no open windows, as 1911 - #: is the expected behavior on macOS. 1912 - 1913 - # macos_window_resizable yes 1914 - 1915 - #: Disable this if you want kitty top-level OS windows to not be 1916 - #: resizable on macOS. 1917 - 1918 - # macos_thicken_font 0 1919 - 1920 - #: Draw an extra border around the font with the given width, to 1921 - #: increase legibility at small font sizes on macOS. For example, a 1922 - #: value of 0.75 will result in rendering that looks similar to sub- 1923 - #: pixel antialiasing at common font sizes. Note that in modern kitty, 1924 - #: this option is obsolete (although still supported). Consider using 1925 - #: text_composition_strategy instead. 1926 - 1927 - # macos_traditional_fullscreen no 1928 - 1929 - #: Use the macOS traditional full-screen transition, that is faster, 1930 - #: but less pretty. 1931 - 1932 - # macos_show_window_title_in all 1933 - 1934 - #: Control where the window title is displayed on macOS. A value of 1935 - #: window will show the title of the currently active window at the 1936 - #: top of the macOS window. A value of menubar will show the title of 1937 - #: the currently active window in the macOS global menu bar, making 1938 - #: use of otherwise wasted space. A value of all will show the title 1939 - #: in both places, and none hides the title. See 1940 - #: macos_menubar_title_max_length for how to control the length of the 1941 - #: title in the menu bar. 1942 - 1943 - # macos_menubar_title_max_length 0 1944 - 1945 - #: The maximum number of characters from the window title to show in 1946 - #: the macOS global menu bar. Values less than one means that there is 1947 - #: no maximum limit. 1948 - 1949 - # macos_custom_beam_cursor no 1950 - 1951 - #: Use a custom mouse cursor for macOS that is easier to see on both 1952 - #: light and dark backgrounds. Nowadays, the default macOS cursor 1953 - #: already comes with a white border. WARNING: this might make your 1954 - #: mouse cursor invisible on dual GPU machines. Changing this option 1955 - #: by reloading the config is not supported. 1956 - 1957 - # macos_colorspace srgb 1958 - 1959 - #: The colorspace in which to interpret terminal colors. The default 1960 - #: of srgb will cause colors to match those seen in web browsers. The 1961 - #: value of default will use whatever the native colorspace of the 1962 - #: display is. The value of displayp3 will use Apple's special 1963 - #: snowflake display P3 color space, which will result in over 1964 - #: saturated (brighter) colors with some color shift. Reloading 1965 - #: configuration will change this value only for newly created OS 1966 - #: windows. 1967 - 1968 - # linux_display_server auto 1969 - 1970 - #: Choose between Wayland and X11 backends. By default, an appropriate 1971 - #: backend based on the system state is chosen automatically. Set it 1972 - #: to x11 or wayland to force the choice. Changing this option by 1973 - #: reloading the config is not supported. 1974 - 1975 - # wayland_enable_ime yes 1976 - 1977 - #: Enable Input Method Extension on Wayland. This is typically used 1978 - #: for inputting text in East Asian languages. However, its 1979 - #: implementation in Wayland is often buggy and introduces latency 1980 - #: into the input loop, so disable this if you know you dont need it. 1981 - #: Changing this option by reloading the config is not supported, it 1982 - #: will not have any effect. 1983 - 1984 - #: }}} 1985 - 1986 - #: Keyboard shortcuts {{{ 1987 - 1988 - #: Keys are identified simply by their lowercase Unicode characters. 1989 - #: For example: a for the A key, [ for the left square bracket key, 1990 - #: etc. For functional keys, such as Enter or Escape, the names are 1991 - #: present at Functional key definitions 1992 - #: <https://sw.kovidgoyal.net/kitty/keyboard-protocol/#functional>. 1993 - #: For modifier keys, the names are ctrl (control, โŒƒ), shift (โ‡ง), alt 1994 - #: (opt, option, โŒฅ), super (cmd, command, โŒ˜). 1995 - 1996 - #: Simple shortcut mapping is done with the map directive. For full 1997 - #: details on advanced mapping including modal and per application 1998 - #: maps, see mapping <https://sw.kovidgoyal.net/kitty/mapping/>. Some 1999 - #: quick examples to illustrate common tasks:: 2000 - 2001 - #: # unmap a keyboard shortcut, passing it to the program running in kitty 2002 - #: map kitty_mod+space 2003 - #: # completely ignore a keyboard event 2004 - #: map ctrl+alt+f1 discard_event 2005 - #: # combine multiple actions 2006 - #: map kitty_mod+e combine : new_window : next_layout 2007 - #: # multi-key shortcuts 2008 - #: map ctrl+x>ctrl+y>z action 2009 - 2010 - #: The full list of actions that can be mapped to key presses is 2011 - #: available here <https://sw.kovidgoyal.net/kitty/actions/>. 2012 - 2013 - # kitty_mod ctrl+shift 2014 - 2015 - #: Special modifier key alias for default shortcuts. You can change 2016 - #: the value of this option to alter all default shortcuts that use 2017 - #: kitty_mod. 2018 - 2019 - # clear_all_shortcuts no 2020 - 2021 - #: Remove all shortcut definitions up to this point. Useful, for 2022 - #: instance, to remove the default shortcuts. 2023 - 2024 - # action_alias 2025 - 2026 - #: E.g. action_alias launch_tab launch --type=tab --cwd=current 2027 - 2028 - #: Define action aliases to avoid repeating the same options in 2029 - #: multiple mappings. Aliases can be defined for any action and will 2030 - #: be expanded recursively. For example, the above alias allows you to 2031 - #: create mappings to launch a new tab in the current working 2032 - #: directory without duplication:: 2033 - 2034 - #: map f1 launch_tab vim 2035 - #: map f2 launch_tab emacs 2036 - 2037 - #: Similarly, to alias kitten invocation:: 2038 - 2039 - #: action_alias hints kitten hints --hints-offset=0 2040 - 2041 - # kitten_alias 2042 - 2043 - #: E.g. kitten_alias hints hints --hints-offset=0 2044 - 2045 - #: Like action_alias above, but specifically for kittens. Generally, 2046 - #: prefer to use action_alias. This option is a legacy version, 2047 - #: present for backwards compatibility. It causes all invocations of 2048 - #: the aliased kitten to be substituted. So the example above will 2049 - #: cause all invocations of the hints kitten to have the --hints- 2050 - #: offset=0 option applied. 2051 - 2052 - #: Clipboard {{{ 2053 - 2054 - #: Copy to clipboard 2055 - 2056 - # map kitty_mod+c copy_to_clipboard 2057 - # map cmd+c copy_to_clipboard 2058 - 2059 - #:: There is also a copy_or_interrupt action that can be optionally 2060 - #:: mapped to Ctrl+C. It will copy only if there is a selection and 2061 - #:: send an interrupt otherwise. Similarly, 2062 - #:: copy_and_clear_or_interrupt will copy and clear the selection or 2063 - #:: send an interrupt if there is no selection. 2064 - 2065 - #: Paste from clipboard 2066 - 2067 - # map kitty_mod+v paste_from_clipboard 2068 - # map cmd+v paste_from_clipboard 2069 - 2070 - #: Paste from selection 2071 - 2072 - # map kitty_mod+s paste_from_selection 2073 - # map shift+insert paste_from_selection 2074 - 2075 - #: Pass selection to program 2076 - 2077 - # map kitty_mod+o pass_selection_to_program 2078 - 2079 - #:: You can also pass the contents of the current selection to any 2080 - #:: program with pass_selection_to_program. By default, the system's 2081 - #:: open program is used, but you can specify your own, the selection 2082 - #:: will be passed as a command line argument to the program. For 2083 - #:: example:: 2084 - 2085 - #:: map kitty_mod+o pass_selection_to_program firefox 2086 - 2087 - #:: You can pass the current selection to a terminal program running 2088 - #:: in a new kitty window, by using the @selection placeholder:: 2089 - 2090 - #:: map kitty_mod+y new_window less @selection 2091 - 2092 - #: }}} 2093 - 2094 - #: Scrolling {{{ 2095 - 2096 - #: Scroll line up 2097 - 2098 - # map kitty_mod+up scroll_line_up 2099 - # map kitty_mod+k scroll_line_up 2100 - # map opt+cmd+page_up scroll_line_up 2101 - # map cmd+up scroll_line_up 2102 - 2103 - #: Scroll line down 2104 - 2105 - # map kitty_mod+down scroll_line_down 2106 - # map kitty_mod+j scroll_line_down 2107 - # map opt+cmd+page_down scroll_line_down 2108 - # map cmd+down scroll_line_down 2109 - 2110 - #: Scroll page up 2111 - 2112 - # map kitty_mod+page_up scroll_page_up 2113 - # map cmd+page_up scroll_page_up 2114 - 2115 - #: Scroll page down 2116 - 2117 - # map kitty_mod+page_down scroll_page_down 2118 - # map cmd+page_down scroll_page_down 2119 - 2120 - #: Scroll to top 2121 - 2122 - # map kitty_mod+home scroll_home 2123 - # map cmd+home scroll_home 2124 - 2125 - #: Scroll to bottom 2126 - 2127 - # map kitty_mod+end scroll_end 2128 - # map cmd+end scroll_end 2129 - 2130 - #: Scroll to previous shell prompt 2131 - 2132 - # map kitty_mod+z scroll_to_prompt -1 2133 - 2134 - #:: Use a parameter of 0 for scroll_to_prompt to scroll to the last 2135 - #:: jumped to or the last clicked position. Requires shell 2136 - #:: integration <https://sw.kovidgoyal.net/kitty/shell-integration/> 2137 - #:: to work. 2138 - 2139 - #: Scroll to next shell prompt 2140 - 2141 - # map kitty_mod+x scroll_to_prompt 1 2142 - 2143 - #: Browse scrollback buffer in pager 2144 - 2145 - # map kitty_mod+h show_scrollback 2146 - 2147 - #:: You can pipe the contents of the current screen and history 2148 - #:: buffer as STDIN to an arbitrary program using launch --stdin- 2149 - #:: source. For example, the following opens the scrollback buffer in 2150 - #:: less in an overlay window:: 2151 - 2152 - #:: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R 2153 - 2154 - #:: For more details on piping screen and buffer contents to external 2155 - #:: programs, see launch <https://sw.kovidgoyal.net/kitty/launch/>. 2156 - 2157 - #: Browse output of the last shell command in pager 2158 - 2159 - # map kitty_mod+g show_last_command_output 2160 - 2161 - #:: You can also define additional shortcuts to get the command 2162 - #:: output. For example, to get the first command output on screen:: 2163 - 2164 - #:: map f1 show_first_command_output_on_screen 2165 - 2166 - #:: To get the command output that was last accessed by a keyboard 2167 - #:: action or mouse action:: 2168 - 2169 - #:: map f1 show_last_visited_command_output 2170 - 2171 - #:: You can pipe the output of the last command run in the shell 2172 - #:: using the launch action. For example, the following opens the 2173 - #:: output in less in an overlay window:: 2174 - 2175 - #:: map f1 launch --stdin-source=@last_cmd_output --stdin-add-formatting --type=overlay less +G -R 2176 - 2177 - #:: To get the output of the first command on the screen, use 2178 - #:: @first_cmd_output_on_screen. To get the output of the last jumped 2179 - #:: to command, use @last_visited_cmd_output. 2180 - 2181 - #:: Requires shell integration 2182 - #:: <https://sw.kovidgoyal.net/kitty/shell-integration/> to work. 2183 - 2184 - #: }}} 2185 - 2186 - #: Window management {{{ 2187 - 2188 - #: New window 2189 - 2190 - # map kitty_mod+enter new_window 2191 - # map cmd+enter new_window 2192 - 2193 - #:: You can open a new kitty window running an arbitrary program, for 2194 - #:: example:: 2195 - 2196 - #:: map kitty_mod+y launch mutt 2197 - 2198 - #:: You can open a new window with the current working directory set 2199 - #:: to the working directory of the current window using:: 2200 - 2201 - #:: map ctrl+alt+enter launch --cwd=current 2202 - 2203 - #:: You can open a new window that is allowed to control kitty via 2204 - #:: the kitty remote control facility with launch --allow-remote- 2205 - #:: control. Any programs running in that window will be allowed to 2206 - #:: control kitty. For example:: 2207 - 2208 - #:: map ctrl+enter launch --allow-remote-control some_program 2209 - 2210 - #:: You can open a new window next to the currently active window or 2211 - #:: as the first window, with:: 2212 - 2213 - #:: map ctrl+n launch --location=neighbor 2214 - #:: map ctrl+f launch --location=first 2215 - 2216 - #:: For more details, see launch 2217 - #:: <https://sw.kovidgoyal.net/kitty/launch/>. 2218 - 2219 - #: New OS window 2220 - 2221 - # map kitty_mod+n new_os_window 2222 - # map cmd+n new_os_window 2223 - 2224 - #:: Works like new_window above, except that it opens a top-level OS 2225 - #:: window. In particular you can use new_os_window_with_cwd to open 2226 - #:: a window with the current working directory. 2227 - 2228 - #: Close window 2229 - 2230 - # map kitty_mod+w close_window 2231 - # map shift+cmd+d close_window 2232 - 2233 - #: Next window 2234 - 2235 - # map kitty_mod+] next_window 2236 - 2237 - #: Previous window 2238 - 2239 - # map kitty_mod+[ previous_window 2240 - 2241 - #: Move window forward 2242 - 2243 - # map kitty_mod+f move_window_forward 2244 - 2245 - #: Move window backward 2246 - 2247 - # map kitty_mod+b move_window_backward 2248 - 2249 - #: Move window to top 2250 - 2251 - # map kitty_mod+` move_window_to_top 2252 - 2253 - #: Start resizing window 2254 - 2255 - # map kitty_mod+r start_resizing_window 2256 - # map cmd+r start_resizing_window 2257 - 2258 - #: First window 2259 - 2260 - # map kitty_mod+1 first_window 2261 - # map cmd+1 first_window 2262 - 2263 - #: Second window 2264 - 2265 - # map kitty_mod+2 second_window 2266 - # map cmd+2 second_window 2267 - 2268 - #: Third window 2269 - 2270 - # map kitty_mod+3 third_window 2271 - # map cmd+3 third_window 2272 - 2273 - #: Fourth window 2274 - 2275 - # map kitty_mod+4 fourth_window 2276 - # map cmd+4 fourth_window 2277 - 2278 - #: Fifth window 2279 - 2280 - # map kitty_mod+5 fifth_window 2281 - # map cmd+5 fifth_window 2282 - 2283 - #: Sixth window 2284 - 2285 - # map kitty_mod+6 sixth_window 2286 - # map cmd+6 sixth_window 2287 - 2288 - #: Seventh window 2289 - 2290 - # map kitty_mod+7 seventh_window 2291 - # map cmd+7 seventh_window 2292 - 2293 - #: Eighth window 2294 - 2295 - # map kitty_mod+8 eighth_window 2296 - # map cmd+8 eighth_window 2297 - 2298 - #: Ninth window 2299 - 2300 - # map kitty_mod+9 ninth_window 2301 - # map cmd+9 ninth_window 2302 - 2303 - #: Tenth window 2304 - 2305 - # map kitty_mod+0 tenth_window 2306 - 2307 - #: Visually select and focus window 2308 - 2309 - # map kitty_mod+f7 focus_visible_window 2310 - 2311 - #:: Display overlay numbers and alphabets on the window, and switch 2312 - #:: the focus to the window when you press the key. When there are 2313 - #:: only two windows, the focus will be switched directly without 2314 - #:: displaying the overlay. You can change the overlay characters and 2315 - #:: their order with option visual_window_select_characters. 2316 - 2317 - #: Visually swap window with another 2318 - 2319 - # map kitty_mod+f8 swap_with_window 2320 - 2321 - #:: Works like focus_visible_window above, but swaps the window. 2322 - 2323 - #: }}} 2324 - 2325 - #: Tab management {{{ 2326 - 2327 - #: Next tab 2328 - 2329 - # map kitty_mod+right next_tab 2330 - # map shift+cmd+] next_tab 2331 - # map ctrl+tab next_tab 2332 - 2333 - #: Previous tab 2334 - 2335 - # map kitty_mod+left previous_tab 2336 - # map shift+cmd+[ previous_tab 2337 - # map ctrl+shift+tab previous_tab 2338 - 2339 - #: New tab 2340 - 2341 - # map kitty_mod+t new_tab 2342 - # map cmd+t new_tab 2343 - 2344 - #: Close tab 2345 - 2346 - # map kitty_mod+q close_tab 2347 - # map cmd+w close_tab 2348 - 2349 - #: Close OS window 2350 - 2351 - # map shift+cmd+w close_os_window 2352 - 2353 - #: Move tab forward 2354 - 2355 - # map kitty_mod+. move_tab_forward 2356 - 2357 - #: Move tab backward 2358 - 2359 - # map kitty_mod+, move_tab_backward 2360 - 2361 - #: Set tab title 2362 - 2363 - # map kitty_mod+alt+t set_tab_title 2364 - # map shift+cmd+i set_tab_title 2365 - 2366 - 2367 - #: You can also create shortcuts to go to specific tabs, with 1 being 2368 - #: the first tab, 2 the second tab and -1 being the previously active 2369 - #: tab, -2 being the tab active before the previously active tab and 2370 - #: so on. Any number larger than the number of tabs goes to the last 2371 - #: tab and any number less than the number of previously used tabs in 2372 - #: the history goes to the oldest previously used tab in the history:: 2373 - 2374 - #: map ctrl+alt+1 goto_tab 1 2375 - #: map ctrl+alt+2 goto_tab 2 2376 - 2377 - #: Just as with new_window above, you can also pass the name of 2378 - #: arbitrary commands to run when using new_tab and new_tab_with_cwd. 2379 - #: Finally, if you want the new tab to open next to the current tab 2380 - #: rather than at the end of the tabs list, use:: 2381 - 2382 - #: map ctrl+t new_tab !neighbor [optional cmd to run] 2383 - #: }}} 2384 - 2385 - #: Layout management {{{ 2386 - 2387 - #: Next layout 2388 - 2389 - # map kitty_mod+l next_layout 2390 - 2391 - 2392 - #: You can also create shortcuts to switch to specific layouts:: 2393 - 2394 - #: map ctrl+alt+t goto_layout tall 2395 - #: map ctrl+alt+s goto_layout stack 2396 - 2397 - #: Similarly, to switch back to the previous layout:: 2398 - 2399 - #: map ctrl+alt+p last_used_layout 2400 - 2401 - #: There is also a toggle_layout action that switches to the named 2402 - #: layout or back to the previous layout if in the named layout. 2403 - #: Useful to temporarily "zoom" the active window by switching to the 2404 - #: stack layout:: 2405 - 2406 - #: map ctrl+alt+z toggle_layout stack 2407 - #: }}} 2408 - 2409 - #: Font sizes {{{ 2410 - 2411 - #: You can change the font size for all top-level kitty OS windows at 2412 - #: a time or only the current one. 2413 - 2414 - #: Increase font size 2415 - 2416 - # map kitty_mod+equal change_font_size all +2.0 2417 - # map kitty_mod+plus change_font_size all +2.0 2418 - # map kitty_mod+kp_add change_font_size all +2.0 2419 - # map cmd+plus change_font_size all +2.0 2420 - # map cmd+equal change_font_size all +2.0 2421 - # map shift+cmd+equal change_font_size all +2.0 2422 - 2423 - #: Decrease font size 2424 - 2425 - # map kitty_mod+minus change_font_size all -2.0 2426 - # map kitty_mod+kp_subtract change_font_size all -2.0 2427 - # map cmd+minus change_font_size all -2.0 2428 - # map shift+cmd+minus change_font_size all -2.0 2429 - 2430 - #: Reset font size 2431 - 2432 - # map kitty_mod+backspace change_font_size all 0 2433 - # map cmd+0 change_font_size all 0 2434 - 2435 - 2436 - #: To setup shortcuts for specific font sizes:: 2437 - 2438 - #: map kitty_mod+f6 change_font_size all 10.0 2439 - 2440 - #: To setup shortcuts to change only the current OS window's font 2441 - #: size:: 2442 - 2443 - #: map kitty_mod+f6 change_font_size current 10.0 2444 - #: }}} 2445 - 2446 - #: Select and act on visible text {{{ 2447 - 2448 - #: Use the hints kitten to select text and either pass it to an 2449 - #: external program or insert it into the terminal or copy it to the 2450 - #: clipboard. 2451 - 2452 - #: Open URL 2453 - 2454 - # map kitty_mod+e open_url_with_hints 2455 - 2456 - #:: Open a currently visible URL using the keyboard. The program used 2457 - #:: to open the URL is specified in open_url_with. 2458 - 2459 - #: Insert selected path 2460 - 2461 - # map kitty_mod+p>f kitten hints --type path --program - 2462 - 2463 - #:: Select a path/filename and insert it into the terminal. Useful, 2464 - #:: for instance to run git commands on a filename output from a 2465 - #:: previous git command. 2466 - 2467 - #: Open selected path 2468 - 2469 - # map kitty_mod+p>shift+f kitten hints --type path 2470 - 2471 - #:: Select a path/filename and open it with the default open program. 2472 - 2473 - #: Insert selected line 2474 - 2475 - # map kitty_mod+p>l kitten hints --type line --program - 2476 - 2477 - #:: Select a line of text and insert it into the terminal. Useful for 2478 - #:: the output of things like: `ls -1`. 2479 - 2480 - #: Insert selected word 2481 - 2482 - # map kitty_mod+p>w kitten hints --type word --program - 2483 - 2484 - #:: Select words and insert into terminal. 2485 - 2486 - #: Insert selected hash 2487 - 2488 - # map kitty_mod+p>h kitten hints --type hash --program - 2489 - 2490 - #:: Select something that looks like a hash and insert it into the 2491 - #:: terminal. Useful with git, which uses SHA1 hashes to identify 2492 - #:: commits. 2493 - 2494 - #: Open the selected file at the selected line 2495 - 2496 - # map kitty_mod+p>n kitten hints --type linenum 2497 - 2498 - #:: Select something that looks like filename:linenum and open it in 2499 - #:: your default editor at the specified line number. 2500 - 2501 - #: Open the selected hyperlink 2502 - 2503 - # map kitty_mod+p>y kitten hints --type hyperlink 2504 - 2505 - #:: Select a hyperlink (i.e. a URL that has been marked as such by 2506 - #:: the terminal program, for example, by `ls --hyperlink=auto`). 2507 - 2508 - 2509 - #: The hints kitten has many more modes of operation that you can map 2510 - #: to different shortcuts. For a full description see hints kitten 2511 - #: <https://sw.kovidgoyal.net/kitty/kittens/hints/>. 2512 - #: }}} 2513 - 2514 - #: Miscellaneous {{{ 2515 - 2516 - #: Show documentation 2517 - 2518 - # map kitty_mod+f1 show_kitty_doc overview 2519 - 2520 - #: Toggle fullscreen 2521 - 2522 - # map kitty_mod+f11 toggle_fullscreen 2523 - # map ctrl+cmd+f toggle_fullscreen 2524 - 2525 - #: Toggle maximized 2526 - 2527 - # map kitty_mod+f10 toggle_maximized 2528 - 2529 - #: Toggle macOS secure keyboard entry 2530 - 2531 - # map opt+cmd+s toggle_macos_secure_keyboard_entry 2532 - 2533 - #: Unicode input 2534 - 2535 - # map kitty_mod+u kitten unicode_input 2536 - # map ctrl+cmd+space kitten unicode_input 2537 - 2538 - #: Edit config file 2539 - 2540 - # map kitty_mod+f2 edit_config_file 2541 - # map cmd+, edit_config_file 2542 - 2543 - #: Open the kitty command shell 2544 - 2545 - # map kitty_mod+escape kitty_shell window 2546 - 2547 - #:: Open the kitty shell in a new window / tab / overlay / os_window 2548 - #:: to control kitty using commands. 2549 - 2550 - #: Increase background opacity 2551 - 2552 - # map kitty_mod+a>m set_background_opacity +0.1 2553 - 2554 - #: Decrease background opacity 2555 - 2556 - # map kitty_mod+a>l set_background_opacity -0.1 2557 - 2558 - #: Make background fully opaque 2559 - 2560 - # map kitty_mod+a>1 set_background_opacity 1 2561 - 2562 - #: Reset background opacity 2563 - 2564 - # map kitty_mod+a>d set_background_opacity default 2565 - 2566 - #: Reset the terminal 2567 - 2568 - # map kitty_mod+delete clear_terminal reset active 2569 - # map opt+cmd+r clear_terminal reset active 2570 - 2571 - #:: You can create shortcuts to clear/reset the terminal. For 2572 - #:: example:: 2573 - 2574 - #:: # Reset the terminal 2575 - #:: map f1 clear_terminal reset active 2576 - #:: # Clear the terminal screen by erasing all contents 2577 - #:: map f1 clear_terminal clear active 2578 - #:: # Clear the terminal scrollback by erasing it 2579 - #:: map f1 clear_terminal scrollback active 2580 - #:: # Scroll the contents of the screen into the scrollback 2581 - #:: map f1 clear_terminal scroll active 2582 - #:: # Clear everything on screen up to the line with the cursor or the start of the current prompt (needs shell integration) 2583 - #:: map f1 clear_terminal to_cursor active 2584 - #:: # Same as above except cleared lines are moved into scrollback 2585 - #:: map f1 clear_terminal to_cursor_scroll active 2586 - 2587 - #:: If you want to operate on all kitty windows instead of just the 2588 - #:: current one, use all instead of active. 2589 - 2590 - #:: Some useful functions that can be defined in the shell rc files 2591 - #:: to perform various kinds of clearing of the current window: 2592 - 2593 - #:: .. code-block:: sh 2594 - 2595 - #:: clear-only-screen() { 2596 - #:: printf "\e[H\e[2J" 2597 - #:: } 2598 - 2599 - #:: clear-screen-and-scrollback() { 2600 - #:: printf "\e[H\e[3J" 2601 - #:: } 2602 - 2603 - #:: clear-screen-saving-contents-in-scrollback() { 2604 - #:: printf "\e[H\e[22J" 2605 - #:: } 2606 - 2607 - #:: For instance, using these escape codes, it is possible to remap 2608 - #:: Ctrl+L to both scroll the current screen contents into the 2609 - #:: scrollback buffer and clear the screen, instead of just clearing 2610 - #:: the screen. For ZSH, in ~/.zshrc, add: 2611 - 2612 - #:: .. code-block:: zsh 2613 - 2614 - #:: ctrl_l() { 2615 - #:: builtin print -rn -- $'\r\e[0J\e[H\e[22J' >"$TTY" 2616 - #:: builtin zle .reset-prompt 2617 - #:: builtin zle -R 2618 - #:: } 2619 - #:: zle -N ctrl_l 2620 - #:: bindkey '^l' ctrl_l 2621 - 2622 - #:: Alternatively, you can just add map ctrl+l clear_terminal 2623 - #:: to_cursor_scroll active to kitty.conf which works with no changes 2624 - #:: to the shell rc files, but only clears up to the prompt, it does 2625 - #:: not clear any text at the prompt itself. 2626 - 2627 - #: Clear to start 2628 - 2629 - # map cmd+k clear_terminal to_cursor active 2630 - 2631 - #: Clear scrollback 2632 - 2633 - # map option+cmd+k clear_terminal scrollback active 2634 - 2635 - #: Clear screen 2636 - 2637 - # map cmd+ctrl+l clear_terminal to_cursor_scroll active 2638 - 2639 - #: Reload kitty.conf 2640 - 2641 - # map kitty_mod+f5 load_config_file 2642 - # map ctrl+cmd+, load_config_file 2643 - 2644 - #:: Reload kitty.conf, applying any changes since the last time it 2645 - #:: was loaded. Note that a handful of options cannot be dynamically 2646 - #:: changed and require a full restart of kitty. Particularly, when 2647 - #:: changing shortcuts for actions located on the macOS global menu 2648 - #:: bar, a full restart is needed. You can also map a keybinding to 2649 - #:: load a different config file, for example:: 2650 - 2651 - #:: map f5 load_config /path/to/alternative/kitty.conf 2652 - 2653 - #:: Note that all options from the original kitty.conf are discarded, 2654 - #:: in other words the new configuration *replace* the old ones. 2655 - 2656 - #: Debug kitty configuration 2657 - 2658 - # map kitty_mod+f6 debug_config 2659 - # map opt+cmd+, debug_config 2660 - 2661 - #:: Show details about exactly what configuration kitty is running 2662 - #:: with and its host environment. Useful for debugging issues. 2663 - 2664 - #: Send arbitrary text on key presses 2665 - 2666 - #:: E.g. map ctrl+shift+alt+h send_text all Hello World 2667 - 2668 - #:: You can tell kitty to send arbitrary (UTF-8) encoded text to the 2669 - #:: client program when pressing specified shortcut keys. For 2670 - #:: example:: 2671 - 2672 - #:: map ctrl+alt+a send_text all Special text 2673 - 2674 - #:: This will send "Special text" when you press the Ctrl+Alt+A key 2675 - #:: combination. The text to be sent decodes ANSI C escapes 2676 - #:: <https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC- 2677 - #:: Quoting.html> so you can use escapes like \e to send control 2678 - #:: codes or \u21fb to send Unicode characters (or you can just input 2679 - #:: the Unicode characters directly as UTF-8 text). You can use 2680 - #:: `kitten show-key` to get the key escape codes you want to 2681 - #:: emulate. 2682 - 2683 - #:: The first argument to send_text is the keyboard modes in which to 2684 - #:: activate the shortcut. The possible values are normal, 2685 - #:: application, kitty or a comma separated combination of them. The 2686 - #:: modes normal and application refer to the DECCKM cursor key mode 2687 - #:: for terminals, and kitty refers to the kitty extended keyboard 2688 - #:: protocol. The special value all means all of them. 2689 - 2690 - #:: Some more examples:: 2691 - 2692 - #:: # Output a word and move the cursor to the start of the line (like typing and pressing Home) 2693 - #:: map ctrl+alt+a send_text normal Word\e[H 2694 - #:: map ctrl+alt+a send_text application Word\eOH 2695 - #:: # Run a command at a shell prompt (like typing the command and pressing Enter) 2696 - #:: map ctrl+alt+a send_text normal,application some command with arguments\r 2697 - 2698 - #: Open kitty Website 2699 - 2700 - # map shift+cmd+/ open_url https://sw.kovidgoyal.net/kitty/ 2701 - 2702 - #: Hide macOS kitty application 2703 - 2704 - # map cmd+h hide_macos_app 2705 - 2706 - #: Hide macOS other applications 2707 - 2708 - # map opt+cmd+h hide_macos_other_apps 2709 - 2710 - #: Minimize macOS window 2711 - 2712 - # map cmd+m minimize_macos_window 2713 - 2714 - #: Quit kitty 2715 - 2716 - # map cmd+q quit 2717 - 2718 - #: }}} 2719 - 2720 - #: }}}
+1 -1
window_manager/.config/waybar/scripts/toggle_eww_window.sh
··· 1 - #!/bin/bash 1 + #!/bin/sh 2 2 3 3 stringContain() { case $2 in *$1* ) return 0;; *) return 1;; esac ;} 4 4
+1 -1
window_manager/.config/waypaper/config.ini
··· 2 2 language = en 3 3 folder = ~/.config/wallpaper 4 4 wallpaper = ~/.config/wallpaper/wallpaper.jpg 5 - backend = hyprpaper 5 + backend = swww 6 6 monitors = All 7 7 show_path_in_tooltip = True 8 8 fill = fill
+6 -4
window_manager/README.md
··· 3 3 ## Dependencies: 4 4 5 5 Mandatory: 6 - - `waybar` - top bar 7 - - `fuzzel` - app launcher 6 + - `vicinae` - app launcher 7 + - `ghostty` - terminal 8 + - ~~Hyprland - my tiling WM of choice~~ Not using tiling WMs anymore; Gnome is too polished to refuse 9 + 10 + ### To make Hyprland config work 8 11 - `waypaper` and `hyprpaper` - for the wallpaper 9 - - `kitty` - terminal 10 - - Hyprland - my tiling WM of choice 12 + - `waybar` - top bar 11 13 - `nm-applet` - applet for controlling Wi-Fi 12 14 - `blueman` - Bluetooth stuff 13 15 - [Pwvucontrol](https://flathub.org/apps/com.saivert.pwvucontrol) from Flathub - to control audio devices
+4
yazi/.config/yazi/yazi.toml
··· 1 + [open] 2 + rules = [ 3 + { mime = "{audio,video}/*", use = [ "open", "play", "reveal" ] }, 4 + ]
+547
zellij/.config/zellij/config.kdl
··· 1 + keybinds clear-defaults=true { 2 + locked { 3 + bind "Ctrl g" { SwitchToMode "normal"; } 4 + } 5 + pane { 6 + bind "left" { MoveFocus "left"; } 7 + bind "down" { MoveFocus "down"; } 8 + bind "up" { MoveFocus "up"; } 9 + bind "right" { MoveFocus "right"; } 10 + bind "c" { SwitchToMode "renamepane"; PaneNameInput 0; } 11 + bind "d" { NewPane "down"; SwitchToMode "normal"; } 12 + bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "normal"; } 13 + bind "f" { ToggleFocusFullscreen; SwitchToMode "normal"; } 14 + bind "h" { MoveFocus "left"; } 15 + bind "i" { TogglePanePinned; SwitchToMode "normal"; } 16 + bind "j" { MoveFocus "down"; } 17 + bind "k" { MoveFocus "up"; } 18 + bind "l" { MoveFocus "right"; } 19 + bind "n" { NewPane; SwitchToMode "normal"; } 20 + bind "p" { SwitchFocus; } 21 + bind "Ctrl p" { SwitchToMode "normal"; } 22 + bind "r" { NewPane "right"; SwitchToMode "normal"; } 23 + bind "s" { NewPane "stacked"; SwitchToMode "normal"; } 24 + bind "w" { ToggleFloatingPanes; SwitchToMode "normal"; } 25 + bind "z" { TogglePaneFrames; SwitchToMode "normal"; } 26 + } 27 + tab { 28 + bind "left" { GoToPreviousTab; } 29 + bind "down" { GoToNextTab; } 30 + bind "up" { GoToPreviousTab; } 31 + bind "right" { GoToNextTab; } 32 + bind "1" { GoToTab 1; SwitchToMode "normal"; } 33 + bind "2" { GoToTab 2; SwitchToMode "normal"; } 34 + bind "3" { GoToTab 3; SwitchToMode "normal"; } 35 + bind "4" { GoToTab 4; SwitchToMode "normal"; } 36 + bind "5" { GoToTab 5; SwitchToMode "normal"; } 37 + bind "6" { GoToTab 6; SwitchToMode "normal"; } 38 + bind "7" { GoToTab 7; SwitchToMode "normal"; } 39 + bind "8" { GoToTab 8; SwitchToMode "normal"; } 40 + bind "9" { GoToTab 9; SwitchToMode "normal"; } 41 + bind "[" { BreakPaneLeft; SwitchToMode "normal"; } 42 + bind "]" { BreakPaneRight; SwitchToMode "normal"; } 43 + bind "b" { BreakPane; SwitchToMode "normal"; } 44 + bind "h" { GoToPreviousTab; } 45 + bind "j" { GoToNextTab; } 46 + bind "k" { GoToPreviousTab; } 47 + bind "l" { GoToNextTab; } 48 + bind "n" { NewTab; SwitchToMode "normal"; } 49 + bind "r" { SwitchToMode "renametab"; TabNameInput 0; } 50 + bind "s" { ToggleActiveSyncTab; SwitchToMode "normal"; } 51 + bind "Ctrl t" { SwitchToMode "normal"; } 52 + bind "x" { CloseTab; SwitchToMode "normal"; } 53 + bind "tab" { ToggleTab; } 54 + } 55 + resize { 56 + bind "left" { Resize "Increase left"; } 57 + bind "down" { Resize "Increase down"; } 58 + bind "up" { Resize "Increase up"; } 59 + bind "right" { Resize "Increase right"; } 60 + bind "+" { Resize "Increase"; } 61 + bind "-" { Resize "Decrease"; } 62 + bind "=" { Resize "Increase"; } 63 + bind "H" { Resize "Decrease left"; } 64 + bind "J" { Resize "Decrease down"; } 65 + bind "K" { Resize "Decrease up"; } 66 + bind "L" { Resize "Decrease right"; } 67 + bind "h" { Resize "Increase left"; } 68 + bind "j" { Resize "Increase down"; } 69 + bind "k" { Resize "Increase up"; } 70 + bind "l" { Resize "Increase right"; } 71 + bind "Ctrl n" { SwitchToMode "normal"; } 72 + } 73 + move { 74 + bind "left" { MovePane "left"; } 75 + bind "down" { MovePane "down"; } 76 + bind "up" { MovePane "up"; } 77 + bind "right" { MovePane "right"; } 78 + bind "h" { MovePane "left"; } 79 + bind "Ctrl h" { SwitchToMode "normal"; } 80 + bind "j" { MovePane "down"; } 81 + bind "k" { MovePane "up"; } 82 + bind "l" { MovePane "right"; } 83 + bind "n" { MovePane; } 84 + bind "p" { MovePaneBackwards; } 85 + bind "tab" { MovePane; } 86 + } 87 + scroll { 88 + bind "e" { EditScrollback; SwitchToMode "normal"; } 89 + bind "s" { SwitchToMode "entersearch"; SearchInput 0; } 90 + } 91 + search { 92 + bind "c" { SearchToggleOption "CaseSensitivity"; } 93 + bind "n" { Search "down"; } 94 + bind "o" { SearchToggleOption "WholeWord"; } 95 + bind "p" { Search "up"; } 96 + bind "w" { SearchToggleOption "Wrap"; } 97 + } 98 + session { 99 + bind "a" { 100 + LaunchOrFocusPlugin "zellij:about" { 101 + floating true 102 + move_to_focused_tab true 103 + } 104 + SwitchToMode "normal" 105 + } 106 + bind "c" { 107 + LaunchOrFocusPlugin "configuration" { 108 + floating true 109 + move_to_focused_tab true 110 + } 111 + SwitchToMode "normal" 112 + } 113 + bind "Ctrl o" { SwitchToMode "normal"; } 114 + bind "p" { 115 + LaunchOrFocusPlugin "plugin-manager" { 116 + floating true 117 + move_to_focused_tab true 118 + } 119 + SwitchToMode "normal" 120 + } 121 + bind "s" { 122 + LaunchOrFocusPlugin "zellij:share" { 123 + floating true 124 + move_to_focused_tab true 125 + } 126 + SwitchToMode "normal" 127 + } 128 + bind "w" { 129 + LaunchOrFocusPlugin "session-manager" { 130 + floating true 131 + move_to_focused_tab true 132 + } 133 + SwitchToMode "normal" 134 + } 135 + } 136 + shared_except "locked" { 137 + bind "Alt left" { MoveFocusOrTab "left"; } 138 + bind "Alt down" { MoveFocus "down"; } 139 + bind "Alt up" { MoveFocus "up"; } 140 + bind "Alt right" { MoveFocusOrTab "right"; } 141 + bind "Alt +" { Resize "Increase"; } 142 + bind "Alt -" { Resize "Decrease"; } 143 + bind "Alt =" { Resize "Increase"; } 144 + bind "Alt [" { PreviousSwapLayout; } 145 + bind "Alt ]" { NextSwapLayout; } 146 + bind "Alt f" { ToggleFloatingPanes; } 147 + bind "Ctrl g" { SwitchToMode "locked"; } 148 + bind "Alt h" { MoveFocusOrTab "left"; } 149 + bind "Alt i" { MoveTab "left"; } 150 + bind "Alt j" { MoveFocus "down"; } 151 + bind "Alt k" { MoveFocus "up"; } 152 + bind "Alt l" { MoveFocusOrTab "right"; } 153 + bind "Alt n" { NewPane; } 154 + bind "Alt o" { MoveTab "right"; } 155 + bind "Alt p" { TogglePaneInGroup; } 156 + bind "Alt Shift p" { ToggleGroupMarking; } 157 + bind "Ctrl q" { Quit; } 158 + } 159 + shared_except "locked" "move" { 160 + bind "Ctrl h" { SwitchToMode "move"; } 161 + } 162 + shared_except "locked" "session" { 163 + bind "Ctrl o" { SwitchToMode "session"; } 164 + } 165 + shared_except "locked" "scroll" "search" "tmux" { 166 + bind "Ctrl b" { SwitchToMode "tmux"; } 167 + } 168 + shared_except "locked" "scroll" "search" { 169 + bind "Ctrl s" { SwitchToMode "scroll"; } 170 + } 171 + shared_except "locked" "tab" { 172 + bind "Ctrl t" { SwitchToMode "tab"; } 173 + } 174 + shared_except "locked" "pane" { 175 + bind "Ctrl p" { SwitchToMode "pane"; } 176 + } 177 + shared_except "locked" "resize" { 178 + bind "Ctrl n" { SwitchToMode "resize"; } 179 + } 180 + shared_except "normal" "locked" "entersearch" { 181 + bind "enter" { SwitchToMode "normal"; } 182 + } 183 + shared_except "normal" "locked" "entersearch" "renametab" "renamepane" { 184 + bind "esc" { SwitchToMode "normal"; } 185 + } 186 + shared_among "pane" "tmux" { 187 + bind "x" { CloseFocus; SwitchToMode "normal"; } 188 + } 189 + shared_among "scroll" "search" { 190 + bind "PageDown" { PageScrollDown; } 191 + bind "PageUp" { PageScrollUp; } 192 + bind "left" { PageScrollUp; } 193 + bind "down" { ScrollDown; } 194 + bind "up" { ScrollUp; } 195 + bind "right" { PageScrollDown; } 196 + bind "Ctrl b" { PageScrollUp; } 197 + bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; } 198 + bind "d" { HalfPageScrollDown; } 199 + bind "Ctrl f" { PageScrollDown; } 200 + bind "h" { PageScrollUp; } 201 + bind "j" { ScrollDown; } 202 + bind "k" { ScrollUp; } 203 + bind "l" { PageScrollDown; } 204 + bind "Ctrl s" { SwitchToMode "normal"; } 205 + bind "u" { HalfPageScrollUp; } 206 + } 207 + entersearch { 208 + bind "Ctrl c" { SwitchToMode "scroll"; } 209 + bind "esc" { SwitchToMode "scroll"; } 210 + bind "enter" { SwitchToMode "search"; } 211 + } 212 + renametab { 213 + bind "esc" { UndoRenameTab; SwitchToMode "tab"; } 214 + } 215 + shared_among "renametab" "renamepane" { 216 + bind "Ctrl c" { SwitchToMode "normal"; } 217 + } 218 + renamepane { 219 + bind "esc" { UndoRenamePane; SwitchToMode "pane"; } 220 + } 221 + shared_among "session" "tmux" { 222 + bind "d" { Detach; } 223 + } 224 + tmux { 225 + bind "left" { MoveFocus "left"; SwitchToMode "normal"; } 226 + bind "down" { MoveFocus "down"; SwitchToMode "normal"; } 227 + bind "up" { MoveFocus "up"; SwitchToMode "normal"; } 228 + bind "right" { MoveFocus "right"; SwitchToMode "normal"; } 229 + bind "space" { NextSwapLayout; } 230 + bind "\"" { NewPane "down"; SwitchToMode "normal"; } 231 + bind "%" { NewPane "right"; SwitchToMode "normal"; } 232 + bind "," { SwitchToMode "renametab"; } 233 + bind "[" { SwitchToMode "scroll"; } 234 + bind "Ctrl b" { Write 2; SwitchToMode "normal"; } 235 + bind "c" { NewTab; SwitchToMode "normal"; } 236 + bind "h" { MoveFocus "left"; SwitchToMode "normal"; } 237 + bind "j" { MoveFocus "down"; SwitchToMode "normal"; } 238 + bind "k" { MoveFocus "up"; SwitchToMode "normal"; } 239 + bind "l" { MoveFocus "right"; SwitchToMode "normal"; } 240 + bind "n" { GoToNextTab; SwitchToMode "normal"; } 241 + bind "o" { FocusNextPane; } 242 + bind "p" { GoToPreviousTab; SwitchToMode "normal"; } 243 + bind "z" { ToggleFocusFullscreen; SwitchToMode "normal"; } 244 + } 245 + 246 + shared_except "scroll" { 247 + bind "Alt left" { MoveFocusOrTab "left"; } 248 + bind "Alt down" { MoveFocus "down"; } 249 + bind "Alt up" { MoveFocus "up"; } 250 + bind "Alt right" { MoveFocusOrTab "right"; } 251 + 252 + bind "Alt h" { MessagePlugin { name "nvim_nav_left_tab"; payload "27,104"; }; } 253 + bind "Alt j" { MessagePlugin { name "nvim_nav_down"; payload "27,106"; }; } 254 + bind "Alt k" { MessagePlugin { name "nvim_nav_up"; payload "27,107"; }; } 255 + bind "Alt l" { MessagePlugin { name "nvim_nav_right_tab"; payload "27,108"; }; } 256 + } 257 + } 258 + 259 + // Plugin aliases - can be used to change the implementation of Zellij 260 + // changing these requires a restart to take effect 261 + plugins { 262 + about location="zellij:about" 263 + compact-bar location="zellij:compact-bar" 264 + configuration location="zellij:configuration" 265 + filepicker location="zellij:strider" { 266 + cwd "/" 267 + } 268 + plugin-manager location="zellij:plugin-manager" 269 + session-manager location="zellij:session-manager" 270 + status-bar location="zellij:status-bar" 271 + strider location="zellij:strider" 272 + tab-bar location="zellij:tab-bar" 273 + welcome-screen location="zellij:session-manager" { 274 + welcome_screen true 275 + } 276 + 277 + zellij-nvim location="https://github.com/sharph/zellij-nvim-nav-plugin/releases/download/v1.0.0/zellij-nvim-nav-plugin.wasm" // TODO: make it local when relative paths arrive 278 + } 279 + 280 + // Plugins to load in the background when a new session starts 281 + // eg. "file:/path/to/my-plugin.wasm" 282 + // eg. "https://example.com/my-plugin.wasm" 283 + load_plugins { 284 + zellij-nvim 285 + } 286 + web_client { 287 + font "monospace" 288 + } 289 + 290 + // Use a simplified UI without special fonts (arrow glyphs) 291 + // Options: 292 + // - true 293 + // - false (Default) 294 + // 295 + simplified_ui true 296 + 297 + // Choose the theme that is specified in the themes section. 298 + // Default: default 299 + // 300 + theme "gruvbox-dark" 301 + 302 + // Choose the base input mode of zellij. 303 + // Default: normal 304 + // 305 + // default_mode "locked" 306 + 307 + // Choose the path to the default shell that zellij will use for opening new panes 308 + // Default: $SHELL 309 + // 310 + // default_shell "fish" 311 + 312 + // Choose the path to override cwd that zellij will use for opening new panes 313 + // 314 + // default_cwd "/tmp" 315 + 316 + // The name of the default layout to load on startup 317 + // Default: "default" 318 + // 319 + // default_layout "compact" 320 + 321 + // The folder in which Zellij will look for layouts 322 + // (Requires restart) 323 + // 324 + // layout_dir "/tmp" 325 + 326 + // The folder in which Zellij will look for themes 327 + // (Requires restart) 328 + // 329 + // theme_dir "/tmp" 330 + 331 + // Toggle enabling the mouse mode. 332 + // On certain configurations, or terminals this could 333 + // potentially interfere with copying text. 334 + // Options: 335 + // - true (default) 336 + // - false 337 + // 338 + // mouse_mode false 339 + 340 + // Toggle having pane frames around the panes 341 + // Options: 342 + // - true (default, enabled) 343 + // - false 344 + // 345 + // pane_frames false 346 + 347 + // When attaching to an existing session with other users, 348 + // should the session be mirrored (true) 349 + // or should each user have their own cursor (false) 350 + // (Requires restart) 351 + // Default: false 352 + // 353 + // mirror_session true 354 + 355 + // Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP 356 + // eg. when terminal window with an active zellij session is closed 357 + // (Requires restart) 358 + // Options: 359 + // - detach (Default) 360 + // - quit 361 + // 362 + // on_force_close "quit" 363 + 364 + // Configure the scroll back buffer size 365 + // This is the number of lines zellij stores for each pane in the scroll back 366 + // buffer. Excess number of lines are discarded in a FIFO fashion. 367 + // (Requires restart) 368 + // Valid values: positive integers 369 + // Default value: 10000 370 + // 371 + // scroll_buffer_size 10000 372 + 373 + // Provide a command to execute when copying text. The text will be piped to 374 + // the stdin of the program to perform the copy. This can be used with 375 + // terminal emulators which do not support the OSC 52 ANSI control sequence 376 + // that will be used by default if this option is not set. 377 + // Examples: 378 + // 379 + // copy_command "xclip -selection clipboard" // x11 380 + // copy_command "wl-copy" // wayland 381 + // copy_command "pbcopy" // osx 382 + // 383 + // copy_command "pbcopy" 384 + 385 + // Choose the destination for copied text 386 + // Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard. 387 + // Does not apply when using copy_command. 388 + // Options: 389 + // - system (default) 390 + // - primary 391 + // 392 + // copy_clipboard "primary" 393 + 394 + // Enable automatic copying (and clearing) of selection when releasing mouse 395 + // Default: true 396 + // 397 + // copy_on_select true 398 + 399 + // Path to the default editor to use to edit pane scrollbuffer 400 + // Default: $EDITOR or $VISUAL 401 + // scrollback_editor "/usr/bin/vim" 402 + 403 + // A fixed name to always give the Zellij session. 404 + // Consider also setting `attach_to_session true,` 405 + // otherwise this will error if such a session exists. 406 + // Default: <RANDOM> 407 + // 408 + // session_name "My singleton session" 409 + 410 + // When `session_name` is provided, attaches to that session 411 + // if it is already running or creates it otherwise. 412 + // Default: false 413 + // 414 + // attach_to_session true 415 + 416 + // Toggle between having Zellij lay out panes according to a predefined set of layouts whenever possible 417 + // Options: 418 + // - true (default) 419 + // - false 420 + // 421 + // auto_layout false 422 + 423 + // Whether sessions should be serialized to the cache folder (including their tabs/panes, cwds and running commands) so that they can later be resurrected 424 + // Options: 425 + // - true (default) 426 + // - false 427 + // 428 + // session_serialization false 429 + 430 + // Whether pane viewports are serialized along with the session, default is false 431 + // Options: 432 + // - true 433 + // - false (default) 434 + // 435 + // serialize_pane_viewport false 436 + 437 + // Scrollback lines to serialize along with the pane viewport when serializing sessions, 0 438 + // defaults to the scrollback size. If this number is higher than the scrollback size, it will 439 + // also default to the scrollback size. This does nothing if `serialize_pane_viewport` is not true. 440 + // 441 + // scrollback_lines_to_serialize 10000 442 + 443 + // Enable or disable the rendering of styled and colored underlines (undercurl). 444 + // May need to be disabled for certain unsupported terminals 445 + // (Requires restart) 446 + // Default: true 447 + // 448 + // styled_underlines false 449 + 450 + // How often in seconds sessions are serialized 451 + // 452 + // serialization_interval 10000 453 + 454 + // Enable or disable writing of session metadata to disk (if disabled, other sessions might not know 455 + // metadata info on this session) 456 + // (Requires restart) 457 + // Default: false 458 + // 459 + // disable_session_metadata false 460 + 461 + // Enable or disable support for the enhanced Kitty Keyboard Protocol (the host terminal must also support it) 462 + // (Requires restart) 463 + // Default: true (if the host terminal supports it) 464 + // 465 + // support_kitty_keyboard_protocol false 466 + // Whether to make sure a local web server is running when a new Zellij session starts. 467 + // This web server will allow creating new sessions and attaching to existing ones that have 468 + // opted in to being shared in the browser. 469 + // When enabled, navigate to http://127.0.0.1:8082 470 + // (Requires restart) 471 + // 472 + // Note: a local web server can still be manually started from within a Zellij session or from the CLI. 473 + // If this is not desired, one can use a version of Zellij compiled without 474 + // `web_server_capability` 475 + // 476 + // Possible values: 477 + // - true 478 + // - false 479 + // Default: false 480 + // 481 + // web_server false 482 + // Whether to allow sessions started in the terminal to be shared through a local web server, assuming one is 483 + // running (see the `web_server` option for more details). 484 + // (Requires restart) 485 + // 486 + // Note: This is an administrative separation and not intended as a security measure. 487 + // 488 + // Possible values: 489 + // - "on" (allow web sharing through the local web server if it 490 + // is online) 491 + // - "off" (do not allow web sharing unless sessions explicitly opt-in to it) 492 + // - "disabled" (do not allow web sharing and do not permit sessions started in the terminal to opt-in to it) 493 + // Default: "off" 494 + // 495 + // web_sharing "off" 496 + // A path to a certificate file to be used when setting up the web client to serve the 497 + // connection over HTTPs 498 + // 499 + // web_server_cert "/path/to/cert.pem" 500 + // A path to a key file to be used when setting up the web client to serve the 501 + // connection over HTTPs 502 + // 503 + // web_server_key "/path/to/key.pem" 504 + /// Whether to enforce https connections to the web server when it is bound to localhost 505 + /// (127.0.0.0/8) 506 + /// 507 + /// Note: https is ALWAYS enforced when bound to non-local interfaces 508 + /// 509 + /// Default: false 510 + // 511 + // enforce_https_for_localhost false 512 + 513 + // Whether to stack panes when resizing beyond a certain size 514 + // Default: true 515 + // 516 + // stacked_resize false 517 + 518 + // Whether to show tips on startup 519 + // Default: true 520 + // 521 + // show_startup_tips false 522 + 523 + // Whether to show release notes on first version run 524 + // Default: true 525 + // 526 + // show_release_notes false 527 + 528 + // Whether to enable mouse hover effects and pane grouping functionality 529 + // default is true 530 + // advanced_mouse_actions false 531 + 532 + // The ip address the web server should listen on when it starts 533 + // Default: "127.0.0.1" 534 + // (Requires restart) 535 + // web_server_ip "127.0.0.1" 536 + 537 + // The port the web server should listen on when it starts 538 + // Default: 8082 539 + // (Requires restart) 540 + // web_server_port 8082 541 + 542 + // A command to run (will be wrapped with sh -c and provided the RESURRECT_COMMAND env variable) 543 + // after Zellij attempts to discover a command inside a pane when resurrecting sessions, the STDOUT 544 + // of this command will be used instead of the discovered RESURRECT_COMMAND 545 + // can be useful for removing wrappers around commands 546 + // Note: be sure to escape backslashes and similar characters properly 547 + // post_command_discovery_hook "echo $RESURRECT_COMMAND | sed <your_regex_here>"