SkillAgentSearch skills...

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/Dotfiles
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Dotfiles & Configs

Qtile

Language

Quick Links

Table of Contents

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

View on GitHub
GitHub Stars921
CategoryProduct
Updated1d ago
Forks181

Languages

Vim Script

Security Score

100/100

Audited on Mar 26, 2026

No findings