Dotfiles
My dotfiles repo, here you can find all my window manager configs as well as documentation and a guide on how to make your own desktop environment.
Install / Use
/learn @antoniosarosi/DotfilesREADME
Dotfiles & Configs

Language
- 🇪🇸 Español
- 🇺🇸 English
Quick Links
- Window manager configs
- Gallery (see how my configs look)
- Common keybindings for my configs
- Software I use
Table of Contents
- Overview
- Arch installation
- Login and window manager
- Basic qtile configuration
- Basic system utilities
- Further configuration and tools
- Gallery
- Keybindings
- Software
Overview
This guide will walk you through the process of building a desktop environment starting with a fresh Arch based installation. I will assume that you are comfortable with Linux based operating systems and command line interfaces. Because you are reading this, I will also assume that you've looked through some "tiling window manager" videos on Youtube, because that's where the rabbit hole starts. You can pick any window managers you want, but I'm going to use Qtile as a first tiling window manager because that's what I started with. This is basically a description of how I made my desktop environment from scratch.
Arch installation
The starting point of this guide is right after a complete clean Arch based distro installation. The Arch Wiki doesn't tell you what to do after setting the root password, it suggests installing a bootloader, but before that I would make sure to have working internet:
pacman -S networkmanager
systemctl enable NetworkManager
Now you can install a bootloader and test it "safely", this is how to do it on modern hardware, assuming you've mounted the efi partition on /boot:
pacman -S grub efibootmgr os-prober
grub-install --target=x86_64-efi --efi-directory=/boot
os-prober
grub-mkconfig -o /boot/grub/grub.cfg
Now you can create your user:
useradd -m username
passwd username
usermod -aG wheel,video,audio,storage username
In order to have root privileges we need sudo:
pacman -S sudo
Edit /etc/sudoers with nano or vim by uncommenting this line:
## Uncomment to allow members of group wheel to execute any command
# %wheel ALL=(ALL) ALL
Now you can reboot:
# Exit out of ISO image, unmount it and remove it
exit
umount -R /mnt
reboot
After logging in, your internet should be working just fine, but that's only if your computer is plugged in. If you're on a laptop with no Ethernet ports, you might have used iwctl during installation, but that program is not available anymore unless you have installed it explicitly. However, we've installed NetworkManager, so no problem, this is how you connect to a wireless LAN with this software:
# List all available networks
nmcli device wifi list
# Connect to your network
nmcli device wifi connect YOUR_SSID password YOUR_PASSWORD
Check this page for other options provided by nmcli. The last thing we need to do before thinking about desktop environments is installing Xorg:
sudo pacman -S xorg
Login and window manager
First, we need to be able to login and open some programs like a browser and a terminal, so we'll start by installing lighdm and qtile. Lightdm will not work unless we install a greeter. We also need xterm because that's the terminal emulator qtile will open by default, until we change the config file. Then, a text editor is necessary for editing config files, you can use vscode or jump straight into neovim if you have previous experience, otherwise I wouldn't suggest it. Last but not least, we need a browser.
sudo pacman -S lightdm lightdm-gtk-greeter qtile xterm code firefox
Enable lightdm service and restart your computer, you should be able to log into Qtile through lightdm.
sudo systemctl enable lightdm
reboot
Basic qtile configuration
Now that you're in Qtile, you should know some of the default keybindings.
| Key | Action | | -------------------- | -------------------------- | | mod + return | launch xterm | | mod + k | next window | | mod + j | previous window | | mod + w | kill window | | mod + [asdfuiop] | go to workspace [asdfuiop] | | mod + ctrl + r | restart qtile | | mod + ctrl + q | logout |
Before doing anything else, if you don't have a US keyboard, you should change it using setxkbmap. To open xterm use mod + return. For example to change your layout to spanish:
setxkbmap es
Note that this change is not permanent, if you reboot you have to type that command again. See this section for making it permanent, or follow the natural order of this guide if you have enough time.
There is no menu by default, you have to launch programs through xterm. At this point, you can pick your terminal emulator of choice and install a program launcher.
# Install another terminal emulator if you want
sudo pacman -S alacritty
Now open the config file:
code ~/.config/qtile/config.py
At the beginning, after imports, you should find an array called keys, and it contains the following line:
Key([mod], "Return", lazy.spawn("xterm")),
Change that line to launch your terminal emulator:
Key([mod], "Return", lazy.spawn("alacritty")),
Install a program launcher like dmenu or rofi:
sudo pacman -S rofi
Then add keybindings for that program:
Key([mod], "m", lazy.spawn("rofi -show run")),
Key([mod, 'shift'], "m", lazy.spawn("rofi -show")),
Now restart Qtile with mod + control + r. You should be able to open your menu and terminal emulator with keybindings. If you picked rofi, you can change its theme like so:
sudo pacman -S which
rofi-theme-selector
That's it for Qtile, now you can start hacking on it and make it your own. Checkout my custom Qtile config here. But before that I would recommend configuring basic utilities like audio, battery, mounting drives, etc.
Basic system utilities
In this section we will cover some software that almost everybody needs on their system. Keep in mind though that the changes we are going to make will not be permanent. This subsection describes how to accomplish that.
Wallpaper
First things first, your screen looks empty and black, so you might want to have a wallpaper not to feel so depressed. You can open firefox through rofi using mod + m and download one. Then install feh or nitrogen and and set your wallpaper:
sudo pacman -S feh
feh --bg-scale path/to/wallpaper
Fonts
Fonts in Arch Linux are basically a meme, before you run into any problems you can just use the simple approach of installing these packages:
sudo pacman -S ttf-dejavu ttf-liberation noto-fonts
To list all available fonts:
fc-list
Audio
There is no audio at this point, we need pulseaudio. I suggest also installing a graphical program to control audio like pavucontrol, because we don't have keybindings for that yet:
sudo pacman -S pulseaudio pavucontrol
On Arch, pulseaudio is enabled by default, but you might need to reboot in order for it to actually start. After rebooting, you can open pavucontrol through rofi, unmute the audio, and you should be just fine
