Skip to main content
This page documents the complete directory structure of the dotfiles repository and explains the purpose of each directory and its target location in the system.

Repository Root

~/dotfiles/
├── .config/          # Application configurations
├── bin/              # Custom command-line utilities
├── home/             # Home directory dotfiles
├── boot/             # Bootloader configuration
├── etc/              # System configuration files
├── srv/              # Service data files
├── usr/              # System-wide binaries
├── .github/          # GitHub repository metadata
└── sync.sh           # Dotfiles synchronization script

Configuration Directories

.config/ → ~/.config/

Application-specific configuration files following the XDG Base Directory specification.
DirectoryApplicationPurpose
alacritty/AlacrittyTerminal emulator configuration
BetterDiscord/BetterDiscordDiscord client customization
cava/CavaConsole audio visualizer
doom/Doom EmacsEmacs configuration framework
dunst/DunstNotification daemon settings
flameshot/FlameshotScreenshot tool configuration
i3/i3Window manager configuration
i3blocks/i3blocksStatus bar blocks
kitty/KittyTerminal emulator settings
lf/lfTerminal file manager
mpv/mpvMedia player configuration
nvim/NeovimText editor configuration
neofetch/NeofetchSystem information display
polybar/PolybarStatus bar configuration
ranger/RangerTerminal file manager
redshift/RedshiftScreen color temperature
rofi/RofiApplication launcher
xdg-desktop-portal/XDG PortalDesktop integration
xmobar/XmobarStatus bar (alternative)
xmonad/XMonadWindow manager (alternative)
zathura/ZathuraDocument viewer

Special .config/ Files

FileTarget LocationPurpose
firefox/user.js~/.mozilla/firefox/vdhmokqy.default-nightly/user.jsFirefox preferences
dolphin/dolphinrc~/.config/dolphinrcKDE file manager
git/.gitconfig~/.gitconfigGit global configuration
pavucontrol/pavucontrol.ini~/.config/pavucontrol.iniPulseAudio control
picom/picom.conf~/.config/picom.confCompositor settings
most/.mostrc~/.mostrcPager configuration
tmux/.tmux.conf~/.tmux.confTerminal multiplexer
yakuake/yakuakerc~/.config/yakuakercDrop-down terminal
user-dirs.dirs~/.config/user-dirs.dirsXDG user directories
plasma-localerc~/.config/plasma-localercKDE locale settings

bin/ → ~/.local/bin/

Custom command-line utilities and scripts. See Command Reference for detailed documentation. All files in this directory are executable scripts:
bin/
├── PATH                    # Display PATH variable
├── ccl                     # Compile & run C
├── cclp                    # Compile & run C++
├── color                   # Terminal color test
├── echo_separate           # Formatted headers
├── git-remote              # Git remote helper
├── gpt-import              # GPG key import
├── hdln                    # Symbolic link helper
├── i3-layout-save          # Save i3 layouts
├── i3load                  # Load i3 layouts
├── notify-test             # Test notifications
├── pass                    # Password generator
├── radio                   # Internet radio
├── stot                    # Stow wrapper
├── systemctl-enable        # Service management
├── update                  # System updater
├── wallpaper               # Video wallpapers
└── wallpaper-convert       # Video conversion

home/ → ~/

User home directory configuration files.
FileTargetPurpose
.xinitrc~/.xinitrcX Window System initialization
.xprofile~/.xprofileX session startup script
.nvidia-settings-rc~/.nvidia-settings-rcNVIDIA GPU settings
.screenlayout-main.sh~/.screenlayout-main.shDisplay configuration script
.Xresources~/.XresourcesX11 resource configuration
.zshenv~/.zshenvZsh environment variables
.zshrc~/.zshrcZsh interactive shell config

System Directories (Require Root)

etc/ → /etc/

System-wide configuration files.
FilePurpose
dhcpcd.confDHCP client configuration
hostsStatic hostname mappings
locale.confSystem locale settings
locale.genAvailable locales
pacman.confPacman package manager
resolv.confDNS resolver configuration
sysctl.confKernel parameters
vconsole.confVirtual console settings
Directory/FilePurpose
httpd/conf/httpd.confApache web server
httpd/conf/extra/phpmyadmin.confPHPMyAdmin configuration
lightdm/lightdm.confDisplay manager
lightdm/lightdm-webkit2-greeter.confLogin screen theme
php/php.iniPHP interpreter settings
pulse/default.paPulseAudio configuration
systemd/logind.confLogin manager settings
Directory/FilePurpose
modprobe.d/blacklist.confKernel module blacklist
pacman.d/mirrorlistArch Linux mirrors
xdg/reflector/reflector.confMirror list updater

X11/ → /etc/X11/xorg.conf.d/

X Window System configuration (optional).
FilePurpose
00-keyboard.confKeyboard layout and options
50-mouse-acceleration.confMouse sensitivity settings
xorg.confMain X server configuration

boot/ → /boot/

Bootloader configuration.
FilePurpose
efi/EFI/refind/refind.confrEFInd bootloader settings

usr/ → /usr/

System-wide resources.
FilePurpose
lib/NetworkManager/conf.d/20-connectivity.confNetwork connectivity check

srv/ → /srv/

Service data.
FilePurpose
http/test.phpApache test script

Synchronization Structure

The sync.sh script uses the stot command to create symbolic links following this pattern:
Source: ~/dotfiles/<path>
Target: ~/<path>
Example:
stot -l .config/i3
# Creates: ~/.config/i3/* → ~/dotfiles/.config/i3/*

Copy Operations (-c flag)

Source: ~/dotfiles/<path>
Target: /<path>
Example:
stot -c etc/hosts
# Copies: ~/dotfiles/etc/hosts → /etc/hosts

Directory Purpose Summary

User Configuration

  • .config/ - Application settings
  • home/ - Shell and X11 config
  • bin/ - Personal scripts

System Configuration

  • etc/ - System-wide settings
  • boot/ - Bootloader config
  • usr/ - System resources

Development

  • Custom commands in bin/
  • Git configuration
  • Editor settings (nvim, doom)

Desktop Environment

  • Window managers (i3, xmonad)
  • Status bars (polybar, xmobar)
  • Application launchers (rofi)

Repository Metadata

.github/

FilePurpose
README.mdRepository documentation
images/Screenshots and assets

XDG Base Directory Specification

This dotfiles repository follows the XDG Base Directory standard:
DirectoryEnvironment VariablePurpose
~/.config/$XDG_CONFIG_HOMEUser-specific configuration
~/.local/bin/Part of $PATHUser-specific executables
~/.local/share/$XDG_DATA_HOMEUser-specific data
~/.cache/$XDG_CACHE_HOMEUser-specific cache
Most modern applications automatically look in ~/.config/ for configuration files when they follow the XDG specification.

Build docs developers (and LLMs) love