-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
241 lines (241 loc) · 38.5 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
<!doctype html><html lang=en><head><meta name=generator content="Hugo 0.111.3"><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>Qtile</title><link rel=stylesheet href=/style.css><link rel=preload href=/fonts/varelaround-regular-webfont.woff2 as=font type=font/woff2 crossorigin></head></head><body class="prose-headings:font-varelaRound text-base lg:text-lg"><header><nav class="grid grid-flow-row justify-items-center items-center max-w-full p-4 lg:grid-flow-col
bg-[#1B1B1B] text-[#F9F9F9] border-b border-b-[#404040] border-solid"><div class="mx-8 lg:mx-50 max-w-full h-fit grid grid-flow-row gap-2
justify-items-center items-center lg:grid-flow-col"><a href=/><img class="max-w-max rounded p-2 bg-[#215578]" src=/images/qtile-logo-white.webp alt="Logo of Qtile" height=48 width=64></a>
<a class="p-1 rounded hover:bg-[#404040]" href=/screenshots/ title>Screenshots</a>
<a class="p-1 rounded hover:bg-[#404040]" href=/videos/ title>Videos</a>
<a class="p-1 rounded hover:bg-[#404040]" href=https://docs.qtile.org title>Documentation</a>
<a class="p-1 rounded hover:bg-[#404040]" href=https://github.com/qtile/qtile/issues/ title>Issues</a>
<a class="p-1 rounded hover:bg-[#404040]" href=https://github.com/qtile/qtile/ title>GitHub</a><div class="grid grid-flow-row justify-items-center items-center mx-8 w-full
lg:mx-50"><div>Current release: <b>v0.30.0, Jan 06, 2025</b></div><div class="grid grid-flow-row justify-items-center items-center
text-sm text-[#378ec8] lg:grid-flow-col"><a class="p-1 hover:text-[#5C9FCD]" href=/download/>Download</a>
<a class="p-1 hover:text-[#5C9FCD]" href=https://github.com/qtile/qtile/blob/master/CHANGELOG>Release Notes</a>
<a class="p-1 hover:text-[#5C9FCD]" href=http://docs.qtile.org/en/latest/manual/install/>Install Guide</a></div></div></div></nav></header><section class="grid grid-flow-row items-center justify-between
bg-[#222222] max-w-full min-h-fit lg:p-4 lg:max-h-auto"><div class="mx-8 lg:mx-80 text-[#FDFDFE]"><picture><source srcset=/images/qtile-logo-white.webp type=image/webp><source srcset=/images/qtile-logo-white.png type=image/png><img class="py-4 my-4" src=/images/qtile-logo-white.png alt="Qtile logo"></picture><h5 class=font-varelaRound>A full-featured, hackable tiling window manager written and configured in Python</h5><div class="grid grid-flow-row lg:grid-flow-col gap-2 h-auto my-4"><img class="w-auto border rounded border-[#404040] hover:border-gray-600 lg:h-80" src=/images/qtile.png>
<span class="text-xs h-80 px-2 w-auto overflow-y-auto border rounded
border-[#404040] hover:border-gray-600 lg:text-sm"><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-py data-lang=py><span style=display:flex><span><span style=color:#f92672>from</span> libqtile <span style=color:#f92672>import</span> bar, layout, qtile, widget
</span></span><span style=display:flex><span><span style=color:#f92672>from</span> libqtile.config <span style=color:#f92672>import</span> Click, Drag, Group, Key, Match, Screen
</span></span><span style=display:flex><span><span style=color:#f92672>from</span> libqtile.lazy <span style=color:#f92672>import</span> lazy
</span></span><span style=display:flex><span><span style=color:#f92672>from</span> libqtile.utils <span style=color:#f92672>import</span> guess_terminal
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>mod <span style=color:#f92672>=</span> <span style=color:#e6db74>"mod4"</span>
</span></span><span style=display:flex><span>terminal <span style=color:#f92672>=</span> guess_terminal()
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>keys <span style=color:#f92672>=</span> [
</span></span><span style=display:flex><span> <span style=color:#75715e># A list of available commands that can be bound to keys can be found</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># at https://docs.qtile.org/en/latest/manual/config/lazy.html</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># Switch between windows</span>
</span></span><span style=display:flex><span> Key([mod], <span style=color:#e6db74>"h"</span>, lazy<span style=color:#f92672>.</span>layout<span style=color:#f92672>.</span>left(), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Move focus to left"</span>),
</span></span><span style=display:flex><span> Key([mod], <span style=color:#e6db74>"l"</span>, lazy<span style=color:#f92672>.</span>layout<span style=color:#f92672>.</span>right(), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Move focus to right"</span>),
</span></span><span style=display:flex><span> Key([mod], <span style=color:#e6db74>"j"</span>, lazy<span style=color:#f92672>.</span>layout<span style=color:#f92672>.</span>down(), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Move focus down"</span>),
</span></span><span style=display:flex><span> Key([mod], <span style=color:#e6db74>"k"</span>, lazy<span style=color:#f92672>.</span>layout<span style=color:#f92672>.</span>up(), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Move focus up"</span>),
</span></span><span style=display:flex><span> Key([mod], <span style=color:#e6db74>"space"</span>, lazy<span style=color:#f92672>.</span>layout<span style=color:#f92672>.</span>next(), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Move window focus to other window"</span>),
</span></span><span style=display:flex><span> <span style=color:#75715e># Move windows between left/right columns or move up/down in current stack.</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># Moving out of range in Columns layout will create new column.</span>
</span></span><span style=display:flex><span> Key([mod, <span style=color:#e6db74>"shift"</span>], <span style=color:#e6db74>"h"</span>, lazy<span style=color:#f92672>.</span>layout<span style=color:#f92672>.</span>shuffle_left(), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Move window to the left"</span>),
</span></span><span style=display:flex><span> Key([mod, <span style=color:#e6db74>"shift"</span>], <span style=color:#e6db74>"l"</span>, lazy<span style=color:#f92672>.</span>layout<span style=color:#f92672>.</span>shuffle_right(), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Move window to the right"</span>),
</span></span><span style=display:flex><span> Key([mod, <span style=color:#e6db74>"shift"</span>], <span style=color:#e6db74>"j"</span>, lazy<span style=color:#f92672>.</span>layout<span style=color:#f92672>.</span>shuffle_down(), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Move window down"</span>),
</span></span><span style=display:flex><span> Key([mod, <span style=color:#e6db74>"shift"</span>], <span style=color:#e6db74>"k"</span>, lazy<span style=color:#f92672>.</span>layout<span style=color:#f92672>.</span>shuffle_up(), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Move window up"</span>),
</span></span><span style=display:flex><span> <span style=color:#75715e># Grow windows. If current window is on the edge of screen and direction</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># will be to screen edge - window would shrink.</span>
</span></span><span style=display:flex><span> Key([mod, <span style=color:#e6db74>"control"</span>], <span style=color:#e6db74>"h"</span>, lazy<span style=color:#f92672>.</span>layout<span style=color:#f92672>.</span>grow_left(), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Grow window to the left"</span>),
</span></span><span style=display:flex><span> Key([mod, <span style=color:#e6db74>"control"</span>], <span style=color:#e6db74>"l"</span>, lazy<span style=color:#f92672>.</span>layout<span style=color:#f92672>.</span>grow_right(), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Grow window to the right"</span>),
</span></span><span style=display:flex><span> Key([mod, <span style=color:#e6db74>"control"</span>], <span style=color:#e6db74>"j"</span>, lazy<span style=color:#f92672>.</span>layout<span style=color:#f92672>.</span>grow_down(), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Grow window down"</span>),
</span></span><span style=display:flex><span> Key([mod, <span style=color:#e6db74>"control"</span>], <span style=color:#e6db74>"k"</span>, lazy<span style=color:#f92672>.</span>layout<span style=color:#f92672>.</span>grow_up(), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Grow window up"</span>),
</span></span><span style=display:flex><span> Key([mod], <span style=color:#e6db74>"n"</span>, lazy<span style=color:#f92672>.</span>layout<span style=color:#f92672>.</span>normalize(), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Reset all window sizes"</span>),
</span></span><span style=display:flex><span> <span style=color:#75715e># Toggle between split and unsplit sides of stack.</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># Split = all windows displayed</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># Unsplit = 1 window displayed, like Max layout, but still with</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># multiple stack panes</span>
</span></span><span style=display:flex><span> Key(
</span></span><span style=display:flex><span> [mod, <span style=color:#e6db74>"shift"</span>],
</span></span><span style=display:flex><span> <span style=color:#e6db74>"Return"</span>,
</span></span><span style=display:flex><span> lazy<span style=color:#f92672>.</span>layout<span style=color:#f92672>.</span>toggle_split(),
</span></span><span style=display:flex><span> desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Toggle between split and unsplit sides of stack"</span>,
</span></span><span style=display:flex><span> ),
</span></span><span style=display:flex><span> Key([mod], <span style=color:#e6db74>"Return"</span>, lazy<span style=color:#f92672>.</span>spawn(terminal), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Launch terminal"</span>),
</span></span><span style=display:flex><span> <span style=color:#75715e># Toggle between different layouts as defined below</span>
</span></span><span style=display:flex><span> Key([mod], <span style=color:#e6db74>"Tab"</span>, lazy<span style=color:#f92672>.</span>next_layout(), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Toggle between layouts"</span>),
</span></span><span style=display:flex><span> Key([mod], <span style=color:#e6db74>"w"</span>, lazy<span style=color:#f92672>.</span>window<span style=color:#f92672>.</span>kill(), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Kill focused window"</span>),
</span></span><span style=display:flex><span> Key(
</span></span><span style=display:flex><span> [mod],
</span></span><span style=display:flex><span> <span style=color:#e6db74>"f"</span>,
</span></span><span style=display:flex><span> lazy<span style=color:#f92672>.</span>window<span style=color:#f92672>.</span>toggle_fullscreen(),
</span></span><span style=display:flex><span> desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Toggle fullscreen on the focused window"</span>,
</span></span><span style=display:flex><span> ),
</span></span><span style=display:flex><span> Key([mod], <span style=color:#e6db74>"t"</span>, lazy<span style=color:#f92672>.</span>window<span style=color:#f92672>.</span>toggle_floating(), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Toggle floating on the focused window"</span>),
</span></span><span style=display:flex><span> Key([mod, <span style=color:#e6db74>"control"</span>], <span style=color:#e6db74>"r"</span>, lazy<span style=color:#f92672>.</span>reload_config(), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Reload the config"</span>),
</span></span><span style=display:flex><span> Key([mod, <span style=color:#e6db74>"control"</span>], <span style=color:#e6db74>"q"</span>, lazy<span style=color:#f92672>.</span>shutdown(), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Shutdown Qtile"</span>),
</span></span><span style=display:flex><span> Key([mod], <span style=color:#e6db74>"r"</span>, lazy<span style=color:#f92672>.</span>spawncmd(), desc<span style=color:#f92672>=</span><span style=color:#e6db74>"Spawn a command using a prompt widget"</span>),
</span></span><span style=display:flex><span>]
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># Add key bindings to switch VTs in Wayland.</span>
</span></span><span style=display:flex><span><span style=color:#75715e># We can't check qtile.core.name in default config as it is loaded before qtile is started</span>
</span></span><span style=display:flex><span><span style=color:#75715e># We therefore defer the check until the key binding is run by using .when(func=...)</span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>for</span> vt <span style=color:#f92672>in</span> range(<span style=color:#ae81ff>1</span>, <span style=color:#ae81ff>8</span>):
</span></span><span style=display:flex><span> keys<span style=color:#f92672>.</span>append(
</span></span><span style=display:flex><span> Key(
</span></span><span style=display:flex><span> [<span style=color:#e6db74>"control"</span>, <span style=color:#e6db74>"mod1"</span>],
</span></span><span style=display:flex><span> <span style=color:#e6db74>f</span><span style=color:#e6db74>"f</span><span style=color:#e6db74>{</span>vt<span style=color:#e6db74>}</span><span style=color:#e6db74>"</span>,
</span></span><span style=display:flex><span> lazy<span style=color:#f92672>.</span>core<span style=color:#f92672>.</span>change_vt(vt)<span style=color:#f92672>.</span>when(func<span style=color:#f92672>=</span><span style=color:#66d9ef>lambda</span>: qtile<span style=color:#f92672>.</span>core<span style=color:#f92672>.</span>name <span style=color:#f92672>==</span> <span style=color:#e6db74>"wayland"</span>),
</span></span><span style=display:flex><span> desc<span style=color:#f92672>=</span><span style=color:#e6db74>f</span><span style=color:#e6db74>"Switch to VT</span><span style=color:#e6db74>{</span>vt<span style=color:#e6db74>}</span><span style=color:#e6db74>"</span>,
</span></span><span style=display:flex><span> )
</span></span><span style=display:flex><span> )
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>groups <span style=color:#f92672>=</span> [Group(i) <span style=color:#66d9ef>for</span> i <span style=color:#f92672>in</span> <span style=color:#e6db74>"123456789"</span>]
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#66d9ef>for</span> i <span style=color:#f92672>in</span> groups:
</span></span><span style=display:flex><span> keys<span style=color:#f92672>.</span>extend(
</span></span><span style=display:flex><span> [
</span></span><span style=display:flex><span> <span style=color:#75715e># mod + group number = switch to group</span>
</span></span><span style=display:flex><span> Key(
</span></span><span style=display:flex><span> [mod],
</span></span><span style=display:flex><span> i<span style=color:#f92672>.</span>name,
</span></span><span style=display:flex><span> lazy<span style=color:#f92672>.</span>group[i<span style=color:#f92672>.</span>name]<span style=color:#f92672>.</span>toscreen(),
</span></span><span style=display:flex><span> desc<span style=color:#f92672>=</span><span style=color:#e6db74>f</span><span style=color:#e6db74>"Switch to group </span><span style=color:#e6db74>{</span>i<span style=color:#f92672>.</span>name<span style=color:#e6db74>}</span><span style=color:#e6db74>"</span>,
</span></span><span style=display:flex><span> ),
</span></span><span style=display:flex><span> <span style=color:#75715e># mod + shift + group number = switch to & move focused window to group</span>
</span></span><span style=display:flex><span> Key(
</span></span><span style=display:flex><span> [mod, <span style=color:#e6db74>"shift"</span>],
</span></span><span style=display:flex><span> i<span style=color:#f92672>.</span>name,
</span></span><span style=display:flex><span> lazy<span style=color:#f92672>.</span>window<span style=color:#f92672>.</span>togroup(i<span style=color:#f92672>.</span>name, switch_group<span style=color:#f92672>=</span><span style=color:#66d9ef>True</span>),
</span></span><span style=display:flex><span> desc<span style=color:#f92672>=</span><span style=color:#e6db74>f</span><span style=color:#e6db74>"Switch to & move focused window to group </span><span style=color:#e6db74>{</span>i<span style=color:#f92672>.</span>name<span style=color:#e6db74>}</span><span style=color:#e6db74>"</span>,
</span></span><span style=display:flex><span> ),
</span></span><span style=display:flex><span> <span style=color:#75715e># Or, use below if you prefer not to switch to that group.</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># # mod + shift + group number = move focused window to group</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># Key([mod, "shift"], i.name, lazy.window.togroup(i.name),</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># desc="move focused window to group {}".format(i.name)),</span>
</span></span><span style=display:flex><span> ]
</span></span><span style=display:flex><span> )
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>layouts <span style=color:#f92672>=</span> [
</span></span><span style=display:flex><span> layout<span style=color:#f92672>.</span>Columns(border_focus_stack<span style=color:#f92672>=</span>[<span style=color:#e6db74>"#d75f5f"</span>, <span style=color:#e6db74>"#8f3d3d"</span>], border_width<span style=color:#f92672>=</span><span style=color:#ae81ff>4</span>),
</span></span><span style=display:flex><span> layout<span style=color:#f92672>.</span>Max(),
</span></span><span style=display:flex><span> <span style=color:#75715e># Try more layouts by unleashing below layouts.</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># layout.Stack(num_stacks=2),</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># layout.Bsp(),</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># layout.Matrix(),</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># layout.MonadTall(),</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># layout.MonadWide(),</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># layout.RatioTile(),</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># layout.Tile(),</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># layout.TreeTab(),</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># layout.VerticalTile(),</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># layout.Zoomy(),</span>
</span></span><span style=display:flex><span>]
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>widget_defaults <span style=color:#f92672>=</span> dict(
</span></span><span style=display:flex><span> font<span style=color:#f92672>=</span><span style=color:#e6db74>"sans"</span>,
</span></span><span style=display:flex><span> fontsize<span style=color:#f92672>=</span><span style=color:#ae81ff>12</span>,
</span></span><span style=display:flex><span> padding<span style=color:#f92672>=</span><span style=color:#ae81ff>3</span>,
</span></span><span style=display:flex><span>)
</span></span><span style=display:flex><span>extension_defaults <span style=color:#f92672>=</span> widget_defaults<span style=color:#f92672>.</span>copy()
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>screens <span style=color:#f92672>=</span> [
</span></span><span style=display:flex><span> Screen(
</span></span><span style=display:flex><span> bottom<span style=color:#f92672>=</span>bar<span style=color:#f92672>.</span>Bar(
</span></span><span style=display:flex><span> [
</span></span><span style=display:flex><span> widget<span style=color:#f92672>.</span>CurrentLayout(),
</span></span><span style=display:flex><span> widget<span style=color:#f92672>.</span>GroupBox(),
</span></span><span style=display:flex><span> widget<span style=color:#f92672>.</span>Prompt(),
</span></span><span style=display:flex><span> widget<span style=color:#f92672>.</span>WindowName(),
</span></span><span style=display:flex><span> widget<span style=color:#f92672>.</span>Chord(
</span></span><span style=display:flex><span> chords_colors<span style=color:#f92672>=</span>{
</span></span><span style=display:flex><span> <span style=color:#e6db74>"launch"</span>: (<span style=color:#e6db74>"#ff0000"</span>, <span style=color:#e6db74>"#ffffff"</span>),
</span></span><span style=display:flex><span> },
</span></span><span style=display:flex><span> name_transform<span style=color:#f92672>=</span><span style=color:#66d9ef>lambda</span> name: name<span style=color:#f92672>.</span>upper(),
</span></span><span style=display:flex><span> ),
</span></span><span style=display:flex><span> widget<span style=color:#f92672>.</span>TextBox(<span style=color:#e6db74>"default config"</span>, name<span style=color:#f92672>=</span><span style=color:#e6db74>"default"</span>),
</span></span><span style=display:flex><span> widget<span style=color:#f92672>.</span>TextBox(<span style=color:#e6db74>"Press <M-r> to spawn"</span>, foreground<span style=color:#f92672>=</span><span style=color:#e6db74>"#d75f5f"</span>),
</span></span><span style=display:flex><span> <span style=color:#75715e># NB Systray is incompatible with Wayland, consider using StatusNotifier instead</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># widget.StatusNotifier(),</span>
</span></span><span style=display:flex><span> widget<span style=color:#f92672>.</span>Systray(),
</span></span><span style=display:flex><span> widget<span style=color:#f92672>.</span>Clock(format<span style=color:#f92672>=</span><span style=color:#e6db74>"%Y-%m-</span><span style=color:#e6db74>%d</span><span style=color:#e6db74> </span><span style=color:#e6db74>%a</span><span style=color:#e6db74> %I:%M %p"</span>),
</span></span><span style=display:flex><span> widget<span style=color:#f92672>.</span>QuickExit(),
</span></span><span style=display:flex><span> ],
</span></span><span style=display:flex><span> <span style=color:#ae81ff>24</span>,
</span></span><span style=display:flex><span> <span style=color:#75715e># border_width=[2, 0, 2, 0], # Draw top and bottom borders</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># border_color=["ff00ff", "000000", "ff00ff", "000000"] # Borders are magenta</span>
</span></span><span style=display:flex><span> ),
</span></span><span style=display:flex><span> <span style=color:#75715e># You can uncomment this variable if you see that on X11 floating resize/moving is laggy</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># By default we handle these events delayed to already improve performance, however your system might still be struggling</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># This variable is set to None (no cap) by default, but you can set it to 60 to indicate that you limit it to 60 events per second</span>
</span></span><span style=display:flex><span> <span style=color:#75715e># x11_drag_polling_rate = 60,</span>
</span></span><span style=display:flex><span> ),
</span></span><span style=display:flex><span>]
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># Drag floating layouts.</span>
</span></span><span style=display:flex><span>mouse <span style=color:#f92672>=</span> [
</span></span><span style=display:flex><span> Drag([mod], <span style=color:#e6db74>"Button1"</span>, lazy<span style=color:#f92672>.</span>window<span style=color:#f92672>.</span>set_position_floating(), start<span style=color:#f92672>=</span>lazy<span style=color:#f92672>.</span>window<span style=color:#f92672>.</span>get_position()),
</span></span><span style=display:flex><span> Drag([mod], <span style=color:#e6db74>"Button3"</span>, lazy<span style=color:#f92672>.</span>window<span style=color:#f92672>.</span>set_size_floating(), start<span style=color:#f92672>=</span>lazy<span style=color:#f92672>.</span>window<span style=color:#f92672>.</span>get_size()),
</span></span><span style=display:flex><span> Click([mod], <span style=color:#e6db74>"Button2"</span>, lazy<span style=color:#f92672>.</span>window<span style=color:#f92672>.</span>bring_to_front()),
</span></span><span style=display:flex><span>]
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>dgroups_key_binder <span style=color:#f92672>=</span> <span style=color:#66d9ef>None</span>
</span></span><span style=display:flex><span>dgroups_app_rules <span style=color:#f92672>=</span> [] <span style=color:#75715e># type: list</span>
</span></span><span style=display:flex><span>follow_mouse_focus <span style=color:#f92672>=</span> <span style=color:#66d9ef>True</span>
</span></span><span style=display:flex><span>bring_front_click <span style=color:#f92672>=</span> <span style=color:#66d9ef>False</span>
</span></span><span style=display:flex><span>floats_kept_above <span style=color:#f92672>=</span> <span style=color:#66d9ef>True</span>
</span></span><span style=display:flex><span>cursor_warp <span style=color:#f92672>=</span> <span style=color:#66d9ef>False</span>
</span></span><span style=display:flex><span>floating_layout <span style=color:#f92672>=</span> layout<span style=color:#f92672>.</span>Floating(
</span></span><span style=display:flex><span> float_rules<span style=color:#f92672>=</span>[
</span></span><span style=display:flex><span> <span style=color:#75715e># Run the utility of `xprop` to see the wm class and name of an X client.</span>
</span></span><span style=display:flex><span> <span style=color:#f92672>*</span>layout<span style=color:#f92672>.</span>Floating<span style=color:#f92672>.</span>default_float_rules,
</span></span><span style=display:flex><span> Match(wm_class<span style=color:#f92672>=</span><span style=color:#e6db74>"confirmreset"</span>), <span style=color:#75715e># gitk</span>
</span></span><span style=display:flex><span> Match(wm_class<span style=color:#f92672>=</span><span style=color:#e6db74>"makebranch"</span>), <span style=color:#75715e># gitk</span>
</span></span><span style=display:flex><span> Match(wm_class<span style=color:#f92672>=</span><span style=color:#e6db74>"maketag"</span>), <span style=color:#75715e># gitk</span>
</span></span><span style=display:flex><span> Match(wm_class<span style=color:#f92672>=</span><span style=color:#e6db74>"ssh-askpass"</span>), <span style=color:#75715e># ssh-askpass</span>
</span></span><span style=display:flex><span> Match(title<span style=color:#f92672>=</span><span style=color:#e6db74>"branchdialog"</span>), <span style=color:#75715e># gitk</span>
</span></span><span style=display:flex><span> Match(title<span style=color:#f92672>=</span><span style=color:#e6db74>"pinentry"</span>), <span style=color:#75715e># GPG key password entry</span>
</span></span><span style=display:flex><span> ]
</span></span><span style=display:flex><span>)
</span></span><span style=display:flex><span>auto_fullscreen <span style=color:#f92672>=</span> <span style=color:#66d9ef>True</span>
</span></span><span style=display:flex><span>focus_on_window_activation <span style=color:#f92672>=</span> <span style=color:#e6db74>"smart"</span>
</span></span><span style=display:flex><span>reconfigure_screens <span style=color:#f92672>=</span> <span style=color:#66d9ef>True</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># If things like steam games want to auto-minimize themselves when losing</span>
</span></span><span style=display:flex><span><span style=color:#75715e># focus, should we respect this or not?</span>
</span></span><span style=display:flex><span>auto_minimize <span style=color:#f92672>=</span> <span style=color:#66d9ef>True</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># When using the Wayland backend, this can be used to configure input devices.</span>
</span></span><span style=display:flex><span>wl_input_rules <span style=color:#f92672>=</span> <span style=color:#66d9ef>None</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># xcursor theme (string or None) and size (integer) for Wayland backend</span>
</span></span><span style=display:flex><span>wl_xcursor_theme <span style=color:#f92672>=</span> <span style=color:#66d9ef>None</span>
</span></span><span style=display:flex><span>wl_xcursor_size <span style=color:#f92672>=</span> <span style=color:#ae81ff>24</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># XXX: Gasp! We're lying here. In fact, nobody really uses or cares about this</span>
</span></span><span style=display:flex><span><span style=color:#75715e># string besides java UI toolkits; you can see several discussions on the</span>
</span></span><span style=display:flex><span><span style=color:#75715e># mailing lists, GitHub issues, and other WM documentation that suggest setting</span>
</span></span><span style=display:flex><span><span style=color:#75715e># this string if your java app doesn't work correctly. We may as well just lie</span>
</span></span><span style=display:flex><span><span style=color:#75715e># and say that we're a working one by default.</span>
</span></span><span style=display:flex><span><span style=color:#75715e>#</span>
</span></span><span style=display:flex><span><span style=color:#75715e># We choose LG3D to maximize irony: it is a 3D non-reparenting WM written in</span>
</span></span><span style=display:flex><span><span style=color:#75715e># java that happens to be on java's whitelist.</span>
</span></span><span style=display:flex><span>wmname <span style=color:#f92672>=</span> <span style=color:#e6db74>"LG3D"</span>
</span></span></code></pre></div></span></div><span class="grid justify-items-center items-center
my-4 p-2 lg:justify-end"><a class="text-[#378ec8] hover:text-[#5C9FCD]" href=https://github.com/qtile/qtile-examples>View more configuration examples on Github</a></span></div></section><section class="mx-8 my-4 lg:mx-80 lg:p-4"><h1 class="my-2 text-4xl grid justify-items-center">Benefits of using a tiling window manager</h1><div class="grid grid-flow-row lg:grid-cols-3 gap-2"><div class=my-4><span class="grid justify-center p-2"><img class="h-12 w-12" src=/images/fa-icons/bolt-solid.svg></span>
<span class="text-xl font-semibold">Optimize your workflow</span>
<span>by configuring your environment to fit how <em>you</em> work.</span></div><div class=my-4><span class="grid justify-center p-2"><img class="h-12 w-12" src=/images/fa-icons/table-columns-solid.svg></span>
<span class="text-xl font-semibold">Efficiently use screen real-estate</span>
<span>by automatically arranging windows with minimal visual cruft.</span></div><div class=my-4><span class="grid justify-center p-2"><img class="h-12 w-12" src=/images/fa-icons/kit-medical-solid.svg></span>
<span class="text-xl font-semibold">Save your wrists from RSI</span>
<span>by ditching the mouse and driving with the keyboard.</span></div></div></section><section class="mx-8 my-4 lg:mx-80 lg:p-4"><h1 class="my-2 text-4xl grid justify-items-center">Why Qtile?</h1><div class="grid grid-flow-row items-center lg:grid-cols-2 gap-2"><div class="my-2 text-xl"><span class="text-xl font-semibold">Qtile is simple, small, and extensible.</span>
<span>It's easy to write your own layouts, widgets, and built-in commands.</span></div><div class=my-2><span class="text-xl font-semibold">Qtile is written and configured entirely in Python.</span>
<span>Leverage the full power and flexibility of the language to make it fit your needs.</span></div><div class=my-2><span class="text-xl font-semibold">The Qtile community is active and growing.</span>
<span>There's always someone to lend a hand when you need help.</span></div><div class=my-2><span class="text-xl font-semibold">Qtile is free and open-source software.</span>
<span>Distributed under the permissive
<a class=text-[#215578] href=http://docs.qtile.org/en/latest/manual/license.html>MIT license
</a>.</span></div></div></section><section class="grid grid-flow-col items-center bg-[#222222] max-w-full my-4 h-auto p-4 lg:h-48"><div class="mx-8 my-4 lg:mx-80"><ul><li class="grid grid-flow-row gap-4 items-center justify-items-center lg:grid-flow-col"><img class="border hover:border-gray-600 border-[#222222] rounded" src=/images/screenshots/williampsena-qtile-ebenezer_hu269ec3449d89801e0c9b5cb76a099840_2037186_256x128_fit_q75_h2_box_3.webp alt="This repository includes my dot files and python scripts for Qtile.">
<img class="border hover:border-gray-600 border-[#222222] rounded" src=/images/screenshots/shells_huc8abe69007dd8c75a6dfc76784c5018c_616881_256x128_fit_q75_h2_box_3.webp alt="Minimal NixOS-Qtile system.">
<img class="border hover:border-gray-600 border-[#222222] rounded" src=/images/screenshots/greenspace_hu61907f64a3855c3fd9824a24fad65aab_2303060_256x128_fit_q75_h2_box_3.webp alt>
<img class="border hover:border-gray-600 border-[#222222] rounded" src=/images/screenshots/tywgg-clean_huf3299748ce3d442d23022c177da49f65_182157_256x128_fit_q75_h2_box_3.webp alt>
<img class="border hover:border-gray-600 border-[#222222] rounded" src=/images/screenshots/tjy_hud72059c635835b14f2c2ac9b94793290_781947_256x128_fit_q75_h2_box_3.webp alt></li></ul></div></section><section class="grid grid-flow-row items-start justify-items-stretch
mx-8 my-4 max-w-full gap-4 lg:p-4 lg:gap-8 lg:mx-80 lg:grid-cols-2"><div class="grid grid-flow-row items-start place-content-start gap-2 max-w-full"><h3>The Qtile community</h3><div class="grid grid-flow-row items-center place-content-start gap-2 lg:grid-flow-col"><span class="grid grid-flow-col items-center place-content-start gap-2"><img class="h-8 w-8" src=/images/fa-icons/comments-regular.svg alt="Two dialogue boxes which means comment sections.">
<a href=irc://irc.oftc.net:6667/qtile class="text-xl lg:text-2xl text-[#215578]">IRC Channel</a></span><p>irc://irc.oftc.net:6667/qtile</p></div><div class="grid grid-flow-row items-center place-content-start max-w-full gap-2 lg:grid-flow-col"><span class="grid grid-flow-col items-center place-content-start gap-2"><img class="h-8 w-8" src=/images/fa-icons/envelope-regular.svg alt="Two dialogue boxes which meants comments section.">
<a href=qtile-dev@googlegroups.com class="text-xl lg:text-2xl text-[#215578]">Mailing
list</a></span><p>qtile-dev@googlegroups.com</p></div><div class="grid grid-flow-row items-center place-content-start gap-2 lg:grid-flow-col"><span class="grid grid-flow-col items-center place-content-start gap-2"><img class="h-8 w-8" src=/images/fa-icons/twitter-brands.svg alt="Two dialogue boxes which meants comments section.">
<a href=http://twitter.com/Qtile class="text-xl lg:text-2xl text-[#215578]">Twitter</a></span><p>@qtile</p></div></div><div class="grid grid-flow-row items-start place-content-start gap-2"><h3>Getting involved</h3><div class="grid grid-flow-row items-center place-content-start gap-2 lg:grid-flow-col"><span class="grid grid-flow-col items-center gap-2 place-content-start"><img class="h-8 w-8" src=/images/fa-icons/bug-solid.svg alt="Two dialogue boxes which meants comments section.">
<a href=https://github.com/qtile/qtile/issues class="text-xl lg:text-2xl text-[#215578]">Issue tracker</a></span><p>Report bugs and request new features</p></div><div class="grid grid-flow-row place-content-start items-center gap-2 lg:grid-flow-col"><span class="grid grid-flow-col items-center gap-2 place-content-start"><img class="h-8 w-8" src=/images/fa-icons/keyboard-regular.svg alt="Two dialogue boxes which meants comments section.">
<a href=http://docs.qtile.org/en/latest/manual/hacking.html class="text-xl lg:text-2xl text-[#215578]">Hacking Qtile</a></span><p>Get started hacking on the code</p></div></div></section><hr class="mx-8 lg:mx-80"><footer class="mx-8 lg:mx-80 p-4 grid grid-flow-col items-center justify-between"><a href=/><img src=/images/qtile-logo-black.png alt width=64 height=64></a><div class="grid grid-flow-col items-center gap-4"><a href><img src=/images/fa-icons/heart-regular.svg alt="heart icon" height=24 width=24></a>
<a href=https://github.com/qtile/qtile.org/><img src=/images/fa-icons/github-brands.svg alt="github logo" height=24 width=24></a></div></footer></body></html>