This commit is contained in:
Nox Sluijtman 2022-11-04 19:31:59 +01:00
parent 9a8b877074
commit a518e50c3a

View file

@ -3,17 +3,17 @@ title: "On window managers and XMonad"
date: "2022-11-03T23:17:35+01:00" date: "2022-11-03T23:17:35+01:00"
author: "$HUMANOID" author: "$HUMANOID"
tags: ["linux", "window managers", "xmonad"] tags: ["linux", "window managers", "xmonad"]
description: "A ramble about a highly configurable window manager" description: "A ramble about, among other things, a highly configurable window manager"
--- ---
# My journey into Tiling Window Managers # My journey into Tiling Window Managers
When I started my Linux journey, I stuck with GNOME 3something for around the When I started my Linux journey, I stuck with GNOME 3 something for around the
first year. Sure, I tried KDE and Cinnamon and XFCE, but GNOME is the one I first year. Sure, I tried KDE and Cinnamon and XFCE, but GNOME is the one I
always kept coming back to. I think it's because it's pretty much the only one always kept coming back to. I think it's because it's pretty much the only one
that felt completely different from what the rest of the world was doing. It that felt completely different from what the rest of the world was doing. It
helped me with thinking about Linux as being different from windows. After this helped me with thinking about Linux as being different from windows. After this
first your though, I came across a few videos about tiling window managers and first year though, I came across a few videos about tiling window managers and
wanted to try one. The first one I installed was i3. wanted to try one. The first one I installed was i3.
I hated it. I hated it.
@ -27,10 +27,10 @@ live in Wayland with Sway for at least a little while.
After a few hours of trying to get things to work in i3, I went back to GNOME. After a few hours of trying to get things to work in i3, I went back to GNOME.
Some time later, I came across AwesomeWM. It was being recommended as a fairly Some time later, I came across AwesomeWM. It was being recommended as a fairly
easy window manager to start with -- it also having window decorations and it's easy window manager to start with -- it having window decorations and it's own
own menu system. The first thing I did was try-and fail to rip out said menu menu system. The first thing I did was try-and fail to rip out said menu system
system and window decorations. I was putting too much on myself trying to learn and window decorations. I was putting too much on myself trying to learn the
the basics of both using a tiling window manager and Lua. basics of both using a tiling window manager and Lua.
Some time after that, I came across BSPWM. This was the first time where I felt Some time after that, I came across BSPWM. This was the first time where I felt
like I _really_ managed to get a tiling window manger to do what I wanted it to like I _really_ managed to get a tiling window manger to do what I wanted it to
@ -38,7 +38,7 @@ do. For some odd reason, there are people out there who consider BSPWM a more
"advanced" window manger. I really don't get why. To this day, I am of the "advanced" window manger. I really don't get why. To this day, I am of the
opinion that SXHKD's configuration syntax is some of the best out there. I think opinion that SXHKD's configuration syntax is some of the best out there. I think
it took me around 10 minutes to wrap my head around the basics. Somewhere around it took me around 10 minutes to wrap my head around the basics. Somewhere around
an afternoon later, I had a config that served well me for the next few months an afternoon later, I had a config that served me well for the next few months
to come. to come.
A while after BSPWM, I decided to give suckless' DWM a shot. Despite my lack of A while after BSPWM, I decided to give suckless' DWM a shot. Despite my lack of
@ -50,7 +50,7 @@ around this time, so DWM's nearly non-existent memory footprint was also great.
Despite this really being the first really "advanced" window manager, I had an Despite this really being the first really "advanced" window manager, I had an
easier time configuring it than AwesomeWM or i3. It was also the first time easier time configuring it than AwesomeWM or i3. It was also the first time
where I could appreciate the master-stack layout properly and not having to where I could appreciate the master-stack layout properly and not having to
think about keeping track of windows in two dimensions any more. It made me think about keeping track of windows in two dimensions anymore. It made me
realise that I want to have to think as little as possible about window realise that I want to have to think as little as possible about window
positioning. It was the reason I couldn't deal with i3's paradigm and shifted positioning. It was the reason I couldn't deal with i3's paradigm and shifted
away from BSPWM the moment I found DWM. away from BSPWM the moment I found DWM.
@ -105,8 +105,8 @@ the fact that it's configured in _fucking Haskell_.
It almost seems like I got sick of being sick of it being configured in Haskell It almost seems like I got sick of being sick of it being configured in Haskell
and I decided to dive into learning the language with the goal of being able to and I decided to dive into learning the language with the goal of being able to
fully understand by monstrous 384 line config file (without the around 200 lines fully understand my monstrous 384 line config file (586 lines including the
of documentation in the comments). documentation in commented sections).
{{< img class="stickers" src="/images/config_length.png" >}} {{< img class="stickers" src="/images/config_length.png" >}}
@ -115,13 +115,13 @@ a hell of a lot better than when I produced most of those 300 lines.
The greatest thing about XMonad is simultaneously the thing that kept me away The greatest thing about XMonad is simultaneously the thing that kept me away
from it: it's written and configured in bloody Haskell. Thus there is barely a from it: it's written and configured in bloody Haskell. Thus there is barely a
separation configuration and source code. The only difference there _really_ is, separation between configuration and source code. The only difference there
is the filename. Once you understand a bit of Haskell (no small task if you're _really_ is, is the filename. Once you understand a bit of Haskell (no small
used to imperative languages) adding and integrating your own features is really task if you're used to imperative languages) adding and integrating your own
easy. And then they are _properly_ integrated. Sort of like how DWM works, only features is really easy. And then they are _properly_ integrated. Sort of like
with proper documentation and support. Part of me wants to see if I can figure how DWM works, only with proper documentation and support. Part of me wants to
out a way to package my XMonad build as a single binary to be able to chuck it see if I can figure out a way to package my XMonad build as a single binary to
onto systems without putting much thought into it. be able to chuck it onto systems without putting much thought into it.
Weird thing with Haskell I'm noticing so far is that I'm slowly but surely Weird thing with Haskell I'm noticing so far is that I'm slowly but surely
managing to dig up old concepts that I tried to implement in imperative managing to dig up old concepts that I tried to implement in imperative