The Ricing Guide
Ricing, a term commonly used for making your boring ass linux desktop into a treat for your eyes. But how do you even begin one? Well while this is not a masterclass of some sorts, this should at the very least give you some idea as to how to begin your perfect rice. Here are a list of things we will go through while doing this.
So before we begin here is a small disclaimer
This is not a STEP BY STEP TUTORIAL on how to rice. This is a GUIDE and only aims to assist you.
First, what is a window manager? In contrast to a DE, which provides a whole user experience with panels, taskbars, systrays, desktop icons, menus and stuff, windows managers usually just come with the ability to do basic window operations such as moving, resizing, and minimizing // maximizing (except one). Now I assuming you know what display protocols are and what is the difference between Wayland
and Xorg // X11
. If you do not, I would suggest you to read this. In wayland, a window manager if referred to as a wayland compositor
or just compositor
in short. Now here are the different WMs / compositors you can choose as an beginner.
awesome: May be the best X11 WM. Probably the most featureful WM that comes with an inbuilt bar, systray, appmenu, context menu, and various layouts. What makes AwesomeWM truly stand out is its Lua scripting support, allowing users to tailor every aspect of their desktop experience to their liking. Be aware of the steep learning climb though. If you are starting your own awesomewm configuration from scratch it is highly recommended to use this kit as a good default configuration.
bspwm: My recommendation for beginners. The unique approach of dividing the screen into binary space partitions enables users to create a well-organized and intuitive workspace. It offers users a lightweight and highly responsive window manager that focuses on functionality without unnecessary frills.
dwm: Now this WM is a bit unique. It follows a bit controversial suckless philosophy, which aims at the software being as barebones and minimal as possible. The only way to customize any suckless software like dwm is to directly edit its source code. While this can be a fun little activity, I will not recommend dwm to absolute newbies. A shortcut to easily patch dwm would be to use dwm-flexipatch.
qtile: Qtile is simple and very user friendly. The use of Python as a configuration language makes Qtile accessible to a broader audience, enabling users to personalize their workspace with ease. It has a strong builtin bar that can be molded to almost anything requested by the user. Also it is one the rare WMs on the planet that actually work on both wayland and x11.
hyprland: Probably the most popular wayland compositor in the unixporn circle and for the right reasons. Its light, low on resources, but can be configured endlessly and with ease. Comes with smoooth window movement and workspace changing transitions that for some is a quite a deal breaker. Can be extended to have more fancy border, titlebars and loads of other things via community made plugins.
swayfx: A fork of sway but much better. Sway is just a pure i3 replacement for wayland. But sway never adds any extra feature on their own, they just do what i3 does. Swayfx is a fork that adds eyecandy such as rounded-corners that are anti aliased, blurring, shadows, dimming of unfocused windows, per application saturation control and possible fade and window animations.
These are just my recommendations for beginners, there are many other compositors/wms available and you are free to use those.
Almost any temrminal can look good with your rice. It does not really matter but here are my only two recommendations for a terminal emulator if you ever feel confused.
wezterm (written in rust btw 🚀) : My favourite terminal. Very easy to configure (it is in lua
) and comes with a lot of features built in. Terminal hot reloads if the config is changed. Comes with image support, automatic powerglyph rendering, ligature support and has near perfect font rendering. Works on both wayland and x11, though for wayland and some more features you will need to use the git version. The only downside is that its a bit resource extensive, though it is still miles better than kitty.
alacritty (also, written in rust btw 🚀): Very easy to use and understand and is also easy to configure. Alacritty is configured via toml
. Does not support ligatures and powerglyphs, but has good font rendering. It is significantly more resource-ful than wezterm so its a good alternative for low end systems.
Alright now we get into actual ricing stuff. Now to choose the “looks” or “aesthetic” of the rice. This is what will makes your rice truly unique. Here are some of the common aesthetics that I have come by so far -
Now what defines a ‘modern’ theme. A modern theme usually plays with small rounded corners (or none), two to three colors for background and only 1 accent color. They usually have very dark background colors and try to replicate the looks of a desktop environment. Anything like buttons or components on widgets have a alternate background color which is usually 10-15% lighter than the background color. Usage of other colors like “red” or “green” are only done where its “widely accepted”, for example red for close button and green for battery. They prefer to have walls that are a bit towards the lighter side.
For this, its to preferred to use sans serif fonts like Lexend, Gabarito or Rubik.
Now material rices are based on Google’s Material UI.
The number of colors included in this are significantly more than your average DE derivative, with there being many shades of background colors and foreground colors. Apart from once accent color, material schemes also have a secondary color and a tertiary color. Buttons and components are much more rounded but it still has the capability to retain its ‘modern look’. Best font to use with it is again, Lexend. The below rice is probably one of the cleanest executions of material in ricing we’ll ever see.
For material its often recommended to generate your colors using matugen instead of cherry picking the colors. You can do this by -
Now this kind of rice is subjective to all. Each person has thier own view on a comfy rice. The colorschemes used in these rices are rather simple and not vibrant. Stardust’s AwesomeWM rice is a good example of a comfortable and cozy rice.
Sometimes use of a “pixelated” design is also seen. Pixelated rices are bit tricky to pull off because of the lack of good pixelated fonts. Beck’s pixel rice is a good example of this
Now these rices are the bare minimum and mostly just a bar with workspaces and some indicators. Mostly driven by the words, “less is more”. Does not contain widgets, but if they do, it is mostly some settings buttons and a music indicator.
These rices go full on minimalism. They only contain a bar (mostly waybar / polybar or the dwm bar) and mostly are “everything is bloat” kind of guys. Mostly made by people who run artix (not arch, systemd is bloat)
The next big task to be done is choosing a colorscheme for your rice. Now you are free to make your own colorscheme and its ports for different applications, but if you are just starting out to rice, better alternative would be to use an existing colorschemes. The colorscheme to use mainly depends on what aesthetic you want your rice to be. If you want a modern DE rice, its better to have rices with backgrounds that are either very dark, like carburetor or light themed like in this screenshot. Wanna have something warm and cozy, use colorschemes with browner shades, like biscuit, gruvbox-material or swamp.
There are some themes which I feel goes with every kind of rice, like decay, catppuccin (heavily overused in the unixporn community), everblush and javacafe’s ghost. To make your rice more unique, it’s better to use colorschmes that are rarely used. For that you might have to make ports yourself but it pays off. I have already talked about custom themes in nix in this blog. For other distros, mainly you only need to make additional ports for GTK and Neovim. Custom GTK themes can be easily made by tweaking around the _colors.scss
file in phocus. Neovim themes can be made easily with my own plugin prism. Here are some underrated colorschmes I will recommend.
You can also have dynamic colorschemes based on the wallpaper you have. Currently, the most popular tool for this is pywal. Using it is as simple as
There is another program called matugen which generates colors based on the material. While pywal also generates multiple templates for the colorscheme it generated, matugen will only provide you with values, it is up to your job to make a script to use them.
The problem with using generated colors is that often, they either generate very generic colorschmes or very monochrome colorschemes.
Choosing an icon pack and cursor theme is very subjective to the rice you want. For most rices, papirus icon theme works just fine and there is no need to search for another. However if you want some “modern” looking icons, you can go for reversal or just the whitesur icon theme.
For cursors, unless you have a super specific niche theme in mind, you can just use phinger cursors or bibata, they work for most aesthetics / themes.
Now this will be a very short section. Because a good wallpaper is a very subjective topic. Wallpaper bascially adds character to your rice. You are free to use whatever wallpaper you like as long as it matches the colorscheme. If you can not find a good wallpaper, here are some places to find them.
If you still cant a wall matching your scheme, you can make the wall you like match your scheme with lutgen.
Keep in mind that it is not always necessary to use a very artistic, beautiful wall, sometimes a tiling wallpaper is all you need.
Or sometimes, just a plain color.
old rice by janleigh
Now I am not a graphics expert or something and do not know the literal defination of compositing. But compositing in ricing usually stands for adding efects like blurs, shadows, corner radius and animations to windows and workspaces. This generally happens with software called compositors
. In wayland, compositors are in build with the WM you are running (hence are called wayland compositors). In X, you need to install a software for that, most commonly, picom. Now if you only want stuff like blurring, corners and shadows, the orignal picom should work fine. But now there are many forks that implement window animations. Window animations many a times come with the cost of slow performance. I was able to find this fork of picom which was much more resource efficient than others.
Its always recommended to also use blur if you are decreasing the opacity of windows, as that makes the text easier to read. It is difficult to find the sweet spot where it should neither look too opaque or too transparent.
This terminal hits a good spot and is pleasant to look at.
You know ‘em, You lov ‘em. Widgets. Widgets are a way to actually elevate your rice from plain, bland and ordinary to something extraordinary. Here are your options for bars and widgets.
The wibox library is inbuilt in AwesomeWM, and is only accessible via awesome only. With other builtin libraries like naughty
, awful
, wibox becomes insanely powerful and can be used to built almost anything. Kasper’s config might the best example of that.
People have used wibox to build lockscreens, docks, application launchers, bars, wifi menu, right click menus, notifications, financial ledger and even add custom titlebars to make minimalist programs like NCMPCPP, feh more usable. Has a bit of a steep learning curve and docs may not be enough for newbies.
The OG program that brought widgets to other WMs. Use it only if you are using a X11 WM that is not AwesomeWM. Has a very limited range of GTK components which should be enough to make a good looking desktop. The widgets are defined in its own lisp like language called yuck and styled via SASS. The only downsides are no systray (yet) and poor documentation.
As of 30th March 2024, the systray pull request is merged
The new cool kid in town which should take the wayland ricing community by storm. Its fairly new and is being actively worked upon. Learning curve is easy because javascript is easy. Has multiple inbuilt widgets, but really it can give you access to all GTK widgets possible, a major plus side against EWW. Also has systray built in, and more number of CSS properties supported. But the main thing that makes it miles better than EWW is the number of inbuilt services and utility functions.
Currently fully suppports Hyprland. There is a fork by ozwaldorf which brings support for Sway but is yet to be merged. No other wayland compositor is yet fully supported with services.
In dead simple words, Fabric is like AGS but with python. It is still not fully ready to be used and I myself have not tried it yet. So I cannot judge it right now. It claims to work on both X11 and wayland and Python can make it very easy to configure. This looks promising but cannot say much yet.
What if you do not want the complexity of these widgets and just want a simple normal rice. You can simply use polybar for x11 and waybar for wayland. They are very limited in terms of functionality, (only colored text for that matter) but might be enough to get your work done. Waybar has an advantage with tasklist, usage of css to style and the functionality to make vertical bars. They can also be used to execute well polished and modern bars as seen below -
waybar by rxyhn
If you use dwm, then you should strictly stick to the inbuilt dwmbar and extend it with patches and stuff. Here are a list of patches you can apply to make your dwm bar look good and functional -
Another big part of your next r/unixporn post is how you display the terminals you have in there. Now you can do that in a number of ways.
These are usually bash scripts written to display the different colors in the terminal. You can find a bunch of them in this repo by Manas or in colorscripts.
I do not think we need to discuss what a fetch
program does. It is a staple of all screenshots in unixporn because it looks cool and is actually a pretty
good way to display information about your system.
Here are some of the popular fetch scripts.
Here are a list of other cli programs that you might have come by in unixporn screenshots -
Terminal prompts can massively enhance the look of your terminal. There is a common myth that a temrinal prompt is based on what shell you use. No, you can make your prompt look like anything with any shell. By setting the prompt you are basically just editing the $PS1
environment variable.
There are utilities like oh-my-zsh and powerlevel10k which can make your prompt look “cool” but the tool I recommend for beginners is starship. It is pretty easy to setup and has support for almost all shells.
Terminal padding: Terminal padding can make your terminal look 100x better instantly. I recommend having atleast 16px padding on terminals (my preference is 32px).
Here is the orignal ricing guide of unixporn. Pretty outdated but is still worth a read!
This list is made keeping in mind that the reader is new to ricing and the repository and dotfiles are easy to read and understand.
Well that was long. But hopefully this makes you aware about the options you have when starting out to rice and makes it easy to choose your ricing stack. Till next time. See ya!
Namish
( っ˶´ ˘ `)っ made out of ❤️ and boredom
built with astro