DEV Community

Willie Jeng
Willie Jeng

Posted on • Updated on

Arch Linux Ricing

The Short Story

I designed my own desktop interface in Arch Linux. It looked cool. Then my laptop's Wifi adapter broke and then the monitor broke too. That wasn't so cool.

The Long Story

I've always been obsessed with user interfaces and customization. Since I was a kid, I would spend a lot of time playing with settings, tweaking the window colors in Windows XP, changing my Google homepage background image, making custom heads-up displays in Team Fortress 2, etc. One of my nerdier fantasies was to be able to customize my computer user interface however I want, and this fantasy was realized when during the summer before tenth grade I learned about Arch Linux and the world of ricing. Arch Linux is a Linux distro that focuses on simplicity, which means it is pretty much empty after you install it (which you have to do manually, partitioning your drives and downloading core files through a command-line interface) and you have to install everything on your own, including a GUI and a sound server. Because you had to do everything by yourself, this also meant you got to design your system however you liked and install whichever programs you liked, which brings us to ricing, which is to make your interface as visually pleasing as possible.

I ended up spending more than a dozen months converting my freshly reset laptop from a black terminal to a wonderful, clean, and aesthetic interface. Plus, by using window managers such as i3, I was able to design my own workflow and made it so that I could navigate through my system with only a keyboard and no mouse. Every day that I worked on this ricing project, I found more cool programs from the Arch Wiki, learned new Bash scripting skills, and rebooted my laptop multiple times to change my settings.

My journey of ricing was helped by the online community, including Youtubers such as Luke Smith, and most importantly, the subreddit r/unixp*rn (completely appropriate despite the name). On this subreddit, people shared screenshots or videos of their riced up Unix systems, showing off their beautiful designs or clever scripts. The best part was that many of them included their configurations, or dotfiles, in the comments, so I could easily learn from and copy their ideas. I was planning on making my own post, but before I felt like my system was ready to be shared with the world, my laptop's Wifi adapter broke, which made it kind of hard to communicate with the outside world on that laptop. A few weeks later the monitor also stopped working, and with other stuff coming up on my schedule, I had to take a break from ricing. Since my screenshots are stored on a laptop that I can't navigate because of a broken screen, the only footage of my system in action is from some phone recordings of questionable quality.


The only "screenshot" I can easily access now is this poorly filmed video. It doesn't show any workflow either, but I guess the matrix screensaver and the audio visualizer look pretty cool.

Link to Code

These are my dotfiles for most of the applications you can customize. They're slightly unorganized because I didn't really know how to manage dotfiles with git.

GitHub logo wj3ng / dotfiles

My dotfiles for Arch Linux.

My dotfiles.

Welcome to my dotfiles I use on my Arch Linux laptop.

These might be a bit messy. I try to keep them tidy, but my laziness sometimes gets the better of me. Also, some of these configs and scripts are personalized for myself, and might not be useful for anyone else.

The file structure of this repo is not accurate, so don't try to copy everything directly to your home folder.

My Inspirations

  • Metamist: His r/unixporn post caught my eye and I initially used his dotfiles. My rice dotfiles are still based off his dotfiles.

  • Luke Smith: His ricing videos on his Youtube channel gave me many ideas to add to my own rice.

Configs present here

  • i3 (i3-gaps-next-git) (windows manager)
  • vim (text editor)
  • zsh (shell)
  • ranger (file manager)
    • file icons
  • neofetch (displays system information)
  • dunst (notifications)
  • rofi (application launcher, window switcher, etcl)
  • cava (audio…

How I built it

Instead of telling lengthy stories of how I tweaked my Spotify mini-player to have a pause symbol show up when you paused the music, I'm just gonna list out some programs that I chose to use and my experiences with them.

  • i3-gaps for my windows manager: To be fair, the only other option I tried was AwesomeWM, which was too uncustomizable for my liking. i3 did the job, as it's one of the most well supported and customizable windows managers. The i3-gaps fork allowed windows to have gaps between them because it looks good, but I also made a script that switched between gaps and no gaps if I felt like the gaps were taking up too much space.
  • zsh for my shell: zsh has more cool features and stuff than bash, so I just went with it. The switch was pretty easy because everything written in bash works in zsh.
  • vim for my text editor/IDE: My love for VIM is probably as big as my love for Arch Linux and ricing itself, so I'll try to keep it short. It allows for ultra-fast editing and navigation and you don't even have to move your hand to the arrow keys to move. Simply exit insert mode back to normal mode and use h, j, k, and l as arrow keys. The lightning fast navigation is just the beginning of VIM's magic, but you could get the rest from other VIM lovers on the Internet. VIM is also very customizable, and you bet I riced the heck out of mine (check out .vimrc in my repo).
  • termite for my terminal emulator: I had some problems showing images in my terminal emulator (I know, not something you'd expect a terminal emulator to do but it makes it look cool), and when I solved that problem I would get other problems with text colors, so in the end, I settled with Termite, which had less of the problems over urxvt or xterm. I never fully fixed these issues though.
  • polybar for my status bar: Highly customizable. I didn't have the need to try out anything else, so I can't say too much about it compared to other status bars.
  • rofi for my window switcher: Basically a pop-up window that runs scripts that can do anything, including switching between windows or act as a power menu. Pretty nice, and of course, customizable.
  • dunst for my notification daemon: This is the thing that pops up when I get a message on Messenger or the currently playing song changes. I didn't get to customize it enough before my laptop broke down.


There were many flaws and unfinished designs in my system. There were many small bugs with my scripts and the theming wasn't always consistent. There were many things that I never got to doing, including creating an actual power menu (I would use commands to do this), and setting up a display manager, a.k.a. the login screen (I also used commands to do this). These were some of the reasons I hesitated on making a public post with my screenshots.

Despite this, I learned a whole lot throughout this ricing process. Before all this, I was a fairly elementary Linux user, sticking to the default stuff they gave me on Ubuntu. After playing with the operating system so much, I became much more familiar with Linux, and also just how a computer and operating system works in general. Besides that, I also learned a lot about graphic design and interface design.

I plan on starting a new ricing project on a new computer very soon, which will be partially based on my old project. As I won't be completely clueless this time, I will fix many problems I had in my old build and also be much more organized. I'll be sure to share my work when I think it's ready, so stay tuned!

Top comments (2)

33nano profile image

Super cool customizations

organizedfellow profile image
Jaime Aleman

I use Arch BTW.