<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://lug.mtu.edu/w/index.php?action=history&amp;feed=atom&amp;title=Minutes_2026-10-15</id>
	<title>Minutes 2026-10-15 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://lug.mtu.edu/w/index.php?action=history&amp;feed=atom&amp;title=Minutes_2026-10-15"/>
	<link rel="alternate" type="text/html" href="https://lug.mtu.edu/w/index.php?title=Minutes_2026-10-15&amp;action=history"/>
	<updated>2026-11-08T16:46:33Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://lug.mtu.edu/w/index.php?title=Minutes_2026-10-15&amp;diff=8193&amp;oldid=prev</id>
		<title>Freya: Created page with &quot;&lt;span id=&quot;gbrwm&quot;&gt;&lt;/span&gt; = gbRWM =  Presented by Gabe  pronounced “gooberwm”  &lt;span id=&quot;what-is-a-wm&quot;&gt;&lt;/span&gt; = What is a WM? =  * Determines how windows move and resize * Tells where windows go * Draws titlebars and other decorations * The “GUI” part of the desktop environment * WMs originate from X11, WM talks to the display server to tell where windows go, compositor handles rendering ** X11 was haphazard and old, lots of long communications bogged down speed...&quot;</title>
		<link rel="alternate" type="text/html" href="https://lug.mtu.edu/w/index.php?title=Minutes_2026-10-15&amp;diff=8193&amp;oldid=prev"/>
		<updated>2026-11-02T20:22:18Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;span id=&amp;quot;gbrwm&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; = gbRWM =  Presented by Gabe  pronounced “gooberwm”  &amp;lt;span id=&amp;quot;what-is-a-wm&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; = What is a WM? =  * Determines how windows move and resize * Tells where windows go * Draws titlebars and other decorations * The “GUI” part of the desktop environment * WMs originate from X11, WM talks to the display server to tell where windows go, compositor handles rendering ** X11 was haphazard and old, lots of long communications bogged down speed...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;span id=&amp;quot;gbrwm&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= gbRWM =&lt;br /&gt;
&lt;br /&gt;
Presented by Gabe&lt;br /&gt;
&lt;br /&gt;
pronounced “gooberwm”&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;what-is-a-wm&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= What is a WM? =&lt;br /&gt;
&lt;br /&gt;
* Determines how windows move and resize&lt;br /&gt;
* Tells where windows go&lt;br /&gt;
* Draws titlebars and other decorations&lt;br /&gt;
* The “GUI” part of the desktop environment&lt;br /&gt;
* WMs originate from X11, WM talks to the display server to tell where windows go, compositor handles rendering&lt;br /&gt;
** X11 was haphazard and old, lots of long communications bogged down speed&lt;br /&gt;
* On wayland, the system was flattened to make the window manager (or compositor) do &amp;#039;&amp;#039;everything&amp;#039;&amp;#039;.&lt;br /&gt;
** Much more freedom for weirdness&lt;br /&gt;
** Simpler architecture&lt;br /&gt;
** BUT: to make a window manager you need to implement the compositor, display server, and window manager # RIVER:&lt;br /&gt;
* Wayland compositor that doesn’t do window management&lt;br /&gt;
* WM is split into a separate process&lt;br /&gt;
* River checks in every so often to ask where a window goes&lt;br /&gt;
* Much easier! Saves a lot of time!&lt;br /&gt;
* gbrWM is built on top of River ## Why make a WM?&lt;br /&gt;
* Self-defined window behavior&lt;br /&gt;
* It’s cool&lt;br /&gt;
* The gbRWM plan:&lt;br /&gt;
** dynamic tiling&lt;br /&gt;
** titlebars with tabs&lt;br /&gt;
** super-simple&lt;br /&gt;
** mouse-first design ## Demo&lt;br /&gt;
* Tabs correspond to windows&lt;br /&gt;
* Tabs can be dragged to move windows&lt;br /&gt;
* Keyboard and mouse both work for management&lt;br /&gt;
* Windows can be shrunk farther than they want to be&lt;br /&gt;
* Maximizable windows&lt;br /&gt;
* Windows can be moved to sidebar&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;internals&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Internals ==&lt;br /&gt;
&lt;br /&gt;
* Turns out there’s a reason most tiling WMs don’t do titlebars&lt;br /&gt;
* Each titlebar is a separate surface (basically a window) that needs to be rendered to and respond to user input.&lt;br /&gt;
** Options are software rendering, vulkan, or use an existing graphics library&lt;br /&gt;
** Most graphics libraries don’t work because they’re designed for a single window, chugs really hard because it sends things to the GPU one at a time&lt;br /&gt;
* TRICK THE COMPOSITOR INTO DRAWING FOR YOU&lt;br /&gt;
** Build a surface out of &amp;#039;&amp;#039;subsurfaces&amp;#039;&amp;#039;&lt;br /&gt;
** Meant to be used to use textures of separate types on the same surface&lt;br /&gt;
** NOT MEANT TO BE USED FOR THIS&lt;br /&gt;
** Works well, even with tons of windows open&lt;br /&gt;
** Subsurfaces can also handle click regions for us!&lt;br /&gt;
** Creating/destroying subsurfaces is &amp;#039;&amp;#039;&amp;#039;SLOW&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*** Keep a cache of them, so we don’t need to delete and recreate them all the time!&lt;br /&gt;
* Text is still a challenge…&lt;br /&gt;
** PREMATURE OPTIMIZATION DETOUR!!&lt;br /&gt;
*** Store one copy of each string to display, to store fewer textures on duplicate windows&lt;br /&gt;
** Text is HELL to draw&lt;br /&gt;
** Tried Pango to draw text&lt;br /&gt;
*** Pango is based on glib, so zig’s translate-c feature doesn’t work with it&lt;br /&gt;
*** No zig pango bindings&lt;br /&gt;
*** but there is zig-gobject (bindings for 107 different GNOME-related libraries in a single zig dependency. includes pango!!)&lt;br /&gt;
*** Pango docs are full of jargon, very dense, and demos don’t exist anymore&lt;br /&gt;
*** Pango requires Cairo to actually draw text ## Future Plans&lt;br /&gt;
* Floating windows&lt;br /&gt;
* Window Icons&lt;br /&gt;
* Make the minimize button do something&lt;br /&gt;
* Named workspaces&lt;br /&gt;
* Scrollbars&lt;br /&gt;
* New tab button&lt;br /&gt;
* Searchable sidebar, not unlike the Sway scratchpad&lt;br /&gt;
* Need xdg-activation-support for new tabs&lt;/div&gt;</summary>
		<author><name>Freya</name></author>
	</entry>
</feed>