<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Niri on /dev/random</title>
    <link>https://log.2027a.net/tags/niri/</link>
    <description>Recent content in Niri on /dev/random</description>
    <image>
      <title>/dev/random</title>
      <url>https://log.2027a.net/img/cover.jpg</url>
      <link>https://log.2027a.net/img/cover.jpg</link>
    </image>
    <generator>Hugo -- 0.147.7</generator>
    <language>fr</language>
    <lastBuildDate>Sun, 08 Jun 2025 21:23:54 -0400</lastBuildDate>
    <atom:link href="https://log.2027a.net/tags/niri/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>X11 to Wayland: reflections on moving forward</title>
      <link>https://log.2027a.net/posts/x11-to-wayland-reflections-on-moving-forward/</link>
      <pubDate>Sun, 08 Jun 2025 21:23:54 -0400</pubDate>
      <guid>https://log.2027a.net/posts/x11-to-wayland-reflections-on-moving-forward/</guid>
      <description>&lt;p&gt;I discovered &lt;a href=&#34;https://github.com/YaLTeR/niri&#34;&gt;niri&lt;/a&gt; this morning the way you discover most things these days:
through a rabbit hole that started with someone&amp;rsquo;s rice post and ended with me
questioning my life choices. For the uninitiated, niri is a scrollable-tiling
Wayland compositor that lets you navigate your windows by scrolling
horizontally through columns instead of jumping between discrete workspaces.
It&amp;rsquo;s either brilliant or completely pointless, and I can&amp;rsquo;t decide which.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Niri WM screenshot&#34; loading=&#34;lazy&#34; src=&#34;https://log.2027a.net/img/niri.png&#34;&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>I discovered <a href="https://github.com/YaLTeR/niri">niri</a> this morning the way you discover most things these days:
through a rabbit hole that started with someone&rsquo;s rice post and ended with me
questioning my life choices. For the uninitiated, niri is a scrollable-tiling
Wayland compositor that lets you navigate your windows by scrolling
horizontally through columns instead of jumping between discrete workspaces.
It&rsquo;s either brilliant or completely pointless, and I can&rsquo;t decide which.</p>
<p><img alt="Niri WM screenshot" loading="lazy" src="/img/niri.png"></p>
<p>The concept is neat enough: your desktop becomes an infinite horizontal canvas
where windows live in columns, and you scroll left and right to find what you
need. It&rsquo;s spatial navigation for people who think in terms of &ldquo;over there&rdquo;
rather than &ldquo;workspace 3.&rdquo; But as someone who&rsquo;s spent years perfecting a
master/stack automatic workflow where new windows spawn predictably in the top-right
corner, pushing older windows down while leaving my master window untouched,
niri feels like being asked to swap a well-organized bookshelf for a
never-ending hallway of scattered books.</p>
<p>This brings up a larger issue with Wayland tiling: the options are still
frustratingly limited if you&rsquo;re particular about your workflow. We&rsquo;ve got <a href="https://swaywm.org/">Sway</a>
(i3 but Wayland), <a href="https://github.com/hyprwm/Hyprland">Hyprland</a> (Sway but with automatic tiling), and a handful of
experimental compositors that may or may not work with your monitor setup.
Coming from <a href="https://github.com/qtile/qtile">qtile</a>&rsquo;s Python configurability, the landscape feels both promising
and constrained.</p>
<p>Hyprland deserves credit here – it&rsquo;s probably the first Wayland compositor that
implements 99% of what makes a really good tiler. The window management is
solid, the animations don&rsquo;t make you want to disable them immediately, and the
configuration is comprehensive enough that you can usually bend it to your
will. It&rsquo;s good software that mostly gets out of your way, which is high praise
in the world of window managers.</p>
<p>But here&rsquo;s where things get nostalgic in the most pathetic way possible:
Hyprland represents this awkward transition from X11&rsquo;s mature, elegant tooling
to Wayland&rsquo;s &ldquo;we&rsquo;ll build it as we go&rdquo; philosophy. Take <a href="https://github.com/baskerville/sxhkd">sxhkd</a>, that perfect
piece of software that let you define keybindings with ranges and conditionals
in syntax so clean it felt like poetry:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">super + {1-9,0}
</span></span><span class="line"><span class="cl">    bspc desktop -f &#39;^{1-9,10}&#39;
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">super + shift + {h,j,k,l}
</span></span><span class="line"><span class="cl">    bspc node -m {west,south,north,east}
</span></span></code></pre></div><p>Beautiful, expressive, concise. Hyprland&rsquo;s submaps work, but they&rsquo;re verbose in
the way that makes you miss what you had:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">bind = $mainMod, A, submap, applications submap = applications bind = , t,
</span></span><span class="line"><span class="cl">exec, alacritty
</span></span><span class="line"><span class="cl">bind = , f, exec, firefox bind = , escape, submap, reset submap
</span></span><span class="line"><span class="cl">= reset
</span></span></code></pre></div><p>I&rsquo;ve developed a workaround system using thematic namespaces (meta+a for
applications, meta+i for info scripts, meta+r for rofi modes) that&rsquo;s actually
more organized than my old sxhkd setup. I even added a clever &ldquo;unused shortcut&rdquo;
notification fallback – press an undefined key in a submap and get a
notification telling you it&rsquo;s available. It&rsquo;s the kind of user experience
polish you end up implementing yourself because the tools aren&rsquo;t quite there
yet.</p>
<p>Then there&rsquo;s <a href="https://github.com/noctuid/tdrop">tdrop</a>, another X11 gem that made dropdown terminals trivial. One
command: <code>tdrop -ma -w 50% -h 40% -x 25% -y 5% alacritty</code> and you had a
perfectly centered floating terminal that toggled on demand. In Hyprland, you
achieve the same thing through a combination of workspace rules, window rules,
keybindings, and animation configurations. It works, but it&rsquo;s the difference
between using a specialized tool and assembling a solution from general-purpose
parts.</p>
<p>This isn&rsquo;t really a complaint – it&rsquo;s more like watching a new ecosystem grow in
real time. The X11 world had decades to develop focused, single-purpose tools
that did one thing beautifully. Wayland compositors are powerful and modern,
but that modernity often comes with complexity that makes simple things
harder than they should be.</p>
<p>Will I try niri? Probably. Am I skeptical that scrolling through infinite
columns will feel better than my predictable master/stack layout? Absolutely.
But there&rsquo;s something appealing about the spatial approach, even if it&rsquo;s
probably a solution looking for a problem.</p>
<p>The real question isn&rsquo;t whether niri is a gimmick – it&rsquo;s whether we&rsquo;re willing
to trade the elegant simplicity of mature tools for the promise of something
better, even when &ldquo;better&rdquo; is still under construction. Most days, I&rsquo;m happy
with that trade-off. Some days, I miss sxhkd more than I care to admit.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
