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