Bohdan's terminal configuration

Compare changes

Choose any two refs to compare.

Changed files
+538 -2830
ghostty
.config
ghostty
nixos
home
hosts
bpavuk-nixos
users
nvim
.config
window_manager
.config
fuzzel
hypr
hyprland
kitty
yazi
.config
yazi
+60 -9
flake.lock
··· 7 7 ] 8 8 }, 9 9 "locked": { 10 - "lastModified": 1764839789, 11 - "narHash": "sha256-QCgaXEj8036JlfyVM2e5fgKIxoF7IgGRcAi8LkehKvo=", 10 + "lastModified": 1767104570, 11 + "narHash": "sha256-GKgwu5//R+cLdKysZjGqvUEEOGXXLdt93sNXeb2M/Lk=", 12 12 "owner": "nix-community", 13 13 "repo": "home-manager", 14 - "rev": "d441981b200305ebb8e2e2921395f51d207fded6", 14 + "rev": "e4e78a2cbeaddd07ab7238971b16468cc1d14daf", 15 15 "type": "github" 16 16 }, 17 17 "original": { ··· 22 22 }, 23 23 "nixpkgs": { 24 24 "locked": { 25 - "lastModified": 1764667669, 26 - "narHash": "sha256-7WUCZfmqLAssbDqwg9cUDAXrSoXN79eEEq17qhTNM/Y=", 25 + "lastModified": 1767116409, 26 + "narHash": "sha256-5vKw92l1GyTnjoLzEagJy5V5mDFck72LiQWZSOnSicw=", 27 27 "owner": "nixos", 28 28 "repo": "nixpkgs", 29 - "rev": "418468ac9527e799809c900eda37cbff999199b6", 29 + "rev": "cad22e7d996aea55ecab064e84834289143e44a0", 30 30 "type": "github" 31 31 }, 32 32 "original": { ··· 36 36 "type": "github" 37 37 } 38 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 + }, 39 55 "root": { 40 56 "inputs": { 41 57 "home-manager": "home-manager", 42 58 "nixpkgs": "nixpkgs", 59 + "vicinae": "vicinae", 43 60 "zen-browser": "zen-browser" 44 61 } 45 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 + }, 46 97 "zen-browser": { 47 98 "inputs": { 48 99 "home-manager": [ ··· 53 104 ] 54 105 }, 55 106 "locked": { 56 - "lastModified": 1764825646, 57 - "narHash": "sha256-QkKEkj3GXpkPxJz9S1RgaMlxstkyaj5IKVWvxIbtC8w=", 107 + "lastModified": 1767325268, 108 + "narHash": "sha256-pfcdocdj2IChXdIwOdUSqP/uXa3JyphrUw+9fIPg5C8=", 58 109 "owner": "0xc000022070", 59 110 "repo": "zen-browser-flake", 60 - "rev": "8c9284cc227a5c7cd8f1e1fa7a6882b0907187c8", 111 + "rev": "ddc559d690ea07092d9c1fa52ead35394a613c80", 61 112 "type": "github" 62 113 }, 63 114 "original": {
+8 -1
flake.nix
··· 16 16 home-manager.follows = "home-manager"; 17 17 }; 18 18 }; 19 + 20 + vicinae = { 21 + url = "github:vicinaehq/vicinae"; 22 + }; 19 23 }; 20 24 21 - outputs = { self, nixpkgs, home-manager, zen-browser, ... }@inputs: 25 + outputs = { self, nixpkgs, home-manager, zen-browser, vicinae, ... }@inputs: 22 26 let 23 27 system = "x86_64-linux"; 24 28 in ··· 34 38 35 39 home-manager.extraSpecialArgs = { 36 40 zen-browser = zen-browser; 41 + vicinae = vicinae; 37 42 }; 38 43 } 39 44 ]; ··· 41 46 42 47 homeConfigurations."bpavuk" = home-manager.lib.homeManagerConfiguration { 43 48 modules = [ 49 + vicinae.homeManagerModules.default 50 + 44 51 ./nixos/users/bpavuk.nix 45 52 { programs.home-manager.enable = true; } 46 53 ];
+2
ghostty/.config/ghostty/config
··· 51 51 window-decoration = none 52 52 53 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 + }
+30 -16
nixos/home/life/default.nix
··· 5 5 ./creativity.nix 6 6 ./gaming.nix 7 7 ./gnome.nix 8 - ./hyprland 8 + # ./hyprland 9 9 ./music 10 10 ./ghostty 11 11 ]; ··· 18 18 19 19 discord 20 20 signal-desktop-bin 21 + gpu-screen-recorder-gtk 21 22 22 23 qbittorrent 23 24 ··· 31 32 gpg-tui 32 33 pinentry-all 33 34 cryptsetup 35 + 36 + # Nix Helper 37 + nh 38 + 39 + # RSS reader 40 + newsflash 34 41 ]; 35 42 36 - # an unorthodox file manager 37 - programs.nnn = { 43 + services.vicinae = { 38 44 enable = true; 39 - package = pkgs.nnn.override { 40 - withNerdIcons = true; 45 + systemd = { 46 + autoStart = true; 41 47 }; 42 - plugins = { 43 - src = (pkgs.fetchFromGitHub { 44 - owner = "jarun"; 45 - repo = "nnn"; 46 - rev = "v5.1"; 47 - sha256 = "sha256-+2lFFBtaqRPBkEspCFtKl9fllbSR5MBB+4ks3Xh7vp4="; 48 - }) + "/plugins"; 48 + }; 49 49 50 - mappings = { 51 - p = "preview-tui"; 52 - }; 53 - }; 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; 54 60 }; 55 61 56 62 services.gpg-agent = { ··· 64 70 ''; 65 71 66 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 + }; 67 81 }
+1
nixos/home/life/gnome.nix
··· 9 9 { package = dock-from-dash; } 10 10 { package = appindicator; } 11 11 { package = gsconnect; } 12 + { package = vicinae; } 12 13 ]; 13 14 }; 14 15
-8
nixos/home/life/hyprland/default.nix
··· 4 4 imports = [ 5 5 ./swww_waypaper.nix 6 6 ./waybar.nix 7 - ./kitty.nix 8 7 ]; 9 - 10 - home.pointerCursor = { 11 - gtk.enable = true; 12 - 13 - package = pkgs.adwaita-icon-theme; 14 - name = "Adwaita"; 15 - }; 16 8 17 9 wayland.windowManager.hyprland = { 18 10 enable = true;
-10
nixos/home/life/hyprland/kitty.nix
··· 1 - { pkgs, lib, config, ... }: 2 - 3 - { 4 - programs.kitty.enable = true; 5 - 6 - xdg.configFile."kitty/" = { 7 - source = ../../../../window_manager/.config/kitty; 8 - recursive = true; 9 - }; 10 - }
+1
nixos/hosts/bpavuk-nixos/default.nix
··· 9 9 ./hardware-configuration.nix 10 10 ../common.nix 11 11 ../virtualization.nix 12 + ../cachix.nix 12 13 ../../desktop/gnome.nix 13 14 ../../desktop/hyprland.nix 14 15 ./networking.nix
+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 + }
+3 -1
nixos/users/bpavuk.nix
··· 1 - { config, pkgs, lib, zen-browser, ... }: 1 + { config, pkgs, lib, zen-browser, vicinae, ... }: 2 2 3 3 { 4 4 home.username = "bpavuk"; ··· 26 26 }; 27 27 28 28 imports = [ 29 + vicinae.homeManagerModules.default 30 + 29 31 (import ../home/development { inherit config pkgs lib; }) 30 32 (import ../home/fonts { inherit config pkgs lib; }) 31 33 (import ../home/utils.nix { inherit config pkgs lib; })
+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"
+32 -4
nvim/.config/nvim/lua/chadrc.lua
··· 9 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
+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 = "๏ƒถ",
+2
nvim/.config/nvim/lua/options.lua
··· 10 10 command = "checktime", 11 11 }) 12 12 13 + vim.wo.relativenumber = true 14 +
+14 -1
nvim/.config/nvim/lua/plugins/init.lua
··· 40 40 41 41 { 42 42 "nvim-treesitter/nvim-treesitter", 43 + lazy = false, 44 + build = ":TSUpdate", 43 45 opts = { 44 46 ensure_installed = { 45 47 -- Neovim ··· 53 55 "javascript", 54 56 "typescript", 55 57 "svelte", 56 - -- :clown: 58 + -- ๐Ÿคก 57 59 "python", 58 60 -- Proper development 59 61 "markdown", ··· 66 68 -- eww 67 69 "yuck", 68 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 = "๓ฐ”Ÿ", 69 82 }, 70 83 }, 71 84 }
+6
nvim/.config/nvim/lua/plugins/wakatime.lua
··· 1 + return { 2 + { 3 + 'wakatime/vim-wakatime', 4 + lazy = false, 5 + } 6 + }
-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
+1 -1
window_manager/.config/hypr/hyprland/apps.conf
··· 1 1 $terminal = kitty 2 2 $fileManager = dolphin 3 - $menu = fuzzel 3 + $menu = vicinae 4 4 $browser = zen 5 5
-2753
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 - Everblush {{{ 1271 - 1272 - # Base colors 1273 - foreground #dadada 1274 - background #141b1e 1275 - selection_foreground #dadada 1276 - selection_background #2d3437 1277 - 1278 - # Cursor colors 1279 - cursor #2d3437 1280 - cursor_text_color #dadada 1281 - 1282 - # Normal colors 1283 - color0 #232a2d 1284 - color1 #e57474 1285 - color2 #8ccf7e 1286 - color3 #e5c76b 1287 - color4 #67b0e8 1288 - color5 #c47fd5 1289 - color6 #6cbfbf 1290 - color7 #b3b9b8 1291 - 1292 - # Bright colors 1293 - color8 #2d3437 1294 - color9 #ef7e7e 1295 - color10 #96d988 1296 - color11 #f4d67a 1297 - color12 #71baf2 1298 - color13 #ce89df 1299 - color14 #67cbe7 1300 - color15 #bdc3c2 1301 - 1302 - # Tab colors 1303 - active_tab_foreground #e182e0 1304 - active_tab_background #1b2224 1305 - inactive_tab_foreground #cd69cc 1306 - inactive_tab_background #232a2c 1307 - 1308 - #: The foreground and background colors. 1309 - 1310 - background_opacity 0.9 1311 - 1312 - #: The opacity of the background. A number between zero and one, where 1313 - #: one is opaque and zero is fully transparent. This will only work if 1314 - #: supported by the OS (for instance, when using a compositor under 1315 - #: X11). Note that it only sets the background color's opacity in 1316 - #: cells that have the same background color as the default terminal 1317 - #: background, so that things like the status bar in vim, powerline 1318 - #: prompts, etc. still look good. But it means that if you use a color 1319 - #: theme with a background color in your editor, it will not be 1320 - #: rendered as transparent. Instead you should change the default 1321 - #: background color in your kitty config and not use a background 1322 - #: color in the editor color scheme. Or use the escape codes to set 1323 - #: the terminals default colors in a shell script to launch your 1324 - #: editor. See also transparent_background_colors. Be aware that using 1325 - #: a value less than 1.0 is a (possibly significant) performance hit. 1326 - #: When using a low value for this setting, it is desirable that you 1327 - #: set the background color to a color the matches the general color 1328 - #: of the desktop background, for best text rendering. Note that to 1329 - #: workaround window managers not doing gamma-corrected blending kitty 1330 - #: makes background_opacity non-linear which means, especially for 1331 - #: light backgrounds you might need to make the value much lower than 1332 - #: you expect to get good results, see 6218 1333 - #: <https://github.com/kovidgoyal/kitty/issues/6218> for details. 1334 - 1335 - #: If you want to dynamically change transparency of windows, set 1336 - #: dynamic_background_opacity to yes (this is off by default as it has 1337 - #: a performance cost). Changing this option when reloading the config 1338 - #: will only work if dynamic_background_opacity was enabled in the 1339 - #: original config. 1340 - 1341 - # background_blur 0 1342 - 1343 - #: Set to a positive value to enable background blur (blurring of the 1344 - #: visuals behind a transparent window) on platforms that support it. 1345 - #: Only takes effect when background_opacity is less than one. On 1346 - #: macOS, this will also control the blur radius (amount of blurring). 1347 - #: Setting it to too high a value will cause severe performance issues 1348 - #: and/or rendering artifacts. Usually, values up to 64 work well. 1349 - #: Note that this might cause performance issues, depending on how the 1350 - #: platform implements it, so use with care. Currently supported on 1351 - #: macOS and KDE. 1352 - 1353 - # background_image none 1354 - 1355 - #: Path to a background image. Must be in PNG/JPEG/WEBP/TIFF/GIF/BMP 1356 - #: format. 1357 - 1358 - # background_image_layout tiled 1359 - 1360 - #: Whether to tile, scale or clamp the background image. The value can 1361 - #: be one of tiled, mirror-tiled, scaled, clamped, centered or 1362 - #: cscaled. The scaled and cscaled values scale the image to the 1363 - #: window size, with cscaled preserving the image aspect ratio. 1364 - 1365 - # background_image_linear no 1366 - 1367 - #: When background image is scaled, whether linear interpolation 1368 - #: should be used. 1369 - 1370 - # transparent_background_colors 1371 - 1372 - #: A space separated list of upto 7 colors, with opacity. When the 1373 - #: background color of a cell matches one of these colors, it is 1374 - #: rendered semi-transparent using the specified opacity. 1375 - 1376 - #: Useful in more complex UIs like editors where you could want more 1377 - #: than a single background color to be rendered as transparent, for 1378 - #: instance, for a cursor highlight line background or a highlighted 1379 - #: block. Terminal applications can set this color using The kitty 1380 - #: color control <https://sw.kovidgoyal.net/kitty/color-stack/#color- 1381 - #: control> escape code. 1382 - 1383 - #: The syntax for specifying colors is: color@opacity, where the 1384 - #: @opacity part is optional. When unspecified, the value of 1385 - #: background_opacity is used. For example:: 1386 - 1387 - #: transparent_background_colors red@0.5 #00ff00@0.3 1388 - 1389 - # dynamic_background_opacity no 1390 - 1391 - #: Allow changing of the background_opacity dynamically, using either 1392 - #: keyboard shortcuts (increase_background_opacity and 1393 - #: decrease_background_opacity) or the remote control facility. 1394 - #: Changing this option by reloading the config is not supported. 1395 - 1396 - # background_tint 0.0 1397 - 1398 - #: How much to tint the background image by the background color. This 1399 - #: option makes it easier to read the text. Tinting is done using the 1400 - #: current background color for each window. This option applies only 1401 - #: if background_opacity is set and transparent windows are supported 1402 - #: or background_image is set. 1403 - 1404 - # background_tint_gaps 1.0 1405 - 1406 - #: How much to tint the background image at the window gaps by the 1407 - #: background color, after applying background_tint. Since this is 1408 - #: multiplicative with background_tint, it can be used to lighten the 1409 - #: tint over the window gaps for a *separated* look. 1410 - 1411 - # dim_opacity 0.4 1412 - 1413 - #: How much to dim text that has the DIM/FAINT attribute set. One 1414 - #: means no dimming and zero means fully dimmed (i.e. invisible). 1415 - 1416 - # selection_foreground #000000 1417 - # selection_background #fffacd 1418 - 1419 - #: The foreground and background colors for text selected with the 1420 - #: mouse. Setting both of these to none will cause a "reverse video" 1421 - #: effect for selections, where the selection will be the cell text 1422 - #: color and the text will become the cell background color. Setting 1423 - #: only selection_foreground to none will cause the foreground color 1424 - #: to be used unchanged. Note that these colors can be overridden by 1425 - #: the program running in the terminal. 1426 - 1427 - #: The color table {{{ 1428 - 1429 - #: The 256 terminal colors. There are 8 basic colors, each color has a 1430 - #: dull and bright version, for the first 16 colors. You can set the 1431 - #: remaining 240 colors as color16 to color255. 1432 - 1433 - # color0 #000000 1434 - # color8 #767676 1435 - 1436 - #: black 1437 - 1438 - # color1 #cc0403 1439 - # color9 #f2201f 1440 - 1441 - #: red 1442 - 1443 - # color2 #19cb00 1444 - # color10 #23fd00 1445 - 1446 - #: green 1447 - 1448 - # color3 #cecb00 1449 - # color11 #fffd00 1450 - 1451 - #: yellow 1452 - 1453 - # color4 #0d73cc 1454 - # color12 #1a8fff 1455 - 1456 - #: blue 1457 - 1458 - # color5 #cb1ed1 1459 - # color13 #fd28ff 1460 - 1461 - #: magenta 1462 - 1463 - # color6 #0dcdcd 1464 - # color14 #14ffff 1465 - 1466 - #: cyan 1467 - 1468 - # color7 #dddddd 1469 - # color15 #ffffff 1470 - 1471 - #: white 1472 - 1473 - # mark1_foreground black 1474 - 1475 - #: Color for marks of type 1 1476 - 1477 - # mark1_background #98d3cb 1478 - 1479 - #: Color for marks of type 1 (light steel blue) 1480 - 1481 - # mark2_foreground black 1482 - 1483 - #: Color for marks of type 2 1484 - 1485 - # mark2_background #f2dcd3 1486 - 1487 - #: Color for marks of type 1 (beige) 1488 - 1489 - # mark3_foreground black 1490 - 1491 - #: Color for marks of type 3 1492 - 1493 - # mark3_background #f274bc 1494 - 1495 - #: Color for marks of type 3 (violet) 1496 - 1497 - #: }}} 1498 - 1499 - #: }}} 1500 - 1501 - #: Advanced {{{ 1502 - 1503 - # shell . 1504 - 1505 - #: The shell program to execute. The default value of . means to use 1506 - #: the value of of the SHELL environment variable or if unset, 1507 - #: whatever shell is set as the default shell for the current user. 1508 - #: Note that on macOS if you change this, you might need to add 1509 - #: --login and --interactive to ensure that the shell starts in 1510 - #: interactive mode and reads its startup rc files. Environment 1511 - #: variables are expanded in this setting. 1512 - 1513 - # editor . 1514 - 1515 - #: The terminal based text editor (such as vim or nano) to use when 1516 - #: editing the kitty config file or similar tasks. 1517 - 1518 - #: The default value of . means to use the environment variables 1519 - #: VISUAL and EDITOR in that order. If these variables aren't set, 1520 - #: kitty will run your shell ($SHELL -l -i -c env) to see if your 1521 - #: shell startup rc files set VISUAL or EDITOR. If that doesn't work, 1522 - #: kitty will cycle through various known editors (vim, emacs, etc.) 1523 - #: and take the first one that exists on your system. 1524 - 1525 - # close_on_child_death no 1526 - 1527 - #: Close the window when the child process (usually the shell) exits. 1528 - #: With the default value no, the terminal will remain open when the 1529 - #: child exits as long as there are still other processes outputting 1530 - #: to the terminal (for example disowned or backgrounded processes). 1531 - #: When enabled with yes, the window will close as soon as the child 1532 - #: process exits. Note that setting it to yes means that any 1533 - #: background processes still using the terminal can fail silently 1534 - #: because their stdout/stderr/stdin no longer work. 1535 - 1536 - # remote_control_password 1537 - 1538 - #: Allow other programs to control kitty using passwords. This option 1539 - #: can be specified multiple times to add multiple passwords. If no 1540 - #: passwords are present kitty will ask the user for permission if a 1541 - #: program tries to use remote control with a password. A password can 1542 - #: also *optionally* be associated with a set of allowed remote 1543 - #: control actions. For example:: 1544 - 1545 - #: remote_control_password "my passphrase" get-colors set-colors focus-window focus-tab 1546 - 1547 - #: Only the specified actions will be allowed when using this 1548 - #: password. Glob patterns can be used too, for example:: 1549 - 1550 - #: remote_control_password "my passphrase" set-tab-* resize-* 1551 - 1552 - #: To get a list of available actions, run:: 1553 - 1554 - #: kitten @ --help 1555 - 1556 - #: A set of actions to be allowed when no password is sent can be 1557 - #: specified by using an empty password. For example:: 1558 - 1559 - #: remote_control_password "" *-colors 1560 - 1561 - #: Finally, the path to a python module can be specified that provides 1562 - #: a function is_cmd_allowed that is used to check every remote 1563 - #: control command. For example:: 1564 - 1565 - #: remote_control_password "my passphrase" my_rc_command_checker.py 1566 - 1567 - #: Relative paths are resolved from the kitty configuration directory. 1568 - #: See rc_custom_auth <https://sw.kovidgoyal.net/kitty/remote- 1569 - #: control/#rc-custom-auth> for details. 1570 - 1571 - # allow_remote_control no 1572 - 1573 - #: Allow other programs to control kitty. If you turn this on, other 1574 - #: programs can control all aspects of kitty, including sending text 1575 - #: to kitty windows, opening new windows, closing windows, reading the 1576 - #: content of windows, etc. Note that this even works over SSH 1577 - #: connections. The default setting of no prevents any form of remote 1578 - #: control. The meaning of the various values are: 1579 - 1580 - #: password 1581 - #: Remote control requests received over both the TTY device and the socket 1582 - #: are confirmed based on passwords, see remote_control_password. 1583 - 1584 - #: socket-only 1585 - #: Remote control requests received over a socket are accepted 1586 - #: unconditionally. Requests received over the TTY are denied. 1587 - #: See listen_on. 1588 - 1589 - #: socket 1590 - #: Remote control requests received over a socket are accepted 1591 - #: unconditionally. Requests received over the TTY are confirmed based on 1592 - #: password. 1593 - 1594 - #: no 1595 - #: Remote control is completely disabled. 1596 - 1597 - #: yes 1598 - #: Remote control requests are always accepted. 1599 - 1600 - # listen_on none 1601 - 1602 - #: Listen to the specified socket for remote control connections. Note 1603 - #: that this will apply to all kitty instances. It can be overridden 1604 - #: by the kitty --listen-on command line option. For UNIX sockets, 1605 - #: such as unix:${TEMP}/mykitty or unix:@mykitty (on Linux). 1606 - #: Environment variables are expanded and relative paths are resolved 1607 - #: with respect to the temporary directory. If {kitty_pid} is present, 1608 - #: then it is replaced by the PID of the kitty process, otherwise the 1609 - #: PID of the kitty process is appended to the value, with a hyphen. 1610 - #: For TCP sockets such as tcp:localhost:0 a random port is always 1611 - #: used even if a non-zero port number is specified. See the help for 1612 - #: kitty --listen-on for more details. Note that this will be ignored 1613 - #: unless allow_remote_control is set to either: yes, socket or 1614 - #: socket-only. Changing this option by reloading the config is not 1615 - #: supported. 1616 - 1617 - # env 1618 - 1619 - #: Specify the environment variables to be set in all child processes. 1620 - #: Using the name with an equal sign (e.g. env VAR=) will set it to 1621 - #: the empty string. Specifying only the name (e.g. env VAR) will 1622 - #: remove the variable from the child process' environment. Note that 1623 - #: environment variables are expanded recursively, for example:: 1624 - 1625 - #: env VAR1=a 1626 - #: env VAR2=${HOME}/${VAR1}/b 1627 - 1628 - #: The value of VAR2 will be <path to home directory>/a/b. 1629 - 1630 - # filter_notification 1631 - 1632 - #: Specify rules to filter out notifications sent by applications 1633 - #: running in kitty. Can be specified multiple times to create 1634 - #: multiple filter rules. A rule specification is of the form 1635 - #: field:regexp. A filter rule can match on any of the fields: title, 1636 - #: body, app, type. The special value of all filters out all 1637 - #: notifications. Rules can be combined using Boolean operators. Some 1638 - #: examples:: 1639 - 1640 - #: filter_notification title:hello or body:"abc.*def" 1641 - #: # filter out notification from vim except for ones about updates, (?i) 1642 - #: # makes matching case insensitive. 1643 - #: filter_notification app:"[ng]?vim" and not body:"(?i)update" 1644 - #: # filter out all notifications 1645 - #: filter_notification all 1646 - 1647 - #: The field app is the name of the application sending the 1648 - #: notification and type is the type of the notification. Not all 1649 - #: applications will send these fields, so you can also match on the 1650 - #: title and body of the notification text. More sophisticated 1651 - #: programmatic filtering and custom actions on notifications can be 1652 - #: done by creating a notifications.py file in the kitty config 1653 - #: directory (~/.config/kitty). An annotated sample is available 1654 - #: <https://github.com/kovidgoyal/kitty/blob/master/docs/notifications.py>. 1655 - 1656 - # watcher 1657 - 1658 - #: Path to python file which will be loaded for watchers 1659 - #: <https://sw.kovidgoyal.net/kitty/launch/#watchers>. Can be 1660 - #: specified more than once to load multiple watchers. The watchers 1661 - #: will be added to every kitty window. Relative paths are resolved 1662 - #: relative to the kitty config directory. Note that reloading the 1663 - #: config will only affect windows created after the reload. 1664 - 1665 - # exe_search_path 1666 - 1667 - #: Control where kitty finds the programs to run. The default search 1668 - #: order is: First search the system wide PATH, then ~/.local/bin and 1669 - #: ~/bin. If still not found, the PATH defined in the login shell 1670 - #: after sourcing all its startup files is tried. Finally, if present, 1671 - #: the PATH specified by the env option is tried. 1672 - 1673 - #: This option allows you to prepend, append, or remove paths from 1674 - #: this search order. It can be specified multiple times for multiple 1675 - #: paths. A simple path will be prepended to the search order. A path 1676 - #: that starts with the + sign will be append to the search order, 1677 - #: after ~/bin above. A path that starts with the - sign will be 1678 - #: removed from the entire search order. For example:: 1679 - 1680 - #: exe_search_path /some/prepended/path 1681 - #: exe_search_path +/some/appended/path 1682 - #: exe_search_path -/some/excluded/path 1683 - 1684 - # update_check_interval 24 1685 - 1686 - #: The interval to periodically check if an update to kitty is 1687 - #: available (in hours). If an update is found, a system notification 1688 - #: is displayed informing you of the available update. The default is 1689 - #: to check every 24 hours, set to zero to disable. Update checking is 1690 - #: only done by the official binary builds. Distro packages or source 1691 - #: builds do not do update checking. Changing this option by reloading 1692 - #: the config is not supported. 1693 - 1694 - # startup_session none 1695 - 1696 - #: Path to a session file to use for all kitty instances. Can be 1697 - #: overridden by using the kitty --session =none command line option 1698 - #: for individual instances. See sessions 1699 - #: <https://sw.kovidgoyal.net/kitty/overview/#sessions> in the kitty 1700 - #: documentation for details. Note that relative paths are interpreted 1701 - #: with respect to the kitty config directory. Environment variables 1702 - #: in the path are expanded. Changing this option by reloading the 1703 - #: config is not supported. Note that if kitty is invoked with command 1704 - #: line arguments specifying a command to run, this option is ignored. 1705 - 1706 - # clipboard_control write-clipboard write-primary read-clipboard-ask read-primary-ask 1707 - 1708 - #: Allow programs running in kitty to read and write from the 1709 - #: clipboard. You can control exactly which actions are allowed. The 1710 - #: possible actions are: write-clipboard, read-clipboard, write- 1711 - #: primary, read-primary, read-clipboard-ask, read-primary-ask. The 1712 - #: default is to allow writing to the clipboard and primary selection 1713 - #: and to ask for permission when a program tries to read from the 1714 - #: clipboard. Note that disabling the read confirmation is a security 1715 - #: risk as it means that any program, even the ones running on a 1716 - #: remote server via SSH can read your clipboard. See also 1717 - #: clipboard_max_size. 1718 - 1719 - # clipboard_max_size 512 1720 - 1721 - #: The maximum size (in MB) of data from programs running in kitty 1722 - #: that will be stored for writing to the system clipboard. A value of 1723 - #: zero means no size limit is applied. See also clipboard_control. 1724 - 1725 - # file_transfer_confirmation_bypass 1726 - 1727 - #: The password that can be supplied to the file transfer kitten 1728 - #: <https://sw.kovidgoyal.net/kitty/kittens/transfer/> to skip the 1729 - #: transfer confirmation prompt. This should only be used when 1730 - #: initiating transfers from trusted computers, over trusted networks 1731 - #: or encrypted transports, as it allows any programs running on the 1732 - #: remote machine to read/write to the local filesystem, without 1733 - #: permission. 1734 - 1735 - # allow_hyperlinks yes 1736 - 1737 - #: Process hyperlink escape sequences (OSC 8). If disabled OSC 8 1738 - #: escape sequences are ignored. Otherwise they become clickable 1739 - #: links, that you can click with the mouse or by using the hints 1740 - #: kitten <https://sw.kovidgoyal.net/kitty/kittens/hints/>. The 1741 - #: special value of ask means that kitty will ask before opening the 1742 - #: link when clicked. 1743 - 1744 - # shell_integration enabled 1745 - 1746 - #: Enable shell integration on supported shells. This enables features 1747 - #: such as jumping to previous prompts, browsing the output of the 1748 - #: previous command in a pager, etc. on supported shells. Set to 1749 - #: disabled to turn off shell integration, completely. It is also 1750 - #: possible to disable individual features, set to a space separated 1751 - #: list of these values: no-rc, no-cursor, no-title, no-cwd, no- 1752 - #: prompt-mark, no-complete, no-sudo. See Shell integration 1753 - #: <https://sw.kovidgoyal.net/kitty/shell-integration/> for details. 1754 - 1755 - # allow_cloning ask 1756 - 1757 - #: Control whether programs running in the terminal can request new 1758 - #: windows to be created. The canonical example is clone-in-kitty 1759 - #: <https://sw.kovidgoyal.net/kitty/shell-integration/#clone-shell>. 1760 - #: By default, kitty will ask for permission for each clone request. 1761 - #: Allowing cloning unconditionally gives programs running in the 1762 - #: terminal (including over SSH) permission to execute arbitrary code, 1763 - #: as the user who is running the terminal, on the computer that the 1764 - #: terminal is running on. 1765 - 1766 - # clone_source_strategies venv,conda,env_var,path 1767 - 1768 - #: Control what shell code is sourced when running clone-in-kitty in 1769 - #: the newly cloned window. The supported strategies are: 1770 - 1771 - #: venv 1772 - #: Source the file $VIRTUAL_ENV/bin/activate. This is used by the 1773 - #: Python stdlib venv module and allows cloning venvs automatically. 1774 - #: conda 1775 - #: Run conda activate $CONDA_DEFAULT_ENV. This supports the virtual 1776 - #: environments created by conda. 1777 - #: env_var 1778 - #: Execute the contents of the environment variable 1779 - #: KITTY_CLONE_SOURCE_CODE with eval. 1780 - #: path 1781 - #: Source the file pointed to by the environment variable 1782 - #: KITTY_CLONE_SOURCE_PATH. 1783 - 1784 - #: This option must be a comma separated list of the above values. 1785 - #: Only the first valid match, in the order specified, is sourced. 1786 - 1787 - # notify_on_cmd_finish never 1788 - 1789 - #: Show a desktop notification when a long-running command finishes 1790 - #: (needs shell_integration). The possible values are: 1791 - 1792 - #: never 1793 - #: Never send a notification. 1794 - 1795 - #: unfocused 1796 - #: Only send a notification when the window does not have keyboard focus. 1797 - 1798 - #: invisible 1799 - #: Only send a notification when the window both is unfocused and not visible 1800 - #: to the user, for example, because it is in an inactive tab or its OS window 1801 - #: is not currently visible (on platforms that support OS window visibility querying 1802 - #: this considers an OS Window visible iff it is active). 1803 - 1804 - #: always 1805 - #: Always send a notification, regardless of window state. 1806 - 1807 - #: There are two optional arguments: 1808 - 1809 - #: First, the minimum duration for what is considered a long running 1810 - #: command. The default is 5 seconds. Specify a second argument to set 1811 - #: the duration. For example: invisible 15. Do not set the value too 1812 - #: small, otherwise a command that launches a new OS Window and exits 1813 - #: will spam a notification. 1814 - 1815 - #: Second, the action to perform. The default is notify. The possible 1816 - #: values are: 1817 - 1818 - #: notify 1819 - #: Send a desktop notification. The subsequent arguments are optional and specify when 1820 - #: the notification is automatically cleared. The set of possible events when the notification is 1821 - #: cleared are: focus and next. focus means that when the notification 1822 - #: policy is unfocused or invisible the notification is automatically cleared 1823 - #: when the window regains focus. The value of next means that the previous notification 1824 - #: is cleared when the next notification is shown. The default when no arguments are specified 1825 - #: is: focus next. 1826 - 1827 - #: bell 1828 - #: Ring the terminal bell. 1829 - 1830 - #: command 1831 - #: Run a custom command. All subsequent arguments are the cmdline to run. 1832 - 1833 - #: Some more examples:: 1834 - 1835 - #: # Send a notification when a command takes more than 5 seconds in an unfocused window 1836 - #: notify_on_cmd_finish unfocused 1837 - #: # Send a notification when a command takes more than 10 seconds in a invisible window 1838 - #: notify_on_cmd_finish invisible 10.0 1839 - #: # Ring a bell when a command takes more than 10 seconds in a invisible window 1840 - #: notify_on_cmd_finish invisible 10.0 bell 1841 - #: # Run 'notify-send' when a command takes more than 10 seconds in a invisible window 1842 - #: # Here %c is replaced by the current command line and %s by the job exit code 1843 - #: notify_on_cmd_finish invisible 10.0 command notify-send "job finished with status: %s" %c 1844 - #: # Do not clear previous notification when next command finishes or window regains focus 1845 - #: notify_on_cmd_finish invisible 5.0 notify 1846 - 1847 - # term xterm-kitty 1848 - 1849 - #: The value of the TERM environment variable to set. Changing this 1850 - #: can break many terminal programs, only change it if you know what 1851 - #: you are doing, not because you read some advice on "Stack Overflow" 1852 - #: to change it. The TERM variable is used by various programs to get 1853 - #: information about the capabilities and behavior of the terminal. If 1854 - #: you change it, depending on what programs you run, and how 1855 - #: different the terminal you are changing it to is, various things 1856 - #: from key-presses, to colors, to various advanced features may not 1857 - #: work. Changing this option by reloading the config will only affect 1858 - #: newly created windows. 1859 - 1860 - # terminfo_type path 1861 - 1862 - #: The value of the TERMINFO environment variable to set. This 1863 - #: variable is used by programs running in the terminal to search for 1864 - #: terminfo databases. The default value of path causes kitty to set 1865 - #: it to a filesystem location containing the kitty terminfo database. 1866 - #: A value of direct means put the entire database into the env var 1867 - #: directly. This can be useful when connecting to containers, for 1868 - #: example. But, note that not all software supports this. A value of 1869 - #: none means do not touch the variable. 1870 - 1871 - # forward_stdio no 1872 - 1873 - #: Forward STDOUT and STDERR of the kitty process to child processes. 1874 - #: This is useful for debugging as it allows child processes to print 1875 - #: to kitty's STDOUT directly. For example, echo hello world 1876 - #: >&$KITTY_STDIO_FORWARDED in a shell will print to the parent 1877 - #: kitty's STDOUT. Sets the KITTY_STDIO_FORWARDED=fdnum environment 1878 - #: variable so child processes know about the forwarding. Note that on 1879 - #: macOS this prevents the shell from being run via the login utility 1880 - #: so getlogin() will not work in programs run in this session. 1881 - 1882 - # menu_map 1883 - 1884 - #: Specify entries for various menus in kitty. Currently only the 1885 - #: global menubar on macOS is supported. For example:: 1886 - 1887 - #: menu_map global "Actions::Launch something special" launch --hold --type=os-window sh -c "echo hello world" 1888 - 1889 - #: This will create a menu entry named "Launch something special" in 1890 - #: an "Actions" menu in the macOS global menubar. Sub-menus can be 1891 - #: created by adding more levels separated by the :: characters. 1892 - 1893 - #: }}} 1894 - 1895 - #: OS specific tweaks {{{ 1896 - 1897 - # wayland_titlebar_color system 1898 - 1899 - #: The color of the kitty window's titlebar on Wayland systems with 1900 - #: client side window decorations such as GNOME. A value of system 1901 - #: means to use the default system colors, a value of background means 1902 - #: to use the background color of the currently active kitty window 1903 - #: and finally you can use an arbitrary color, such as #12af59 or red. 1904 - 1905 - # macos_titlebar_color system 1906 - 1907 - #: The color of the kitty window's titlebar on macOS. A value of 1908 - #: system means to use the default system color, light or dark can 1909 - #: also be used to set it explicitly. A value of background means to 1910 - #: use the background color of the currently active window and finally 1911 - #: you can use an arbitrary color, such as #12af59 or red. WARNING: 1912 - #: This option works by using a hack when arbitrary color (or 1913 - #: background) is configured, as there is no proper Cocoa API for it. 1914 - #: It sets the background color of the entire window and makes the 1915 - #: titlebar transparent. As such it is incompatible with 1916 - #: background_opacity. If you want to use both, you are probably 1917 - #: better off just hiding the titlebar with hide_window_decorations. 1918 - 1919 - # macos_option_as_alt no 1920 - 1921 - #: Use the Option key as an Alt key on macOS. With this set to no, 1922 - #: kitty will use the macOS native Option+Key to enter Unicode 1923 - #: character behavior. This will break any Alt+Key keyboard shortcuts 1924 - #: in your terminal programs, but you can use the macOS Unicode input 1925 - #: technique. You can use the values: left, right or both to use only 1926 - #: the left, right or both Option keys as Alt, instead. Note that 1927 - #: kitty itself always treats Option the same as Alt. This means you 1928 - #: cannot use this option to configure different kitty shortcuts for 1929 - #: Option+Key vs. Alt+Key. Also, any kitty shortcuts using 1930 - #: Option/Alt+Key will take priority, so that any such key presses 1931 - #: will not be passed to terminal programs running inside kitty. 1932 - #: Changing this option by reloading the config is not supported. 1933 - 1934 - # macos_hide_from_tasks no 1935 - 1936 - #: Hide the kitty window from running tasks on macOS (โŒ˜+Tab and the 1937 - #: Dock). Changing this option by reloading the config is not 1938 - #: supported. 1939 - 1940 - # macos_quit_when_last_window_closed no 1941 - 1942 - #: Have kitty quit when all the top-level windows are closed on macOS. 1943 - #: By default, kitty will stay running, even with no open windows, as 1944 - #: is the expected behavior on macOS. 1945 - 1946 - # macos_window_resizable yes 1947 - 1948 - #: Disable this if you want kitty top-level OS windows to not be 1949 - #: resizable on macOS. 1950 - 1951 - # macos_thicken_font 0 1952 - 1953 - #: Draw an extra border around the font with the given width, to 1954 - #: increase legibility at small font sizes on macOS. For example, a 1955 - #: value of 0.75 will result in rendering that looks similar to sub- 1956 - #: pixel antialiasing at common font sizes. Note that in modern kitty, 1957 - #: this option is obsolete (although still supported). Consider using 1958 - #: text_composition_strategy instead. 1959 - 1960 - # macos_traditional_fullscreen no 1961 - 1962 - #: Use the macOS traditional full-screen transition, that is faster, 1963 - #: but less pretty. 1964 - 1965 - # macos_show_window_title_in all 1966 - 1967 - #: Control where the window title is displayed on macOS. A value of 1968 - #: window will show the title of the currently active window at the 1969 - #: top of the macOS window. A value of menubar will show the title of 1970 - #: the currently active window in the macOS global menu bar, making 1971 - #: use of otherwise wasted space. A value of all will show the title 1972 - #: in both places, and none hides the title. See 1973 - #: macos_menubar_title_max_length for how to control the length of the 1974 - #: title in the menu bar. 1975 - 1976 - # macos_menubar_title_max_length 0 1977 - 1978 - #: The maximum number of characters from the window title to show in 1979 - #: the macOS global menu bar. Values less than one means that there is 1980 - #: no maximum limit. 1981 - 1982 - # macos_custom_beam_cursor no 1983 - 1984 - #: Use a custom mouse cursor for macOS that is easier to see on both 1985 - #: light and dark backgrounds. Nowadays, the default macOS cursor 1986 - #: already comes with a white border. WARNING: this might make your 1987 - #: mouse cursor invisible on dual GPU machines. Changing this option 1988 - #: by reloading the config is not supported. 1989 - 1990 - # macos_colorspace srgb 1991 - 1992 - #: The colorspace in which to interpret terminal colors. The default 1993 - #: of srgb will cause colors to match those seen in web browsers. The 1994 - #: value of default will use whatever the native colorspace of the 1995 - #: display is. The value of displayp3 will use Apple's special 1996 - #: snowflake display P3 color space, which will result in over 1997 - #: saturated (brighter) colors with some color shift. Reloading 1998 - #: configuration will change this value only for newly created OS 1999 - #: windows. 2000 - 2001 - # linux_display_server auto 2002 - 2003 - #: Choose between Wayland and X11 backends. By default, an appropriate 2004 - #: backend based on the system state is chosen automatically. Set it 2005 - #: to x11 or wayland to force the choice. Changing this option by 2006 - #: reloading the config is not supported. 2007 - 2008 - # wayland_enable_ime yes 2009 - 2010 - #: Enable Input Method Extension on Wayland. This is typically used 2011 - #: for inputting text in East Asian languages. However, its 2012 - #: implementation in Wayland is often buggy and introduces latency 2013 - #: into the input loop, so disable this if you know you dont need it. 2014 - #: Changing this option by reloading the config is not supported, it 2015 - #: will not have any effect. 2016 - 2017 - #: }}} 2018 - 2019 - #: Keyboard shortcuts {{{ 2020 - 2021 - #: Keys are identified simply by their lowercase Unicode characters. 2022 - #: For example: a for the A key, [ for the left square bracket key, 2023 - #: etc. For functional keys, such as Enter or Escape, the names are 2024 - #: present at Functional key definitions 2025 - #: <https://sw.kovidgoyal.net/kitty/keyboard-protocol/#functional>. 2026 - #: For modifier keys, the names are ctrl (control, โŒƒ), shift (โ‡ง), alt 2027 - #: (opt, option, โŒฅ), super (cmd, command, โŒ˜). 2028 - 2029 - #: Simple shortcut mapping is done with the map directive. For full 2030 - #: details on advanced mapping including modal and per application 2031 - #: maps, see mapping <https://sw.kovidgoyal.net/kitty/mapping/>. Some 2032 - #: quick examples to illustrate common tasks:: 2033 - 2034 - #: # unmap a keyboard shortcut, passing it to the program running in kitty 2035 - #: map kitty_mod+space 2036 - #: # completely ignore a keyboard event 2037 - #: map ctrl+alt+f1 discard_event 2038 - #: # combine multiple actions 2039 - #: map kitty_mod+e combine : new_window : next_layout 2040 - #: # multi-key shortcuts 2041 - #: map ctrl+x>ctrl+y>z action 2042 - 2043 - #: The full list of actions that can be mapped to key presses is 2044 - #: available here <https://sw.kovidgoyal.net/kitty/actions/>. 2045 - 2046 - # kitty_mod ctrl+shift 2047 - 2048 - #: Special modifier key alias for default shortcuts. You can change 2049 - #: the value of this option to alter all default shortcuts that use 2050 - #: kitty_mod. 2051 - 2052 - # clear_all_shortcuts no 2053 - 2054 - #: Remove all shortcut definitions up to this point. Useful, for 2055 - #: instance, to remove the default shortcuts. 2056 - 2057 - # action_alias 2058 - 2059 - #: E.g. action_alias launch_tab launch --type=tab --cwd=current 2060 - 2061 - #: Define action aliases to avoid repeating the same options in 2062 - #: multiple mappings. Aliases can be defined for any action and will 2063 - #: be expanded recursively. For example, the above alias allows you to 2064 - #: create mappings to launch a new tab in the current working 2065 - #: directory without duplication:: 2066 - 2067 - #: map f1 launch_tab vim 2068 - #: map f2 launch_tab emacs 2069 - 2070 - #: Similarly, to alias kitten invocation:: 2071 - 2072 - #: action_alias hints kitten hints --hints-offset=0 2073 - 2074 - # kitten_alias 2075 - 2076 - #: E.g. kitten_alias hints hints --hints-offset=0 2077 - 2078 - #: Like action_alias above, but specifically for kittens. Generally, 2079 - #: prefer to use action_alias. This option is a legacy version, 2080 - #: present for backwards compatibility. It causes all invocations of 2081 - #: the aliased kitten to be substituted. So the example above will 2082 - #: cause all invocations of the hints kitten to have the --hints- 2083 - #: offset=0 option applied. 2084 - 2085 - #: Clipboard {{{ 2086 - 2087 - #: Copy to clipboard 2088 - 2089 - # map kitty_mod+c copy_to_clipboard 2090 - # map cmd+c copy_to_clipboard 2091 - 2092 - #:: There is also a copy_or_interrupt action that can be optionally 2093 - #:: mapped to Ctrl+C. It will copy only if there is a selection and 2094 - #:: send an interrupt otherwise. Similarly, 2095 - #:: copy_and_clear_or_interrupt will copy and clear the selection or 2096 - #:: send an interrupt if there is no selection. 2097 - 2098 - #: Paste from clipboard 2099 - 2100 - # map kitty_mod+v paste_from_clipboard 2101 - # map cmd+v paste_from_clipboard 2102 - 2103 - #: Paste from selection 2104 - 2105 - # map kitty_mod+s paste_from_selection 2106 - # map shift+insert paste_from_selection 2107 - 2108 - #: Pass selection to program 2109 - 2110 - # map kitty_mod+o pass_selection_to_program 2111 - 2112 - #:: You can also pass the contents of the current selection to any 2113 - #:: program with pass_selection_to_program. By default, the system's 2114 - #:: open program is used, but you can specify your own, the selection 2115 - #:: will be passed as a command line argument to the program. For 2116 - #:: example:: 2117 - 2118 - #:: map kitty_mod+o pass_selection_to_program firefox 2119 - 2120 - #:: You can pass the current selection to a terminal program running 2121 - #:: in a new kitty window, by using the @selection placeholder:: 2122 - 2123 - #:: map kitty_mod+y new_window less @selection 2124 - 2125 - #: }}} 2126 - 2127 - #: Scrolling {{{ 2128 - 2129 - #: Scroll line up 2130 - 2131 - # map kitty_mod+up scroll_line_up 2132 - # map kitty_mod+k scroll_line_up 2133 - # map opt+cmd+page_up scroll_line_up 2134 - # map cmd+up scroll_line_up 2135 - 2136 - #: Scroll line down 2137 - 2138 - # map kitty_mod+down scroll_line_down 2139 - # map kitty_mod+j scroll_line_down 2140 - # map opt+cmd+page_down scroll_line_down 2141 - # map cmd+down scroll_line_down 2142 - 2143 - #: Scroll page up 2144 - 2145 - # map kitty_mod+page_up scroll_page_up 2146 - # map cmd+page_up scroll_page_up 2147 - 2148 - #: Scroll page down 2149 - 2150 - # map kitty_mod+page_down scroll_page_down 2151 - # map cmd+page_down scroll_page_down 2152 - 2153 - #: Scroll to top 2154 - 2155 - # map kitty_mod+home scroll_home 2156 - # map cmd+home scroll_home 2157 - 2158 - #: Scroll to bottom 2159 - 2160 - # map kitty_mod+end scroll_end 2161 - # map cmd+end scroll_end 2162 - 2163 - #: Scroll to previous shell prompt 2164 - 2165 - # map kitty_mod+z scroll_to_prompt -1 2166 - 2167 - #:: Use a parameter of 0 for scroll_to_prompt to scroll to the last 2168 - #:: jumped to or the last clicked position. Requires shell 2169 - #:: integration <https://sw.kovidgoyal.net/kitty/shell-integration/> 2170 - #:: to work. 2171 - 2172 - #: Scroll to next shell prompt 2173 - 2174 - # map kitty_mod+x scroll_to_prompt 1 2175 - 2176 - #: Browse scrollback buffer in pager 2177 - 2178 - # map kitty_mod+h show_scrollback 2179 - 2180 - #:: You can pipe the contents of the current screen and history 2181 - #:: buffer as STDIN to an arbitrary program using launch --stdin- 2182 - #:: source. For example, the following opens the scrollback buffer in 2183 - #:: less in an overlay window:: 2184 - 2185 - #:: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R 2186 - 2187 - #:: For more details on piping screen and buffer contents to external 2188 - #:: programs, see launch <https://sw.kovidgoyal.net/kitty/launch/>. 2189 - 2190 - #: Browse output of the last shell command in pager 2191 - 2192 - # map kitty_mod+g show_last_command_output 2193 - 2194 - #:: You can also define additional shortcuts to get the command 2195 - #:: output. For example, to get the first command output on screen:: 2196 - 2197 - #:: map f1 show_first_command_output_on_screen 2198 - 2199 - #:: To get the command output that was last accessed by a keyboard 2200 - #:: action or mouse action:: 2201 - 2202 - #:: map f1 show_last_visited_command_output 2203 - 2204 - #:: You can pipe the output of the last command run in the shell 2205 - #:: using the launch action. For example, the following opens the 2206 - #:: output in less in an overlay window:: 2207 - 2208 - #:: map f1 launch --stdin-source=@last_cmd_output --stdin-add-formatting --type=overlay less +G -R 2209 - 2210 - #:: To get the output of the first command on the screen, use 2211 - #:: @first_cmd_output_on_screen. To get the output of the last jumped 2212 - #:: to command, use @last_visited_cmd_output. 2213 - 2214 - #:: Requires shell integration 2215 - #:: <https://sw.kovidgoyal.net/kitty/shell-integration/> to work. 2216 - 2217 - #: }}} 2218 - 2219 - #: Window management {{{ 2220 - 2221 - #: New window 2222 - 2223 - # map kitty_mod+enter new_window 2224 - # map cmd+enter new_window 2225 - 2226 - #:: You can open a new kitty window running an arbitrary program, for 2227 - #:: example:: 2228 - 2229 - #:: map kitty_mod+y launch mutt 2230 - 2231 - #:: You can open a new window with the current working directory set 2232 - #:: to the working directory of the current window using:: 2233 - 2234 - #:: map ctrl+alt+enter launch --cwd=current 2235 - 2236 - #:: You can open a new window that is allowed to control kitty via 2237 - #:: the kitty remote control facility with launch --allow-remote- 2238 - #:: control. Any programs running in that window will be allowed to 2239 - #:: control kitty. For example:: 2240 - 2241 - #:: map ctrl+enter launch --allow-remote-control some_program 2242 - 2243 - #:: You can open a new window next to the currently active window or 2244 - #:: as the first window, with:: 2245 - 2246 - #:: map ctrl+n launch --location=neighbor 2247 - #:: map ctrl+f launch --location=first 2248 - 2249 - #:: For more details, see launch 2250 - #:: <https://sw.kovidgoyal.net/kitty/launch/>. 2251 - 2252 - #: New OS window 2253 - 2254 - # map kitty_mod+n new_os_window 2255 - # map cmd+n new_os_window 2256 - 2257 - #:: Works like new_window above, except that it opens a top-level OS 2258 - #:: window. In particular you can use new_os_window_with_cwd to open 2259 - #:: a window with the current working directory. 2260 - 2261 - #: Close window 2262 - 2263 - # map kitty_mod+w close_window 2264 - # map shift+cmd+d close_window 2265 - 2266 - #: Next window 2267 - 2268 - # map kitty_mod+] next_window 2269 - 2270 - #: Previous window 2271 - 2272 - # map kitty_mod+[ previous_window 2273 - 2274 - #: Move window forward 2275 - 2276 - # map kitty_mod+f move_window_forward 2277 - 2278 - #: Move window backward 2279 - 2280 - # map kitty_mod+b move_window_backward 2281 - 2282 - #: Move window to top 2283 - 2284 - # map kitty_mod+` move_window_to_top 2285 - 2286 - #: Start resizing window 2287 - 2288 - # map kitty_mod+r start_resizing_window 2289 - # map cmd+r start_resizing_window 2290 - 2291 - #: First window 2292 - 2293 - # map kitty_mod+1 first_window 2294 - # map cmd+1 first_window 2295 - 2296 - #: Second window 2297 - 2298 - # map kitty_mod+2 second_window 2299 - # map cmd+2 second_window 2300 - 2301 - #: Third window 2302 - 2303 - # map kitty_mod+3 third_window 2304 - # map cmd+3 third_window 2305 - 2306 - #: Fourth window 2307 - 2308 - # map kitty_mod+4 fourth_window 2309 - # map cmd+4 fourth_window 2310 - 2311 - #: Fifth window 2312 - 2313 - # map kitty_mod+5 fifth_window 2314 - # map cmd+5 fifth_window 2315 - 2316 - #: Sixth window 2317 - 2318 - # map kitty_mod+6 sixth_window 2319 - # map cmd+6 sixth_window 2320 - 2321 - #: Seventh window 2322 - 2323 - # map kitty_mod+7 seventh_window 2324 - # map cmd+7 seventh_window 2325 - 2326 - #: Eighth window 2327 - 2328 - # map kitty_mod+8 eighth_window 2329 - # map cmd+8 eighth_window 2330 - 2331 - #: Ninth window 2332 - 2333 - # map kitty_mod+9 ninth_window 2334 - # map cmd+9 ninth_window 2335 - 2336 - #: Tenth window 2337 - 2338 - # map kitty_mod+0 tenth_window 2339 - 2340 - #: Visually select and focus window 2341 - 2342 - # map kitty_mod+f7 focus_visible_window 2343 - 2344 - #:: Display overlay numbers and alphabets on the window, and switch 2345 - #:: the focus to the window when you press the key. When there are 2346 - #:: only two windows, the focus will be switched directly without 2347 - #:: displaying the overlay. You can change the overlay characters and 2348 - #:: their order with option visual_window_select_characters. 2349 - 2350 - #: Visually swap window with another 2351 - 2352 - # map kitty_mod+f8 swap_with_window 2353 - 2354 - #:: Works like focus_visible_window above, but swaps the window. 2355 - 2356 - #: }}} 2357 - 2358 - #: Tab management {{{ 2359 - 2360 - #: Next tab 2361 - 2362 - # map kitty_mod+right next_tab 2363 - # map shift+cmd+] next_tab 2364 - # map ctrl+tab next_tab 2365 - 2366 - #: Previous tab 2367 - 2368 - # map kitty_mod+left previous_tab 2369 - # map shift+cmd+[ previous_tab 2370 - # map ctrl+shift+tab previous_tab 2371 - 2372 - #: New tab 2373 - 2374 - # map kitty_mod+t new_tab 2375 - # map cmd+t new_tab 2376 - 2377 - #: Close tab 2378 - 2379 - # map kitty_mod+q close_tab 2380 - # map cmd+w close_tab 2381 - 2382 - #: Close OS window 2383 - 2384 - # map shift+cmd+w close_os_window 2385 - 2386 - #: Move tab forward 2387 - 2388 - # map kitty_mod+. move_tab_forward 2389 - 2390 - #: Move tab backward 2391 - 2392 - # map kitty_mod+, move_tab_backward 2393 - 2394 - #: Set tab title 2395 - 2396 - # map kitty_mod+alt+t set_tab_title 2397 - # map shift+cmd+i set_tab_title 2398 - 2399 - 2400 - #: You can also create shortcuts to go to specific tabs, with 1 being 2401 - #: the first tab, 2 the second tab and -1 being the previously active 2402 - #: tab, -2 being the tab active before the previously active tab and 2403 - #: so on. Any number larger than the number of tabs goes to the last 2404 - #: tab and any number less than the number of previously used tabs in 2405 - #: the history goes to the oldest previously used tab in the history:: 2406 - 2407 - #: map ctrl+alt+1 goto_tab 1 2408 - #: map ctrl+alt+2 goto_tab 2 2409 - 2410 - #: Just as with new_window above, you can also pass the name of 2411 - #: arbitrary commands to run when using new_tab and new_tab_with_cwd. 2412 - #: Finally, if you want the new tab to open next to the current tab 2413 - #: rather than at the end of the tabs list, use:: 2414 - 2415 - #: map ctrl+t new_tab !neighbor [optional cmd to run] 2416 - #: }}} 2417 - 2418 - #: Layout management {{{ 2419 - 2420 - #: Next layout 2421 - 2422 - # map kitty_mod+l next_layout 2423 - 2424 - 2425 - #: You can also create shortcuts to switch to specific layouts:: 2426 - 2427 - #: map ctrl+alt+t goto_layout tall 2428 - #: map ctrl+alt+s goto_layout stack 2429 - 2430 - #: Similarly, to switch back to the previous layout:: 2431 - 2432 - #: map ctrl+alt+p last_used_layout 2433 - 2434 - #: There is also a toggle_layout action that switches to the named 2435 - #: layout or back to the previous layout if in the named layout. 2436 - #: Useful to temporarily "zoom" the active window by switching to the 2437 - #: stack layout:: 2438 - 2439 - #: map ctrl+alt+z toggle_layout stack 2440 - #: }}} 2441 - 2442 - #: Font sizes {{{ 2443 - 2444 - #: You can change the font size for all top-level kitty OS windows at 2445 - #: a time or only the current one. 2446 - 2447 - #: Increase font size 2448 - 2449 - # map kitty_mod+equal change_font_size all +2.0 2450 - # map kitty_mod+plus change_font_size all +2.0 2451 - # map kitty_mod+kp_add change_font_size all +2.0 2452 - # map cmd+plus change_font_size all +2.0 2453 - # map cmd+equal change_font_size all +2.0 2454 - # map shift+cmd+equal change_font_size all +2.0 2455 - 2456 - #: Decrease font size 2457 - 2458 - # map kitty_mod+minus change_font_size all -2.0 2459 - # map kitty_mod+kp_subtract change_font_size all -2.0 2460 - # map cmd+minus change_font_size all -2.0 2461 - # map shift+cmd+minus change_font_size all -2.0 2462 - 2463 - #: Reset font size 2464 - 2465 - # map kitty_mod+backspace change_font_size all 0 2466 - # map cmd+0 change_font_size all 0 2467 - 2468 - 2469 - #: To setup shortcuts for specific font sizes:: 2470 - 2471 - #: map kitty_mod+f6 change_font_size all 10.0 2472 - 2473 - #: To setup shortcuts to change only the current OS window's font 2474 - #: size:: 2475 - 2476 - #: map kitty_mod+f6 change_font_size current 10.0 2477 - #: }}} 2478 - 2479 - #: Select and act on visible text {{{ 2480 - 2481 - #: Use the hints kitten to select text and either pass it to an 2482 - #: external program or insert it into the terminal or copy it to the 2483 - #: clipboard. 2484 - 2485 - #: Open URL 2486 - 2487 - # map kitty_mod+e open_url_with_hints 2488 - 2489 - #:: Open a currently visible URL using the keyboard. The program used 2490 - #:: to open the URL is specified in open_url_with. 2491 - 2492 - #: Insert selected path 2493 - 2494 - # map kitty_mod+p>f kitten hints --type path --program - 2495 - 2496 - #:: Select a path/filename and insert it into the terminal. Useful, 2497 - #:: for instance to run git commands on a filename output from a 2498 - #:: previous git command. 2499 - 2500 - #: Open selected path 2501 - 2502 - # map kitty_mod+p>shift+f kitten hints --type path 2503 - 2504 - #:: Select a path/filename and open it with the default open program. 2505 - 2506 - #: Insert selected line 2507 - 2508 - # map kitty_mod+p>l kitten hints --type line --program - 2509 - 2510 - #:: Select a line of text and insert it into the terminal. Useful for 2511 - #:: the output of things like: `ls -1`. 2512 - 2513 - #: Insert selected word 2514 - 2515 - # map kitty_mod+p>w kitten hints --type word --program - 2516 - 2517 - #:: Select words and insert into terminal. 2518 - 2519 - #: Insert selected hash 2520 - 2521 - # map kitty_mod+p>h kitten hints --type hash --program - 2522 - 2523 - #:: Select something that looks like a hash and insert it into the 2524 - #:: terminal. Useful with git, which uses SHA1 hashes to identify 2525 - #:: commits. 2526 - 2527 - #: Open the selected file at the selected line 2528 - 2529 - # map kitty_mod+p>n kitten hints --type linenum 2530 - 2531 - #:: Select something that looks like filename:linenum and open it in 2532 - #:: your default editor at the specified line number. 2533 - 2534 - #: Open the selected hyperlink 2535 - 2536 - # map kitty_mod+p>y kitten hints --type hyperlink 2537 - 2538 - #:: Select a hyperlink (i.e. a URL that has been marked as such by 2539 - #:: the terminal program, for example, by `ls --hyperlink=auto`). 2540 - 2541 - 2542 - #: The hints kitten has many more modes of operation that you can map 2543 - #: to different shortcuts. For a full description see hints kitten 2544 - #: <https://sw.kovidgoyal.net/kitty/kittens/hints/>. 2545 - #: }}} 2546 - 2547 - #: Miscellaneous {{{ 2548 - 2549 - #: Show documentation 2550 - 2551 - # map kitty_mod+f1 show_kitty_doc overview 2552 - 2553 - #: Toggle fullscreen 2554 - 2555 - # map kitty_mod+f11 toggle_fullscreen 2556 - # map ctrl+cmd+f toggle_fullscreen 2557 - 2558 - #: Toggle maximized 2559 - 2560 - # map kitty_mod+f10 toggle_maximized 2561 - 2562 - #: Toggle macOS secure keyboard entry 2563 - 2564 - # map opt+cmd+s toggle_macos_secure_keyboard_entry 2565 - 2566 - #: Unicode input 2567 - 2568 - # map kitty_mod+u kitten unicode_input 2569 - # map ctrl+cmd+space kitten unicode_input 2570 - 2571 - #: Edit config file 2572 - 2573 - # map kitty_mod+f2 edit_config_file 2574 - # map cmd+, edit_config_file 2575 - 2576 - #: Open the kitty command shell 2577 - 2578 - # map kitty_mod+escape kitty_shell window 2579 - 2580 - #:: Open the kitty shell in a new window / tab / overlay / os_window 2581 - #:: to control kitty using commands. 2582 - 2583 - #: Increase background opacity 2584 - 2585 - # map kitty_mod+a>m set_background_opacity +0.1 2586 - 2587 - #: Decrease background opacity 2588 - 2589 - # map kitty_mod+a>l set_background_opacity -0.1 2590 - 2591 - #: Make background fully opaque 2592 - 2593 - # map kitty_mod+a>1 set_background_opacity 1 2594 - 2595 - #: Reset background opacity 2596 - 2597 - # map kitty_mod+a>d set_background_opacity default 2598 - 2599 - #: Reset the terminal 2600 - 2601 - # map kitty_mod+delete clear_terminal reset active 2602 - # map opt+cmd+r clear_terminal reset active 2603 - 2604 - #:: You can create shortcuts to clear/reset the terminal. For 2605 - #:: example:: 2606 - 2607 - #:: # Reset the terminal 2608 - #:: map f1 clear_terminal reset active 2609 - #:: # Clear the terminal screen by erasing all contents 2610 - #:: map f1 clear_terminal clear active 2611 - #:: # Clear the terminal scrollback by erasing it 2612 - #:: map f1 clear_terminal scrollback active 2613 - #:: # Scroll the contents of the screen into the scrollback 2614 - #:: map f1 clear_terminal scroll active 2615 - #:: # Clear everything on screen up to the line with the cursor or the start of the current prompt (needs shell integration) 2616 - #:: map f1 clear_terminal to_cursor active 2617 - #:: # Same as above except cleared lines are moved into scrollback 2618 - #:: map f1 clear_terminal to_cursor_scroll active 2619 - 2620 - #:: If you want to operate on all kitty windows instead of just the 2621 - #:: current one, use all instead of active. 2622 - 2623 - #:: Some useful functions that can be defined in the shell rc files 2624 - #:: to perform various kinds of clearing of the current window: 2625 - 2626 - #:: .. code-block:: sh 2627 - 2628 - #:: clear-only-screen() { 2629 - #:: printf "\e[H\e[2J" 2630 - #:: } 2631 - 2632 - #:: clear-screen-and-scrollback() { 2633 - #:: printf "\e[H\e[3J" 2634 - #:: } 2635 - 2636 - #:: clear-screen-saving-contents-in-scrollback() { 2637 - #:: printf "\e[H\e[22J" 2638 - #:: } 2639 - 2640 - #:: For instance, using these escape codes, it is possible to remap 2641 - #:: Ctrl+L to both scroll the current screen contents into the 2642 - #:: scrollback buffer and clear the screen, instead of just clearing 2643 - #:: the screen. For ZSH, in ~/.zshrc, add: 2644 - 2645 - #:: .. code-block:: zsh 2646 - 2647 - #:: ctrl_l() { 2648 - #:: builtin print -rn -- $'\r\e[0J\e[H\e[22J' >"$TTY" 2649 - #:: builtin zle .reset-prompt 2650 - #:: builtin zle -R 2651 - #:: } 2652 - #:: zle -N ctrl_l 2653 - #:: bindkey '^l' ctrl_l 2654 - 2655 - #:: Alternatively, you can just add map ctrl+l clear_terminal 2656 - #:: to_cursor_scroll active to kitty.conf which works with no changes 2657 - #:: to the shell rc files, but only clears up to the prompt, it does 2658 - #:: not clear any text at the prompt itself. 2659 - 2660 - #: Clear to start 2661 - 2662 - # map cmd+k clear_terminal to_cursor active 2663 - 2664 - #: Clear scrollback 2665 - 2666 - # map option+cmd+k clear_terminal scrollback active 2667 - 2668 - #: Clear screen 2669 - 2670 - # map cmd+ctrl+l clear_terminal to_cursor_scroll active 2671 - 2672 - #: Reload kitty.conf 2673 - 2674 - # map kitty_mod+f5 load_config_file 2675 - # map ctrl+cmd+, load_config_file 2676 - 2677 - #:: Reload kitty.conf, applying any changes since the last time it 2678 - #:: was loaded. Note that a handful of options cannot be dynamically 2679 - #:: changed and require a full restart of kitty. Particularly, when 2680 - #:: changing shortcuts for actions located on the macOS global menu 2681 - #:: bar, a full restart is needed. You can also map a keybinding to 2682 - #:: load a different config file, for example:: 2683 - 2684 - #:: map f5 load_config /path/to/alternative/kitty.conf 2685 - 2686 - #:: Note that all options from the original kitty.conf are discarded, 2687 - #:: in other words the new configuration *replace* the old ones. 2688 - 2689 - #: Debug kitty configuration 2690 - 2691 - # map kitty_mod+f6 debug_config 2692 - # map opt+cmd+, debug_config 2693 - 2694 - #:: Show details about exactly what configuration kitty is running 2695 - #:: with and its host environment. Useful for debugging issues. 2696 - 2697 - #: Send arbitrary text on key presses 2698 - 2699 - #:: E.g. map ctrl+shift+alt+h send_text all Hello World 2700 - 2701 - #:: You can tell kitty to send arbitrary (UTF-8) encoded text to the 2702 - #:: client program when pressing specified shortcut keys. For 2703 - #:: example:: 2704 - 2705 - #:: map ctrl+alt+a send_text all Special text 2706 - 2707 - #:: This will send "Special text" when you press the Ctrl+Alt+A key 2708 - #:: combination. The text to be sent decodes ANSI C escapes 2709 - #:: <https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC- 2710 - #:: Quoting.html> so you can use escapes like \e to send control 2711 - #:: codes or \u21fb to send Unicode characters (or you can just input 2712 - #:: the Unicode characters directly as UTF-8 text). You can use 2713 - #:: `kitten show-key` to get the key escape codes you want to 2714 - #:: emulate. 2715 - 2716 - #:: The first argument to send_text is the keyboard modes in which to 2717 - #:: activate the shortcut. The possible values are normal, 2718 - #:: application, kitty or a comma separated combination of them. The 2719 - #:: modes normal and application refer to the DECCKM cursor key mode 2720 - #:: for terminals, and kitty refers to the kitty extended keyboard 2721 - #:: protocol. The special value all means all of them. 2722 - 2723 - #:: Some more examples:: 2724 - 2725 - #:: # Output a word and move the cursor to the start of the line (like typing and pressing Home) 2726 - #:: map ctrl+alt+a send_text normal Word\e[H 2727 - #:: map ctrl+alt+a send_text application Word\eOH 2728 - #:: # Run a command at a shell prompt (like typing the command and pressing Enter) 2729 - #:: map ctrl+alt+a send_text normal,application some command with arguments\r 2730 - 2731 - #: Open kitty Website 2732 - 2733 - # map shift+cmd+/ open_url https://sw.kovidgoyal.net/kitty/ 2734 - 2735 - #: Hide macOS kitty application 2736 - 2737 - # map cmd+h hide_macos_app 2738 - 2739 - #: Hide macOS other applications 2740 - 2741 - # map opt+cmd+h hide_macos_other_apps 2742 - 2743 - #: Minimize macOS window 2744 - 2745 - # map cmd+m minimize_macos_window 2746 - 2747 - #: Quit kitty 2748 - 2749 - # map cmd+q quit 2750 - 2751 - #: }}} 2752 - 2753 - #: }}}
+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 + ]