dwl-patches/readme.html
Dhruva Sambrani f4a18a4bcc fix link
2024-09-18 19:00:50 +02:00

3842 lines
165 KiB
HTML

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>-</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
svg {
height: auto;
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
/* CSS for syntax highlighting */
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { display: inline-block; text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { color: #008000; } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { color: #008000; font-weight: bold; } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
</head>
<body>
<h1 id="accessnthmon">accessnthmon</h1>
<h3 id="description">Description</h3>
<p>Port of dwm's accessnthmon. Adds functions to tag and focus monitor
by index.</p>
<h3 id="download">Download</h3>
<ul>
<li><a
href="https://codeberg.org/Rutherther/dwl/src/branch/patch/accessnthmonitor">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/accessnthmon/accessnthmon.patch">2024-05-10</a></li>
</ul>
<h3 id="authors">Authors</h3>
<ul>
<li><a href="https://codeberg.org/Rutherther">Rutherther</a></li>
<li><a href="https://codeberg.org/Palanix">Palanix</a></li>
</ul>
<hr />
<h1 id="alwayscenter">alwayscenter</h1>
<h3 id="description-1">Description</h3>
<p>Automatically center floating windows.</p>
<h3 id="download-1">Download</h3>
<ul>
<li><a
href="https://codeberg.org/guidocella/dwl/src/branch/alwayscenter">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/alwayscenter/alwayscenter.patch">2024-06-05</a></li>
</ul>
<h3 id="authors-1">Authors</h3>
<ul>
<li><a href="https://codeberg.org/guidocella">Guido Cella</a></li>
</ul>
<hr />
<h1 id="attachbottom">attachbottom</h1>
<h3 id="description-2">Description</h3>
<p>Newly created windows are placed at the bottom of the client tile
stack.</p>
<h3 id="download-2">Download</h3>
<ul>
<li><a href="https://codeberg.org/bencc/dwl/src/branch/attachbottom">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/attachbottom/attachbottom.patch">2024-05-16</a></li>
</ul>
<h3 id="authors-2">Authors</h3>
<ul>
<li><a href="https://codeberg.org/bencc">Ben Collerson</a></li>
<li><a href="https://github.com/AurelWeinhold">Aurel Weinhold</a></li>
</ul>
<hr />
<h1 id="attachtop">attachtop</h1>
<h3 id="description-3">Description</h3>
<p>This is a port of attachtop patch for dwm: <a
href="https://dwm.suckless.org/patches/attachtop">https://dwm.suckless.org/patches/attachtop</a></p>
<p>New client attaches below the last master/on top of the stack.</p>
<p>Behavior feels very intuitive as it doesn't disrupt existing masters
no matter the amount of them, it only pushes the clients in stack
down.</p>
<h3 id="download-3">Download</h3>
<ul>
<li><a
href="https://codeberg.org/nikitaivanov/dwl/src/branch/attachtop">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/attachtop/attachtop.patch">2024-04-23</a></li>
</ul>
<h3 id="authors-3">Authors</h3>
<ul>
<li><a href="https://codeberg.org/nikitaivanov">Nikita Ivanov</a></li>
</ul>
<hr />
<h1 id="autostart">autostart</h1>
<h3 id="description-4">Description</h3>
<p>Allow dwl to execute commands from autostart array in your config.h
file. And when you exit dwl all processes from autostart array will be
killed.</p>
<p>Note: Commands from array are executed using execvp(). So if you need
to execute shell command you need to prefix it with "sh", "-c" (change
sh to any shell you like).</p>
<h3 id="download-4">Download</h3>
<ul>
<li><a href="https://codeberg.org/sevz/dwl/src/branch/autostart">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/autostart/autostart.patch">2024-06-07</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/autostart/autostart-0.7.patch">0.7</a></li>
</ul>
<h3 id="authors-4">Authors</h3>
<ul>
<li><a href="https://codeberg.org/sevz">sevz</a></li>
<li><a href="https://nakibrayan2.pages.dev/">Rayan Nakib</a></li>
<li><a href="https://github.com/nf02">NFVblog</a></li>
</ul>
<hr />
<h1 id="bar">bar</h1>
<h3 id="description-5">Description</h3>
<p>Add a bar identical to dwm's bar.</p>
<p>To use a status-bar, you can pass in status text via stdin:</p>
<pre><code>slstatus -s | dwl</code></pre>
<h3 id="dependencies">Dependencies</h3>
<ul>
<li>tllist (build dependency, required &amp; pulled automatically by
fcft)</li>
<li>fcft</li>
<li>pixman</li>
</ul>
<h3 id="download-5">Download</h3>
<ul>
<li><a
href="/dwl/dwl-patches/raw/branch/main/patches/bar/bar-0.7.patch">0.7</a>)</li>
<li><a
href="/dwl/dwl-patches/raw/branch/main/patches/bar/bar-0.6.patch">0.6</a>)</li>
</ul>
<p>Below is a preview of the patch.</p>
<p><img src="bar.png" alt="bar patch preview" /></p>
<p>For colors, they are in <code>RRRR, GGGG, BBBB, AAAA</code> format
due to inheriting the <code>pixman_color_t</code> type, an example for
the color <code>0x282a36</code> would be
<code>0x2828, 0x2a2a, 0x3636, 0xffff</code></p>
<h3 id="authors-5">Authors</h3>
<ul>
<li><a href="https://codeberg.org/sewn">sewn</a></li>
</ul>
<h3 id="credits">Credits</h3>
<ul>
<li><a href="https://github.com/MadcowOG">MadcowOG</a></li>
<li><a href="https://github.com/kolunmi/dwlb">kolumni</a></li>
</ul>
<hr />
<h1 id="bar-systray">bar-systray</h1>
<h3 id="description-6">Description</h3>
<p>Add a system tray next to the <a
href="https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/bar">bar</a>.
Heed the warning, this is far from suckless ^^</p>
<p><img src="systray.png" alt="preview" /></p>
<h3 id="dependencies-1">Dependencies</h3>
<ul>
<li>GTK4</li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/bar">bar.patch</a>
as mentioned.</li>
<li><a
href="https://github.com/wmww/gtk4-layer-shell">gtk4-layer-shell</a></li>
<li><a
href="https://codeberg.org/janetski/statusnotifier-systray-gtk4">statusnotifier-systray-gtk4</a>
built as a static library.</li>
</ul>
<h3 id="applying-the-patch">Applying the patch</h3>
<p>The patch applies on top of the bar patch. That needs to be applied
first.</p>
<p>The patch creates subdirectories <code>lib</code> and
<code>include</code>. After patching, but before <code>make</code>,
install <code>libstatusnotifier-systray-gtk4.a</code> and
<code>snsystray.h</code> from statusnotifier-systray-gtk4 in the
directories. One possible way to do that:</p>
<ol type="1">
<li>Clone [<a
href="https://codeberg.org/janetski/statusnotifier-systray-gtk4](https://codeberg.org/janetski/statusnotifier-systray-gtk4)">https://codeberg.org/janetski/statusnotifier-systray-gtk4](https://codeberg.org/janetski/statusnotifier-systray-gtk4)</a>.
Can clone to any location.</li>
<li>From statusnotifier-systray-gtk4 root:
<ol type="1">
<li><code>$ meson setup --default-library=static --prefix=/ -Dgir=false -Dvala=false -Ddocs=false build</code></li>
<li><code>$ meson compile -C build</code></li>
<li><code>$ DESTDIR=$DWLDIR meson install -C build</code>, where $DWLDIR
is the path to dwl root.</li>
</ol></li>
<li>Finally, from dwl root, run <code>make</code>.</li>
</ol>
<h3 id="download-6">Download</h3>
<ul>
<li><a
href="https://codeberg.org/janetski/dwl/src/branch/0.7-systray">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/bar-systray/bar-systray-0.7.patch">0.7</a></li>
</ul>
<h3 id="authors-6">Authors</h3>
<ul>
<li><a href="https://codeberg.org/janetski">janetski</a> (<a
href="https://discordapp.com/users/355488216469471242">.vetu</a> on
discord)</li>
</ul>
<hr />
<h1 id="barborder">barborder</h1>
<h3 id="description-7">Description</h3>
<p>Add a border around the <a href="/dwl/dwl-patches/wiki/bar">bar</a>
similar to how a client is given a border.</p>
<h3 id="download-7">Download</h3>
<ul>
<li><a
href="/dwl/dwl-patches/raw/branch/main/patches/barborder/barborder.patch">0.7</a></li>
</ul>
<h3 id="authors-7">Authors</h3>
<ul>
<li><a href="https://codeberg.org/sewn">sewn</a></li>
</ul>
<hr />
<h1 id="barcolors">barcolors</h1>
<h3 id="description-8">Description</h3>
<p>Add support for colored status text to the <a
href="/dwl/dwl-patches/src/branch/main/patches/bar">bar</a>. Text can be
colored in the same manner as with dwlb, namely by wrapping it between
<code>^fg(color)</code> and <code>^fg()</code> or
<code>^bg(color)</code> and <code>^bg()</code>, where <code>color</code>
is a 6-digit hexadecimal value.</p>
<h3 id="download-8">Download</h3>
<ul>
<li><a href="/kerberoge/dwl/src/branch/barcolors">git branch</a></li>
<li><a
href="/dwl/dwl-patches/raw/branch/main/patches/barcolors/barcolors.patch">0.7</a></li>
</ul>
<h3 id="authors-8">Authors</h3>
<ul>
<li><a href="https://codeberg.org/kerberoge">kerberoge</a></li>
</ul>
<hr />
<h1 id="barheight">barheight</h1>
<h3 id="description-9">Description</h3>
<p>Adds the ability to change the <a
href="https://codeberg.org/dwl/dwl-patches/wiki/bar">bar's</a>
height.</p>
<h3 id="download-9">Download</h3>
<ul>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/barheight/barheight.patch">2024-06-26</a>
(bar 2024-06-26)</li>
<li><a href="https://codeberg.org/Oak/dwl/src/branch/barheight">git
branch</a></li>
</ul>
<h3 id="authors-9">Authors</h3>
<ul>
<li><a href="https://codeberg.org/oak">Oak</a></li>
</ul>
<hr />
<h1 id="barpadding">barpadding</h1>
<h3 id="description-10">Description</h3>
<p>Add vertical and horizontal space between the <a
href="/dwl/dwl-patches/wiki/bar">bar</a> and the edge of the screen.</p>
<h3 id="download-10">Download</h3>
<ul>
<li><a
href="/dwl/dwl-patches/raw/branch/main/patches/barpadding/barpadding.patch">0.7</a></li>
</ul>
<h3 id="authors-10">Authors</h3>
<ul>
<li><a href="https://codeberg.org/sewn">sewn</a></li>
</ul>
<hr />
<h1 id="borders">borders</h1>
<h3 id="description-11">Description</h3>
<p>Adds 2 more borders to each side (top, bottom, left, right) of every
window.</p>
<details>
<summary>Preview</summary>
<pre>
With the following config:
<div class="sourceCode" id="cb2"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="dt">unsigned</span> <span class="dt">int</span> borderpx <span class="op">=</span> <span class="dv">9</span><span class="op">;</span> <span class="co">/* border pixel of windows */</span></span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="dt">unsigned</span> <span class="dt">int</span> borderspx <span class="op">=</span> <span class="dv">3</span><span class="op">;</span> <span class="co">/* width of the border that start from outside the windows */</span></span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="dt">unsigned</span> <span class="dt">int</span> borderepx <span class="op">=</span> <span class="dv">3</span><span class="op">;</span> <span class="co">/* width of the border that start from inside the windows */</span></span></code></pre></div>
<p>and <code>border_color_type</code> set to <code>BrdOriginal</code>:
<img src="https://i.imgur.com/msead2K.png"/></p>
<p>and <code>border_color_type</code> set to <code>BrdStart</code>:
<img src="https://i.imgur.com/ssgPG36.png"/></p>
<p>and <code>border_color_type</code> set to <code>BrdEnd</code>:
<img src="https://i.imgur.com/i2Xtjy6.png"/></p>
<p>and <code>border_color_type</code> set to <code>BrdStartEnd</code>:
<img src="https://i.imgur.com/fnkitdR.png"/> </pre></p>
</details>
<h3 id="download-11">Download</h3>
<ul>
<li><a
href="https://codeberg.org/wochap/dwl/src/branch/v0.5/borders">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/1a6825f2b8cd23044312c8040d0bf63ee7f85bc5/patches/borders/borders.patch">2024-06-04</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/borders/borders.patch">v0.5</a></li>
</ul>
<h3 id="authors-11">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
</ul>
<hr />
<h1 id="bottomstack">bottomstack</h1>
<h3 id="description-12">Description</h3>
<p>bstack and bstackhoriz are two stack layouts for dwl.</p>
<h3 id="scheme">Scheme</h3>
<pre><code>bstack (TTT) bstackhoriz (===)
+-----------------+ +-----------------+
| | | |
| | | |
| | | |
+-----+-----+-----+ +-----------------+
| | | | +-----------------+
| | | | +-----------------+
+-----+-----+-----+ +-----------------+</code></pre>
<h3 id="download-12">Download</h3>
<ul>
<li><a
href="https://codeberg.org/wochap/dwl/src/branch/v0.6-b/bottomstack">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/20de07dc8759200c8a4c9651475acb331d245890/patches/bottomstack/bottomstack.patch">2024-07-09</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/0f4e40fee49d1b8b430778e241b29496ae3b3b70/bottomstack/bottomstack.patch">2024-04-11</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/5368aa392c7ebf8d7d24c232b80cfae1be457d41/bottomstack/bottomstack.patch">v0.5</a></li>
</ul>
<h3 id="authors-12">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
<li><a href="https://github.com/DanielMowitz">DanielMowitz</a></li>
<li><a href="https://github.com/Abanoub8">Abanoub8</a></li>
</ul>
<hr />
<h1 id="buttonbystate">buttonbystate</h1>
<h3 id="description-13">Description</h3>
<p>Adds "state" (<code>enum wlr_button_state</code>) to configure a
button action on either press or release. This basically enables release
to be used for button actions.</p>
<h3 id="download-13">Download</h3>
<ul>
<li><a
href="https://codeberg.org/nullsystem/dwl/src/branch/main_buttonbystate">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/buttonbystate/buttonbystate.patch">2024-04-06</a></li>
</ul>
<h3 id="authors-13">Authors</h3>
<ul>
<li><a href="https://codeberg.org/nullsystem">nullsystem</a></li>
</ul>
<hr />
<h1 id="center-terminal">center-terminal</h1>
<h3 id="description-14">Description</h3>
<p>Add a keybinding that toggles centering the terminally horizontally
when it's the only window, while still tiling multiple windows.</p>
<p>This limits the width of long text making it easier to read, and
avoids covering the wallpaper more than necessary.</p>
<h3 id="download-14">Download</h3>
<ul>
<li><a
href="https://codeberg.org/guidocella/dwl/src/branch/center-terminal">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/center-terminal/center-terminal.patch">2024-02-06</a></li>
</ul>
<h3 id="authors-14">Authors</h3>
<ul>
<li><a href="https://codeberg.org/guidocella">Guido Cella</a></li>
</ul>
<hr />
<h1 id="centeredmaster">centeredmaster</h1>
<h3 id="description-15">Description</h3>
<p>This is a port of centeredmaster patch for dwm: <a
href="https://dwm.suckless.org/patches/centeredmaster">https://dwm.suckless.org/patches/centeredmaster</a></p>
<p>centeredmaster centers the nmaster area on screen, using mfact *
monitor width &amp; height, with the stacked windows distributed to the
left and right. It can be selected with <code>Alt+c</code>.</p>
<p>With one and two clients in master respectively this results in:</p>
<pre><code>+------------------------------+ +------------------------------+
|+--------++--------++--------+| |+--------++--------++--------+|
|| || || || || || || ||
|| || || || || || M1 || ||
|| || || || || || || ||
|| S2 || M || S1 || || |+--------+| ||
|| || || || || |+--------+| ||
|| || || || || || || ||
|| || || || || || M2 || ||
|| || || || || || || ||
|+--------++--------++--------+| |+--------++--------++--------+|
+------------------------------+ +------------------------------+</code></pre>
<h3 id="download-15">Download</h3>
<ul>
<li><a
href="https://codeberg.org/wochap/dwl/src/branch/v0.5/centeredmaster">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/b104a580a80ebaf9f7e8917fe574e3e97ddd019a/centeredmaster/centeredmaster.patch">2024-04-11</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/0f4e40fee49d1b8b430778e241b29496ae3b3b70/centeredmaster/centeredmaster.patch">v0.5</a></li>
</ul>
<h3 id="authors-15">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
<li><a href="https://github.com/NikitaIvanovV">Nikita Ivanov</a></li>
</ul>
<hr />
<h1 id="cfact">cfact</h1>
<h3 id="description-16">Description</h3>
<p>A port of the <a href="https://dwm.suckless.org/patches/cfacts/">dwm
cfacts patch</a> (with the limits removed)</p>
<p>Clients with higher weight are allocated more space!</p>
<pre><code>+---------------------+
| | 0.5 |
| 1.0 +----------+
+----------+ |
| | 1.0 |
| +----------+
| 2.0 | |
| | 1.0 |
+----------+----------+`</code></pre>
<h3 id="download-16">Download</h3>
<ul>
<li><a href="https://codeberg.org/Palanix/dwl/src/branch/cfact">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/cfact/cfact-v0.7.patch">v0.7</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/cfact/cfact-v0.6.patch">v0.6</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/cfact/cfact.patch">2024-02-15</a></li>
</ul>
<h3 id="authors-16">Authors</h3>
<ul>
<li><a href="https://codeberg.org/Palanix">Palanix</a></li>
</ul>
<hr />
<h1 id="cfact-centeredmaster">cfact-centeredmaster</h1>
<h3 id="description-17">Description</h3>
<p>Port of the cfact patch for the centeredmaster layout.</p>
<p>Inspired by the original patch for dwm (<a
href="https://dwm.suckless.org/patches/cfacts/">https://dwm.suckless.org/patches/cfacts/</a>)</p>
<p>This patch requires both <a
href="https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/cfact">cfact</a>
and <a
href="https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/centeredmaster">centeredmaster</a>
patches.</p>
<h3 id="download-17">Download</h3>
<ul>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/cfact-centeredmaster/cfact-centeredmaster.patch">2024-06-26</a></li>
</ul>
<h3 id="authors-17">Authors</h3>
<ul>
<li><a href="https://codeberg.org/acadmendes">acadmendes</a></li>
</ul>
<hr />
<h1 id="chainkeys">chainkeys</h1>
<h3 id="description-18">Description</h3>
<p>Implements chained keybindings (like the dwm <a
href="https://dwm.suckless.org/patches/keychain/">keychain</a>
patch).</p>
<p>Bindings can share a leading chain key. This chain key will be
triggered when Mod+chain is pressed. A subsequent keypress will be
matched against bindings for that chain key. If it is configured the
action will be triggered, otherwise the keypress will be ignored.</p>
<h3 id="download-18">Download</h3>
<ul>
<li><a href="https://codeberg.org/bencc/dwl/src/branch/chainkeys">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/chainkeys/chainkeys.patch">2024-05-20</a></li>
</ul>
<h3 id="authors-18">Authors</h3>
<ul>
<li><a href="https://codeberg.org/bencc">Ben Collerson</a></li>
</ul>
<hr />
<h1 id="client-opacity">client-opacity</h1>
<h3 id="description-19">Description</h3>
<p>This patch adds default transparency parameters to config.h which
specify the starting transparencies of all windows.</p>
<p>It also adds opacities to the ruleset, enabling override of the
opacities on a per client basis.</p>
<p>Additionally, it adds some shortcuts:</p>
<pre><code>[MODKEY]+[o] -&gt; increase focus opacity of currently focused window
[MODKEY]+[Shift]+[o] -&gt; decrease focus opacity of currently focused window</code></pre>
<h3 id="download-19">Download</h3>
<ul>
<li><a
href="https://codeberg.org/sevz/dwl/src/branch/client-opacity">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/client-opacity/client-opacity.patch">2024-06-07</a></li>
</ul>
<h3 id="authors-19">Authors</h3>
<ul>
<li><a href="https://codeberg.org/sevz">sevz</a></li>
</ul>
<hr />
<h1 id="column">column</h1>
<h3 id="description-20">Description</h3>
<p>A column layout patch. This patch just puts the visible clients into
equal-width columns on the screen.</p>
<h3 id="download-20">Download</h3>
<ul>
<li><a href="https://codeberg.org/bencc/dwl/src/branch/column">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/column/column.patch">2024-01-02</a></li>
</ul>
<h3 id="authors-20">Authors</h3>
<ul>
<li><a href="https://codeberg.org/bencc">Ben Collerson</a></li>
</ul>
<hr />
<h1 id="coredump">coredump</h1>
<h3 id="description-21">Description</h3>
<p>Generate a coredump if dwl exited abnormally (to be more usefull you
need to compile dwl and wlroots with debug symbols)</p>
<h3 id="download-21">Download</h3>
<ul>
<li><a href="https://codeberg.org/sevz/dwl/src/branch/coredump">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/coredump/coredump.patch">2024-06-07</a></li>
</ul>
<h3 id="authors-21">Authors</h3>
<ul>
<li><a href="https://codeberg.org/sevz">sevz</a></li>
</ul>
<hr />
<h1 id="cursortheme">cursortheme</h1>
<h3 id="description-22">Description</h3>
<p>Adds ability to change cursor's theme and size.</p>
<div class="sourceCode" id="cb7"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="dt">char</span> <span class="op">*</span>cursor_theme <span class="op">=</span> NULL<span class="op">;</span></span>
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="dt">char</span> cursor_size<span class="op">[]</span> <span class="op">=</span> <span class="st">&quot;24&quot;</span><span class="op">;</span> <span class="co">/* Make sure it&#39;s a valid integer, otherwise things will break */</span></span></code></pre></div>
<h3 id="download-22">Download</h3>
<ul>
<li><a
href="https://codeberg.org/wochap/dwl/src/branch/v0.5/cursortheme">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/13d96b51b54500dd24544cf3a73c61b7a1414bc6/patches/cursortheme/cursortheme.patch">2024-07-09</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/b828e21717fa584affeb3245359c3ab615759fa4/cursortheme/cursortheme.patch">2024-04-11</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/c676de59d51e613bd52ac46c77a24b1cac9a61a1/cursortheme/cursortheme.patch">v0.5</a></li>
</ul>
<h3 id="authors-22">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
<li><a href="https://github.com/egorguslyan">egorguslyan</a></li>
</ul>
<hr />
<h1 id="customfloat">customfloat</h1>
<h3 id="description-23">Description</h3>
<p>Rules for floating windows support default x, y, width, height.
Defaults to the center of the screen and the client size.</p>
<p>If the width or height is less than or equal to 1, then the value
will be interpreted as a percentage. For example, 0.5 represents 50%,
0.25 represents 25%, and 1 represents 100%. <strong>NOTE</strong>: Some
clients, like Thunar, have minimum width/height</p>
<p>The variable <code>center_relative_to_monitor</code> allows the user
to choose whether to center relative to the monitor or relative to the
window area.</p>
<details>
<summary>Explanation of center_relative_to_monitor:</summary>
<pre>
The "Monitor area" refers to the space enclosed by the green rectangle, while the "Window area" refers to the space enclosed by the red rectangle.
<img src="https://i.imgur.com/xhejzPh.png"/>
</pre>
</details>
<h3 id="download-23">Download</h3>
<ul>
<li><a
href="https://codeberg.org/wochap/dwl/src/branch/v0.5/customfloat">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/13d96b51b54500dd24544cf3a73c61b7a1414bc6/patches/customfloat/customfloat.patch">2024-07-09</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/98cba933c9f4099202e54f39acbf17e05bde828a/customfloat/customfloat.patch">2024-04-11</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/bf098459219e7a473d8edb4c0435aeb6a4b82e38/customfloat/customfloat.patch">v0.5</a></li>
</ul>
<h3 id="authors-23">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
<li><a href="https://github.com/Stivvo">Stivvo</a></li>
</ul>
<hr />
<h1 id="deck">deck</h1>
<h3 id="description-24">Description</h3>
<p>Adds a layout with a monocle layout for clients in the stack (port of
the <a href="https://dwm.suckless.org/patches/deck/">deck layout for
dwm</a>); stacked clients are like a deck of cards (see below)</p>
<pre><code>Tile:
+-----------------+--------+
| | |
| | S1 |
| | |
| M +--------+
| | |
| | S2 |
| | |
+-----------------+--------+
Deck:
+-----------------+--------+
| | |
| | |
| | |
| M | S1 |
| | |
| | |
| | |
+-----------------+--------+</code></pre>
<h3 id="download-24">Download</h3>
<ul>
<li><a href="https://codeberg.org/anabasis/dwl/src/branch/deck">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/deck/deck.patch">2024-05-10</a></li>
</ul>
<h3 id="authors-24">Authors</h3>
<ul>
<li><a href="https://codeberg.org/anabasis">anabasis</a></li>
<li><a href="https://codeberg.org/Palanix">Palanix</a></li>
</ul>
<hr />
<h1
id="define-modkey-with-make-argument">define-modkey-with-make-argument</h1>
<h3 id="description-25">Description</h3>
<p>This patch adds the ability to define the modkey with a make argument
like so:</p>
<pre><code>make MODKEY=WLR_MODIFIER_ALT
make MODKEY=WLR_MODIFIER_LOGO
make MODKEY=WLR_MODIFIER_CTRL
make MODKEY=WLR_MODIFIER_SHIFT</code></pre>
<p>It can be used to compile multiple times quickly, you can also have a
main session and sub session with different modkeys.</p>
<h3 id="download-25">Download</h3>
<ul>
<li><a
href="https://codeberg.org/Abanoub/dwl/src/branch/define-modkey-patch">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/define-modkey-with-make-argument/define-modkey-with-make-argument.patch">2024-02-14</a></li>
</ul>
<h3 id="authors-25">Authors</h3>
<ul>
<li><a href="https://codeberg.org/Abanoub">Abanoub</a></li>
</ul>
<hr />
<h1 id="dim-unfocused">dim-unfocused</h1>
<h3 id="description-26">Description</h3>
<p>Implements dimming of clients which are unfocused.</p>
<p>The code also allows you to "dim" focused windows if you wish to, and
as such allows any color dimming. There is also an additional option in
Rule, which allows you to keep the client <code>alwaysbright</code>,
that is, as if it is focused.</p>
<h3 id="download-26">Download</h3>
<ul>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/dim-unfocused/dim-unfocused.patch">2024-07-14</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/dim-unfocused/dim-unfocused-20240516.patch">2024-05-16</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/dim-unfocused/dim-unfocused-20240416.patch">2024-04-16</a></li>
<li><a
href="https://codeberg.org/dhruva_sambrani/dwl/src/branch/dim-unfocused">git
branch</a></li>
</ul>
<h3 id="authors-26">Authors</h3>
<ul>
<li><a href="https://codeberg.org/dhruva_sambrani">Dhruva
Sambrani</a></li>
</ul>
<hr />
<h1 id="dragmfact">dragmfact</h1>
<h3 id="description-27">Description</h3>
<p>Change mfact by dragging the mouse.</p>
<h3 id="download-27">Download</h3>
<ul>
<li><a href="https://codeberg.org/Palanix/dwl/src/branch/dragmfact">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/dragmfact/dragmfact-v0.7.patch">v0.7</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/dragmfact/dragmfact-v0.6.patch">v0.6</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/dragmfact/dragmfact.patch">2024-02-16</a></li>
</ul>
<h3 id="authors-27">Authors</h3>
<ul>
<li><a href="https://codeberg.org/Palanix">Palanix</a></li>
</ul>
<hr />
<h1 id="dragresize">dragresize</h1>
<h3 id="description-28">Description</h3>
<p>implement rio-like window resizing</p>
<p>select window to resize (mod+middleclick by default) then drag out an
area for it to occupy</p>
<h3 id="download-28">Download</h3>
<ul>
<li><a href="https://codeberg.org/notchoc/dwl/src/branch/dragresize">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/dragresize/dragresize.patch">2024-07-10</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/8c75e6dbc1728bf70d42547222464f496d9ea613/patches/dragresize/dragresize.patch">2024-06-19</a></li>
</ul>
<h3 id="authors-28">Authors</h3>
<ul>
<li><a href="https://codeberg.org/notchoc">notchoc</a></li>
</ul>
<hr />
<h1 id="en-keycodes">en-keycodes</h1>
<h3 id="description-29">Description</h3>
<p>Always use the English keymap to get keycodes, so key bindings work
even when using a non-English keyboard layout.</p>
<h3 id="download-29">Download</h3>
<ul>
<li><a
href="https://codeberg.org/ForzCross/dwl/src/branch/en-keycodes.patch">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/en-keycodes/en-keycodes.patch">2024-01-11</a></li>
</ul>
<h3 id="authors-29">Authors</h3>
<ul>
<li><a href="https://codeberg.org/ForzCross">ForzCross</a></li>
<li><a href="https://github.com/NikitaIvanovV">Nikita Ivanov</a></li>
<li><a href="https://codeberg.org/dimkr">dimkr</a> (<a
href="mailto:dima@dimakrasner.com">dima@dimakrasner.com</a>)</li>
</ul>
<hr />
<h1 id="envcfg">envcfg</h1>
<h3 id="description-30">Description</h3>
<p>Input device configuration (click method, tap-and-drag, acceleration,
etc), border size and colors via environment variables.</p>
<h3 id="download-30">Download</h3>
<ul>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/env/env.patch">2024-02-11</a></li>
</ul>
<h3 id="authors-30">Authors</h3>
<ul>
<li><a href="https://codeberg.org/dimkr">Dima Krasner</a> (<a
href="mailto:dima@dimakrasner.com">dima@dimakrasner.com</a>)</li>
</ul>
<hr />
<h1 id="fakefullscreenclient">fakefullscreenclient</h1>
<h3 id="description-31">Description</h3>
<p>Allow setting fake fullscreen per client</p>
<h3 id="download-31">Download</h3>
<ul>
<li><a
href="https://codeberg.org/notchoc/dwl/src/branch/fakefullscreenclient">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/fakefullscreenclient/fakefullscreenclient.patch">2024-03-29</a></li>
</ul>
<h3 id="authors-31">Authors</h3>
<ul>
<li><a href="https://codeberg.org/notchoc">notchoc</a></li>
</ul>
<hr />
<h1 id="fallback">fallback</h1>
<h3 id="description-32">Description</h3>
<p>Tries a different display mode if the preferred mode doesn't
work.</p>
<h3 id="download-32">Download</h3>
<ul>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/fallback/fallback.patch">2024-02-11</a></li>
</ul>
<h3 id="authors-32">Authors</h3>
<ul>
<li><a href="https://codeberg.org/dimkr">Dima Krasner</a> (<a
href="mailto:dima@dimakrasner.com">dima@dimakrasner.com</a>)</li>
</ul>
<hr />
<h1 id="float-unfocused-border-color">float-unfocused-border-color</h1>
<h3 id="description-33">Description</h3>
<p>A revive of the floatBorderColor patch.</p>
<p>This patch allows you to set a color for floating windows when they
are unfocused.</p>
<h3 id="download-33">Download</h3>
<ul>
<li><a
href="https://codeberg.org/yuki-was-taken/dwl-patch/src/branch/float-unfocused-border-color/">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/float-unfocused-border-color/float-unfocused-border-color.patch">2024-06-07</a></li>
</ul>
<h3 id="authors-33">Authors</h3>
<ul>
<li><a href="https://codeberg.org/yuki-was-taken">yuki</a></li>
<li><a href="https://codeberg.org/Palanix">Palanix (Original
Author)</a></li>
</ul>
<hr />
<h1 id="focusdir">focusdir</h1>
<h3 id="description-34">Description</h3>
<p>Focus the window to the left, right, above or below the current
focused window</p>
<h3 id="download-34">Download</h3>
<ul>
<li><a href="https://codeberg.org/ldev105/dwl/src/branch/focusdir">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/focusdir/focusdir.patch">2023-01-22</a></li>
</ul>
<h3 id="authors-34">Authors</h3>
<ul>
<li><a href="https://codeberg.org/ldev105">ldev105</a></li>
</ul>
<hr />
<h1 id="foreign-toplevel-management">foreign-toplevel-management</h1>
<h3 id="description-35">Description</h3>
<p>Implement <code>foreign-toplevel-management</code>, it add handlers
for activate, close, fullscreen and destroy request events, it's missing
minimize and maximize request handlers.</p>
<h3 id="download-35">Download</h3>
<ul>
<li><a
href="https://codeberg.org/wochap/dwl/src/branch/v0.6-a/foreign-toplevel-management">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/e58c3ec41a39df934d2998161d7187ac965ea77a/foreign-toplevel-management/foreign-toplevel-management.patch">2024-05-02</a></li>
</ul>
<h3 id="authors-35">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
</ul>
<hr />
<h1 id="gaplessgrid">gaplessgrid</h1>
<h3 id="description-36">Description</h3>
<p>Arranges windows in a grid. Except it adjusts the number of windows
in the first few columns to avoid empty cells.</p>
<h3 id="download-36">Download</h3>
<ul>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/gaplessgrid/gaplessgrid.patch">2024-07-14</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/gaplessgrid/gaplessgrid-20230801.patch">2023-08-01</a></li>
<li><a
href="https://codeberg.org/dhruva_sambrani/dwl/src/branch/gaplessgrid">git
branch</a></li>
</ul>
<h2 id="pre-codeberg">Pre-codeberg</h2>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...Sneethe:gaplessgrid.patch">2023-11-14</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...vnepogodin:gaplessgrid.patch">2021-07-27</a></li>
</ul>
<h3 id="authors-36">Authors</h3>
<ul>
<li><a href="https://github.com/Sneethe/">Sneethe</a></li>
<li><a href="https://github.com/vnepogodin">Vladislav Nepogodin</a></li>
<li><a href="https://codeberg.org/dhruva_sambrani/">Dhruva Sambrani</a>
(Revived to codeberg)</li>
</ul>
<hr />
<h1 id="gaps">gaps</h1>
<h3 id="description-37">Description</h3>
<p>Adds gaps between clients, providing the ability to disable them at
run-time.</p>
<p><code>smartgaps</code> can also be changed to remove gaps when there
is only one client present.</p>
<h3 id="download-37">Download</h3>
<ul>
<li><a href="https://codeberg.org/bigman/dwl/src/branch/gaps">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/gaps/gaps.patch">2024-07-12</a></li>
</ul>
<h3 id="authors-37">Authors</h3>
<ul>
<li><a href="https://codeberg.org/bigman">peesock</a></li>
<li><a href="https://codeberg.org/sewn">sewn</a></li>
<li><a href="https://github.com/serenevoid">Serene Void</a></li>
<li><a href="https://nakibrayan2.pages.dev">Rayan Nakib</a></li>
</ul>
<hr />
<h1 id="gestures">gestures</h1>
<h3 id="description-38">Description</h3>
<p>Add swipe gestures to trigger functions, similar to <a
href="https://github.com/bulletmark/libinput-gestures/tree/master">libinput-gestures</a>.
It supports the following gestures: <code>SWIPE_UP</code>,
<code>SWIPE_DOWN</code>, <code>SWIPE_LEFT</code> and
<code>SWIPE_RIGHT</code></p>
<blockquote>
<p>NOTE: It requires that you have previously applied <a
href="https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/pointer-gestures-unstable-v1">pointer-gestures-unstable-v1</a></p>
</blockquote>
<div class="sourceCode" id="cb10"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> Gesture gestures<span class="op">[]</span> <span class="op">=</span> <span class="op">{</span></span>
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true" tabindex="-1"></a> <span class="co">/* modifier gesture fingers_count function argument */</span></span>
<span id="cb10-3"><a href="#cb10-3" aria-hidden="true" tabindex="-1"></a> <span class="op">{</span> MODKEY<span class="op">,</span> SWIPE_LEFT<span class="op">,</span> <span class="dv">4</span><span class="op">,</span> shiftview<span class="op">,</span> <span class="op">{</span> <span class="op">.</span>i <span class="op">=</span> <span class="dv">1</span> <span class="op">}</span> <span class="op">},</span></span>
<span id="cb10-4"><a href="#cb10-4" aria-hidden="true" tabindex="-1"></a> <span class="op">{</span> <span class="dv">0</span><span class="op">,</span> SWIPE_RIGHT<span class="op">,</span> <span class="dv">4</span><span class="op">,</span> shiftview<span class="op">,</span> <span class="op">{</span> <span class="op">.</span>i <span class="op">=</span> <span class="op">-</span><span class="dv">1</span> <span class="op">}</span> <span class="op">},</span></span>
<span id="cb10-5"><a href="#cb10-5" aria-hidden="true" tabindex="-1"></a><span class="op">};</span></span></code></pre></div>
<p><strong>NOTE:</strong> the example above requires the following patch
<a
href="https://codeberg.org/dwl/dwl-patches/wiki/shiftview">shiftview</a></p>
<h3 id="download-38">Download</h3>
<ul>
<li><a
href="https://codeberg.org/wochap/dwl/src/branch/v0.5/gestures">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/13d96b51b54500dd24544cf3a73c61b7a1414bc6/patches/gestures/gestures.patch">2024-07-09</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/be3735bc6a5c64ff76c200a8679453bd179be456/gestures/gestures.patch">2024-04-11</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/655fd2916c1bcaa022ce6dcdfb370051cf64df66/gestures/gestures.patch">v0.5</a></li>
</ul>
<h3 id="authors-38">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
</ul>
<hr />
<h1 id="globalkey">globalkey</h1>
<h3 id="description-39">Description</h3>
<p>This patch adds ability to pass specified in config header keys
globally, somewhat in hyprlands approach. This might deal with waylands
lack of global shortcuts.</p>
<p>Example:</p>
<pre><code>static const PassKeypressRule pass_rules[] = {
ADDPASSRULE(&quot;com.obsproject.Studio&quot;, MODKEY, XKB_KEY_Home),
ADDPASSRULE(&quot;discord&quot;, 0, XKB_KEY_n),
/* xkb key is case ignored */
};</code></pre>
<p>will pass <code>MODKEY + Home</code> key to obs(flatpak version)
regardless of what client is currently focused if any. String
"com.obsproject.Studio" should be exact match for appid of the client.
To get appid use <a
href="https://codeberg.org/notchoc/dwlmsg">dwlmsg</a>, or run stock dwl
from a terminal then launch the needed application inside, dwl will
print all the info to the stdout.</p>
<p>Note that if popup (like <a
href="https://codeberg.org/dnkl/fuzzel">fuzzel</a>) is focused, no key
will be globally passed. This is done so these menus don't get closed
after hitting some of the global keys.</p>
<h3 id="download-39">Download</h3>
<ul>
<li><a href="https://codeberg.org/korei999/dwl/src/branch/globalkey">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/globalkey/globalkey.patch">2024-06-08</a></li>
</ul>
<h3 id="authors-39">Authors</h3>
<ul>
<li><a href="https://codeberg.org/korei999">korei999</a></li>
</ul>
<hr />
<h1 id="headless">headless</h1>
<h3 id="description-40">Description</h3>
<p>Implements <code>swaymsg create_output</code> command, it allows you
to create virtual/headless outputs. But in combination with a VNC server
(for example wayvnc), this allows you to essentially have additional
monitors, by connecting to the VNC server with an appropiate client (for
example on an tablet or laptop).</p>
<p>If you plan to use wayvnc, you'll need <a
href="https://codeberg.org/dwl/dwl-patches/wiki/virtual-pointer.-">virtual-pointer</a>
patch as well</p>
<h3 id="download-40">Download</h3>
<ul>
<li><a href="https://codeberg.org/wochap/dwl/src/v0.5/headless">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/0096e49402bc59b4050e12cdb9befb79d0011006/headless/headless.patch">v0.5</a></li>
</ul>
<h3 id="authors-40">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
</ul>
<hr />
<h1 id="hide-behind-fullscreen">hide-behind-fullscreen</h1>
<h3 id="description-41">Description</h3>
<p>Hide all clients (and layer surfaces) behind the current client if it
is fullscreen, only the background (layer surfaces at the background
layer) will be shown</p>
<h3 id="download-41">Download</h3>
<ul>
<li><a
href="https://codeberg.org/sevz/dwl/src/branch/hide-behind-fullscreen">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/hide-behind-fullscreen/hide-behind-fullscreen.patch">2024-06-13</a></li>
</ul>
<h3 id="authors-41">Authors</h3>
<ul>
<li><a href="https://codeberg.org/sevz">sevz</a></li>
</ul>
<hr />
<h1 id="hide-behind-monocle">hide-behind-monocle</h1>
<h3 id="description-42">Description</h3>
<p>Hide all clients behind the focused one in the monocle layout</p>
<h3 id="download-42">Download</h3>
<ul>
<li><a
href="https://codeberg.org/sevz/dwl/src/branch/hide-behind-monocle">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/hide-behind-monocle/hide-behind-monocle.patch">2024-06-13</a></li>
</ul>
<h3 id="authors-42">Authors</h3>
<ul>
<li><a href="https://codeberg.org/sevz">sevz</a></li>
</ul>
<hr />
<h1 id="hide_vacant_tags">hide_vacant_tags</h1>
<h3 id="description-43">Description</h3>
<p>Prevent <a href="/dwl/dwl-patches/wiki/bar">bar</a> from drawing tags
with no clients (i.e. vacant). It also stops drawing empty rectangles on
the bar for non-vacant tags as there is no need anymore to distinguish
vacant tags and it offers a more visible contrast than if there were
filled/empty rectangles.</p>
<h3 id="download-43">Download</h3>
<ul>
<li><a
href="/dwl/dwl-patches/raw/branch/main/patches/hide_vacant_tags/hide_vacant_tags.patch">0.7</a></li>
</ul>
<h3 id="authors-43">Authors</h3>
<ul>
<li><a href="https://codeberg.org/sewn">sewn</a></li>
</ul>
<hr />
<h1 id="hiderule">hiderule</h1>
<h3 id="description-44">Description</h3>
<p>Adds a <code>ishidden</code> option to client rules, that allows
hiding any matching clients entirely.</p>
<h3 id="download-44">Download</h3>
<ul>
<li><a href="https://codeberg.org/minego/dwl/src/branch/hiderule">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/hiderule/hiderule.patch">yyyy-mm-dd</a></li>
</ul>
<h3 id="authors-44">Authors</h3>
<ul>
<li><a href="https://codeberg.org/minego">minego</a></li>
</ul>
<hr />
<h1 id="inputdevicerules">inputdevicerules</h1>
<h3 id="description-45">Description</h3>
<p>Input device rules implemented using custom device create functions
for keyboards and pointing devices.</p>
<p>Examples provided:</p>
<ul>
<li>ignore unwanted input devices</li>
<li>configure a toggle input device</li>
<li>exclude certain keyboards (eg ydotool) from keyboard group</li>
</ul>
<h3 id="download-45">Download</h3>
<ul>
<li><a
href="https://codeberg.org/bencc/dwl/src/branch/inputdevicerules">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/inputdevicerules/inputdevicerules.patch">2024-06-21</a></li>
</ul>
<h3 id="authors-45">Authors</h3>
<ul>
<li><a href="https://codeberg.org/bencc">Ben Collerson</a></li>
</ul>
<hr />
<h1 id="ipc">ipc</h1>
<h3 id="description-46">Description</h3>
<p>Largely based on <a href="https://sr.ht/~raphi/">raphi</a>'s <a
href="https://sr.ht/~raphi/somebar/">somebar</a>, this patch provides an
ipc for wayland clients to get and set dwl state. The ipc is intended
for status bars, but can also be scripted with tools like <a
href="https://codeberg.org/notchoc/dwlmsg">dwlmsg</a>.</p>
<p>Status information to stdout is currently disabled as dwl tends to
freeze. For now, <code>dwlmsg -w</code> should act as a drop-in
replacement.</p>
<p>Note to <a href="../pertag/">pertag</a> users: apply <a
href="./ipcpertag.patch">this</a> for ipc tagsetting to work as
expected</p>
<h3 id="download-46">Download</h3>
<ul>
<li><a href="https://codeberg.org/notchoc/dwl/src/branch/ipc">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/ipc/ipc.patch">2024-08-16</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/d235f0f88ed069eca234da5a544fb1c6e19f1d33/patches/ipc/ipc.patch">2024-07-29</a>
don't focus other outputs (apply <a
href="./focus-tagset-output.patch">this minipatch</a> if you'd prefer
that)</li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/642b2559d522034785c1c1203c6d426855ec19ca/patches/ipc/ipc.patch">2024-07-16</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/9a751e5020133d3ab9219e68a43109c6f3c931a7/patches/ipc/ipc.patch">2024-06-30</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/f96ee44cbaef06bd38b8fa29ac7ecba8b1b5abd5/patches/ipc/ipc.patch">2024-06-21</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/e69afc7263b8d982a7923e5d4910f2e1f7140bb8/patches/ipc/ipc.patch">2024-06-19</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/f8598a91b44acc3bd7e9041be97265bbce8fa219/patches/ipc/ipc.patch">2024-06-08</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/0150cfebbcd85f2d6e6728afad345a11a0c45947/ipc/ipc.patch">2024-03-13</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/0c5ae06e4bc1d7f641376e8fcb86b43bd48ce2ee/ipc/ipc.patch">2024-02-20</a></li>
<li><a
href="https://gist.githubusercontent.com/fbushstone/b116c44340eb7a7878de1119dd931ca5/raw/ee66ac9e2a5dddd9b528df553e21080c2811e974/ipc-v2-fixed.patch">2023-10-28</a>
Updated version of 2023-04-29, prevents ipc from freezing the compositor
in printstatus.</li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...madcowog:ipc-v2.patch">2023-04-29</a>
Use this for dwl-ipc-unstable-v2. If you are using commit <a
href="https://github.com/djpohly/dwl/commit/9d68554c59a886b641d27a364884fb461af2d4f1">9d68554</a>
or later, use this. For status bars this protocol is supported by dwlb,
Waybar and dwl-bar.</li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...madcowog:ipc-bbdf2.patch">2023-04-29</a>
Use this for dwl-ipc-unstable-v1. If you are using commit <a
href="https://github.com/djpohly/dwl/commit/bbdf2a913b72e7a308ee0dfde6518a4285d4a775">bbdaf2a9</a>,
<a href="https://github.com/djpohly/dwl/releases/tag/v0.4">release
0.4</a> or earlier, use this. For status bars, this protocol is
supported by dwl-bar.</li>
<li><a
href="https://lists.sr.ht/~raphi/public-inbox/patches/39166">2023-02-20</a>
Use this for net-tapesoftware-dwl-wm-unstable-v1. If you are using
commit <a
href="https://github.com/djpohly/dwl/commit/c69a2bec3ff417fbc4ea8fec0a49096773e01e7d">c69a2bec</a>
or later, use this. For status bars this protocol is supported by
somebar.</li>
</ul>
<h3 id="authors-46">Authors</h3>
<ul>
<li><a href="https://github.com/MadcowOG">MadcowOG</a></li>
<li><a href="https://github.com/fbushstone">fbushstone</a></li>
<li><a href="https://codeberg.org/notchoc">notchoc</a></li>
<li><a href="https://codeberg.org/snuk">snuk</a></li>
</ul>
<hr />
<h1 id="kblayout">kblayout</h1>
<h3 id="description-47">Description</h3>
<p>This patch adds per-client keyboard layout and ability to send
current keyboard layout information to a status bar.</p>
<p>Only per-client feature is enabled by default. You can edit
<code>kblayout_file</code> and <code>kblayout_cmd</code> variables to
notify a status bar about keyboard layout.</p>
<p><a href="https://sr.ht/~raphi/someblocks">Someblocks</a> config that
works with the example settings in <code>config.h</code>:</p>
<div class="sourceCode" id="cb12"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> Block blocks<span class="op">[]</span> <span class="op">=</span> <span class="op">{</span></span>
<span id="cb12-2"><a href="#cb12-2" aria-hidden="true" tabindex="-1"></a> <span class="co">/*Icon*/</span> <span class="co">/*Command*/</span> <span class="co">/*Update Interval*/</span> <span class="co">/*Update Signal*/</span></span>
<span id="cb12-3"><a href="#cb12-3" aria-hidden="true" tabindex="-1"></a> <span class="op">{</span><span class="st">&quot;&quot;</span><span class="op">,</span> <span class="st">&quot;cat /tmp/dwl-kblayout&quot;</span><span class="op">,</span> <span class="dv">0</span><span class="op">,</span> <span class="dv">1</span><span class="op">},</span></span>
<span id="cb12-4"><a href="#cb12-4" aria-hidden="true" tabindex="-1"></a><span class="op">};</span></span></code></pre></div>
<p>Both of these features are included in one patch because their
implementation happens to share some code. If you don't need any of
these features, just disable it in <code>config.h</code>.</p>
<h3 id="download-47">Download</h3>
<ul>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/kblayout/kblayout.patch">2024-06-01</a></li>
</ul>
<h3 id="authors-47">Authors</h3>
<ul>
<li><a href="https://codeberg.org/ForzCross">ForzCross</a></li>
<li><a href="https://github.com/NikitaIvanovV">Nikita Ivanov</a></li>
</ul>
<hr />
<h1 id="keyboardshortcutsinhibit">keyboardshortcutsinhibit</h1>
<h3 id="description-48">Description</h3>
<p>Allows clients to use the keyboard-shortcuts-inhibit protocol to
block the compositor from using keybinds. This is useful for
virtualization software like looking-glass which requires this protocol
to run.</p>
<h3 id="download-48">Download</h3>
<ul>
<li><a
href="https://codeberg.org/Rutherther/dwl/src/branch/patch/keyboard-shortcuts-inhibit">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/keyboardshortcutsinhibit/keyboardshortcutsinhibit.patch">2024-05-10</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...madcowog:keyboard-shortcuts-inhibit.patch">2023-05-01</a></li>
</ul>
<h3 id="authors-48">Authors</h3>
<ul>
<li><a href="https://codeberg.org/Rutherther">Rutherther</a></li>
<li><a href="https://github.com/MadcowOG">MadcowOG</a></li>
</ul>
<hr />
<h1 id="keycodes">keycodes</h1>
<h3 id="description-49">Description</h3>
<p>Use keycodes instead of keysyms. This way, input is independent from
keyboard layout (you can use the keys.h file to customize, or get the
keycodes with <code>wev</code> or
<code>xkbcli interactive-wayland</code> (x11-libs/libxkbcommon[tools] in
gentoo)).</p>
<h3 id="download-49">Download</h3>
<ul>
<li><a href="https://codeberg.org/sevz/dwl/src/branch/keycodes">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/keycodes/keycodes.patch">2024-06-07</a></li>
</ul>
<h3 id="config-after-patching">Config after patching</h3>
<p>(run in DWL source directory)</p>
<pre><code>export XKB_DEFAULT_VARIANT=yourbestkeyboardlayout
cc -lxkbcommon -o generate-keys generate-keys.c
./generate-keys</code></pre>
<h3 id="authors-49">Authors</h3>
<ul>
<li><a href="https://codeberg.org/sevz">sevz</a></li>
</ul>
<hr />
<h1 id="less-simple-touch-input">less-simple-touch-input</h1>
<h3 id="description-50">Description</h3>
<p>Adds touchscreen functionality.</p>
<p>This patch was based on the <a
href="https://codeberg.org/dwl/dwl-patches/wiki/simple-touch-input">simple-touch-input</a>
but instead of emulating mouse movement, this now forwards the
appropriate event notifications to clients.</p>
<p>KNOWN BUGS:</p>
<ul>
<li>Sometimes, the pointer moves to where the screen is pressed, but the
button press doesn't occur until the screen is touched AGAIN. This means
that if you touch to click button 'Q' on the screen (for instance),
nothing happens; then you touch elsewhere on the screen and THEN button
'Q' registers a click. This is annoying, doesn't always happen, and I
don't yet know how to fix it.</li>
</ul>
<h3 id="download-50">Download</h3>
<ul>
<li><a href="https://codeberg.org/minego/dwl/src/branch/touch">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/less-simple-touch-input/less-simple-touch-input.patch">2024-03-26</a></li>
</ul>
<h3 id="authors-50">Authors</h3>
<ul>
<li><a href="https://codeberg.org/minego">minego</a></li>
<li><a href="https://codeberg.org/fauxmight">fauxmight</a></li>
<li><a href="https://github.com/Unprex">Unprex</a></li>
</ul>
<h3 id="changelog">Changelog</h3>
<ul>
<li>2024-02-11 Corrected issue where motion events where not sending
notifications for unfocused clients such as an on screen keyboard</li>
<li>2024-03-26 Rebased, and removed #ifdef's for the pointer constraints
patch which has been merged into upstream</li>
<li>2024-03-28 Removed debug</li>
</ul>
<hr />
<h1 id="limitnmaster">limitnmaster</h1>
<h3 id="description-51">Description</h3>
<p>Limits nmaster to within the range of currently-opened windows
(nmaster will not change past the full horizontal split layout)</p>
<h3 id="download-51">Download</h3>
<ul>
<li><a
href="https://codeberg.org/dev-gm/dwl/src/branch/limitnmaster">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/limitnmaster/limitnmaster.patch">2024-03-15</a></li>
</ul>
<h3 id="authors-51">Authors</h3>
<ul>
<li><a href="https://codeberg.org/dev-gm">dev-gm</a></li>
</ul>
<hr />
<h1 id="lockedkeys">lockedkeys</h1>
<h3 id="description-52">Description</h3>
<p>This patch allows you to add keybindings to the lockscreen.</p>
<div class="sourceCode" id="cb14"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> Key lockedkeys<span class="op">[]</span> <span class="op">=</span> <span class="op">{</span></span>
<span id="cb14-2"><a href="#cb14-2" aria-hidden="true" tabindex="-1"></a> <span class="co">/* Note that Shift changes certain key codes: c -&gt; C, 2 -&gt; at, etc. */</span></span>
<span id="cb14-3"><a href="#cb14-3" aria-hidden="true" tabindex="-1"></a> <span class="co">/* modifier key function argument */</span></span>
<span id="cb14-4"><a href="#cb14-4" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb14-5"><a href="#cb14-5" aria-hidden="true" tabindex="-1"></a> <span class="co">/* Ctrl-Alt-Backspace and Ctrl-Alt-Fx used to be handled by X server */</span></span>
<span id="cb14-6"><a href="#cb14-6" aria-hidden="true" tabindex="-1"></a> <span class="op">{</span> WLR_MODIFIER_CTRL<span class="op">|</span>WLR_MODIFIER_ALT<span class="op">,</span>XKB_KEY_Terminate_Server<span class="op">,</span> quit<span class="op">,</span> <span class="op">{</span><span class="dv">0</span><span class="op">}</span> <span class="op">},</span></span>
<span id="cb14-7"><a href="#cb14-7" aria-hidden="true" tabindex="-1"></a><span class="pp">#define CHVT</span><span class="op">(</span><span class="pp">n</span><span class="op">)</span><span class="pp"> </span><span class="op">{</span><span class="pp"> WLR_MODIFIER_CTRL</span><span class="op">|</span><span class="pp">WLR_MODIFIER_ALT</span><span class="op">,</span><span class="pp">XKB_KEY_XF86Switch_VT_</span><span class="op">##</span><span class="pp">n</span><span class="op">,</span><span class="pp"> chvt</span><span class="op">,</span><span class="pp"> </span><span class="op">{.</span>ui<span class="pp"> </span><span class="op">=</span><span class="pp"> </span><span class="op">(</span><span class="pp">n</span><span class="op">)}</span><span class="pp"> </span><span class="op">}</span></span>
<span id="cb14-8"><a href="#cb14-8" aria-hidden="true" tabindex="-1"></a> CHVT<span class="op">(</span><span class="dv">1</span><span class="op">),</span> CHVT<span class="op">(</span><span class="dv">2</span><span class="op">),</span> CHVT<span class="op">(</span><span class="dv">3</span><span class="op">),</span> CHVT<span class="op">(</span><span class="dv">4</span><span class="op">),</span> CHVT<span class="op">(</span><span class="dv">5</span><span class="op">),</span> CHVT<span class="op">(</span><span class="dv">6</span><span class="op">),</span></span>
<span id="cb14-9"><a href="#cb14-9" aria-hidden="true" tabindex="-1"></a> CHVT<span class="op">(</span><span class="dv">7</span><span class="op">),</span> CHVT<span class="op">(</span><span class="dv">8</span><span class="op">),</span> CHVT<span class="op">(</span><span class="dv">9</span><span class="op">),</span> CHVT<span class="op">(</span><span class="dv">10</span><span class="op">),</span> CHVT<span class="op">(</span><span class="dv">11</span><span class="op">),</span> CHVT<span class="op">(</span><span class="dv">12</span><span class="op">),</span></span>
<span id="cb14-10"><a href="#cb14-10" aria-hidden="true" tabindex="-1"></a><span class="op">};</span></span></code></pre></div>
<h3 id="download-52">Download</h3>
<ul>
<li><a
href="https://codeberg.org/wochap/dwl/src/branch/v0.5/lockedkeys">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/fc4146f3068dcd46035a2a11fe9d6109a97ae6d6/lockedkeys/lockedkeys.patch">2024-04-11</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/2a6560c167e5c9afc5598ac5431d23d90de8846c/lockedkeys/lockedkeys.patch">v0.5</a></li>
</ul>
<h3 id="authors-52">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
</ul>
<hr />
<h1 id="master-right">master-right</h1>
<h3 id="description-53">Description</h3>
<p>Show the master area to the right.</p>
<h3 id="download-53">Download</h3>
<ul>
<li><a href="https://codeberg.org/sevz/dwl/src/branch/master-right">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/master-right/master-right.patch">2024-06-07</a></li>
</ul>
<h3 id="authors-53">Authors</h3>
<ul>
<li><a href="https://codeberg.org/sevz">sevz</a></li>
</ul>
<hr />
<h1 id="mastercolumn">mastercolumn</h1>
<h3 id="description-54">Description</h3>
<p>This patch adds a layout, <code>mastercol</code>, in which the
windows in the master area are arranged in columns of equal size. The
number of columns is always nmaster + 1, and the last column is a stack
of leftover windows (as in the normal tile layout). It effectively
differs from the default tile layout only in that master windows are
arranged horizontally rather than vertically.</p>
<p>For gaps, apply <code>mastercolumn-gaps.patch</code> on top of
<code>mastercolumn.patch</code> and <code>gaps.patch</code>.</p>
<h3 id="download-54">Download</h3>
<h5 id="mastercolumnpatch"><code>mastercolumn.patch</code></h5>
<ul>
<li><a href="/dsst/dwl/src/branch/mastercolumn">git branch</a></li>
<li><a
href="/dwl/dwl-patches/raw/branch/main/patches/mastercolumn/mastercolumn.patch">0.7</a></li>
</ul>
<h5
id="mastercolumn-gapspatch"><code>mastercolumn-gaps.patch</code></h5>
<ul>
<li><a href="/dsst/dwl/src/branch/mastercolumn-gaps">git branch</a></li>
<li><a
href="/dwl/dwl-patches/raw/branch/main/patches/mastercolumn/mastercolumn-gaps.patch">0.7</a></li>
</ul>
<h3 id="authors-54">Authors</h3>
<ul>
<li><a href="https://codeberg.org/dsst">dsst</a></li>
</ul>
<hr />
<h1 id="menu">menu</h1>
<h3 id="description-55">Description</h3>
<p>This patch adds <code>menu</code> command, which allows dwl to
interface with dmenu-like programs.</p>
<p>By default, two menus are available:</p>
<ul>
<li>focusing a window by its title by pressing <code>Alt+o</code></li>
<li>selecting a layout from a list by pressing
<code>Alt+Shift+o</code></li>
</ul>
<p>Edit <code>menus</code> array in <code>config.h</code> to add/change
menus and use a different dmenu program.</p>
<h3 id="download-55">Download</h3>
<ul>
<li><a href="https://codeberg.org/nikitaivanov/dwl/src/branch/menu">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/menu/menu.patch">2024-07-13</a></li>
</ul>
<h3 id="authors-55">Authors</h3>
<ul>
<li><a href="https://github.com/NikitaIvanovV">Nikita Ivanov</a></li>
</ul>
<hr />
<h1 id="meson">meson</h1>
<h3 id="description-56">Description</h3>
<p>Add the meson build system.</p>
<p>This is useful for people who do not want to self-manage a wlroots
installation.</p>
<p>To enable Xwayland support, you will need to enable it in the wlroots
subproject:</p>
<div class="sourceCode" id="cb15"><pre
class="sourceCode sh"><code class="sourceCode bash"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="ex">meson</span> setup <span class="at">-Dwlroots:xwayland</span><span class="op">=</span>enabled build</span></code></pre></div>
<h3 id="download-56">Download</h3>
<ul>
<li><a href="/sewn/dwl/src/branch/meson">git branch</a></li>
<li><a
href="/dwl/dwl-patches/raw/branch/main/patches/meson/meson.patch">2024-08-06</a></li>
</ul>
<h3 id="authors-56">Authors</h3>
<ul>
<li><a href="/sewn">sewn</a></li>
</ul>
<hr />
<h1 id="minimalborders">minimalborders</h1>
<h3 id="description-57">Description</h3>
<p>Dynamically adjusts the borders between adjacent windows to make them
visually merge</p>
<p><strong>NOTE:</strong> to disable minimalborders after applying this
patch, set <code>draw_minimal_borders</code> to <code>0</code></p>
<div class="sourceCode" id="cb16"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="dt">int</span> draw_minimal_borders <span class="op">=</span> <span class="dv">0</span><span class="op">;</span> <span class="co">/* disable minimalborders */</span></span></code></pre></div>
<details>
<summary>Preview:</summary>
<pre>
with:
<div class="sourceCode" id="cb17"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="dt">unsigned</span> <span class="dt">int</span> borderpx <span class="op">=</span> <span class="dv">10</span><span class="op">;</span> <span class="co">/* border pixel of windows */</span></span></code></pre></div>
<p>Before applying the patch
<img src="https://i.imgur.com/VQfXCjp.png"/></p>
<p>After applying the patch <img src="https://i.imgur.com/I7s0Xkv.png"/>
</pre></p>
</details>
<h3 id="download-57">Download</h3>
<ul>
<li><a
href="https://codeberg.org/wochap/dwl/src/branch/v0.5/minimalborders">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/13d96b51b54500dd24544cf3a73c61b7a1414bc6/patches/minimalborders/minimalborders.patch">2024-07-09</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/7a5c3420822074c544fa102e030b7c30aa6b6be8/minimalborders/minimalborders.patch">2024-04-11</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/be3735bc6a5c64ff76c200a8679453bd179be456/minimalborders/minimalborders.patch">v0.5</a></li>
</ul>
<h3 id="authors-57">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
</ul>
<hr />
<h1 id="modes">modes</h1>
<h3 id="description-58">Description</h3>
<p>Implement modes, that way each mapping is associated with a mode and
is only active while in that mode, default mode is
<code>NORMAL</code></p>
<h3 id="example">Example</h3>
<p>In the example below, you declare a mode: <code>BROWSER</code>, which
is activated when you press <kbd>modkey</kbd> + <kbd>b</kbd>. Then, you
can press <kbd>f</kbd> to launch <code>Firefox</code> and return to the
default <code>NORMAL</code> mode.</p>
<div class="sourceCode" id="cb18"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true" tabindex="-1"></a><span class="kw">enum</span> <span class="op">{</span></span>
<span id="cb18-2"><a href="#cb18-2" aria-hidden="true" tabindex="-1"></a> BROWSER<span class="op">,</span></span>
<span id="cb18-3"><a href="#cb18-3" aria-hidden="true" tabindex="-1"></a><span class="op">};</span></span>
<span id="cb18-4"><a href="#cb18-4" aria-hidden="true" tabindex="-1"></a><span class="dt">const</span> <span class="dt">char</span> <span class="op">*</span>modes_labels<span class="op">[]</span> <span class="op">=</span> <span class="op">{</span></span>
<span id="cb18-5"><a href="#cb18-5" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;browser&quot;</span><span class="op">,</span></span>
<span id="cb18-6"><a href="#cb18-6" aria-hidden="true" tabindex="-1"></a><span class="op">};</span></span>
<span id="cb18-7"><a href="#cb18-7" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb18-8"><a href="#cb18-8" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> Key keys<span class="op">[]</span> <span class="op">=</span> <span class="op">{</span></span>
<span id="cb18-9"><a href="#cb18-9" aria-hidden="true" tabindex="-1"></a> <span class="co">// ...</span></span>
<span id="cb18-10"><a href="#cb18-10" aria-hidden="true" tabindex="-1"></a> <span class="op">{</span> MODKEY<span class="op">,</span> XKB_KEY_b<span class="op">,</span> entermode<span class="op">,</span> <span class="op">{.</span>i <span class="op">=</span> BROWSER<span class="op">}</span> <span class="op">},</span></span>
<span id="cb18-11"><a href="#cb18-11" aria-hidden="true" tabindex="-1"></a> <span class="co">// ...</span></span>
<span id="cb18-12"><a href="#cb18-12" aria-hidden="true" tabindex="-1"></a><span class="op">};</span></span>
<span id="cb18-13"><a href="#cb18-13" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb18-14"><a href="#cb18-14" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> Modekey modekeys<span class="op">[]</span> <span class="op">=</span> <span class="op">{</span></span>
<span id="cb18-15"><a href="#cb18-15" aria-hidden="true" tabindex="-1"></a> <span class="co">/* mode modifier key function argument */</span></span>
<span id="cb18-16"><a href="#cb18-16" aria-hidden="true" tabindex="-1"></a> <span class="op">{</span> BROWSER<span class="op">,</span> <span class="op">{</span> <span class="dv">0</span><span class="op">,</span> XKB_KEY_f<span class="op">,</span> spawn<span class="op">,</span> SHCMD<span class="op">(</span><span class="st">&quot;firefox&quot;</span><span class="op">)</span> <span class="op">}</span> <span class="op">},</span></span>
<span id="cb18-17"><a href="#cb18-17" aria-hidden="true" tabindex="-1"></a> <span class="op">{</span> BROWSER<span class="op">,</span> <span class="op">{</span> <span class="dv">0</span><span class="op">,</span> XKB_KEY_f<span class="op">,</span> entermode<span class="op">,</span> <span class="op">{.</span>i <span class="op">=</span> NORMAL<span class="op">}</span> <span class="op">}</span> <span class="op">},</span></span>
<span id="cb18-18"><a href="#cb18-18" aria-hidden="true" tabindex="-1"></a> <span class="op">{</span> BROWSER<span class="op">,</span> <span class="op">{</span> <span class="dv">0</span><span class="op">,</span> XKB_KEY_Escape<span class="op">,</span> entermode<span class="op">,</span> <span class="op">{.</span>i <span class="op">=</span> NORMAL<span class="op">}</span> <span class="op">}</span> <span class="op">},</span></span>
<span id="cb18-19"><a href="#cb18-19" aria-hidden="true" tabindex="-1"></a><span class="op">};</span></span></code></pre></div>
<h3 id="download-58">Download</h3>
<ul>
<li><a href="https://codeberg.org/wochap/dwl/src/branch/v0.5/modes">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/modes/modes.patch">v0.5</a></li>
</ul>
<h3 id="authors-58">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
</ul>
<hr />
<h1 id="monfig">monfig</h1>
<h3 id="description-59">Description</h3>
<p>Allows more monitor configuration in config.h</p>
<h3 id="download-59">Download</h3>
<ul>
<li><a href="https://codeberg.org/Palanix/dwl/src/branch/monfig">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/monfig/monfig.patch">2024-02-15</a></li>
</ul>
<h3 id="authors-59">Authors</h3>
<ul>
<li><a href="https://codeberg.org/Palanix">Palanix</a></li>
</ul>
<hr />
<h1 id="movecenter">movecenter</h1>
<h3 id="description-60">Description</h3>
<blockquote>
<p>This patch is no longer being maintained by me <a
href="https://codeberg.org/wochap">wochap</a>, since I'm now using a
different patch specific to my use case: <a
href="https://codeberg.org/wochap/dwl/src/branch/v0.6-c/betterfloat/betterfloat-diff.patch">https://codeberg.org/wochap/dwl/src/branch/v0.6-c/betterfloat/betterfloat-diff.patch</a>.</p>
</blockquote>
<p>This patch provides a keybinding to center the focused floating
window.</p>
<p>Press <kbd>MODKEY</kbd> + <kbd>x</kbd> to center the focused floating
window.</p>
<p>It does NOT center windows that are not floating.</p>
<p>The variable <code>respect_monitor_reserved_area</code> allows the
user to choose whether to center relative to the monitor or relative to
the window area.</p>
<details>
<summary>Explanation of respect_monitor_reserved_area:</summary>
<pre>
The "Monitor area" refers to the space enclosed by the green rectangle, while the "Window area" refers to the space enclosed by the red rectangle.
<img src="https://i.imgur.com/xhejzPh.png"/>
</pre>
</details>
<h3 id="download-60">Download</h3>
<ul>
<li><a
href="https://codeberg.org/wochap/dwl/src/branch/v0.6/movecenter">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/b1ca929ee645cd3e175f198e250448b54624acd6/patches/movecenter/movecenter.patch">v0.6</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/187d7f511572457750fcf6e42c99cdc7befe05e7/patches/movecenter/movecenter.patch">v0.5</a></li>
</ul>
<h3 id="authors-60">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
</ul>
<hr />
<h1 id="moveresizekb">moveresizekb</h1>
<h3 id="description-61">Description</h3>
<p>This allows the user to change size and placement of floating windows
using only the keyboard, default keybindings:</p>
<table>
<thead>
<tr>
<th style="text-align: left;">Keybinding</th>
<th style="text-align: left;">Action</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><kbd>MODKEY</kbd> + <kbd>Up</kbd></td>
<td style="text-align: left;">move 40px up</td>
</tr>
<tr>
<td style="text-align: left;"><kbd>MODKEY</kbd> + <kbd>Down</kbd></td>
<td style="text-align: left;">move 40px down</td>
</tr>
<tr>
<td style="text-align: left;"><kbd>MODKEY</kbd> + <kbd>Left</kbd></td>
<td style="text-align: left;">move 40px left</td>
</tr>
<tr>
<td style="text-align: left;"><kbd>MODKEY</kbd> + <kbd>Right</kbd></td>
<td style="text-align: left;">move 40px right</td>
</tr>
<tr>
<td style="text-align: left;"><kbd>MODKEY</kbd> + <kbd>Shift</kbd> +
<kbd>Up</kbd></td>
<td style="text-align: left;">shrink height 40px</td>
</tr>
<tr>
<td style="text-align: left;"><kbd>MODKEY</kbd> + <kbd>Shift</kbd> +
<kbd>Down</kbd></td>
<td style="text-align: left;">grow height 40px</td>
</tr>
<tr>
<td style="text-align: left;"><kbd>MODKEY</kbd> + <kbd>Shift</kbd> +
<kbd>Left</kbd></td>
<td style="text-align: left;">shrink width 40px</td>
</tr>
<tr>
<td style="text-align: left;"><kbd>MODKEY</kbd> + <kbd>Shift</kbd> +
<kbd>Right</kbd></td>
<td style="text-align: left;">grow width 40px</td>
</tr>
</tbody>
</table>
<h3 id="download-61">Download</h3>
<ul>
<li><a
href="https://codeberg.org/wochap/dwl/src/branch/v0.5/moveresizekb">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/moveresizekb/moveresizekb.patch">v0.5</a></li>
</ul>
<h3 id="authors-61">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
</ul>
<hr />
<h1 id="movestack">movestack</h1>
<h3 id="description-62">Description</h3>
<p>Allows you to move a window up and down the stack.</p>
<h3 id="download-62">Download</h3>
<ul>
<li><a
href="https://codeberg.org/wochap/dwl/src/branch/v0.5/movestack">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/movestack/movestack.patch">v0.5</a></li>
</ul>
<h3 id="authors-62">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
<li><a href="https://github.com/ss7m">sam-barr</a></li>
<li><a href="https://github.com/dm1tz">Dmitry Zakharchenko</a></li>
<li><a href="https://github.com/Abanoub8">Abanoub8</a></li>
<li><a href="https://github.com/NikitaIvanovV">Nikita Ivanov</a></li>
</ul>
<hr />
<h1 id="namedscratchpads">namedscratchpads</h1>
<h3 id="description-63">Description</h3>
<p>Allows for the creation of multiple scratchpad windows, each assigned
to a different keybinding. In simple terms, it enables 'run or raise'
functionality</p>
<p>This patch adds the following functions:</p>
<ul>
<li><code>togglescratch</code>: simply toggles the scratchpad
window</li>
<li><code>focusortogglescratch</code>: change the focus to the
scratchpad window if it is visible and toggles it if it is already in
focus</li>
<li><code>focusortogglematchingscratch</code>: similar to
<code>focusortogglescratch</code> but also closes all other scratchpad
windows</li>
</ul>
<p>If you don't assign keybindings to any of the above functions and so
get a compiler warning about them not being used, just remove them from
your dwl branch to stop the warning.</p>
<h3 id="download-63">Download</h3>
<ul>
<li><a
href="https://codeberg.org/bencc/dwl/src/branch/namedscratchpads">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/namedscratchpads/namedscratchpads.patch">2024-07-13</a></li>
</ul>
<h3 id="authors-63">Authors</h3>
<ul>
<li><a href="https://codeberg.org/bencc">Ben Collerson</a></li>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
<li><a href="https://github.com/loumray">Louis-Michel Raynauld</a></li>
</ul>
<hr />
<h1 id="naturalscrolltrackpad">naturalscrolltrackpad</h1>
<h3 id="description-64">Description</h3>
<p>Set natural scrolling only for trackpads.</p>
<h3 id="download-64">Download</h3>
<ul>
<li><a
href="https://codeberg.org/neuromagus/dwl/src/branch/naturalscrolltrackpad">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/naturalscrolltrackpad/naturalscrolltrackpad.patch">2024-01-06</a></li>
</ul>
<h3 id="authors-64">Authors</h3>
<ul>
<li><a href="https://codeberg.org/neuromagus">Neuromagus</a></li>
<li><a href="https://github.com/NikitaIvanovV">Nikita Ivanov</a></li>
</ul>
<hr />
<h1 id="numlock-capslock">numlock-capslock</h1>
<h3 id="description-65">Description</h3>
<p>Allows activating numlock or capslock at startup</p>
<h3 id="download-65">Download</h3>
<ul>
<li><a
href="https://codeberg.org/sevz/dwl/src/branch/numlock-capslock">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/numlock-capslock/numlock-capslock.patch">2024-06-07</a></li>
</ul>
<h3 id="authors-65">Authors</h3>
<ul>
<li><a href="https://codeberg.org/sevz">sevz</a></li>
</ul>
<hr />
<h1 id="passthrough">passthrough</h1>
<h3 id="description-66">Description</h3>
<p>allows pausing keybind handling</p>
<p>also allows for bitcarrying-esque control of nested instances</p>
<p>default keybind is Ctrl+Logo+Alt+Shift+Esc, can be customized in
config.h</p>
<h3 id="download-66">Download</h3>
<ul>
<li><a
href="https://codeberg.org/notchoc/dwl/src/branch/passthrough">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/passthrough/passthrough.patch">2024-06-26</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/3f44fb23d8cb6c7d700f41525dc00493e392083c/patches/passthrough/passthrough.patch">2024-06-22</a></li>
</ul>
<h3 id="authors-66">Authors</h3>
<ul>
<li><a href="https://codeberg.org/notchoc">notchoc</a></li>
</ul>
<hr />
<h1 id="perinputconfig">perinputconfig</h1>
<h3 id="description-67">Description</h3>
<p>Replace the singular keyboard and pointer input configuration with an
array allowing to set different variables matching by name.</p>
<p>Tip to find the names: Grep for <code>device_name</code> and add a
line after it to print to stdout. Then run EX:
<code>dwl &gt; /tmp/print_device_names.log</code>, exit dwl, and should
see the names.</p>
<h3 id="download-67">Download</h3>
<ul>
<li><a
href="https://codeberg.org/nullsystem/dwl/src/branch/main_perinputconfig">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/perinputconfig/perinputconfig.patch">2024-06-08</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/perinputconfig/perinputconfig-v0.5.patch">v0.5</a></li>
</ul>
<h3 id="authors-67">Authors</h3>
<ul>
<li><a href="https://codeberg.org/nullsystem">nullsystem</a></li>
</ul>
<hr />
<h1 id="pertag">pertag</h1>
<h3 id="description-68">Description</h3>
<p>Makes layout, mwfact and nmaster individual for every tag.</p>
<h3 id="download-68">Download</h3>
<ul>
<li><a href="https://codeberg.org/wochap/dwl/src/branch/v0.6/pertag">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/65ea99519bbf7a52f48932aea7385f81f8b30867/patches/pertag/pertag.patch">v0.6</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/bf098459219e7a473d8edb4c0435aeb6a4b82e38/pertag/pertag.patch">2024-04-11</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/3f9a58cde9e3aa02991b3e5a22d371b153cb1459/pertag/pertag.patch">v0.5</a></li>
</ul>
<h3 id="authors-68">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
<li><a href="https://github.com/guidocella">Guido Cella</a></li>
</ul>
<hr />
<h1 id="pointer-gestures-unstable-v1">pointer-gestures-unstable-v1</h1>
<h3 id="description-69">Description</h3>
<p>Forward the following events to client: swipe_begin, swipe_update,
swipe_end, pinch_begin, pinch_update and pinch_end</p>
<p>This patch allows you to pinch zoom in Chrome, for example. In
combination with the following patches <a
href="https://codeberg.org/dwl/dwl-patches/wiki/gestures">gestures</a>
and <a
href="https://codeberg.org/dwl/dwl-patches/wiki/shiftview">shiftview</a>,
it would allow you to switch workspaces by performing a 3-finger swipe
on your touchpad.</p>
<h3 id="download-69">Download</h3>
<ul>
<li><a
href="https://codeberg.org/wochap/dwl/src/branch/v0.5/pointer-gestures-unstable-v1">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/05dbce217b676e989b0fc9e0eecf83b386ac9e07/patches/pointer-gestures-unstable-v1/pointer-gestures-unstable-v1.patch">2024-07-12</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/2322f3efeae8da44227e0acc760ffd3dea153716/patches/pointer-gestures-unstable-v1/pointer-gestures-unstable-v1.patch">2024-07-09</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/c676de59d51e613bd52ac46c77a24b1cac9a61a1/pointer-gestures-unstable-v1/pointer-gestures-unstable-v1.patch">2024-04-11</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/fc4146f3068dcd46035a2a11fe9d6109a97ae6d6/pointer-gestures-unstable-v1/pointer-gestures-unstable-v1.patch">v0.5</a></li>
</ul>
<h3 id="authors-69">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
</ul>
<hr />
<h1 id="press_repeat_release">press_repeat_release</h1>
<h3 id="description-70">Description</h3>
<p>This patch adds 3 additional options to the <code>Key</code> struct,
<code>on_press</code>, <code>on_repeat</code> and
<code>on_release</code> which can be used to control which events a key
binding should be triggered on.</p>
<p>NOTE: Due to concerns about patching difficulties this patch does NOT
include any changes to <code>config.def.h</code>. After applying you
will need to add the 3 additional initializers to each key binding that
you would like to modify. Any key binding that is not updated will cause
a build warning but should function as it does in vanilla.</p>
<h3 id="download-70">Download</h3>
<ul>
<li><a
href="https://codeberg.org/USERNAME/dwl/src/branch/press_repeat_release">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/press_repeat_release/press_repeat_release.patch">2024-03-27</a></li>
</ul>
<h3 id="authors-70">Authors</h3>
<ul>
<li><a href="https://codeberg.org/minego">minego</a></li>
</ul>
<hr />
<h1 id="primaryselection">primaryselection</h1>
<h3 id="description-71">Description</h3>
<p>Adds a config option to disable/enable primary selection
(middle-click paste).</p>
<h3 id="download-71">Download</h3>
<ul>
<li><a
href="https://codeberg.org/nullsystem/dwl/src/branch/main_primaryselection">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/primaryselection/primaryselection.patch">2024-04-06</a></li>
</ul>
<h3 id="authors-71">Authors</h3>
<ul>
<li><a href="https://codeberg.org/nullsystem">nullsystem</a></li>
<li><a href="https://github.com/PalanixYT">Palanix</a> - Previous
Primary-Selection patch</li>
</ul>
<hr />
<h1 id="push">push</h1>
<h3 id="description-72">Description</h3>
<p>Adds functions <code>pushup</code> and <code>pushdown</code> to move
windows within the tiling order.</p>
<h3 id="download-72">Download</h3>
<ul>
<li><a href="https://codeberg.org/sevz/dwl/src/branch/push">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/push/push.patch">2024-06-13</a></li>
</ul>
<h3 id="authors-72">Authors</h3>
<ul>
<li><a href="https://codeberg.org/sevz">sevz</a></li>
<li><a href="https://github.com/djpohly">Devin J. Pohly</a></li>
</ul>
<hr />
<h1 id="regexrules">regexrules</h1>
<h3 id="description-73">Description</h3>
<p>Allows the use of regular expressions for window rules "app_id" and
"title"</p>
<div class="sourceCode" id="cb19"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> Rule rules<span class="op">[]</span> <span class="op">=</span> <span class="op">{</span></span>
<span id="cb19-2"><a href="#cb19-2" aria-hidden="true" tabindex="-1"></a> <span class="co">// ...</span></span>
<span id="cb19-3"><a href="#cb19-3" aria-hidden="true" tabindex="-1"></a> <span class="op">{</span> <span class="st">&quot;kitty-htop&quot;</span><span class="op">,</span> NULL<span class="op">,</span> <span class="dv">1</span> <span class="op">&lt;&lt;</span> <span class="dv">8</span><span class="op">,</span> <span class="dv">0</span><span class="op">,</span> <span class="op">-</span><span class="dv">1</span> <span class="op">},</span></span>
<span id="cb19-4"><a href="#cb19-4" aria-hidden="true" tabindex="-1"></a> <span class="op">{</span> <span class="st">&quot;^kitty$&quot;</span><span class="op">,</span> NULL<span class="op">,</span> <span class="dv">0</span><span class="op">,</span> <span class="dv">0</span><span class="op">,</span> <span class="op">-</span><span class="dv">1</span> <span class="op">},</span></span>
<span id="cb19-5"><a href="#cb19-5" aria-hidden="true" tabindex="-1"></a> <span class="co">// ...</span></span>
<span id="cb19-6"><a href="#cb19-6" aria-hidden="true" tabindex="-1"></a><span class="op">};</span></span></code></pre></div>
<h3 id="download-73">Download</h3>
<ul>
<li><a
href="https://codeberg.org/wochap/dwl/src/branch/v0.5/regexrules">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/2a6560c167e5c9afc5598ac5431d23d90de8846c/regexrules/regexrules.patch">2024-04-11</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/98cba933c9f4099202e54f39acbf17e05bde828a/regexrules/regexrules.patch">v0.5</a></li>
</ul>
<h3 id="authors-73">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
</ul>
<hr />
<h1 id="regions">regions</h1>
<h3 id="description-74">Description</h3>
<p>This patch will allow for a program to be used and have the current
window regions on all monitors to be passed to the program as standard
input.</p>
<p>example is <code>grim -g "$(slurp)"</code></p>
<h3 id="download-74">Download</h3>
<ul>
<li><a href="https://codeberg.org/sewn/dwl/src/branch/regions">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/regions/regions.patch">2024-02-14</a></li>
</ul>
<h3 id="authors-74">Authors</h3>
<ul>
<li><a href="https://github.com/apprehensions">sewn</a></li>
</ul>
<hr />
<h1 id="relative-mouse-resize">relative-mouse-resize</h1>
<h3 id="description-75">Description</h3>
<p>When resizing windows, the mouse will jump and resize the window in
the quadrant that the resize starts at.</p>
<h3 id="download-75">Download</h3>
<ul>
<li><a
href="https://codeberg.org/wochap/dwl/src/branch/v0.5/relative-mouse-resize">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/0bd725d0786248e1dfedbe6aa7453edfe736de43/patches/relative-mouse-resize/relative-mouse-resize.patch">2024-07-09</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/655fd2916c1bcaa022ce6dcdfb370051cf64df66/relative-mouse-resize/relative-mouse-resize.patch">2024-04-11</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/b828e21717fa584affeb3245359c3ab615759fa4/relative-mouse-resize/relative-mouse-resize.patch">v0.5</a></li>
</ul>
<h3 id="authors-75">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
</ul>
<hr />
<h1 id="remembertags">remembertags</h1>
<h3 id="description-76">Description</h3>
<p>This patch modifies the behavior when selecting tags so that
selecting a tag will also enable any other tags that were previously
visible.</p>
<p>For example:</p>
<ol type="1">
<li>Select tag 5, with mod+5</li>
<li>Toggle tag 8, with ctrl+mod+8</li>
<li>Select tag 1, with mod+1. Tags 5 and 8 should no longer be
visible.</li>
<li>Select tag 5 again, with mod+5. Tag 8 should be visible since it was
remembered.</li>
<li>Select tag 5 again, with mod_5. Selecting the already selected tag
resets any remembered tags, so now tag 5 should be the only one
visible.</li>
</ol>
<h3 id="download-76">Download</h3>
<ul>
<li><a
href="https://codeberg.org/minego/dwl/src/branch/remembertags">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/remembertags/remembertags.patch">2024-03-27</a></li>
</ul>
<h3 id="authors-76">Authors</h3>
<ul>
<li><a href="https://codeberg.org/minego">minego</a></li>
</ul>
<hr />
<h1 id="restore-monitor">restore-monitor</h1>
<h3 id="description-77">Description</h3>
<p>Moves clients to their old output when it is reattached.</p>
<h3 id="download-77">Download</h3>
<ul>
<li><a
href="https://codeberg.org/eyusupov/dwl/src/branch/restore-monitor">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/restore-monitor/restore-monitor.patch">2024-04-07</a></li>
</ul>
<h3 id="authors-77">Authors</h3>
<ul>
<li><a href="https://codeberg.org/eyusupov">eyusupov</a></li>
</ul>
<hr />
<h1 id="right">right</h1>
<h3 id="description-78">Description</h3>
<p>Put newly connected monitors on the right, like X does.</p>
<h3 id="download-78">Download</h3>
<ul>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/right/right.patch">2024-02-11</a></li>
</ul>
<h3 id="authors-78">Authors</h3>
<ul>
<li><a href="https://codeberg.org/dimkr">Dima Krasner</a> (<a
href="mailto:dima@dimakrasner.com">dima@dimakrasner.com</a>)</li>
</ul>
<hr />
<h1 id="rlimit_max">rlimit_max</h1>
<h3 id="description-79">Description</h3>
<p>Sets the current maximum open file descriptors to the maximum
available limit.</p>
<p>This patch is useful - and solves issue <a
href="https://codeberg.org/dwl/dwl/issues/628">#628</a> for running
heavy Xwayland applications on systems that do not provide limits out of
the box.</p>
<h3 id="download-79">Download</h3>
<ul>
<li><a href="https://codeberg.org/sewn/dwl/src/branch/rlimit_max">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/rlimit_max/rlimit_max.patch">2024-06-26</a></li>
</ul>
<h3 id="authors-79">Authors</h3>
<ul>
<li><a href="https://codeberg.org/sewn">sewn</a></li>
</ul>
<hr />
<h1 id="rotatetags">rotatetags</h1>
<h3 id="description-80">Description</h3>
<p>This patch provides the ability to rotate the tagset left / right. It
implements a new function rotatetags which modifies the current tagset.
Same as original dwm patch. Also adds ability to move focused client to
left / right adjacent tag by specifying appropriate enum value as
argument.</p>
<h3 id="download-80">Download</h3>
<ul>
<li><a
href="https://codeberg.org/korei999/dwl/src/branch/rotatetags">git
branch</a></li>
<li><a
href="https://codeberg.org/korei999/dwl-patches/raw/branch/main/rotatetags/rotatetags.patch">2024-01-23</a></li>
</ul>
<h3 id="authors-80">Authors</h3>
<ul>
<li><a href="https://codeberg.org/korei999">korei999</a></li>
</ul>
<hr />
<h1 id="scenefx">scenefx</h1>
<h3 id="description-81">Description</h3>
<p>Implement <a
href="https://github.com/wlrfx/scenefx">https://github.com/wlrfx/scenefx</a></p>
<div class="sourceCode" id="cb20"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb20-1"><a href="#cb20-1" aria-hidden="true" tabindex="-1"></a><span class="co">/* available options */</span></span>
<span id="cb20-2"><a href="#cb20-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb20-3"><a href="#cb20-3" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="dt">int</span> opacity <span class="op">=</span> <span class="dv">0</span><span class="op">;</span> <span class="co">/* flag to enable opacity */</span></span>
<span id="cb20-4"><a href="#cb20-4" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="dt">float</span> opacity_inactive <span class="op">=</span> <span class="fl">0.5</span><span class="op">;</span></span>
<span id="cb20-5"><a href="#cb20-5" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="dt">float</span> opacity_active <span class="op">=</span> <span class="fl">1.0</span><span class="op">;</span></span>
<span id="cb20-6"><a href="#cb20-6" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb20-7"><a href="#cb20-7" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="dt">int</span> shadow <span class="op">=</span> <span class="dv">1</span><span class="op">;</span> <span class="co">/* flag to enable shadow */</span></span>
<span id="cb20-8"><a href="#cb20-8" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="dt">int</span> shadow_only_floating <span class="op">=</span> <span class="dv">0</span><span class="op">;</span> <span class="co">/* only apply shadow to floating windows */</span></span>
<span id="cb20-9"><a href="#cb20-9" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="kw">struct</span> wlr_render_color shadow_color <span class="op">=</span> COLOR<span class="op">(</span><span class="bn">0x0000FFff</span><span class="op">);</span></span>
<span id="cb20-10"><a href="#cb20-10" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="kw">struct</span> wlr_render_color shadow_color_focus <span class="op">=</span> COLOR<span class="op">(</span><span class="bn">0xFF0000ff</span><span class="op">);</span></span>
<span id="cb20-11"><a href="#cb20-11" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="dt">int</span> shadow_blur_sigma <span class="op">=</span> <span class="dv">20</span><span class="op">;</span></span>
<span id="cb20-12"><a href="#cb20-12" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="dt">int</span> shadow_blur_sigma_focus <span class="op">=</span> <span class="dv">40</span><span class="op">;</span></span>
<span id="cb20-13"><a href="#cb20-13" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="dt">char</span> <span class="op">*</span><span class="dt">const</span> shadow_ignore_list<span class="op">[]</span> <span class="op">=</span> <span class="op">{</span> <span class="st">&quot;xdg-desktop-portal-gtk&quot;</span><span class="op">,</span> NULL <span class="op">};</span> <span class="co">/* list of app-id to ignore */</span></span>
<span id="cb20-14"><a href="#cb20-14" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb20-15"><a href="#cb20-15" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="dt">int</span> corner_radius <span class="op">=</span> <span class="dv">0</span><span class="op">;</span> <span class="co">/* 0 disables corner_radius */</span></span>
<span id="cb20-16"><a href="#cb20-16" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb20-17"><a href="#cb20-17" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="dt">int</span> blur <span class="op">=</span> <span class="dv">1</span><span class="op">;</span> <span class="co">/* flag to enable blur */</span></span>
<span id="cb20-18"><a href="#cb20-18" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="dt">int</span> blur_optimized <span class="op">=</span> <span class="dv">1</span><span class="op">;</span></span>
<span id="cb20-19"><a href="#cb20-19" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="dt">int</span> blur_ignore_transparent <span class="op">=</span> <span class="dv">1</span><span class="op">;</span></span>
<span id="cb20-20"><a href="#cb20-20" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> <span class="kw">struct</span> blur_data blur_data <span class="op">=</span> <span class="op">{</span></span>
<span id="cb20-21"><a href="#cb20-21" aria-hidden="true" tabindex="-1"></a> <span class="op">.</span>radius <span class="op">=</span> <span class="dv">5</span><span class="op">,</span></span>
<span id="cb20-22"><a href="#cb20-22" aria-hidden="true" tabindex="-1"></a> <span class="op">.</span>num_passes <span class="op">=</span> <span class="dv">3</span><span class="op">,</span></span>
<span id="cb20-23"><a href="#cb20-23" aria-hidden="true" tabindex="-1"></a> <span class="op">.</span>noise <span class="op">=</span> <span class="fl">0.02</span><span class="op">,</span></span>
<span id="cb20-24"><a href="#cb20-24" aria-hidden="true" tabindex="-1"></a> <span class="op">.</span>brightness <span class="op">=</span> <span class="fl">0.9</span><span class="op">,</span></span>
<span id="cb20-25"><a href="#cb20-25" aria-hidden="true" tabindex="-1"></a> <span class="op">.</span>contrast <span class="op">=</span> <span class="fl">0.9</span><span class="op">,</span></span>
<span id="cb20-26"><a href="#cb20-26" aria-hidden="true" tabindex="-1"></a> <span class="op">.</span>saturation <span class="op">=</span> <span class="fl">1.1</span><span class="op">,</span></span>
<span id="cb20-27"><a href="#cb20-27" aria-hidden="true" tabindex="-1"></a><span class="op">};</span></span></code></pre></div>
<blockquote>
<p><strong>NOTE:</strong> If you are using nix with flakes, scenefx has
a flake for scenefx <a
href="https://github.com/wlrfx/scenefx/blob/main/flake.nix">https://github.com/wlrfx/scenefx/blob/main/flake.nix</a></p>
</blockquote>
<blockquote>
<p><strong>NOTE:</strong> Some GTK apps are being cut off when they have
shadows enabled. You can use the <code>shadow_ignore_list</code> option
to prevent shadows from being rendered on those apps</p>
</blockquote>
<blockquote>
<p><strong>NOTE:</strong> Blur doesn't work on windows with opacity set
(opacity_active, opacity_inactive)</p>
</blockquote>
<blockquote>
<p><strong>NOTE:</strong> In DWL's Makefile <code>scenefx</code> must be
placed before wlroots, e.g.
<code>PKGS = scenefx wlroots wayland-server ...</code></p>
</blockquote>
<details>
<summary>Preview</summary>
<pre>
<img src="https://i.imgur.com/4kFhSaS.png"/>
<img src="https://i.imgur.com/9ZQAUXx.png"/>
</pre>
</details>
<h3 id="download-81">Download</h3>
<ul>
<li><p><a
href="https://codeberg.org/wochap/dwl/src/branch/v0.5/scenefx">git
branch</a></p></li>
<li><p><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/13d96b51b54500dd24544cf3a73c61b7a1414bc6/patches/scenefx/scenefx.patch">2024-07-09</a></p>
<p><strong>IMPORTANT:</strong> This patch only works with the
<code>2ec3505248e819191c37cb831197629f373326fb</code> commit on the
<code>main</code> branch of <code>scenefx</code>, therefore, it does not
support <strong>blur</strong>.</p>
<p><strong>IMPORTANT:</strong> This patch requires you to build DWL with
the following dependencies</p>
<ul>
<li><strong>scenefx</strong></li>
<li>libGL</li>
</ul></li>
<li><p><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/6e3a57ffd16dafa31900b7e89e51672bd7bcc1e8/scenefx/scenefx.patch">2024-04-11</a></p>
<p><strong>IMPORTANT:</strong> This patch only works with the
<code>de4ec10e1ff9347b5833f00f8615d760d9378c99</code> commit on the
<code>wlr_scene_blur</code> branch of <code>scenefx</code>, as it adds
support for <strong>blur</strong>.</p>
<p><strong>IMPORTANT:</strong> This patch requires you to build DWL with
the dependencies of WLROOTS:</p>
<ul>
<li><strong>scenefx</strong></li>
<li>libGL</li>
<li>libcap</li>
<li>libinput</li>
<li>libpng</li>
<li>libxkbcommon</li>
<li>mesa</li>
<li>pixman</li>
<li>seatd</li>
<li>vulkan-loader</li>
<li>wayland</li>
<li>wayland-protocols</li>
<li>xorg.libX11</li>
<li>xorg.xcbutilerrors</li>
<li>xorg.xcbutilimage</li>
<li>xorg.xcbutilrenderutil</li>
<li>xorg.xcbutilwm</li>
<li>xwayland (optional)</li>
<li>ffmpeg</li>
<li>hwdata</li>
<li>libliftoff</li>
<li>libdisplay-info</li>
</ul></li>
<li><p><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/7a5c3420822074c544fa102e030b7c30aa6b6be8/scenefx/scenefx.patch">v0.5</a></p></li>
</ul>
<h3 id="authors-81">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
</ul>
<hr />
<h1 id="scroll-factor">scroll-factor</h1>
<h3 id="description-82">Description</h3>
<p>This patch adds scroll factor to dwl. The settings can be found in
the trackpad section of the config. This allows user to control the
sensitivity of 2-finger touchpad scrolling.</p>
<h3 id="download-82">Download</h3>
<ul>
<li><a
href="https://codeberg.org/singul4ri7y/dwl/src/branch/scroll-factor">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/scroll-factor/scroll-factor.patch">2024-07-12</a></li>
</ul>
<h3 id="authors-82">Authors</h3>
<ul>
<li><a href="https://codeberg.org/singul4ri7y">singul4ri7y</a></li>
</ul>
<hr />
<h1 id="setupenv">setupenv</h1>
<h3 id="description-83">Description</h3>
<p>Allow configuring environment variables in config.h</p>
<h3 id="download-83">Download</h3>
<ul>
<li><a href="https://codeberg.org/notchoc/dwl/src/branch/setupenv">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/setupenv/setupenv.patch">2024-03-26</a></li>
</ul>
<h3 id="authors-83">Authors</h3>
<ul>
<li><a href="https://codeberg.org/notchoc">notchoc</a></li>
</ul>
<hr />
<h1 id="shiftview">shiftview</h1>
<h3 id="description-84">Description</h3>
<p>Add keybindings to cycle through tags with visible clients.</p>
<h3 id="download-84">Download</h3>
<ul>
<li><a
href="https://codeberg.org/guidocella/dwl/src/branch/shiftview">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/shiftview/shiftview.patch">2024-01-27</a></li>
</ul>
<h3 id="authors-84">Authors</h3>
<ul>
<li><a href="https://codeberg.org/guidocella">Guido Cella</a></li>
</ul>
<hr />
<h1 id="simpleborders">simpleborders</h1>
<h3 id="description-85">Description</h3>
<p>Like smartborders. Don't put borders when there is only one window on
the screen.</p>
<h3 id="download-85">Download</h3>
<ul>
<li><a
href="https://codeberg.org/bencc/dwl/src/branch/simpleborders">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/simpleborders/simpleborders-wlrootsnext-20240618.patch">2024-06-18
applies to dwl wlroots-next branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/simpleborders/simpleborders.patch">2023-01-07</a></li>
</ul>
<h3 id="authors-85">Authors</h3>
<ul>
<li><a href="https://codeberg.org/bencc">Ben Collerson</a></li>
</ul>
<hr />
<h1 id="singlemaster">singlemaster</h1>
<h3 id="description-86">Description</h3>
<p>Restricts layout to only having one client in the master area.</p>
<h3 id="download-86">Download</h3>
<ul>
<li><a href="https://codeberg.org/bencc/dwl/src/branch/singlemaster">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/singlemaster/singlemaster.patch">v0.6</a></li>
</ul>
<h3 id="authors-86">Authors</h3>
<ul>
<li><a href="https://codeberg.org/bencc">Ben Collerson</a></li>
</ul>
<hr />
<h1 id="singletagset">singletagset</h1>
<h3 id="description-87">Description</h3>
<p>Single set of tags shared between multiple monitors.</p>
<p>This patch allows all the tags to be shared between both (or more)
monitors. So a single set of tags from 1 to 9 can be viewed on any
monitor, as opposed to having separate tag sets 1 to 9 on each
monitor.</p>
<p>Originally based on the dwm single_tagset patch: <a
href="https://dwm.suckless.org/patches/single_tagset/">https://dwm.suckless.org/patches/single_tagset/</a></p>
<h3 id="download-87">Download</h3>
<ul>
<li><a
href="https://codeberg.org/Rutherther/dwl/src/branch/v0.7/singletagset">git
branch (v0.7)</a></li>
<li><a href="https://codeberg.org/bencc/dwl/src/branch/singletagset">git
branch (v0.6)</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/singletagset/singletagset-v0.7.patch">2024-07-26
(v0.7)</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/singletagset/singletagset-v0.6.patch">2024-05-16
(v0.6)</a></li>
</ul>
<h3 id="authors-87">Authors</h3>
<ul>
<li><a href="https://codeberg.org/bencc">Ben Collerson</a></li>
<li><a href="https://codeberg.org/Rutherther">Rutherther</a></li>
</ul>
<hr />
<h1 id="singletagset-pertag">singletagset-pertag</h1>
<h3 id="description-88">Description</h3>
<p>Pertag keeps layouts, mfact and nmaster per tag instead of per
output.</p>
<p>This adapted version of pertag contains one version of the rules per
all outputs, instead of one per output. This makes switching to tags
from other monitors keep the window layout.</p>
<p>This patch expects <a
href="https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/singletagset">singletagset</a>
patch to be already in your tree committed. It applies onto it.</p>
<p>This patch is incompatible with <a
href="https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/pertag">pertag</a>.</p>
<h3 id="download-88">Download</h3>
<ul>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/singletagset-pertag/singletagset-pertag.patch">2024-07-26</a></li>
<li><a
href="https://codeberg.org/Rutherther/dwl/src/branch/v0.7/singletagset-pertag">git
branch</a></li>
</ul>
<h3 id="authors-88">Authors</h3>
<ul>
<li><a href="https://codeberg.org/Rutherther">Rutherther</a></li>
<li><a href="https://codeberg.org/wochap">wochap (maintainer of pertag
patch)</a></li>
<li><a href="https://codeberg.org/guidocella">Guido Cella (creator of
pertag patch)</a></li>
</ul>
<hr />
<h1 id="singletagset-sticky">singletagset-sticky</h1>
<h3 id="description-89">Description</h3>
<p>Makes sticky work as expected with singletagset. The sticky window
will stay on original output until you explicitely put it to a different
monitor.</p>
<p>This patch expects both <a
href="https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/singletagset">singletagset</a>
and <a
href="https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/sticky">sticky</a>
patches to be already in your tree committed. It applies onto them.</p>
<h3 id="download-89">Download</h3>
<ul>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/singletagset-sticky/singletagset-sticky.patch">2024-07-26</a></li>
<li><a
href="https://codeberg.org/Rutherther/dwl/src/branch/v0.7/singletagset-sticky">git
branch</a></li>
</ul>
<h3 id="authors-89">Authors</h3>
<ul>
<li><a href="https://codeberg.org/Rutherther">Rutherther</a></li>
</ul>
<hr />
<h1 id="skipfocus">skipfocus</h1>
<h3 id="description-90">Description</h3>
<p>Adds a rule-based ability to skip automatically focusing a window on
creation. Expected use-case is for transient windows like notifications
etc. The window can still be focused by mouse or keyboard movement.</p>
<table>
<thead>
<tr>
<th><code>skipfocus</code> value</th>
<th>effect</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>usual</td>
</tr>
<tr>
<td>1</td>
<td>skipautofocus</td>
</tr>
<tr>
<td>2</td>
<td>skipfocus entirely</td>
</tr>
</tbody>
</table>
<h3 id="download-90">Download</h3>
<ul>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/skipfocus/skipfocus.patch">20240714</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/skipfocus/skipfocus20240108.patch">20240108</a></li>
<li><a
href="https://codeberg.org/dhruva_sambrani/dwl/src/branch/skipfocus">git
branch</a></li>
</ul>
<h3 id="authors-90">Authors</h3>
<ul>
<li><a href="https://codeberg.org/dhruva_sambrani">Dhruva
Sambrani</a></li>
</ul>
<hr />
<h1 id="smartborders">smartborders</h1>
<h3 id="description-91">Description</h3>
<p>The borders of a window aren't drawn when the window is the only
tiling window in its tag OR if the window is in a monocle layout.</p>
<h3 id="download-91">Download</h3>
<ul>
<li><a href="https://codeberg.org/sevz/dwl/src/branch/smartborders">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/smartborders/smartborders.patch">2024-06-07</a></li>
</ul>
<h3 id="authors-91">Authors</h3>
<ul>
<li><a href="https://codeberg.org/sevz">sevz</a></li>
<li><a href="https://codeberg.org/fauxmight">fauxmight</a></li>
<li><a href="https://github.com/piotr-marendowski">Piotr
Marendowski</a></li>
<li>Andrey Proskurin</li>
</ul>
<hr />
<h1 id="snail">snail</h1>
<h3 id="description-92">Description</h3>
<p>Adds a spiral-inspired layout for wide screens.</p>
<h3 id="download-92">Download</h3>
<ul>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/snail/snail.patch">2024-02-11</a></li>
</ul>
<h3 id="authors-92">Authors</h3>
<ul>
<li><a href="https://codeberg.org/dimkr">Dima Krasner</a> (<a
href="mailto:dima@dimakrasner.com">dima@dimakrasner.com</a>)</li>
<li><a href="https://github.com/NikitaIvanovV">Nikita Ivanov</a> (fix
for flickering)</li>
</ul>
<hr />
<h1 id="snail-gaps">snail-gaps</h1>
<h3 id="description-93">Description</h3>
<p>Adds support for the <a
href="https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/gaps">gaps
patch</a> to the <a
href="https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/snail">snail
layout patch</a>.</p>
<p>Install the <a
href="https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/gaps">gaps
patch</a> and the <a
href="https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/snail">snail
patch</a> first.</p>
<h3 id="download-93">Download</h3>
<ul>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/snail-gaps/snail-gaps.patch">main
2024-08-08</a></li>
</ul>
<h3 id="authors-93">Authors</h3>
<ul>
<li><a href="https://codeberg.org/JoaoCostaIFG">JoaoCostaIFG</a> (<a
href="mailto:joaocosta@posteo.net"><span>joaocosta@posteo.net</span></a>)</li>
</ul>
<hr />
<h1 id="stacker">stacker</h1>
<h3 id="description-94">Description</h3>
<p>Stacker is a patch that allows moving around the stack more freely.
With only one keybinding, quickly move, swap and jump around the window
stack.</p>
<ol type="1">
<li>Focus any window of the stack with a single key binding.</li>
<li>Swap the currently focused windows with any other window in the
stack.</li>
<li>Move the selected window in the stack with
<code>relativeswap</code>.</li>
</ol>
<p>This patch is heavily inspired by the original <a
href="https://dwm.suckless.org/patches/stacker/">stacker</a> dwm
patch.</p>
<h3 id="keybinding">Keybinding</h3>
<ul>
<li><code>MODKEY</code> + {<code>q</code>, <code>w</code>,
<code>e</code>, <code>r</code>}: jump to the first, second, third and
last window of the stack</li>
<li><code>MODKEY</code> + <code>SHIFT</code> + {<code>Q</code>,
<code>W</code>, <code>E</code>, <code>R</code>}: swap the selected with
the first, second, third and last window of the stack</li>
<li><code>MODKEY</code> + <code>SHIFT</code> + {<code>J</code>,
<code>K</code>}: move the selected window up &amp; down the stack</li>
</ul>
<h3 id="missing-feature">Missing feature</h3>
<p>Jumping to the last selected window is not yet implemented.</p>
<h3 id="download-94">Download</h3>
<ul>
<li><a href="https://codeberg.org/jeromecst/dwl/src/branch/stacker">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/stacker/stacker.patch">2024-05-17</a></li>
</ul>
<h3 id="authors-94">Authors</h3>
<ul>
<li><a href="https://codeberg.org/jeromecst">jeromecst</a></li>
</ul>
<hr />
<h1 id="startargv">startargv</h1>
<h3 id="description-95">Description</h3>
<p>allow passing startup command on argv</p>
<p>e.g. <code>dwl -s foot -s</code> launches <code>foot -s</code></p>
<p>put <code>sh -c</code> right after <code>dwl -s</code> to emulate
normal behaviour</p>
<h3 id="download-95">Download</h3>
<ul>
<li><a href="https://codeberg.org/notchoc/dwl/src/branch/startargv">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/startargv/startargv.patch">2024-07-03</a></li>
</ul>
<h3 id="authors-95">Authors</h3>
<ul>
<li><a href="https://codeberg.org/notchoc">notchoc</a></li>
</ul>
<hr />
<h1 id="sticky">sticky</h1>
<h3 id="description-96">Description</h3>
<p>Adds a toggleable function that makes a sticky client that is visible
on all tags.</p>
<p>Originally based on <a
href="https://dwm.suckless.org/patches/sticky">dwm sticky patch</a>.</p>
<h3 id="download-96">Download</h3>
<ul>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/sticky/sticky.patch">2024-07-26</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...dm1tz:04-sticky.patch">v0.4</a></li>
<li><a
href="https://codeberg.org/Rutherther/dwl/src/branch/v0.7/sticky">git
branch</a></li>
</ul>
<h3 id="authors-96">Authors</h3>
<ul>
<li><a href="https://codeberg.org/Rutherther">Rutherther</a></li>
<li><a href="https://github.com/dm1tz">Dmitry Zakharchenko</a></li>
</ul>
<hr />
<h1 id="swallow">swallow</h1>
<h3 id="description-97">Description</h3>
<p>Terminals swallow windows that they are the parent of.</p>
<p>foot is the terminal by default, you can change it in client rules in
config.h.</p>
<p>2023-08-16 and up are made to also work with x windows: <a
href="https://codeberg.org/dwl/dwl/issues/331">https://codeberg.org/dwl/dwl/issues/331</a></p>
<p>for freebsd users: apply swallow-freebsd.patch <strong>on top
of</strong> swallow.patch</p>
<h3 id="download-97">Download</h3>
<ul>
<li><a href="https://codeberg.org/notchoc/dwl/src/branch/swallow">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/swallow/swallow.patch">2024-07-13</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/f64d701bab2f9f52d3637edd091684f920407d87/patches/swallow/swallow.patch">2024-07-13</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/9c5d5d85f3ac780e7a14d5d0535e3349ce8b8f53/patches/swallow/swallow.patch">2024-05-02</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/3c9a8e3232a8531871924484cef1ef0938730e15/swallow/swallow.patch">2024-04-03</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/8a352a1b27a64821ba9fbfda52fe82463ac84c66/swallow/swallow.patch">2024-01-01</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...youbitchoc:swallow.patch">2023-10-26</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...mewkl:swallowx.patch">2023-08-16</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...NikitaIvanovV:swallow.patch">2023-07-15</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...dm1tz:04-swallow.patch">v0.4</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...dm1tz:swallow.patch">2021-12-03</a></li>
</ul>
<h3 id="authors-97">Authors</h3>
<ul>
<li><a href="https://github.com/dm1tz">Dmitry Zakharchenko</a></li>
<li><a href="https://codeberg.org/Palanix">Palanix</a></li>
<li><a href="https://github.com/NikitaIvanovV">Nikita Ivanov</a></li>
<li><a href="https://github.com/ConnorWorrell">Connor Worrell</a></li>
<li><a href="https://github.com/mewkl">Mewkl</a></li>
<li><a href="https://codeberg.org/notchoc">Choc</a></li>
</ul>
<hr />
<h1 id="swapandfocusdir">swapandfocusdir</h1>
<h3 id="description-98">Description</h3>
<p>Focus the window (floating or no) to the left, right, above, or below
the current focused window.</p>
<p>Swap the focused window with the window (no floating) to the left,
right, above, or below.</p>
<p><strong>NOTE:</strong> this patch uses the same algorithm that River
uses to select the window in the given direction.</p>
<h3 id="download-98">Download</h3>
<ul>
<li><a
href="https://codeberg.org/wochap/dwl/src/branch/v0.5/swapandfocusdir">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/13d96b51b54500dd24544cf3a73c61b7a1414bc6/patches/swapandfocusdir/swapandfocusdir.patch">2024-07-09</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/swapandfocusdir/swapandfocusdir.patch">v0.5</a></li>
</ul>
<h3 id="authors-98">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
</ul>
<hr />
<h1 id="switchtotag">switchtotag</h1>
<h3 id="description-99">Description</h3>
<p>Add a rule option to switch to the configured tag when a window
opens, then switch back when it closes.</p>
<h3 id="download-99">Download</h3>
<ul>
<li><a
href="https://codeberg.org/guidocella/dwl/src/branch/switchtotag">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/switchtotag/switchtotag.patch">2024-04-01</a></li>
</ul>
<h3 id="authors-99">Authors</h3>
<ul>
<li><a href="https://codeberg.org/guidocella">Guido Cella</a></li>
</ul>
<hr />
<h1 id="tab">tab</h1>
<h3 id="description-100">Description</h3>
<p>Add a tab bar or window title to the top or bottom of windows.</p>
<h3 id="download-100">Download</h3>
<ul>
<li><a href="https://codeberg.org/dev-gm/dwl/src/branch/tab">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/tab/tab.patch">2024-03-15</a></li>
</ul>
<h3 id="authors-100">Authors</h3>
<ul>
<li><a href="https://codeberg.org/dev-gm">dev-gm</a></li>
</ul>
<hr />
<h1 id="tablet-input">tablet-input</h1>
<h3 id="description-101">Description</h3>
<p>implements wlr-tablet-v2 for drawing tablets and supports cursor
emulation</p>
<p>inspired by @guyuming76's <a
href="https://codeberg.org/guyuming76/dwl/commits/branch/graphic_tablet">branch</a>,
with coding help from @Palanix and testing by @Thanatos</p>
<h3 id="download-101">Download</h3>
<ul>
<li><a
href="https://codeberg.org/notchoc/dwl/src/branch/tablet-input">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/tablet-input/tablet-input.patch">2024-07-31</a>
fixes pen not working after lifting up</li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/18d283d3746ecbc3cd7650358c5769e03b346425/patches/tablet-input/tablet-input.patch">2024-06-21</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/fee4da5cb6470ca5349fa2102765705e19d3bfa3/patches/tablet-input/tablet-input.patch">2024-06-19</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/748b4bc6a73828f3e74b210862bebcda4c9dfb3c/patches/tablet-input/tablet-input.patch">2024-05-04</a></li>
</ul>
<h3 id="authors-101">Authors</h3>
<ul>
<li><a href="https://codeberg.org/notchoc">notchoc</a></li>
<li><a href="https://codeberg.org/Palanix">Palanix</a></li>
</ul>
<hr />
<h1 id="tearing">tearing</h1>
<h3 id="description-102">Description</h3>
<p>This patch adds support for tearing protocol. To get it working
<code>export WLR_DRM_NO_ATOMIC=1</code> is probably required. Setting
<code>ForceTearingRule</code> is also probably required since surfaces
always receive presentation hint 0 (VSYNC) as far as i can tell.</p>
<p>Set rules in the config.h (exact string match):</p>
<pre><code>static const ForceTearingRule force_tearing[] = {
{.title = &quot;&quot;, .appid = &quot;oni.exe&quot;},
{.title = &quot;&quot;, .appid = &quot;hl_linux&quot;},
{.title = &quot;&quot;, .appid = &quot;steam_app_210970&quot;},
};</code></pre>
<h3 id="download-102">Download</h3>
<ul>
<li><a href="https://codeberg.org/korei999/dwl/src/branch/tearing">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/tearing/tearing-0.2.patch">2024-08-15</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/tearing/tearing-0.1.patch">2024-08-07</a></li>
</ul>
<h3 id="authors-102">Authors</h3>
<ul>
<li><a href="https://codeberg.org/korei999">korei999</a></li>
</ul>
<hr />
<h1 id="titleurgent">titleurgent</h1>
<h3 id="description-103">Description</h3>
<p>Whenever a client title changes set the client's urgent flag.</p>
<p>Hacky solution I use to deal with qutebrowser not setting urgent flag
when a new tab is opened.</p>
<h3 id="download-103">Download</h3>
<ul>
<li><a href="https://codeberg.org/bencc/dwl/src/branch/titleurgent">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/titleurgent/titleurgent.patch">2024-01-02</a></li>
</ul>
<h3 id="authors-103">Authors</h3>
<ul>
<li><a href="https://codeberg.org/bencc">Ben Collerson</a></li>
</ul>
<hr />
<h1 id="toggle_constraints">toggle_constraints</h1>
<h3 id="description-104">Description</h3>
<p>Adds a function called togglepointerconstraints to turn pointer
constraint enforcement on and off with a keybind.</p>
<h3 id="usage">Usage</h3>
<p>Add a binding for the togglepointerconstraints function in the keys[]
array of config.h. The function does not take any argument. Pointer
constraints default to enabled, and can be toggled on and off with the
function from there.</p>
<p>Example:</p>
<pre><code>{ MODKEY, XKB_KEY_c, togglepointerconstraints, {0}},</code></pre>
<h3 id="download-104">Download</h3>
<ul>
<li><a
href="https://codeberg.org/thanatos/dwl/src/branch/toggle_constraints">Git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/toggle_constraints/toggle_constraints">2024-03-26</a></li>
</ul>
<h3 id="authors-104">Authors</h3>
<ul>
<li><a href="https://codeberg.org/thanatos">thanatos</a></li>
</ul>
<hr />
<h1 id="togglekblayout">togglekblayout</h1>
<h3 id="description-105">Description</h3>
<blockquote>
<p>This patch is no longer being maintained by me <a
href="https://codeberg.org/wochap">wochap</a>, since I'm now using a
different patch specific to my use case: <a
href="https://codeberg.org/wochap/dwl/src/branch/v0.6-b/xkb-rules-switcher/xkb-rules-switcher.patch">https://codeberg.org/wochap/dwl/src/branch/v0.6-b/xkb-rules-switcher/xkb-rules-switcher.patch</a></p>
</blockquote>
<p>Switch between multiple keyboard layouts at runtime.</p>
<h3 id="download-105">Download</h3>
<ul>
<li><a
href="https://codeberg.org/wochap/dwl/src/branch/v0.5/togglekblayout">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/togglekblayout/togglekblayout.patch">v0.5</a></li>
</ul>
<h3 id="authors-105">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
<li><a href="https://github.com/Stivvo">Stivvo</a></li>
</ul>
<hr />
<h1 id="togglekblayoutandoptions">togglekblayoutandoptions</h1>
<h3 id="description-106">Description</h3>
<p>Switch between multiple keyboard layouts, variants, and options at
runtime.</p>
<h3 id="download-106">Download</h3>
<ul>
<li><a
href="https://codeberg.org/dev-gm/dwl/src/branch/togglekblayoutandoptions">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/togglekblayoutandoptions/togglekblayoutandoptions.patch">2024-03-15</a></li>
</ul>
<h3 id="authors-106">Authors</h3>
<ul>
<li><a href="https://codeberg.org/dev-gm">dev-gm</a></li>
</ul>
<hr />
<h1 id="unclutter">unclutter</h1>
<h3 id="description-107">Description</h3>
<p>Hide the mouse cursor if it isn't being used for a certain period of
time.</p>
<h3 id="download-107">Download</h3>
<ul>
<li><a
href="https://codeberg.org/guidocella/dwl/src/branch/unclutter">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/unclutter/unclutter.patch">2024-08-06</a></li>
</ul>
<h3 id="authors-107">Authors</h3>
<ul>
<li><a href="https://github.com/guidocella">Guido Cella</a></li>
<li><a href="https://github.com/dm1tz">dm1tz</a></li>
<li><a href="https://codeberg.org/bencc">Ben Collerson</a></li>
</ul>
<hr />
<h1 id="ungroup-keyboards">ungroup-keyboards</h1>
<h3 id="description-108">Description</h3>
<p>Ungroup keyboard input devices based on device name.</p>
<p>I wrote this patch was because keyboard device grouping breaks the
behaviour of the ydotool virtual device. This patch fixes my issue #558
in the codeberg issue tracker.</p>
<p>See the inputdevicerules patch for a more generalised version of this
idea.</p>
<h3 id="download-108">Download</h3>
<ul>
<li><a
href="https://codeberg.org/bencc/dwl/src/branch/ungroup-keyboards">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/ungroup-keyboards/ungroup-keyboards.patch">2024-06-16</a></li>
</ul>
<h3 id="authors-108">Authors</h3>
<ul>
<li><a href="https://codeberg.org/bencc">Ben Collerson</a></li>
</ul>
<hr />
<h1 id="vanitygaps">vanitygaps</h1>
<h3 id="description-109">Description</h3>
<p>Adds (inner) gaps between client windows and (outer) gaps between
windows and the screen edge in a flexible manner.</p>
<h3 id="download-109">Download</h3>
<ul>
<li><a href="https://codeberg.org/sevz/dwl/src/branch/vanitygaps">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/vanitygaps/vanitygaps.patch">2024-06-07</a></li>
</ul>
<h3 id="authors-109">Authors</h3>
<ul>
<li><a href="https://codeberg.org/sevz">sevz</a></li>
<li><a href="https://github.com/Bonicgamer">Bonicgamer</a></li>
</ul>
<hr />
<h1 id="varcol">varcol</h1>
<h3 id="description-110">Description</h3>
<p>A variable column layout.</p>
<p>This layout behaves much the same as the <code>tile</code> layout,
but adds key bindings that can be used to:</p>
<ul>
<li>Increase/decrease the number of non-master columns</li>
<li>Increase/decrease the colfact to adjust the column spacing</li>
<li>Push a client in or out of a special <code>left</code> column</li>
<li>Toggle displaying the special <code>left</code> column</li>
</ul>
<h3 id="download-110">Download</h3>
<ul>
<li><a href="https://codeberg.org/minego/dwl/src/branch/varcol">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/varcol/varcol.patch">2024-03-27</a></li>
</ul>
<h3 id="authors-110">Authors</h3>
<ul>
<li><a href="https://codeberg.org/minego">minego</a></li>
</ul>
<hr />
<h1 id="viewnextocctag">viewnextocctag</h1>
<h3 id="description-111">Description</h3>
<p>View the next or previous tag, skipping any tags that do not have any
clients.</p>
<h3 id="download-111">Download</h3>
<ul>
<li><a
href="https://codeberg.org/bencc/dwl/src/branch/viewnextocctag">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/viewnextocctag/viewnextocctag.patch">2023-01-06</a></li>
</ul>
<h3 id="authors-111">Authors</h3>
<ul>
<li><a href="https://codeberg.org/bencc">Ben Collerson</a></li>
</ul>
<hr />
<h1 id="virtual-pointer">virtual-pointer</h1>
<h3 id="description-112">Description</h3>
<p>implement wlr_virtual_pointer_v1 for things like wayvnc server to
work</p>
<p><strong>NOTE:</strong> no longer neccessary if you are using a DWL
version after <a
href="https://codeberg.org/dwl/dwl/commit/ac6074f4fdb8cc263c877f08e16a5805d3bb22d2">https://codeberg.org/dwl/dwl/commit/ac6074f4fdb8cc263c877f08e16a5805d3bb22d2</a></p>
<h3 id="download-112">Download</h3>
<ul>
<li><a
href="https://codeberg.org/wochap/dwl/src/v0.5/virtual-pointer">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/commit/0096e49402bc59b4050e12cdb9befb79d0011006/virtual-pointer/virtual-pointer.patch">v0.5</a></li>
</ul>
<h3 id="authors-112">Authors</h3>
<ul>
<li><a href="https://codeberg.org/wochap">wochap</a></li>
<li><a href="https://github.com/youbitchoc">youbitchoc</a></li>
</ul>
<hr />
<h1 id="warpcursor">warpcursor</h1>
<h3 id="description-113">Description</h3>
<p>Warp cursor to the centre of newly focused clients.</p>
<p>Only moves the cursor if the cursor is currently not on the new
client.</p>
<p>This is my version of the orphaned cursorwarp patch except I left out
the config flag as I think it is unnecessary.</p>
<h3 id="download-113">Download</h3>
<ul>
<li><a href="https://codeberg.org/bencc/dwl/src/branch/warpcursor">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/warpcursor/warpcursor.patch">v0.6</a></li>
</ul>
<h3 id="authors-113">Authors</h3>
<ul>
<li><a href="https://codeberg.org/bencc">Ben Collerson</a></li>
<li><a href="https://github.com/faerryn">Faerryn</a></li>
</ul>
<hr />
<h1 id="winview">winview</h1>
<h3 id="description-114">Description</h3>
<p>Implements the function <code>winview</code> which switches the
visible tags to the tags on which the current client is visible.</p>
<p>This patch is inspired from <a
href="https://dwm.suckless.org/patches/winview/">https://dwm.suckless.org/patches/winview/</a>.
Citing the description of the dwm patch:</p>
<blockquote>
<p>Dwm tags are a powerfull feature that allows organizing windows in
workspaces. Sometime it can be difficult to remember the tag to activate
to unhide a window. With the winview patch the window to unhide can be
selected from the all-window view. The user switches to the all-window
view (Mod1-0), selects the window (Mod1-j/k or using the mouse) and
press Mod1-o. The key Mod1-o switches the view to the selected window
tag.</p>
<h4 id="recommend-patches">Recommend patches</h4>
<p>The grid layout is well adapted to display many windows in a limited
space. Using both grid and pertag patches you will be able to select
this layout for the all-window view while keeping your preferred layout
for the other views. Configuration and Installation Using the default
configuration file</p>
<pre><code>Make sure the directory where you build dwm does not contain a config.h file;
Apply the patch;
Run make and make install.</code></pre>
<p>Using an existing customised configuration file</p>
<p>Apply the patch; Add the following element in the keys array:</p>
<p><code>{ MODKEY, XK_o, winview, {0} },</code></p>
<p>Run make and make install.</p>
<p>An example of how to insert this line can be found in the default
config file template, config.def.h.</p>
</blockquote>
<h3 id="download-114">Download</h3>
<ul>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/winview/winview.patch">2023-11-26</a></li>
<li><a
href="https://codeberg.org/dhruva_sambrani/dwl/src/branch/winview">git
branch</a></li>
</ul>
<h3 id="authors-114">Authors</h3>
<ul>
<li><a href="https://codeberg.org/dhruva_sambrani">Dhruva
Sambrani</a></li>
</ul>
<hr />
<h1 id="xwayland-handle-minimize">xwayland-handle-minimize</h1>
<h3 id="description-115">Description</h3>
<p>Some windows (wine) games go black screen after losing focus and
never recover <a
href="https://github.com/swaywm/sway/issues/4324">https://github.com/swaywm/sway/issues/4324</a>.
This patch fixes this by handling minimize requests that some xwayland
clients do.</p>
<h2 id="download-115">Download</h2>
<ul>
<li><a
href="https://codeberg.org/korei999/dwl/src/branch/xwayland-handle-minimize">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/xwayland-handle-minimize/xwayland-handle-minimize.patch">2024-04-01</a></li>
</ul>
<h3 id="authors-115">Authors</h3>
<ul>
<li><a href="https://codeberg.org/korei999">korei999</a></li>
</ul>
<hr />
<h1 id="zoomswap">zoomswap</h1>
<h3 id="description-116">Description</h3>
<p>This patch swaps the current window (C) with the previous master (P)
when zooming.</p>
<pre><code>Original behaviour :
+-----------------+-------+
| | |
| | |
| | |
| P +-------|
| | |
| | C |
| | |
+-----------------+-------+
+-----------------+-------+
| | |
| | P |
| | |
| C +-------|
| | |
| | |
| | |
+-----------------+-------+
New Behaviour :
+-----------------+-------+
| | |
| | |
| | |
| C +-------+
| | |
| | P |
| | |
+-----------------+-------+
+-----------------+-------+
| | |
| | |
| | |
| P +-------+
| | |
| | C |
| | |
+-----------------+-------+</code></pre>
<h3 id="download-116">Download</h3>
<ul>
<li><a href="https://codeberg.org/Palanix/dwl/src/branch/zoomswap">git
branch</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/zoomswap/zoomswap-v0.7.patch">v0.7</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/zoomswap/zoomswap-v0.6.patch">v0.6</a></li>
<li><a
href="https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/zoomswap/zoomswap.patch">2024-02-15</a></li>
</ul>
<h3 id="authors-116">Authors</h3>
<ul>
<li><a href="https://codeberg.org/Palanix">Palanix</a></li>
</ul>
<hr />
<h1 id="stale-patches">STALE PATCHES</h1>
<h2 id="drmleasemanager">DRMLeaseManager</h2>
<h3 id="description-117">Description</h3>
<p>This implements the DRM lease protocol, which is needed to use
devices such as VR headsets.</p>
<h3 id="download-117">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...minego:drm_lease_patch.patch">2023-05-26</a></li>
</ul>
<h3 id="authors-117">Authors</h3>
<ul>
<li><a href="https://github.com/minego">Micah N Gorrell</a></li>
</ul>
<hr />
<h2 id="xf86keysym">XF86keysym</h2>
<h3 id="description-118">Description</h3>
<p>Utilizing the <a
href="https://cgit.freedesktop.org/xorg/proto/x11proto/tree/XF86keysym.h">/usr/include/X11/XF86keysym.h</a>
header file to change the volume via the appropriate keys.</p>
<h3 id="download-118">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...nakibrayan3:dwl:update-XF86keysym-patch.patch">2023-10-15</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...917Wolf:vol.patch">2021-05-06</a></li>
</ul>
<h3 id="authors-118">Authors</h3>
<ul>
<li><a href="https://github.com/917Wolf">917Wolf</a></li>
<li><a href="https://nakibrayan2.pages.dev">Rayan Nakib</a></li>
</ul>
<hr />
<h2 id="alphafocus">alphafocus</h2>
<h3 id="description-119">Description</h3>
<p>Adds configurable transparency for focused and unfocused windows.</p>
<h3 id="download-119">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...juliag2:alphafocus.patch">2021-12-03</a></li>
</ul>
<h3 id="authors-119">Authors</h3>
<ul>
<li><a href="https://github.com/juliag2">Julia</a></li>
</ul>
<hr />
<h2 id="attachabove">attachabove</h2>
<h3 id="description-120">Description</h3>
<p>Newly created windows are placed above the currently selected window
in the stack.</p>
<h3 id="download-120">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...ss7m:attachabove.patch">2021-01-16</a></li>
</ul>
<h3 id="authors-120">Authors</h3>
<ul>
<li><a href="https://github.com/ss7m">sam-barr</a></li>
</ul>
<hr />
<h2 id="attachtop-1">attachtop</h2>
<h3 id="description-121">Description</h3>
<p>This is a port of attachtop patch for dwm: <a
href="https://dwm.suckless.org/patches/attachtop">https://dwm.suckless.org/patches/attachtop</a></p>
<p>New client attaches below the last master/on top of the stack.</p>
<p>Behavior feels very intuitive as it doesn't disrupt existing masters
no matter the amount of them, it only pushes the clients in stack
down.</p>
<h3 id="download-121">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...NikitaIvanovV:attachtop.patch">2023-07-15</a></li>
</ul>
<h3 id="authors-121">Authors</h3>
<ul>
<li><a href="https://github.com/NikitaIvanovV">Nikita Ivanov</a></li>
</ul>
<hr />
<h2 id="autorotation">autorotation</h2>
<h3 id="description-122">Description</h3>
<p>Adds keybindings for screen rotation and auto rotation from an
accelerometer.</p>
<h3 id="setup">Setup</h3>
<p>Find an accelerometer device in sysfs
(<code>cat /sys/bus/iio/devices/iio*/name</code>, or using a script: <a
href="https://github.com/Unprex/dotfiles/blob/main/scripts/monitor-iio.sh">monitor-iio.sh</a>)<br />
Find the raw output file of the accelerometer (e.g.
<code>cat /sys/bus/iio/devices/iio:device0/in_accel_x_raw</code> should
output an integer).<br />
Add the raw output file names to the dwl configuration
<strong>accel_*</strong>.</p>
<p>Add a udev rule to uniquely identify the device, for example:</p>
<pre><code>sudo echo &#39;SUBSYSTEM==&quot;iio&quot;, KERNEL==&quot;iio*&quot;, ATTR{name}==&quot;accel_3d&quot;, GROUP=&quot;input&quot;, SYMLINK+=&quot;input/accel&quot;&#39; &gt;&gt; /etc/udev/rules.d/99-accel.rules
sudo udevadm control --reload-rules &amp;&amp; sudo udevadm trigger</code></pre>
<p>(the device is probably already in /dev/ e.g.
<code>/dev/iio:device0</code> but on my computer the number changes
after a reboot)</p>
<p>A symlink to the device should now be available in
<code>/dev/input/</code> and accessible to input group members.<br />
Add the device path to the dwl configuration
<strong>accel_path</strong>.</p>
<h3 id="config">Config</h3>
<ul>
<li><code>rotation_enabled</code>: If the auto rotation is enabled on
startup.</li>
<li><code>rotation_delay</code>: How often to check the accelerometer
values in milliseconds.</li>
<li><code>rotation_flat</code>: Threshold on the normalized Z axis to
consider the device flat and stop the auto rotation.</li>
<li><code>rotation_thresh</code>: Rotation threshold after which the
screen flips (values less than 0.5 will cause a back and forth).</li>
</ul>
<ul>
<li><code>accel_path</code>: The path to the accelerometer device file
(e.g. "/dev/input/accel").</li>
<li><code>accel_x</code>: The name of the sysfs file for the
accelerometer x axis.</li>
<li><code>accel_y</code>: The name of the sysfs file for the
accelerometer y axis.</li>
<li><code>accel_z</code>: The name of the sysfs file for the
accelerometer z axis.</li>
</ul>
<p>Default keybindings:</p>
<ul>
<li><code>&lt;Modkey&gt;</code> + <code>&lt;Shift&gt;</code> +
<code>&lt;Arrows&gt;</code>: Change the screen rotation manually
(doesn't disable the auto rotation).</li>
<li><code>&lt;Modkey&gt;</code> + <code>&lt;Shift&gt;</code> +
<code>&lt;R&gt;</code>: Enable/disable the auto rotation.</li>
</ul>
<h3 id="download-122">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...Unprex:rotation.patch">2022-10-25</a></li>
</ul>
<h3 id="authors-122">Authors</h3>
<ul>
<li><a href="https://github.com/Unprex">Unprex</a></li>
</ul>
<hr />
<h2 id="center">center</h2>
<h3 id="description-123">Description</h3>
<p>Adds a rule to automatically center clients on the current
monitor.</p>
<h3 id="download-123">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...dm1tz:04-center.patch">v0.4</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...dm1tz:04rc1-iscenter.patch">v0.4-r1</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...dm1tz:iscenter.patch">2022-08-27</a></li>
</ul>
<h3 id="authors-123">Authors</h3>
<ul>
<li><a href="https://github.com/dm1tz">Dmitry Zakharchenko</a></li>
</ul>
<hr />
<h2 id="clipboardmanager">clipboardManager</h2>
<h3 id="description-124">Description</h3>
<p>Store your clipboard history using <code>clipman</code> clipboard
manager without your KeePassXC passwords leaking into clipman.</p>
<p>Ensure these dependencies are installed (instructions for debian,
other distros are left as an exercise...):</p>
<pre><code>apt install clipman libmodern-perl-perl moreutils wl-clipboard</code></pre>
<p>Change your command to launch <code>dwl</code> to something like the
following:</p>
<pre><code>dwl -s &#39;pee somebar dwl-getwindowtitle&#39;</code></pre>
<p>Ensure the following command is running in the background of your
<code>dwl</code> session. Put it whereever your auto-started stuff
is.</p>
<pre><code>exec wl-paste -t text --watch dwl-clipman</code></pre>
<p>This solution is based on the following reddit post, modified to
support <code>dwl</code>. <a
href="https://www.reddit.com/r/swaywm/comments/ljl0dh/keeping_secrets_secret_with_keepassxc_clipman_and/">https://www.reddit.com/r/swaywm/comments/ljl0dh/keeping_secrets_secret_with_keepassxc_clipman_and/</a></p>
<p>Feel free to use this code however you want, but I can't guarantee it
will work for what you are trying to do. Licenced under the same license
as <code>dwl</code>, "WITHOUT WARRANTY OF ANY KIND".</p>
<h3 id="download-124">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...bencollerson:clipboard-manager.patch">2022-12-21</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...bencollerson:94d0a21.patch">2022-12-01</a></li>
</ul>
<h3 id="authors-124">Authors</h3>
<ul>
<li><a href="https://github.com/bencollerson">Ben Collerson</a></li>
</ul>
<hr />
<h2 id="clipboardipc">clipboardipc</h2>
<h3 id="description-125">Description</h3>
<p>Adds clipboard functionality. Requires the <a
href="https://github.com/djpohly/dwl/wiki/ipc">ipc</a> patch for dwl and
<code>wl-clipboard</code> to be installed. By default, requires <a
href="https://github.com/yory8/clipman">clipman</a> for the clipboard
and <a href="https://github.com/MadcowOG/dwl-state">dwl-state</a> for
getting the appid of the focused application, but you can change these
in the script if you have alternatives. You may change which
applications to not record by modifying the <code>excludes</code> array
in <code>dwl-cliboard-watcher</code>. Make sure
<code>wl-paste -t text -w dwl-clipboard-watcher</code> is running after
dwl.</p>
<h3 id="downloads">Downloads</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...MadcowOG:ipc-clipboard.patch">2023-3-01</a></li>
</ul>
<h3 id="authors-125">Authors</h3>
<ul>
<li><a href="https://github.com/MadcowOG">MadcowOG</a></li>
</ul>
<hr />
<h2 id="cyclelayouts">cyclelayouts</h2>
<h3 id="description-126">Description</h3>
<p>Adds function to cycle through available layouts.</p>
<h3 id="download-125">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...dm1tz:04-cyclelayouts.patch">v0.4</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...vnepogodin:cyclelayouts.patch">2021-07-27</a></li>
</ul>
<h3 id="authors-126">Authors</h3>
<ul>
<li><a href="https://github.com/vnepogodin">Vladislav Nepogodin</a></li>
</ul>
<hr />
<h2 id="fibonacci">fibonacci</h2>
<h3 id="description-127">Description</h3>
<p>Arranges windows in a Fibonacci spiral or dwindle.</p>
<h3 id="scheme-1">Scheme</h3>
<pre><code>+-----------+-----------+ +-----------+-----------+
| | | | | |
| | 2 | | | 2 |
| | | | | |
| 1 +--+--+-----+ | 1 +-----+-----+
| | 5|-.| | | | | 4 |
| +--+--+ 3 | | | 3 +--+--+
| | 4 | | | | | 5|-.|
+-----------+-----+-----+ +-----------+-----+-----+
spiral dwindle</code></pre>
<h3 id="download-126">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...Abanoub8:fibonacci.patch">2023-06-21</a></li>
<li><a href="http://0x0.st/oVlu.patch">2022-09-22</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...917Wolf:fib.patch">2021-05-06</a></li>
</ul>
<h3 id="authors-127">Authors</h3>
<ul>
<li><a href="https://github.com/Abanoub8">Abanoub8</a></li>
<li><a href="https://github.com/medanisjbara">medanisjbara</a></li>
<li><a href="https://github.com/917Wolf">917Wolf</a></li>
<li>Niki Yoshiuchi</li>
</ul>
<hr />
<h2 id="focusmonpointer">focusMonPointer</h2>
<h3 id="description-128">Description</h3>
<p>Implements <code>focusmon()</code> function that moves the cursor to
the focused monitor.</p>
<h3 id="download-127">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...Stivvo:focusMonPointer.patch">2020-10-15</a></li>
</ul>
<h3 id="authors-128">Authors</h3>
<ul>
<li><a href="https://github.com/Stivvo">Stivvo</a></li>
</ul>
<hr />
<h2 id="focusdir-1">focusdir</h2>
<h3 id="description-129">Description</h3>
<p>Focus the window left, right, above or below the current focused
window</p>
<h3 id="download-128">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...XGames123:focusdir.patch">2023-19-15</a></li>
</ul>
<h3 id="authors-129">Authors</h3>
<ul>
<li><a href="https://github.com/Xgames123">ldev</a></li>
</ul>
<hr />
<h2 id="focusmaster">focusmaster</h2>
<h3 id="description-130">Description</h3>
<p>Focus the master regardless of the current focus.</p>
<h3 id="download-129">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...dm1tz:fmaster.patch">2022-09-02</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...PalanixYT:focusmaster.patch">2022-08-18</a></li>
</ul>
<h3 id="authors-130">Authors</h3>
<ul>
<li><a href="https://github.com/PalanixYT">Palanix</a></li>
</ul>
<hr />
<h2 id="genericgaps">genericgaps</h2>
<h3 id="description-131">Description</h3>
<p>This patch is a modified version of <a
href="https://github.com/djpohly/dwl/wiki/vanitygaps">vanitygaps</a>
that adds gaps around clients regardless of a layout. It means you can
apply any layout patch and the gaps will be shown properly as long as
the layout does not add any gaps on its own.</p>
<p>This works by allowing a layout to place clients normally without
gaps, and then correcting positions and dimensions of clients afterwards
to add gaps around them. To make it work, I had to modify
<code>resize()</code> function, and, as a side effect, this change fixed
some flickering I experienced when using <a
href="https://github.com/djpohly/dwl/wiki/snail">snail</a> layout.</p>
<h3 id="changelog-1">Changelog</h3>
<p>2023-11-24:</p>
<ul>
<li>Refactor, it does exactly the same, just using less code.</li>
<li>Replace <code>gappih</code>, <code>gappiv</code>,
<code>gappoh</code> and <code>gappov</code> with only
<code>gappx</code>. They don't do anything anyways.</li>
</ul>
<h3 id="download-130">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...wochap:genericgaps.patch">2023-11-24</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...NikitaIvanovV:genericgaps.patch">2023-05-20</a>
generic gaps</li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...NikitaIvanovV:genericgaps-rule.patch">2023-05-20</a>
generic gaps + monitor rule to enable gaps on certain monitors by
default</li>
</ul>
<h3 id="authors-131">Authors</h3>
<ul>
<li><a href="https://github.com/NikitaIvanovV">Nikita Ivanov</a></li>
</ul>
<hr />
<h2 id="gridmode">gridmode</h2>
<h3 id="description-132">Description</h3>
<p>Arranges windows in a grid of equal sizes.</p>
<h3 id="download-131">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...Abanoub8:gridmode.patch">2023-06-21</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...vnepogodin:gridmode.patch">2021-07-24</a></li>
</ul>
<h3 id="authors-132">Authors</h3>
<ul>
<li><a href="https://github.com/vnepogodin">Vladislav Nepogodin</a></li>
<li><a href="https://github.com/Abanoub8">Abanoub8</a></li>
</ul>
<hr />
<h2 id="hidecursor">hidecursor</h2>
<h3 id="description-133">Description</h3>
<p>Hide the cursor when typing</p>
<h3 id="download-132">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...apprehensions:hidecursor.patch">2023-10-25</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...PalanixYT:type_hide.patch">2023-02-19</a></li>
</ul>
<h3 id="authors-133">Authors</h3>
<ul>
<li><a href="https://github.com/PalanixYT">Palanix</a></li>
</ul>
<hr />
<h2 id="kbrules">kbrules</h2>
<h3 id="description-134">Description</h3>
<p>Allow for keyboard rules to be used; This allows for
keyboard-specific options or layouts.</p>
<p>The keyboard's names can be retrieved from
<code>libinput list-devices | grep Device</code>, example:</p>
<div class="sourceCode" id="cb30"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb30-1"><a href="#cb30-1" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> KeyboardRule kbrules<span class="op">[]</span> <span class="op">=</span> <span class="op">{</span></span>
<span id="cb30-2"><a href="#cb30-2" aria-hidden="true" tabindex="-1"></a> <span class="op">{</span> <span class="st">&quot;AT Translated Set 2 keyboard&quot;</span><span class="op">,</span> <span class="op">{</span> <span class="op">.</span>options <span class="op">=</span> <span class="st">&quot;altwin:swap_alt_win,caps:swapescape&quot;</span> <span class="op">}</span> <span class="op">},</span></span>
<span id="cb30-3"><a href="#cb30-3" aria-hidden="true" tabindex="-1"></a><span class="op">};</span></span></code></pre></div>
<h3 id="download-133">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...apprehensions:dwl:kbrules.patch">2023-09-20</a></li>
</ul>
<h3 id="authors-134">Authors</h3>
<ul>
<li><a href="https://github.com/apprehensions">sewn</a></li>
</ul>
<hr />
<h2 id="keychord">keychord</h2>
<h3 id="description-135">Description</h3>
<p>This patch implements sequences for chained keybindings (like the dwm
<a href="https://dwm.suckless.org/patches/keychord/">keychord</a>
patch).</p>
<p><em>Notes</em>:</p>
<ul>
<li>The maximum number of sequences is set to <code>5</code> in the
<code>Keychord</code> struct for a given keybinding</li>
<li>This original motivation was better support for <a
href="https://stumpwm.github.io/">stumpwm</a> style of keybindings,
however this is not a limitation</li>
</ul>
<h3 id="example-1">Example</h3>
<p>The default values for <code>MODKEY</code> and <code>PREFIXKEY</code>
can be changed in <code>config.def.h</code> and/or
<code>config.h</code>.</p>
<h4 id="emacs-like">emacs-like</h4>
<p>In the example below, the <code>firefox</code> command is bound to
the key sequence <code>alt-s alt-u f</code>.</p>
<div class="sourceCode" id="cb31"><pre class="sourceCode C"><code class="sourceCode c"><span id="cb31-1"><a href="#cb31-1" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> Keychord keychords<span class="op">[]</span> <span class="op">=</span> <span class="op">{</span></span>
<span id="cb31-2"><a href="#cb31-2" aria-hidden="true" tabindex="-1"></a> <span class="co">/* Note that Shift changes certain key codes: c -&gt; C, 2 -&gt; at, etc. */</span></span>
<span id="cb31-3"><a href="#cb31-3" aria-hidden="true" tabindex="-1"></a> <span class="co">/* count key_sequences function argument */</span></span>
<span id="cb31-4"><a href="#cb31-4" aria-hidden="true" tabindex="-1"></a> <span class="op">{</span> <span class="dv">3</span><span class="op">,</span> <span class="op">{{</span>MODKEY<span class="op">,</span> XKB_KEY_s<span class="op">},</span> <span class="op">{</span>MODKEY<span class="op">,</span> XKB_KEY_u<span class="op">},</span> <span class="op">{</span>MOD_NONE<span class="op">,</span> XKB_KEY_f<span class="op">}},</span> spawn<span class="op">,</span> SHCMD<span class="op">(</span><span class="st">&quot;firefox&quot;</span><span class="op">)</span> <span class="op">},</span></span>
<span id="cb31-5"><a href="#cb31-5" aria-hidden="true" tabindex="-1"></a><span class="op">};</span></span></code></pre></div>
<h4 id="vim-like">vim-like</h4>
<p>In the example below, the <code>firefox</code> command is bound to
the key sequence <code>alt-s u f</code>.</p>
<div class="sourceCode" id="cb32"><pre class="sourceCode C"><code class="sourceCode c"><span id="cb32-1"><a href="#cb32-1" aria-hidden="true" tabindex="-1"></a><span class="dt">static</span> <span class="dt">const</span> Keychord keychords<span class="op">[]</span> <span class="op">=</span> <span class="op">{</span></span>
<span id="cb32-2"><a href="#cb32-2" aria-hidden="true" tabindex="-1"></a> <span class="co">/* Note that Shift changes certain key codes: c -&gt; C, 2 -&gt; at, etc. */</span></span>
<span id="cb32-3"><a href="#cb32-3" aria-hidden="true" tabindex="-1"></a> <span class="co">/* count key_sequences function argument */</span></span>
<span id="cb32-4"><a href="#cb32-4" aria-hidden="true" tabindex="-1"></a> <span class="op">{</span> <span class="dv">3</span><span class="op">,</span> <span class="op">{{</span>MODKEY<span class="op">,</span> XKB_KEY_s<span class="op">},</span> <span class="op">{</span>MOD_NONE<span class="op">,</span> XKB_KEY_u<span class="op">},</span> <span class="op">{</span>MOD_NONE<span class="op">,</span> XKB_KEY_f<span class="op">}},</span> spawn<span class="op">,</span>SHCMD<span class="op">(</span><span class="st">&quot;firefox&quot;</span><span class="op">)</span> <span class="op">},</span></span>
<span id="cb32-5"><a href="#cb32-5" aria-hidden="true" tabindex="-1"></a><span class="op">};</span></span></code></pre></div>
<h3 id="download-134">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...yveszoundi:dwl-customization:keychord-2023-03-12.patch">2023-03-12</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...yveszoundi:dwl-customization:v0.4-keychord-2023-02-15.patch">2023-02-15</a></li>
</ul>
<h3 id="authors-135">Authors</h3>
<ul>
<li><a href="https://github.com/yveszoundi">Yves Zoundi</a></li>
</ul>
<hr />
<h2 id="keymap">keymap</h2>
<h3 id="description-136">Description</h3>
<p>Print current keyboard layout to stdout</p>
<h3 id="download-135">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...GospodinHoroshiy:keymap.patch">2022-09-10</a></li>
</ul>
<h3 id="authors-136">Authors</h3>
<ul>
<li><a href="https://github.com/GospodinHoroshiy">Gospodin</a></li>
</ul>
<hr />
<h2 id="mouse-follows-focus">mouse-follows-focus</h2>
<h3 id="description-137">Description</h3>
<p>This patch adds the option to let the cursor jump to the center of
new clients, as well as move the cursor to the center of clients that
gains focus.</p>
<h3 id="download-136">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...0undefined:mouse-follows-focus.patch">2023-03-17</a></li>
</ul>
<h3 id="authors-137">Authors</h3>
<ul>
<li><a href="https://github.com/0undefined">0undefined</a></li>
</ul>
<hr />
<h2 id="move-stack-top">move-stack-top</h2>
<h3 id="description-138">Description</h3>
<p>Extend the <a
href="https://github.com/djpohly/dwl/wiki/movestack">movestack</a> patch
to let you also focus, or move, a client to the top or bottom of the
stack.</p>
<h3 id="download-137">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...0undefined:dwl:move-client-top.patch">2023-03-12</a></li>
</ul>
<h3 id="authors-138">Authors</h3>
<ul>
<li><a href="https://github.com/0undefined">0undefined</a></li>
<li>Original movestack patch: <a
href="https://github.com/ss7m">sam-barr</a></li>
</ul>
<hr />
<h2 id="nomousefocus">nomousefocus</h2>
<h3 id="description-139">Description</h3>
<p>Prevent focus on mouseover.</p>
<h3 id="download-138">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...jjjt-git:nomousefocus.patch">2023-02-05</a></li>
</ul>
<h3 id="authors-139">Authors</h3>
<ul>
<li><a href="https://github.com/jjjt-git">JJJT</a></li>
</ul>
<hr />
<h2 id="onlyquitonempty">onlyquitonempty</h2>
<h3 id="description-140">Description</h3>
<p>Only exit when no windows are open</p>
<h3 id="download-139">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...GospodinHoroshiy:onlyquitonempty.patch">2022-09-11</a></li>
</ul>
<h3 id="authors-140">Authors</h3>
<ul>
<li><a href="https://github.com/GospodinHoroshiy">Gospodin</a></li>
</ul>
<hr />
<h2 id="privilegedrop">privilegeDrop</h2>
<h3 id="description-141">Description</h3>
<p>Adds the -u option that allows users to pass a desired uid to drop to
after becoming DRM master.</p>
<h3 id="download-140">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...DanielMowitz:privilege-drop.patch">2021-09-06</a></li>
</ul>
<h3 id="authors-141">Authors</h3>
<ul>
<li><a href="https://github.com/DanielMowitz">Daniel Mowitz</a></li>
</ul>
<hr />
<h2 id="relativemouseresize">relativemouseresize</h2>
<h3 id="description-142">Description</h3>
<p>When resizing windows, the mouse will no longer jump to the bottom
right corner and only resize from that corner. Instead, the mouse will
resize the window in the quadrant that the resize starts at. This is the
same resize behavior as Sway and is similar to the resizehere dwm
patch.</p>
<h3 id="download-141">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...schance995:dwl:relative-mouse-resize.patch">v0.4</a></li>
</ul>
<h3 id="authors-142">Authors</h3>
<ul>
<li><a href="https://github.com/schance995">schance995</a></li>
</ul>
<hr />
<h2 id="restartdwl">restartdwl</h2>
<h3 id="description-143">Description</h3>
<p>This patch allows you to restart dwl with a keybinding.<br />
<strong>NOTE:</strong> that all of your applications are gonna get
killed on dwl restart.</p>
<p>The function creates a file at <strong>/tmp/restart_dwl</strong> and
exits dwl.<br />
You have to modify your dwl launch script in order for this patch to
work.<br />
Example dwl launch script:</p>
<div class="sourceCode" id="cb33"><pre
class="sourceCode sh"><code class="sourceCode bash"><span id="cb33-1"><a href="#cb33-1" aria-hidden="true" tabindex="-1"></a><span class="va">do</span><span class="op">=</span>true</span>
<span id="cb33-2"><a href="#cb33-2" aria-hidden="true" tabindex="-1"></a><span class="cf">while</span> <span class="va">$do</span> <span class="kw">||</span> <span class="bu">[</span> <span class="ot">-f</span> /tmp/restart_dwl <span class="bu">]</span><span class="kw">;</span> <span class="cf">do</span></span>
<span id="cb33-3"><a href="#cb33-3" aria-hidden="true" tabindex="-1"></a> <span class="va">do</span><span class="op">=</span>false</span>
<span id="cb33-4"><a href="#cb33-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">rm</span> <span class="at">-rf</span> /tmp/restart_dwl <span class="op">&gt;</span> /dev/null <span class="dv">2</span><span class="op">&gt;&amp;</span><span class="dv">1</span></span>
<span id="cb33-5"><a href="#cb33-5" aria-hidden="true" tabindex="-1"></a> <span class="ex">dwl</span></span>
<span id="cb33-6"><a href="#cb33-6" aria-hidden="true" tabindex="-1"></a><span class="cf">done</span></span></code></pre></div>
<p>It's a do-while that checks if <strong>/tmp/restart_dwl</strong>
exists after the first run of dwl.<br />
If this file exists delete it and start dwl again.</p>
<h3 id="download-142">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...krypciak:patch-restartdwl.patch">2022-10-27</a></li>
</ul>
<h3 id="authors-143">Authors</h3>
<ul>
<li><a href="https://github.com/krypciak">krypciak</a></li>
</ul>
<hr />
<h2 id="restoretiling">restoretiling</h2>
<h3 id="description-144">Description</h3>
<p>All floating windows become tiling when switching to a different
layout.</p>
<h3 id="download-143">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...Stivvo:restoreTiling.patch">2020-08-28</a></li>
</ul>
<h3 id="authors-144">Authors</h3>
<ul>
<li><a href="https://github.com/Stivvo">Stivvo</a></li>
</ul>
<hr />
<h2 id="stickyrule">stickyrule</h2>
<h3 id="description-145">Description</h3>
<p>Add a rule to clients to spawn them <a href="sticky">sticky</a> on
start up. I personally use it to make <a
href="https://github.com/mwh/dragon">dragon</a> show up on all tags.</p>
<h3 id="download-144">Download</h3>
<p>Apply on top of <a href="sticky">sticky patch</a>.</p>
<ul>
<li><a
href="https://github.com/dm1tz/dwl/compare/04-sticky...NikitaIvanovV:stickyrule.patch">2023-05-27</a></li>
</ul>
<h3 id="authors-145">Authors</h3>
<ul>
<li><a href="https://github.com/NikitaIvanovV">Nikita Ivanov</a></li>
</ul>
<hr />
<h2 id="swaycompat">swaycompat</h2>
<h3 id="description-146">Description</h3>
<p>Implements just enough of the <code>sway-ipc</code> protocol to
facilitate status bars. Tested with <code>waybar</code> and
<code>rootbar</code>.</p>
<h3 id="download-145">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...StratusFearMe21:main.patch">2022-06-08</a></li>
</ul>
<h3 id="authors-146">Authors</h3>
<ul>
<li><a href="https://github.com/StratusFearMe21">Isaac Mills</a></li>
</ul>
<hr />
<h2 id="touchscreen">touchscreen</h2>
<h3 id="description-147">Description</h3>
<p>Adds SIMPLE touchscreen functionality.<br> Currently emulates mouse
movement and button presses.<br></p>
<h3 id="download-146">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...fauxmight:dwl:simple_touch_input.patch">2023-03-31</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...Unprex:touch-screen.patch">2022-10-16</a></li>
</ul>
<h3 id="authors-147">Authors</h3>
<ul>
<li><a href="https://github.com/fauxmight">fauxmight</a></li>
<li><a href="https://github.com/Unprex">Unprex</a></li>
</ul>
<hr />
<h2 id="vertile">vertile</h2>
<h3 id="description-148">Description</h3>
<p>A tiled layout optimized for wide vertical monitors.</p>
<h3 id="scheme-2">Scheme</h3>
<pre><code>|---------------------------|
| |
| |
| M |
| |
| |
|---------------------------|
| t1 |
|---------------------------|
| t2 |
|---------------------------|
| t3 |
|---------------------------|</code></pre>
<h3 id="download-147">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...Abanoub8:vertile.patch">2023-06-21</a></li>
<li><a
href="https://github.com/djpohly/dwl/compare/main...ChausseBenjamin:vertile.patch">2021-08-15</a></li>
</ul>
<h3 id="authors-148">Authors</h3>
<ul>
<li><a href="https://github.com/ChausseBenjamin">Benjamin
Chausse</a></li>
<li><a href="https://github.com/Abanoub8">Abanoub8</a></li>
</ul>
<hr />
<h2 id="xcursor">xcursor</h2>
<h3 id="description-149">Description</h3>
<p>Set cursor theme and size via <code>XCURSOR_THEME</code> and
<code>XCURSOR_SIZE</code> environmental variables.</p>
<h3 id="download-148">Download</h3>
<ul>
<li><a
href="https://github.com/djpohly/dwl/compare/main...NikitaIvanovV:xcursor.patch">2023-07-18</a></li>
</ul>
<h3 id="authors-149">Authors</h3>
<ul>
<li><a href="https://github.com/NikitaIvanovV">Nikita Ivanov</a></li>
</ul>
<hr />
</body>
</html>