Refracted Pixels

Refracted Pixels

A place for Gabe Martinez to share their love of games and software with the world

2 minutes read

For my birthday last year, I decided that the time had come. Time for me to finally purchase a new laptop to replace my aging 2013 MacBook Air (RIP). Apple had slowly pushed me back to Linux, so I went with the excellent Lenovo X1 Carbon, whose 5th generation had come out earlier in 2017. It arrived nearly a month later. When the weekend came around, I flashed a USB drive with the latest Arch Linux Live image, rolled up my sleeves, and got to work.

As much as I want to regale you all with bountiful details of setting up a new Arch Linux installation, I’m here today with a specific purpose: to spread knowledge about XDG User Directories! I haven’t found a specification explaining the standard, but as usual, the Arch Linux wiki comes to the rescue!

So, in setting up my laptop, I was trying to figure out how to best organize my home directory. I was used to macOS’s default layout with Desktop, Documents, Downloads, and so on. But since I was ditching macOS and its tyranny, why not actually give this some thought. Eventually, I settled on the following:

~
❯ ls
build/  dev/  documents/  Dropbox/  music/  pictures/  public/  tmp/  videos/

I specifically wanted no Desktop directory, to rename the Downloads directory to tmp, and to use lower-case folders in my home directory to ease my life when typing them on the command line—where I live. Following the wiki, I filled my ~/.config/user-dirs.dirs with:

XDG_DESKTOP_DIR="$HOME/tmp/desktop"
XDG_DOWNLOAD_DIR="$HOME/tmp"
XDG_TEMPLATES_DIR="$HOME/documents/templates"
XDG_PUBLICSHARE_DIR="$HOME/public"
XDG_DOCUMENTS_DIR="$HOME/documents"
XDG_MUSIC_DIR="$HOME/music"
XDG_PICTURES_DIR="$HOME/pictures"
XDG_VIDEOS_DIR="$HOME/videos"

And voila! All applications that follow the XDG User Directories spec—all the well-behaved ones at least—will now use the configured directories instead of the defaults.

Hmm, now if only I could get Dropbox to fall in line with the whole lower-case thing 🤔.

Recent posts

About

Gabe is an experienced software developer and gamer. Often found making games, climbing rocks, or singing about the Rust programming lanaguage.