Linux Rice V2: Hyprland

Custom Linux Desktop Setup

Introduction

In 2023, I felt Wayland and Hyprland became mature and stable enough for me to daily drive. This year I also tried out the NixOS linux distribution for the first time. I really enjoyed the stability and reproducibility that came with NixOS but I ended up sticking to Arch because I found NixOS was hindering my love for constantly tinkering with my system. For this desktop setup, I’ve retained the majority of the app specific configurations I had on my AwesomeWM setup. The main changes for this new setup were the addition of Eww widgets and migration from some Xorg tools to Wayland.

Hyprland

Layouts

I use 9 workspaces plus one special workspace across two monitors. Workspaces 1-6 are attached to the main monitor and workspaces 7-9 are used on my second monitor. The default layout on every workspace is the dwindle tiling layout. There are many windowrules in the configuration to assign the floating state, transparency, and specific sizes to applications. Wallpapers are managed with swww.

Keybinds

Most of the keybinds for managing windows are ported over from my AwesomeWM configuration. The following are some of the new Hyprland specific keybinds:

Animations and Blur

There is a fast and snappy bezier curve animation based on Material design 3 applied to moving windows. There is a slight tasteful blur applied to transparent windows by default. A more intense glassmorphism blur can be toggled from the prior keybind.

The Terminal

My workflow in the terminal is virtually the same. I still primarily use Kitty and Tmux. My go-to font is still cascadia-code patched with nerd font and my preferred colorscheme is the Macchiato flavour of Catppuccin. I am trying out the Fish interactive shell but have not yet decided if I prefer it over ZSH configuration. Since switching to Wayland I have yet to find a complete replacement for Ueberzug for image previews in the lf file manager. I’ve gotten previews to work seamlessly in kitty+lf but there are some funky behaviours in tmux+kitty+lf.

The Eww Bar

I started out using the waybar for my bar but after some inspiration from end-4’s dotfiles I decided to create my own Eww bar for better customizability. Some notable modules in the bar include the Hyprland workspace indicator, system monitors, and script shortcuts. Other than that, the other features remain consistent with my past polybars, wibar, and waybar.

Widgets and Panels

All panels and widgets are made with Eww and tries to follow the Material Design 3 design system. There is a default colorscheme and a dynamic theme switcher that generates a colorscheme according to the current wallpaper.

Settings

The settings panel provides sliders, toggles, and buttons to control various parts of the desktop. These settings include volume, brightness, nightlight, mouse sensitivity, window blur, window gaps, window borders, and power options.

Music

Displays the currently playing song’s title, author, and progress. The widget also provide media buttons and has an audio visualizer powered by cava.

Notifications

Work in progress.

Workflow

Development

My primary editor is my neovim configuration. The secondary editor I use is VSCode. If I require the use of a full-fledged IDE I have configured IntelliJ IDEA CE to be used. I use QEMU and the Libvirt GUI to create and manage virtual machines.

Writing

My latex writing setup comprises of the vim plugin vimtex and the PDF viewer Zathura. latex

Notetaking

I use a combination of Obsidian.md and Gimp for notetaking. I use these applications mostly stock. The notable plugins I use for Obsidian are vim and excalidraw.

Media

For music I switch between the Spotify player customized with Spicetify and playing local files with mpv. I use the Celluloid frontend for mpv. Audio is managed with pipewire, wireplumber, and EasyEffects. EasyEffects is used to equalize my Senheiser 560S headphones and Shuoer S12 IEMs. spotify

Gaming