atagen

monolith

public
Star0
Watch0
f8499fd614ae7e891ae36b7456b5c3f20cf3f39d
1
ssh://brewery@pls.lobotomise.me:33/atagen/monolith.git
crates/config/default.tomlToml245 lines8.8 KB
1
# monolith's built-in config, used when ~/.config/monolith/config.toml is
2
# missing. Copy it there to change anything.
3
4
# Programs started with the compositor, each an argv list.
5
startup = []
6
7
[general]
8
# What Mod means in binds. Use alt when nesting inside a compositor that
9
# keeps super for itself.
10
mod = "super"
11
gaps = { inner = 8, outer = 8 }
12
# A new window splits the one it opens beside along that window's longer side,
13
# so windows dwindle. When off it joins the container of that window instead.
14
autotile = true
15
# What a window move does when it meets a neighbour. swap trades places,
16
# merge joins its lane. invert-move does the other one for the next move.
17
move = "swap"
18
# Focus whatever window the pointer moves onto.
19
focus_follows_mouse = false
20
# Put the pointer in the middle of a window focused from the keyboard, a
21
# rule or a new map. Bare metal only, a nested pointer belongs to the host.
22
mouse_follows_focus = false
23
# A window landing on, or moved to, a tag or output where its tag is empty and
24
# not in view brings the tag into view there, alongside the tags already shown.
25
view_tag_on_first_window = true
26
27
[decoration]
28
# Borders sit in the gap around each window, so keep them under half the inner gap.
29
border = 2
30
# Corner radius, one number or [top left, top right, bottom right, bottom left].
31
# Fullscreen windows stay square.
32
radius = 0
33
focused = "#88bfd1"
34
unfocused = "#3b4252"
35
# A window asking for attention that is not focused.
36
urgent = "#ebcb8b"
37
# A window extended over others in its container.
38
extended = "#5e4b6e"
39
extended-focused = "#b48ead"
40
41
[output]
42
# Variable refresh rate on outputs that support it, off, on, or fullscreen.
43
vrr = "fullscreen"
44
45
# Per connector. transform, position and scale follow a reload, mode needs a
46
# replug. transform is normal, 90, 180, 270, flipped, flipped-90, flipped-180 or
47
# flipped-270. Outputs without a position line up left to right. position is in
48
# logical pixels, the size of the output divided by its scale. scale is 0.5 to
49
# 4.0 and is rounded to the nearest 1/120. X11 clients are drawn at scale 1 and
50
# stretched. The nested backend's window is [output.nested], where only scale
51
# applies.
52
# [output.DP-1]
53
# transform = "90"
54
# position = [2560, 0]
55
# mode = "1920x1080@60"
56
# scale = 1.5
57
58
[animation]
59
enabled = true
60
# orthogonal moves each window along one axis per phase, direct allows both.
61
style = "orthogonal"
62
phase_ms = 160
63
curve = [0.45, 0.0, 0.2, 1.0]
64
65
[idle]
66
# Seconds without input before every output is switched off, any input
67
# switches them back on. 0 never blanks. Windows holding an idle inhibitor
68
# keep the screen on while they are shown.
69
blank_after = 0
70
71
[lid]
72
# What closing the lid does, suspend, poweroff or ignore. The internal panel
73
# (eDP, LVDS) switches off whenever the lid is closed and another output is
74
# connected, and then neither suspend nor poweroff happens. Without a
75
# handle-lid-switch inhibitor, logind still acts on the lid itself, so set
76
# HandleLidSwitch=ignore there for ignore to mean anything.
77
close = "suspend"
78
79
[keyboard]
80
layout = ""
81
repeat_delay = 200
82
repeat_rate = 25
83
84
[xwayland]
85
# Which X11 clients may read the Wayland clipboard or primary selection, and
86
# set it. focused allows only the window holding keyboard focus, any allows
87
# every X11 client, which clipboard managers and headless xclip need.
88
selection_access = "focused"
89
90
# libinput settings, bare metal only. Anything left out keeps the device's
91
# own default, and options a device lacks are skipped. Touchpads are devices
92
# that can tap, every other pointing device takes [input.pointer].
93
#
94
# accel_profile    flat, adaptive or custom
95
# accel_speed      -1 to 1
96
# accel_points     the custom profile's curve, pointer speed at 0, accel_step,
97
# accel_step       2 * accel_step and so on, in device units per millisecond
98
# natural_scroll, left_handed, tap, tap_drag, tap_drag_lock, dwt (disable
99
# while typing), middle_emulation   true or false
100
# scroll_method    none, two-finger, edge or on-button-down
101
# scroll_button    the evdev code of the on-button-down button, 274 for middle
102
# click_method     button-areas or clickfinger
103
# scroll_factor    multiplies scroll distance, applied by monolith
104
[input.pointer]
105
106
[input.touchpad]
107
# tap = true
108
# natural_scroll = true
109
110
# Per device, by the name `libinput list-devices` shows, over its kind's settings.
111
# Later entries win.
112
# [[input.device]]
113
# name = "Logitech G502"
114
# accel_profile = "flat"
115
# accel_speed = -0.3
116
117
# Each value is a command in word form, or an argv-style list.
118
[binds]
119
"Mod+Return" = "spawn beer"
120
"Mod+q" = "close"
121
"Mod+Shift+e" = "quit"
122
"Mod+Shift+r" = "reload"
123
124
"Mod+h" = "focus left"
125
"Mod+j" = "focus down"
126
"Mod+k" = "focus up"
127
"Mod+l" = "focus right"
128
"Mod+Shift+h" = "move left"
129
"Mod+Shift+j" = "move down"
130
"Mod+Shift+k" = "move up"
131
"Mod+Shift+l" = "move right"
132
"Mod+Ctrl+h" = "move-container left"
133
"Mod+Ctrl+j" = "move-container down"
134
"Mod+Ctrl+k" = "move-container up"
135
"Mod+Ctrl+l" = "move-container right"
136
"Mod+m" = "invert-move"
137
"Mod+Alt+h" = "resize horizontal -0.05"
138
"Mod+Alt+l" = "resize horizontal 0.05"
139
"Mod+Alt+k" = "resize vertical -0.05"
140
"Mod+Alt+j" = "resize vertical 0.05"
141
142
"Mod+e" = "expand window"
143
"Mod+Shift+w" = "expand container"
144
"Mod+w" = "maximize"
145
"Mod+o" = "flip"
146
"Mod+f" = "fullscreen"
147
"Mod+Shift+space" = "float"
148
"Mod+s" = "sticky"
149
150
"Mod+comma" = "focus-output left"
151
"Mod+period" = "focus-output right"
152
"Mod+Shift+comma" = "send-to-output left"
153
"Mod+Shift+period" = "send-to-output right"
154
155
"Mod+grave" = "summon term"
156
"Mod+Shift+grave" = "scratchpad term"
157
"Mod+Escape" = "dismiss"
158
159
"Mod+1" = "view 1"
160
"Mod+2" = "view 2"
161
"Mod+3" = "view 3"
162
"Mod+4" = "view 4"
163
"Mod+5" = "view 5"
164
"Mod+6" = "view 6"
165
"Mod+7" = "view 7"
166
"Mod+8" = "view 8"
167
"Mod+9" = "view 9"
168
"Mod+Ctrl+1" = "toggle-view 1"
169
"Mod+Ctrl+2" = "toggle-view 2"
170
"Mod+Ctrl+3" = "toggle-view 3"
171
"Mod+Ctrl+4" = "toggle-view 4"
172
"Mod+Ctrl+5" = "toggle-view 5"
173
"Mod+Ctrl+6" = "toggle-view 6"
174
"Mod+Ctrl+7" = "toggle-view 7"
175
"Mod+Ctrl+8" = "toggle-view 8"
176
"Mod+Ctrl+9" = "toggle-view 9"
177
"Mod+Shift+1" = "tag 1"
178
"Mod+Shift+2" = "tag 2"
179
"Mod+Shift+3" = "tag 3"
180
"Mod+Shift+4" = "tag 4"
181
"Mod+Shift+5" = "tag 5"
182
"Mod+Shift+6" = "tag 6"
183
"Mod+Shift+7" = "tag 7"
184
"Mod+Shift+8" = "tag 8"
185
"Mod+Shift+9" = "tag 9"
186
187
# Every rule matcher given must hit, later rules overriding earlier ones. Rules
188
# are matched when a window maps and again when its title or app_id changes
189
# before it has drawn, since many apps only set the real ones after their first
190
# commit. A pattern that does not compile leaves the rule out.
191
#
192
# Matchers, all optional. Patterns are regexes searched anywhere in the text.
193
#   app_id         the Wayland app_id, or the X11 class
194
#   title          the current title
195
#   initial_title  the title the window had when it mapped, which never changes
196
#   class          the X11 WM_CLASS class, never hits a Wayland window
197
#   instance       the X11 WM_CLASS instance, never hits a Wayland window
198
#   xwayland       true for X11 windows, false for Wayland ones
199
#   dialog         true for a window with a parent or transient, or an X11
200
#                  dialog, false for any other
201
#   parent_app_id  the app_id of the window it is a dialog of, never hits a
202
#                  window without a parent
203
#
204
# Placement, fixed when the window maps or when its rules change before it has
205
# drawn.
206
#   tag            tag name to open on
207
#   output         connector name to open on
208
#   floating       open floating or tiled, whatever the window would be
209
#   sticky         show on every tag
210
#   scratchpad     name of the scratchpad to join
211
#   fullscreen     open fullscreen or not, over what the client asks
212
#   focus          false keeps the focus where it is when the window maps
213
#   size           [width, height] of a floating window
214
#   position       [x, y] of a floating window from its output top left
215
#   center         true centres a floating window, over position
216
#   min_size       [width, height] lower bound for floating sizes, 0 for none
217
#   max_size       [width, height] upper bound for floating sizes, 0 for none
218
# size, position, center and the bounds only touch windows that float, so
219
# pair them with floating = true unless the window floats anyway.
220
#
221
# Effects, following the latest rules that hit for the window's lifetime.
222
#   opacity        0.0 to 1.0, multiplies how opaque the window is drawn
223
#   idle_inhibit   visible keeps the screen on while the window is shown,
224
#                  fullscreen only while it is also fullscreen
225
#   vrr            true or false forces adaptive sync on or off for the output
226
#                  while this window is fullscreen on it
227
#   tearing        reserved, tearing presentation is not implemented yet
228
#
229
# [[rules]]
230
# app_id = "^pavucontrol$"
231
# floating = true
232
# size = [900, 600]
233
# center = true
234
#
235
# [[rules]]
236
# app_id = "^mpv$"
237
# idle_inhibit = "fullscreen"
238
# vrr = true
239
#
240
# [[rules]]
241
# app_id = "^firefox$"
242
# title = "^Picture-in-Picture$"
243
# floating = true
244
# opacity = 0.9
245
# focus = false