+60
-9
flake.lock
+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
+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
];
+55
ghostty/.config/ghostty/config
+55
ghostty/.config/ghostty/config
···
1
+
# This is the configuration file for Ghostty.
2
+
#
3
+
# This template file has been automatically created at the following
4
+
# path since Ghostty couldn't find any existing config files on your system:
5
+
#
6
+
# /home/bpavuk/.config/ghostty/config
7
+
#
8
+
# The template does not set any default options, since Ghostty ships
9
+
# with sensible defaults for all options. Users should only need to set
10
+
# options that they want to change from the default.
11
+
#
12
+
# Run `ghostty +show-config --default --docs` to view a list of
13
+
# all available config options and their default values.
14
+
#
15
+
# Additionally, each config option is also explained in detail
16
+
# on Ghostty's website, at https://ghostty.org/docs/config.
17
+
#
18
+
# Ghostty can reload the configuration while running by using the menu
19
+
# options or the bound key (default: Command + Shift + comma on macOS and
20
+
# Control + Shift + comma on other platforms). Not all config options can be
21
+
# reloaded while running; some only apply to new windows and others may require
22
+
# a full restart to take effect.
23
+
24
+
# Config syntax crash course
25
+
# ==========================
26
+
# # The config file consists of simple key-value pairs,
27
+
# # separated by equals signs.
28
+
# font-family = Iosevka
29
+
# window-padding-x = 2
30
+
#
31
+
# # Spacing around the equals sign does not matter.
32
+
# # All of these are identical:
33
+
# key=value
34
+
# key= value
35
+
# key =value
36
+
# key = value
37
+
#
38
+
# # Any line beginning with a # is a comment. It's not possible to put
39
+
# # a comment after a config option, since it would be interpreted as a
40
+
# # part of the value. For example, this will have a value of "#123abc":
41
+
# background = #123abc
42
+
#
43
+
# # Empty values are used to reset config keys to default.
44
+
# key =
45
+
#
46
+
# # Some config options have unique syntaxes for their value,
47
+
# # which is explained in the docs for that config option.
48
+
# # Just for example:
49
+
# resize-overlay-duration = 4s 200ms
50
+
51
+
window-decoration = none
52
+
53
+
theme = Gruvbox Dark Hard
54
+
55
+
custom-shader = shaders/cursor_warp.glsl
+306
ghostty/.config/ghostty/shaders/cursor_warp.glsl
+306
ghostty/.config/ghostty/shaders/cursor_warp.glsl
···
1
+
// Copyright (c) 2025 Sahaj Bhatt
2
+
// original source located at https://github.com/sahaj-b/ghostty-cursor-shaders
3
+
4
+
// --- CONFIGURATION ---
5
+
vec4 TRAIL_COLOR = iCurrentCursorColor; // can change to eg: vec4(0.2, 0.6, 1.0, 0.5);
6
+
const float DURATION = 0.2; // total animation time
7
+
const float TRAIL_SIZE = 0.8; // 0.0 = all corners move together. 1.0 = max smear (leading corners jump instantly)
8
+
const float THRESHOLD_MIN_DISTANCE = 1.5; // min distance to show trail (units of cursor height)
9
+
const float BLUR = 1.0; // blur size in pixels (for antialiasing)
10
+
const float TRAIL_THICKNESS = 1.0; // 1.0 = full cursor height, 0.0 = zero height, >1.0 = funky aah
11
+
const float TRAIL_THICKNESS_X = 0.9;
12
+
13
+
const float FADE_ENABLED = 0.0; // 1.0 to enable fade gradient along the trail, 0.0 to disable
14
+
const float FADE_EXPONENT = 5.0; // exponent for fade gradient along the trail
15
+
16
+
// --- CONSTANTS for easing functions ---
17
+
const float PI = 3.14159265359;
18
+
const float C1_BACK = 1.70158;
19
+
const float C2_BACK = C1_BACK * 1.525;
20
+
const float C3_BACK = C1_BACK + 1.0;
21
+
const float C4_ELASTIC = (2.0 * PI) / 3.0;
22
+
const float C5_ELASTIC = (2.0 * PI) / 4.5;
23
+
const float SPRING_STIFFNESS = 9.0;
24
+
const float SPRING_DAMPING = 0.9;
25
+
26
+
// --- EASING FUNCTIONS ---
27
+
28
+
// // Linear
29
+
// float ease(float x) {
30
+
// return x;
31
+
// }
32
+
33
+
// // EaseOutQuad
34
+
// float ease(float x) {
35
+
// return 1.0 - (1.0 - x) * (1.0 - x);
36
+
// }
37
+
38
+
// // EaseOutCubic
39
+
// float ease(float x) {
40
+
// return 1.0 - pow(1.0 - x, 3.0);
41
+
// }
42
+
43
+
// // EaseOutQuart
44
+
// float ease(float x) {
45
+
// return 1.0 - pow(1.0 - x, 4.0);
46
+
// }
47
+
48
+
// // EaseOutQuint
49
+
// float ease(float x) {
50
+
// return 1.0 - pow(1.0 - x, 5.0);
51
+
// }
52
+
53
+
// // EaseOutSine
54
+
// float ease(float x) {
55
+
// return sin((x * PI) / 2.0);
56
+
// }
57
+
58
+
// // EaseOutExpo
59
+
// float ease(float x) {
60
+
// return x == 1.0 ? 1.0 : 1.0 - pow(2.0, -10.0 * x);
61
+
// }
62
+
63
+
// EaseOutCirc
64
+
float ease(float x) {
65
+
return sqrt(1.0 - pow(x - 1.0, 2.0));
66
+
}
67
+
68
+
// // EaseOutBack
69
+
// float ease(float x) {
70
+
// return 1.0 + C3_BACK * pow(x - 1.0, 3.0) + C1_BACK * pow(x - 1.0, 2.0);
71
+
// }
72
+
73
+
// // EaseOutElastic
74
+
// float ease(float x) {
75
+
// return x == 0.0 ? 0.0
76
+
// : x == 1.0 ? 1.0
77
+
// : pow(2.0, -10.0 * x) * sin((x * 10.0 - 0.75) * C4_ELASTIC) + 1.0;
78
+
// }
79
+
80
+
// // Parametric Spring
81
+
// float ease(float x) {
82
+
// x = clamp(x, 0.0, 1.0);
83
+
// float decay = exp(-SPRING_DAMPING * SPRING_STIFFNESS * x);
84
+
// float freq = sqrt(SPRING_STIFFNESS * (1.0 - SPRING_DAMPING * SPRING_DAMPING));
85
+
// float osc = cos(freq * 6.283185 * x) + (SPRING_DAMPING * sqrt(SPRING_STIFFNESS) / freq) * sin(freq * 6.283185 * x);
86
+
// return 1.0 - decay * osc;
87
+
// }
88
+
89
+
float getSdfRectangle(in vec2 p, in vec2 xy, in vec2 b)
90
+
{
91
+
vec2 d = abs(p - xy) - b;
92
+
return length(max(d, 0.0)) + min(max(d.x, d.y), 0.0);
93
+
}
94
+
95
+
// Based on Inigo Quilez's 2D distance functions article: https://iquilezles.org/articles/distfunctions2d/
96
+
// Potencially optimized by eliminating conditionals and loops to enhance performance and reduce branching
97
+
float seg(in vec2 p, in vec2 a, in vec2 b, inout float s, float d) {
98
+
vec2 e = b - a;
99
+
vec2 w = p - a;
100
+
vec2 proj = a + e * clamp(dot(w, e) / dot(e, e), 0.0, 1.0);
101
+
float segd = dot(p - proj, p - proj);
102
+
d = min(d, segd);
103
+
104
+
float c0 = step(0.0, p.y - a.y);
105
+
float c1 = 1.0 - step(0.0, p.y - b.y);
106
+
float c2 = 1.0 - step(0.0, e.x * w.y - e.y * w.x);
107
+
float allCond = c0 * c1 * c2;
108
+
float noneCond = (1.0 - c0) * (1.0 - c1) * (1.0 - c2);
109
+
float flip = mix(1.0, -1.0, step(0.5, allCond + noneCond));
110
+
s *= flip;
111
+
return d;
112
+
}
113
+
114
+
float getSdfConvexQuad(in vec2 p, in vec2 v1, in vec2 v2, in vec2 v3, in vec2 v4) {
115
+
float s = 1.0;
116
+
float d = dot(p - v1, p - v1);
117
+
118
+
d = seg(p, v1, v2, s, d);
119
+
d = seg(p, v2, v3, s, d);
120
+
d = seg(p, v3, v4, s, d);
121
+
d = seg(p, v4, v1, s, d);
122
+
123
+
return s * sqrt(d);
124
+
}
125
+
126
+
vec2 normalize(vec2 value, float isPosition) {
127
+
return (value * 2.0 - (iResolution.xy * isPosition)) / iResolution.y;
128
+
}
129
+
130
+
float antialising(float distance, float blurAmount) {
131
+
return 1. - smoothstep(0., normalize(vec2(blurAmount, blurAmount), 0.).x, distance);
132
+
}
133
+
134
+
// Determines animation duration based on a corner's alignment with the move direction(dot product)
135
+
// dot_val will be in [-2, 2]
136
+
// > 0.5 (1 or 2) = Leading
137
+
// > -0.5 (0) = Side
138
+
// <= -0.5 (-1 or -2) = Trailing
139
+
float getDurationFromDot(float dot_val, float DURATION_LEAD, float DURATION_SIDE, float DURATION_TRAIL) {
140
+
float isLead = step(0.5, dot_val);
141
+
float isSide = step(-0.5, dot_val) * (1.0 - isLead);
142
+
143
+
// Start with trailing duration
144
+
float duration = mix(DURATION_TRAIL, DURATION_SIDE, isSide);
145
+
// Mix in leading duration
146
+
duration = mix(duration, DURATION_LEAD, isLead);
147
+
return duration;
148
+
}
149
+
150
+
void mainImage(out vec4 fragColor, in vec2 fragCoord){
151
+
#if !defined(WEB)
152
+
fragColor = texture(iChannel0, fragCoord.xy / iResolution.xy);
153
+
#endif
154
+
155
+
// normalization & setup(-1, 1 coords)
156
+
vec2 vu = normalize(fragCoord, 1.);
157
+
vec2 offsetFactor = vec2(-.5, 0.5);
158
+
159
+
vec4 currentCursor = vec4(normalize(iCurrentCursor.xy, 1.), normalize(iCurrentCursor.zw, 0.));
160
+
vec4 previousCursor = vec4(normalize(iPreviousCursor.xy, 1.), normalize(iPreviousCursor.zw, 0.));
161
+
162
+
vec2 centerCC = currentCursor.xy - (currentCursor.zw * offsetFactor);
163
+
vec2 halfSizeCC = currentCursor.zw * 0.5;
164
+
vec2 centerCP = previousCursor.xy - (previousCursor.zw * offsetFactor);
165
+
vec2 halfSizeCP = previousCursor.zw * 0.5;
166
+
167
+
float sdfCurrentCursor = getSdfRectangle(vu, centerCC, halfSizeCC);
168
+
169
+
float lineLength = distance(centerCC, centerCP);
170
+
float minDist = currentCursor.w * THRESHOLD_MIN_DISTANCE;
171
+
172
+
vec4 newColor = vec4(fragColor);
173
+
174
+
float baseProgress = iTime - iTimeCursorChange;
175
+
176
+
if (lineLength > minDist && baseProgress < DURATION - 0.001) {
177
+
// defining corners of cursors
178
+
179
+
// Y (Height) with TRAIL_THICKNESS
180
+
float cc_half_height = currentCursor.w * 0.5;
181
+
float cc_center_y = currentCursor.y - cc_half_height;
182
+
float cc_new_half_height = cc_half_height * TRAIL_THICKNESS;
183
+
float cc_new_top_y = cc_center_y + cc_new_half_height;
184
+
float cc_new_bottom_y = cc_center_y - cc_new_half_height;
185
+
186
+
// X (Width) with TRAIL_THICKNESS
187
+
float cc_half_width = currentCursor.z * 0.5;
188
+
float cc_center_x = currentCursor.x + cc_half_width;
189
+
float cc_new_half_width = cc_half_width * TRAIL_THICKNESS_X;
190
+
float cc_new_left_x = cc_center_x - cc_new_half_width;
191
+
float cc_new_right_x = cc_center_x + cc_new_half_width;
192
+
193
+
vec2 cc_tl = vec2(cc_new_left_x, cc_new_top_y);
194
+
vec2 cc_tr = vec2(cc_new_right_x, cc_new_top_y);
195
+
vec2 cc_bl = vec2(cc_new_left_x, cc_new_bottom_y);
196
+
vec2 cc_br = vec2(cc_new_right_x, cc_new_bottom_y);
197
+
198
+
// same thing for previous cursor
199
+
float cp_half_height = previousCursor.w * 0.5;
200
+
float cp_center_y = previousCursor.y - cp_half_height;
201
+
float cp_new_half_height = cp_half_height * TRAIL_THICKNESS;
202
+
float cp_new_top_y = cp_center_y + cp_new_half_height;
203
+
float cp_new_bottom_y = cp_center_y - cp_new_half_height;
204
+
205
+
float cp_half_width = previousCursor.z * 0.5;
206
+
float cp_center_x = previousCursor.x + cp_half_width;
207
+
float cp_new_half_width = cp_half_width * TRAIL_THICKNESS_X;
208
+
float cp_new_left_x = cp_center_x - cp_new_half_width;
209
+
float cp_new_right_x = cp_center_x + cp_new_half_width;
210
+
211
+
vec2 cp_tl = vec2(cp_new_left_x, cp_new_top_y);
212
+
vec2 cp_tr = vec2(cp_new_right_x, cp_new_top_y);
213
+
vec2 cp_bl = vec2(cp_new_left_x, cp_new_bottom_y);
214
+
vec2 cp_br = vec2(cp_new_right_x, cp_new_bottom_y);
215
+
216
+
// calculating durations for every corner
217
+
const float DURATION_TRAIL = DURATION;
218
+
const float DURATION_LEAD = DURATION * (1.0 - TRAIL_SIZE);
219
+
const float DURATION_SIDE = (DURATION_LEAD + DURATION_TRAIL) / 2.0;
220
+
221
+
vec2 moveVec = centerCC - centerCP;
222
+
vec2 s = sign(moveVec);
223
+
224
+
// dot products for each corner, determining alignment with movement direction
225
+
float dot_tl = dot(vec2(-1., 1.), s);
226
+
float dot_tr = dot(vec2( 1., 1.), s);
227
+
float dot_bl = dot(vec2(-1.,-1.), s);
228
+
float dot_br = dot(vec2( 1.,-1.), s);
229
+
230
+
// assign durations based on dot products
231
+
float dur_tl = getDurationFromDot(dot_tl, DURATION_LEAD, DURATION_SIDE, DURATION_TRAIL);
232
+
float dur_tr = getDurationFromDot(dot_tr, DURATION_LEAD, DURATION_SIDE, DURATION_TRAIL);
233
+
float dur_bl = getDurationFromDot(dot_bl, DURATION_LEAD, DURATION_SIDE, DURATION_TRAIL);
234
+
float dur_br = getDurationFromDot(dot_br, DURATION_LEAD, DURATION_SIDE, DURATION_TRAIL);
235
+
236
+
// check direction of horizontal movement
237
+
float isMovingRight = step(0.5, s.x);
238
+
float isMovingLeft = step(0.5, -s.x);
239
+
240
+
// calculate vertical-rail durations
241
+
float dot_right_edge = (dot_tr + dot_br) * 0.5;
242
+
float dur_right_rail = getDurationFromDot(dot_right_edge, DURATION_LEAD, DURATION_SIDE, DURATION_TRAIL);
243
+
244
+
float dot_left_edge = (dot_tl + dot_bl) * 0.5;
245
+
float dur_left_rail = getDurationFromDot(dot_left_edge, DURATION_LEAD, DURATION_SIDE, DURATION_TRAIL);
246
+
247
+
float final_dur_tl = mix(dur_tl, dur_left_rail, isMovingLeft);
248
+
float final_dur_bl = mix(dur_bl, dur_left_rail, isMovingLeft);
249
+
250
+
float final_dur_tr = mix(dur_tr, dur_right_rail, isMovingRight);
251
+
float final_dur_br = mix(dur_br, dur_right_rail, isMovingRight);
252
+
253
+
// calculate progress for each corner based on the duration and time since cursor change
254
+
float prog_tl = ease(clamp(baseProgress / final_dur_tl, 0.0, 1.0));
255
+
float prog_tr = ease(clamp(baseProgress / final_dur_tr, 0.0, 1.0));
256
+
float prog_bl = ease(clamp(baseProgress / final_dur_bl, 0.0, 1.0));
257
+
float prog_br = ease(clamp(baseProgress / final_dur_br, 0.0, 1.0));
258
+
259
+
// get the trial corner positions based on progress
260
+
vec2 v_tl = mix(cp_tl, cc_tl, prog_tl);
261
+
vec2 v_tr = mix(cp_tr, cc_tr, prog_tr);
262
+
vec2 v_br = mix(cp_br, cc_br, prog_br);
263
+
vec2 v_bl = mix(cp_bl, cc_bl, prog_bl);
264
+
265
+
// DRAWING THE TRAIL
266
+
float sdfTrail = getSdfConvexQuad(vu, v_tl, v_tr, v_br, v_bl);
267
+
268
+
// --- FADE GRADIENT CALCULATION ---
269
+
vec2 fragVec = vu - centerCP;
270
+
271
+
// project fragment onto movement vector, normalize to [0, 1]
272
+
// 0.0 at tail, 1.0 at head
273
+
// tiny epsilon to avoid division by zero if moveVec is (0,0)
274
+
float fadeProgress = clamp(dot(fragVec, moveVec) / (dot(moveVec, moveVec) + 1e-6), 0.0, 1.0);
275
+
276
+
vec4 trail = TRAIL_COLOR;
277
+
278
+
float effectiveBlur = BLUR;
279
+
if (BLUR < 2.5) {
280
+
// no antialising on horizontal/vertical movement, fixes 'pulse' like thing on end cursor
281
+
float isDiagonal = abs(s.x) * abs(s.y); // 1.0 if diagonal, 0.0 if H/V
282
+
float effectiveBlur = mix(0.0, BLUR, isDiagonal);
283
+
}
284
+
float shapeAlpha = antialising(sdfTrail, effectiveBlur); // shape mask
285
+
286
+
if (FADE_ENABLED > 0.5) {
287
+
// apply fade gradient along the trail
288
+
// float fadeStart = 0.2;
289
+
// float easedProgress = smoothstep(fadeStart, 1.0, fadeProgress);
290
+
// easedProgress = pow(2.0, 10.0 * (fadeProgress - 1.0));
291
+
float easedProgress = pow(fadeProgress, FADE_EXPONENT);
292
+
trail.a *= easedProgress;
293
+
}
294
+
295
+
float finalAlpha = trail.a * shapeAlpha;
296
+
297
+
// newColor.a to preserve the background alpha.
298
+
newColor = mix(newColor, vec4(trail.rgb, newColor.a), finalAlpha);
299
+
300
+
// punch hole on the trail, so current cursor is drawn on top
301
+
newColor = mix(newColor, fragColor, step(sdfCurrentCursor, 0.));
302
+
303
+
}
304
+
305
+
fragColor = newColor;
306
+
}
+3
ghostty/README.md
+3
ghostty/README.md
+31
-16
nixos/home/life/default.nix
+31
-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
+
./ghostty
10
11
];
11
12
12
13
home.packages = with pkgs; [
···
17
18
18
19
discord
19
20
signal-desktop-bin
21
+
gpu-screen-recorder-gtk
20
22
21
23
qbittorrent
22
24
···
30
32
gpg-tui
31
33
pinentry-all
32
34
cryptsetup
35
+
36
+
# Nix Helper
37
+
nh
38
+
39
+
# RSS reader
40
+
newsflash
33
41
];
34
42
35
-
# an unorthodox file manager
36
-
programs.nnn = {
43
+
services.vicinae = {
37
44
enable = true;
38
-
package = pkgs.nnn.override {
39
-
withNerdIcons = true;
45
+
systemd = {
46
+
autoStart = true;
40
47
};
41
-
plugins = {
42
-
src = (pkgs.fetchFromGitHub {
43
-
owner = "jarun";
44
-
repo = "nnn";
45
-
rev = "v5.1";
46
-
sha256 = "sha256-+2lFFBtaqRPBkEspCFtKl9fllbSR5MBB+4ks3Xh7vp4=";
47
-
}) + "/plugins";
48
+
};
49
+
50
+
programs.yazi = {
51
+
enable = true;
52
+
enableNushellIntegration = true;
53
+
enableZshIntegration = true;
54
+
enableBashIntegration = true;
55
+
};
48
56
49
-
mappings = {
50
-
p = "preview-tui";
51
-
};
52
-
};
57
+
xdg.configFile."yazi/" = {
58
+
source = ../../../yazi/.config/yazi;
59
+
recursive = true;
53
60
};
54
61
55
62
services.gpg-agent = {
···
63
70
'';
64
71
65
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
+
};
66
81
}
+14
nixos/home/life/ghostty/default.nix
+14
nixos/home/life/ghostty/default.nix
···
1
+
{ pkgs, ... }: {
2
+
programs.ghostty = {
3
+
enable = true;
4
+
systemd.enable = true;
5
+
6
+
enableBashIntegration = true;
7
+
enableZshIntegration = true;
8
+
};
9
+
10
+
xdg.configFile."ghostty/" = {
11
+
source = ../../../../ghostty/.config/ghostty;
12
+
recursive = true;
13
+
};
14
+
}
+1
nixos/home/life/gnome.nix
+1
nixos/home/life/gnome.nix
-8
nixos/home/life/hyprland/default.nix
-8
nixos/home/life/hyprland/default.nix
-10
nixos/home/life/hyprland/kitty.nix
-10
nixos/home/life/hyprland/kitty.nix
+1
nixos/hosts/bpavuk-nixos/default.nix
+1
nixos/hosts/bpavuk-nixos/default.nix
+11
nixos/hosts/cachix.nix
+11
nixos/hosts/cachix.nix
+3
-1
nixos/users/bpavuk.nix
+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
+1
nvim/.config/nvim/init.lua
+32
-4
nvim/.config/nvim/lua/chadrc.lua
+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
+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
+6
nvim/.config/nvim/lua/configs/lazy.lua
+2
nvim/.config/nvim/lua/options.lua
+2
nvim/.config/nvim/lua/options.lua
+14
-1
nvim/.config/nvim/lua/plugins/init.lua
+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
+6
nvim/.config/nvim/lua/plugins/wakatime.lua
-22
window_manager/.config/fuzzel/fuzzel.ini
-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
window_manager/.config/hypr/hyprland/apps.conf
-2753
window_manager/.config/kitty/kitty.conf
-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
+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