awesome-yuki!

My Wayland Desktop Setup

· yuki

I’m sharing my wayland desktop setup, aka what programs I use to do what

DWL

DWL is a compact, hackable compositor for Wayland based on wlroots. It’s basically DWM but ported to Wayland. I use DWL because frankly, Hyprland and Sway are both too bloated for my use case. I do not need a lot of the features they offer, especially in Hyprland’s case. (I’m past my blur and rounded corners phase!) I also am not interested in floating window managers because I have noticed an actual productivity increase by only using my keyboard instead of using my mouse. It’s simply more efficient to hit alt+k to move to the next window on the right instead of moving my hand to move my mouse and clicking the window to focus on it.

If you do not want to patch DWL, the next best option is RiverWM, a dynamic tiling compositor (just like DWL) with a focus on layouts. If you don’t already have a bar like yambar or waybar set up, I also recommend dam, a bar for river that looks like the bar from DWM.

Anyways, back to DWL. I have 7 patches installed, with 2 of them just being aesthetic patches.

These are my patches:

Here’s a Luke Smith video explaining window swallowing, for those interested:

mew

I use mew as my menu program (insert brainrot mewing meme here). I don’t really use it for anything other than launching applications via desktop entries using j4-dmenu-desktop, so yeah.

swaybg

Fun fact: I once tried to find an animated wallpaper program so that I could have a cool animated wallpaper of the Paladin Strait MV. Unfortunately, every program either didn’t work or ate up my memory.

It might be surprising that I use swaybg, but that’s because swaybg is just the best wallpaper setter for Wayland. wbg eats up a significantly larger amount of memory compared to swaybg.

My wallpaper is a nice monochrome picture of Tyler Joseph performing in a concert.

Terminal

foot is the best and only terminal emulator you should ever use on Wayland. Alacritty and Kitty both might be fast, but they both sacrifice features for speed. The Kitty maintainer is also a bit of a meanie (See https://www.youtube.com/watch?v=ApQE1ksRdg4). Wezterm just looks bad, and every other VTE-based terminal is just plain slow. So yeah, foot is just perfect for my use case. Paired with tmux for tabs and splits, it’s a nice minimalist terminal emulator.

Idle and Lockscreen

I use widle and wlock for my idle daemon and lock screen respectively. Wlock works on all compositors that implement the ext-session-lock-v1 protocol, which is basically every compositor worth using. It looks exactly like slock by suckless.org, and you configure its colors by editing wlock.c. I have wlock themed to the Catppuccin colorscheme.

1static Clr colorname[3] = {
2	[INIT]   = { 0x00000000, 0x00000000, 0x00000000 }, /* after initialization */
3	[INPUT]  = { 0x89898989, 0xb4b4b4b4, 0xfafafafa }, /* during input */
4	[FAILED] = { 0xf3f3f3f3, 0x8b8b8b8b, 0xa8a8a8a8 }, /* wrong password */
5};

You use widle by running widle -t <time> <program>

So I have it set to execute wlock after 300 seconds of idling.

wtw

I go to school, so I need a list of homework and project deadlines to stay organised. wtw offers exactly that. I just run wtw -f /usr/share/fonts/source-code-pro-nerd -- cat ~/notes/todo.md and it displays a list of all the things I need to do above the wallpaper, but always below my windows. So I use it as a glorified sticky note which sticks to my wallpaper. Whenever I need to see what I still have due, I just switch to an empty wallpaper and it’s right there. wtw is configured by editing config.h, but the file is relatively short.

 1/* See LICENSE file for copyright and license details. */
 2
 3/* appearance */
 4static int pad = 10;
 5static const char *font_name = "Source Code Pro Regular:size=10:dpi=96";
 6static uint32_t scheme[2] = {
 7        [ColFg] = 0xbbbbbbff,
 8        [ColBg] = 0x00000000,
 9};
10
11static int32_t width = 0;
12static int32_t height = 0;
13static int x = 10;
14static int y = 450;
15
16/* behavior */
17static int period = 0;
18
19/*
20 * Delimeter string, encountered as a separate line in subcommand output,
21 * signaling rendering buffered text and continuing with next frame.
22 */
23static const char delimeter[] = "\4";

miscellaneous things

conclusion

So yeah, that’s my whole Wayland stack. I hope you start using minimalist software and cut out the bloat from your life!

#linux #software

Reply to this post by email ↪