mirror of
https://gitlab.com/EternalWanderer/voidcruiser.nl
synced 2024-11-29 04:13:51 +01:00
More on the windowmanager article
This commit is contained in:
parent
c852d39730
commit
3683e3913c
|
@ -2,7 +2,7 @@
|
|||
title: "On window managers and XMonad"
|
||||
date: "2022-11-03T23:17:35+01:00"
|
||||
author: "$HUMANOID"
|
||||
tags: ["linux", "window managers"]
|
||||
tags: ["linux", "window managers", "xmonad"]
|
||||
description: "A ramble about a highly configurable window manager"
|
||||
---
|
||||
|
||||
|
@ -67,8 +67,8 @@ pretty much exactly how I wanted it to. In other words, a fairly basic
|
|||
configuration with most of the default features ripped out and instead my
|
||||
partially-organically-grown-probably-batshit-insane-keybindings (I use `Super` +
|
||||
`Space` to open my run launcher. In fact, on my keyboard I have holding the big
|
||||
space bar (yes it has two space bars, it is about as insane as my window
|
||||
management keybindings) bound to `Super` + `Space`).
|
||||
space bar (yes it has two space bars, its layout is about as insane as my
|
||||
window management keybindings) bound to `Super` + `Space`).
|
||||
|
||||
To this day I still use DWM quite frequently on machines where I don't really
|
||||
want to think about what graphical interface to chuck on it (hence I half
|
||||
|
@ -79,17 +79,61 @@ planning on frequently using fullscreen applications and how strong the machine
|
|||
in question was; AwesomeWM being noticeably slower than DWM on _really_ old
|
||||
machines (like RejuvinatedBrick). Until at some point, I came across XMonad.
|
||||
|
||||
I tried it.
|
||||
I tried it for an evening.
|
||||
|
||||
Hated the fact that it's configured in _sodding Haskell_ and went back to DWM.
|
||||
I hated the fact that it's configured in _sodding Haskell_ and went back to DWM.
|
||||
|
||||
A few months later, I came across it's implementation of chorded keys through
|
||||
A few months later, I came across an implementation of chorded keys through
|
||||
the `XMonad.Util.EZConfig` module and decided to give it another shot.
|
||||
|
||||
This time I was hooked.
|
||||
|
||||
The biggest problem I had with it was _still_ the fact that it was configured in
|
||||
Haskell, but the level of configurability made it worth dealing with the
|
||||
functional pain. It was also the first time I decided to not bother with a
|
||||
The biggest problem I had with it was _still_ the fact that it was configured
|
||||
in Haskell, but the absurd level of customisability made it worth dealing with
|
||||
the functional pain. It was also the first time I decided to not bother with a
|
||||
status bar as getting a basic configuration going had given me enough grief for
|
||||
one month.
|
||||
|
||||
For a really long time I could tell you how great XMonad was, but that it had
|
||||
one major caveat: "it's configured in Haskell". Sure, besides Haskell there were
|
||||
a few other things that I didn't like much.
|
||||
|
||||
As for gripes I had (and partially still have) with XMonad, they were quite few,
|
||||
surprisingly. Coming from AwesomeWM and DWM, I would've liked XMonad to use tags
|
||||
instead of workspaces; fullscreen is a bit of a pain to get working, but has
|
||||
less fuckups than DWM; the fact that it's configured in Haskell; it not having a
|
||||
set of workspaces per monitor (at least by default, I kind of stopped caring
|
||||
after a little while); the fact that it's configured in Haskell; the
|
||||
`XMonad.Layout.ShowWName` module being kind of unstable and last but not least,
|
||||
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
|
||||
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
|
||||
of documentation in the comments).
|
||||
|
||||
{{< img class="stickers" src="/images/config_length.png" >}}
|
||||
|
||||
So far I don't fully understand it yet at the time of writing, but I do
|
||||
understand it a hell of a lot better than when I prodoced most of those 300
|
||||
lines.
|
||||
|
||||
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
|
||||
separation configuration and source code. The only difference there _really_ is,
|
||||
is the filename. Once you understand a bit of Haskell (no small task if you're
|
||||
used to imperative languages) adding and integrating your own features is really
|
||||
easy.
|
||||
|
||||
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
|
||||
languages, but couldn't due to their nature. Things like pattern matching and
|
||||
maps are quite intuitive to me. It's just that the syntax takes a _lot_ of
|
||||
getting used to.
|
||||
|
||||
I highly recommend giving it a shot if you're willing to bash your head against
|
||||
the Haskell wall for a while before understanding how your window manager works.
|
||||
|
||||
Looking back I find it quite funny to see how I went from not being able to get
|
||||
i3 to do what I wanted it too and giving up; to barely being able to write or
|
||||
understand Haskell but putting up with it.
|
||||
|
|
BIN
static/images/config_length.png
Normal file
BIN
static/images/config_length.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 30 KiB |
Loading…
Reference in a new issue