💾 Archived View for thatit.be › 2023-09-23-07-16-55.gmi captured on 2024-08-18 at 17:59:44. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2024-07-09)

🚧 View Differences

-=-=-=-=-=-=-

Playing with NixOS and Tiling Window Managers

There’s a tiny chance that Wayland gets better battery life on my Asahi MacBook Linux system, so I’m using it as an excuse to explore tiling window managers under NixOS. There’s a lot to clarify there… I’m using Arch Linux on my M1 MacBook Pro. The battery life is only so/so under Linux where I’m using BSPWM in Xorg. I like the way BSPWM is configured and controlled. I like it a lot. Before that I used FVWM for over 20 years, it was no small feat that I switched away, I liked BSPWM that much.

As an aside, the system used to heat up a lot when watching YouTube before I switched to the experimental drivers and with that the battery life improved, so recently I decided to start trying out Wayland to see if it would get even better. I was near the end of my battery with Xorg and now I’m noticing my level is falling really slowly, but I’m at the top of the charge. So the jury is still out. But I can’t keep using BSPWM if I’m going to be using Wayland.

Since it’s a hell of a lot easier to try out other packages on my x86-64 box where I’m now running NixOS than it is to install and test stuff under Arch Linux. I can just launch a program in a new shell under NixOS and when I’m done, I throw it away. It doesn’t affect my overall system in any way.

So far I’ve tried:

Hyprland

I actually stuck the programs.hyprland.enable = true in my system configuration so it would actually be installed. I did this because I assumed it would be “good enough” to get me started and that I would probably need to use it for a few days before I could get a sense of if it was going to be my new preferred interface.

So I put this in my /etc/nixos/configuration.nix:

programs.hyprland.enable = true

After a nixos-rebuild switch I can just Hyprland to launch a Wayland session and start using it.

I am not a fan of their quotes on the desktop. That is, I like quotes on my desktop, but I don’t like the random stuff Hyprland puts there by default. I’m going to have to modify my quote script to pain the desktop in Wayland.

Config

Hyprland generates a config if it doesn’t find one. That was pretty handy. I recall the first time I ran BSPWM that I had to kill it from another console because I didn’t have a config.

Hyprland also watches its config for any changes and applies them right away.

I like that hiding the mouse cursor after a timeout is a built-in feature. I was using a separate program to hide my Xorg cursor.

Keys

I am finding the default keybindings of Hyprland to be weird and I have kind of a love/hate relationship with its fancy graphics and rounded window borders. Neither of these really matter, but I occasionally fall back to muscle memory of using BSPWM, Mod+M switches to monocle mode in BSPWM per the example config. In Hyprland it exits Wayland. I have only hit this twice so far.

In moving from window to window, I like the precision of BSPWM. Hyprland just has options for next and previous window in the bindings by default. Maybe it can have bindings for selecting a window in a given direction, but I haven’t found them yet.

I like to bind Mod+semicolon to Rofi. There’s a wofi program that’s pretty close in functionality, so I’ve bound that. Font sizes aren’t what I like nor does there appear to be a convenient themer like what Rofi has. I may have to resort to just using Rofi and xwayland until someone creates one.

Tiling

Hyprland does not tile like BSPWM does. I think it can be configured to, but I haven’t looked into it far enough. It does a Dwindle layout by default that is sort of BSPWM-ish, but I can’t predict where it’s going to throw the next program I open and I wasn’t able to bind a preselect so I could choose where the window goes, either. I assume I’m doing something wrong in the config for this, and I’ll certainly circle back to this in experimenting later.

After a day I realized I could just nix-shell -p whatever other things to try, and that brought me to River.

River

No fancy rounded corners, no neon highlighted borders by default, and the lack of animation makes it appear like it’s running super fast. I’m going to have to disable animations in Hyprland for a fair comparison later, otherwise I’m left with the impression that it’s a no-nonsense lean running beast and that Hyprland is sluggish and laggy.

Config

I did have to fetch an example config from github. That is, I:

git clone https://github.com/riverwm/river
mkdir ~/.config/river/
cp riverwm/river/example/init/ ~/.config/river/

I didn’t have foot installed so I had to s/foot/kitty/g in ~/config/river/init. Later I would go back and change some of the other key bindings.

Like how BSPWM has bspc, River has riverctl. I was able to run commands to modify the configuration live. Like BSPWM the config is just a shell script that calls configuration commands to set things up.

That’s where similarities between BSPWM and River end.

My initial impression is that the concepts in river are quite a bit different than those in BSWPM.

Keys

Mod+Space will toggle a view between floating and tiled, I typically only put stuff into floating by accident. Resizing the main ratio is typically what I mean to do, but I accidentally resize views which turns them into floats instead of tiles.

Tiling

The default view is to split the screen into two verticals and all additional windows pop into the top of the right half and squish down any existing windows. I’m not a fan. But, you can add more or take away existing counts to increase or decrease the columns and rows, which is a lot like being able to preselect where a window will go. It’s not a one-to-one mapping and is a bit different because you can affect existing windows by increasing or decreasing the count or you can affect where a new window will land by increasing the count.

Tags

#nixos

Navigation

index

tags

Backlinks

2024-06-16 - Hyprland is not terrible

updated: 2023-09-23 07:44:59

generated: 2024-08-16