A fully automated and cohesive desktop experience built on Hyprland, where the entire UI is dynamically themed from the wallpaper. This repository contains the complete configuration for my personal Arch Linux setup, including a suite of custom-built C widgets that form a complete desktop environment.
This setup is built around the idea of a "living desktop"—an environment that is not only visually stunning but also deeply integrated and automated. The core principle is that a single action, changing the wallpaper, should trigger a cascade of updates that recolor and unify every component of the UI, from the window borders to the terminal to custom application widgets.
This is a "backyard mechanic's" approach to the desktop: if a tool didn't exist or didn't fit the aesthetic, I built it.
- Dynamic Theming: Using Wallust, the entire 16-color palette is generated from the current wallpaper. A central management script then applies this theme to every configured application.
- Custom C Widgets: The core of the experience. These are not just display items; they are fully-functional applications built from scratch to integrate seamlessly with the desktop:
- Control Center: Manages Wi-Fi, Bluetooth, audio sinks, brightness, and volume.
- Hyper-Calendar: A full calendar with CRUD (Create, Read, Update, Delete) functionality for managing events and schedules.
- Side-MPRIS-Player: A media player widget that displays metadata and features perfectly synced lyrics for music playing in any MPRIS-compatible player (including browsers).
- Centralized Management: A single shell script (
manage.sh
) is used for my personal convenience to manage symlinks. - Aesthetic Cohesion: Every component, from the Ironbar status bar to the SwayNC notification daemon, is themed using a consistent set of CSS templates, ensuring a pixel-perfect, unified look and feel.
Here are a few videos demonstrating the setup in action.
Live Widget Demo | Dynamic Theming in Action |
---|---|
Download Video | Download Video |
Detailed views of the custom widgets and the dynamic theming engine.
MPRIS Player with Synced Lyrics | Control Center |
---|---|
![]() |
![]() |
Calendar | Dynamic Theme: Palette 1 |
![]() |
![]() |
Schedule Items | Dynamic Theme: Palette 2 |
![]() |
![]() |
This setup is built on a foundation of powerful and flexible open-source software.
- OS: Arch Linux
- Window Manager: Hyprland
- Theming Engine: Wallust
- Status Bar: Ironbar
- Wallpaper Daemon: swww
- Terminal: Kitty
- Notification Daemon: SwayNC
- Custom Widgets: Written in C using the GTK library.
These dotfiles are deeply intertwined with custom-compiled C applications, specific package versions, and hardcoded paths that are unique to my setup.
This repository is intended to be used for inspiration and reference only.
- Browse the Code: The best way to use this repo is to explore the configuration files for ideas. Find a component you like, such as the Ironbar config or the Hyprland animations.
- Isolate and Understand: Read through the configuration for that specific component. Understand what it does and identify any dependencies it has on my custom scripts or widgets.
- Adapt and Adopt: Manually copy the specific sections you find useful into your own personal configuration files. You must adapt the code by changing paths, removing dependencies, and adjusting settings to fit your own system.
DO NOT run manage.sh
. This script is for my personal use to manage my own symlinks. It is not an installation script and it will not work on your system.
This project would not be possible without the incredible work of the developers behind Hyprland, Wallust, and the entire Linux FOSS community. Thank you for providing the tools that allow for such deep and meaningful customization.
This project is licensed under the MIT License. Feel free to use and modify the code as you see fit.