Brain Drain Friday: My Work-in-Progress Qtile Rice
Hey everyone,
It's another Brain Drain Friday! My brain feels like it's running on fumes, so instead of a deep technical dive, I wanted to do something fun that most Linux enthusiasts can appreciate: "ricing" the desktop.
For those unfamiliar, "ricing" is just a term for customizing your desktop's appearance and functionality to make it your own – from colors and fonts to window manager behavior. It’s a bit of an art form and a fun way to express yourself.
I'm always tweaking my setup, and right now I'm running Qtile, a tiling window manager written and configured in Python. I wanted to share my current work-in-progress look and highlight a few key snippets from my config.py
that make it all work.
Here are a few pieces of the configuration that you might not be able to see clearly in the image, but that define how my desktop looks and feels:
1. The Color Palette
A good rice starts with a good color scheme. I'm using a new theme that defines a set of colors I can reference throughout the entire configuration, from the bar to the window borders. This makes it super easy to change the entire look and feel just by editing one section.
# --- Colors (New Theme from rootloops.sh) ---
colors = {
"background": "#0a0611",
"foreground": "#e5dff1",
"red": "#d97780",
"green": "#7aa860",
"yellow": "#bc904f",
"blue": "#6b9bd9",
"magenta": "#b77ed1",
"cyan": "#52a9a9",
"white": "#beb1da",
"brightBlack": "#584875",
}
2. Layout Theme and Window Borders
I like a clean, minimalist look with just enough of a border to know which window is active. The layout_theme
applies these settings to all my layouts (like MonadTall
and Max
), ensuring consistency. The active window gets a nice magenta border, while inactive windows have a more subdued gray.
# --- Layouts ---
layout_theme = {
"border_width": 2,
"margin": 8,
"border_focus": colors["magenta"],
"border_normal": colors["brightBlack"],
}
layouts = [
layout.MonadTall(**layout_theme),
layout.Max(**layout_theme),
layout.Floating(**layout_theme),
]
3. Multi-Monitor Workspace (Group) Handling
I run a multi-monitor setup, and one of the best things about Qtile is how you can customize it to manage workspaces across screens. I have a couple of helper functions, go_to_group_on_screen
and move_window_to_group_on_screen
, that automatically switch focus to the correct monitor when I switch to certain workspaces. For my setup:
- Workspaces 1-5 live on my primary monitor (index 0).
- Workspaces 6-9 are designated for my second monitor (index 1).
# Helper function example
def go_to_group_on_screen(group_name: str):
def _inner(qtile_instance):
# ... logic to determine which screen the group belongs to ...
if 1 <= int(group_name) <= 5:
target_screen_index = 0 # Monitor 1
elif 6 <= int(group_name) <= 9:
target_screen_index = 1 # Monitor 2
# ... logic to switch to the screen and then the group ...
qtile_instance.to_screen(target_screen_index)
qtile_instance.groups_map[group_name].toscreen()
return _inner
4. Custom Autostart Script
To get everything running on login (like my notification daemon, wallpaper setter, etc.), Qtile has a startup hook. I have it set to run an autostart.sh
script located in my config directory. This keeps my Python config clean and lets me manage startup applications with a simple shell script.
# --- Autostart ---
@hook.subscribe.startup_once
def autostart():
home = os.path.expanduser("~/.config/qtile/autostart.sh")
# Check if the script exists and is executable
if os.path.exists(home) and os.access(home, os.X_OK):
subprocess.Popen([home])
It’s always a fun process, and there’s always something new to tweak. What does your desktop look like? Share a link or describe your setup in the comments!
As always,
Michael Garcia a.k.a. TheCrazyGM
New profile picture is epic!! With a profile pic like that, who wouldn't want to read all about your CN linux magicks !!
!PAKX
!PIMP
!PIZZA
View or trade
PAKX
tokens.Use !PAKX command if you hold enough balance to call for a @pakx vote on worthy posts! More details available on PAKX Blog.
$PIZZA slices delivered:
@ecoinstant(2/20) tipped @thecrazygm
Come get MOONed!
Sweet, my friend! I think every true Linux-lover is into ricing their desktops, me included. I really like your simple, consistent theme. I've never tried a tiling windows manager yet, but I've certainly considered it a few times. I'd share mine now, but I just recently swapped the Arch install I was using to another, and this one needs some adjusting and tweaking. Thanks a lot for sharing, I love this stuff! 😁 🙏 💚 ✨ 🤙