- Overview
- System Stack
- Philosophy
- Prerequisites
- Installation
- Configuration Management
- Component Details
- Customization
- Troubleshooting
- Contributing
- License
This repository contains my personal dotfiles for a lightweight, highly customizable desktop environment built on EndeavourOS with the DWM window manager. The configuration prioritizes performance, minimalism, and aesthetic appeal while maintaining practical usability for daily development work.
All configurations are version-controlled and managed using GNU Stow, enabling easy deployment, rollback, and synchronization across multiple machines.
| Component | Software | Description |
|---|---|---|
| OS | EndeavourOS (Arch-based) | Rolling-release Arch Linux derivative |
| Window Manager | DWM (Suckless) | Dynamic, lightweight tiling window manager |
| Terminal | Alacritty | GPU-accelerated terminal emulator |
| Color Scheme | Catppuccin Mocha / Gruvbox | Multiple theme options for Alacritty |
| Compositor | Picom (GLX backend) | Compositing manager optimized for NVIDIA GPUs |
| GTK Theme | GTK-3.0 (Adwaita Dark) | GTK+ 3 theme configuration |
| X11 Session | .xinitrc | X session startup configuration with dual-monitor support |
| Config Manager | GNU Stow | Symlink farm manager for dotfiles |
This dotfiles repository embraces the GNU Stow methodology for configuration management. Instead of scattering configuration files across your system or manually maintaining symlinks, GNU Stow provides an elegant, maintainable solution:
- Centralized Repository: All configurations live in
~/dotfiles/(or your chosen location) - Symlink Automation: GNU Stow creates and manages symlinks from
~/dotfiles/to~/.config/and other target locations - Modular Structure: Each application has its own "stow package" (directory), making it easy to install/remove configurations independently
- Version Control: The entire configuration is git-tracked, enabling history, rollback, and collaboration
- Portability: Deploy your entire setup to a new machine with just a few commands
~/dotfiles/ β Your dotfiles repository (this repo)
βββ alacritty/
β βββ .config/
β βββ alacritty/
β βββ alacritty.toml
β βββ catppuccin-mocha.toml
β βββ gruvbox_*.toml (multiple theme files)
βββ picom/
β βββ .config/
β βββ picom/
β βββ picom.conf
βββ gtk-3.0/
β βββ .config/
β βββ gtk-3.0/
β βββ settings.ini
βββ x11/
βββ .xinitrc
When you run: `stow alacritty`
~/ β Your home directory
βββ .config/
βββ alacritty/
βββ alacritty.toml β Symlink to ~/dotfiles/alacritty/.config/alacritty/alacritty.toml
Key Benefit: Edit files in ~/dotfiles/, and changes immediately reflect in ~/.config/ through symlinks. Commit, push, and your configurations are safely backed up and portable.
Before installing these dotfiles, ensure you have the following installed on your EndeavourOS system:
# Update system
sudo pacman -Syu
# Install required packages
sudo pacman -S stow git base-devel
# Install core components
sudo pacman -S alacritty picom gtk3
# Optional: Install DWM (needs to be compiled from source)
# Clone DWM from suckless.org or use your patched versionIf you're using NVIDIA proprietary drivers:
# Ensure you have the NVIDIA drivers installed
sudo pacman -S nvidia nvidia-utilsThe Picom configuration in this repository uses the GLX backend specifically for NVIDIA stability.
# Clone to your home directory
cd ~
git clone https://github.com/smitpatil06/.dotfiles.git dotfiles
cd dotfilesImportant: Before stowing, backup any existing configurations to prevent conflicts:
# Backup existing configs
mkdir -p ~/config_backup
cp -r ~/.config/alacritty ~/config_backup/ 2>/dev/null
cp -r ~/.config/picom ~/config_backup/ 2>/dev/null
cp -r ~/.config/gtk-3.0 ~/config_backup/ 2>/dev/null
cp ~/.xinitrc ~/config_backup/ 2>/dev/null
# Add other components as neededGNU Stow creates symlinks from the dotfiles directory to your home directory:
# From within ~/dotfiles directory
# Stow all configurations at once
stow */
# OR stow individually for more control
stow alacritty
stow picom
stow gtk-3.0
stow x11
# ... and so on for each component# Check that symlinks were created correctly
ls -la ~/.config/alacritty/
ls -la ~/.config/picom/
ls -la ~/.config/gtk-3.0/
ls -la ~/.xinitrc
# You should see symlinks pointing to ~/dotfiles/If you're using DWM, it needs to be compiled from source. This repository doesn't include a dwm directory, as DWM is typically maintained separately:
# Navigate to your DWM source directory
cd ~/path/to/dwm
# Configure and rebuild DWM
sudo make clean install# Create a new stow package for a new application
cd ~/dotfiles
mkdir -p myapp/.config/myapp
# Add your config files
# Then stow it
stow myapp# Unstow removes the symlinks
cd ~/dotfiles
stow -D alacritty # Removes alacritty symlinks# Simply edit files in ~/dotfiles/
cd ~/dotfiles
nvim alacritty/.config/alacritty/alacritty.toml
# Changes are immediately active (via symlinks)
# Commit your changes
git add .
git commit -m "Update alacritty color scheme"
git push# On new machine:
cd ~
git clone https://github.com/smitpatil06/.dotfiles.git dotfiles
cd dotfiles
stow */
# Done! All configurations are now activeDWM is a minimalist tiling window manager from suckless.org. It's configured by editing config.h and recompiling.
Key Features:
- Extremely lightweight (< 100KB binary)
- Keyboard-driven workflow
- Configured in C source code
- Patches applied for enhanced functionality
Note: DWM configuration is typically maintained separately and not included in this dotfiles repository.
Alacritty is a GPU-accelerated terminal emulator focused on performance and simplicity.
Themes Available:
- Catppuccin Mocha (default) - A soothing pastel color scheme
- Gruvbox Material Hard Dark
- Gruvbox Material Medium Dark
- Gruvbox Dark
Configuration Location: ~/dotfiles/alacritty/.config/alacritty/
alacritty.toml- Main configuration file (TOML format)catppuccin-mocha.toml- Catppuccin Mocha themegruvbox_*.toml- Various Gruvbox theme variants
Features Configured:
- Theme imports (easily switch themes by changing the import line)
- JetBrainsMono Nerd Font with custom sizing
- Window opacity (0.8) with blur enabled
- Custom padding and decorations
- 256-color terminal support
Picom is a lightweight compositor for X11, providing transparency, shadows, and smooth animations.
Backend: GLX (OpenGL) - Chosen for NVIDIA GPU stability
Configuration Location: ~/dotfiles/picom/.config/picom/picom.conf
Key Settings:
- GLX backend for NVIDIA compatibility
- VSync enabled for tear-free rendering
- Dual Kawase blur method with strength 5
- Optimized shadow settings
- Window transparency rules
- Fading disabled for better performance
GTK-3.0 theme configuration for consistent appearance across GTK applications.
Configuration Location: ~/dotfiles/gtk-3.0/.config/gtk-3.0/settings.ini
Key Settings:
- Theme: Adwaita (dark mode enabled)
- Icon Theme: Qogir
- Cursor Theme: Qogir
- Font: Sans 11
- Anti-aliasing and hinting enabled
X11 session startup configuration with intelligent display management.
Configuration Location: ~/dotfiles/x11/.xinitrc
Key Features:
- Qt theme configuration (qt5ct/qt6ct)
- High DPI support
- Dual-monitor setup with NVIDIA Optimus support
- Automatic detection of external monitor (HDMI-1-0)
- Different Picom configurations for laptop vs external display
- NVIDIA-specific VSync handling with ForceCompositionPipeline
- Background services: dunst, slstatus, feh wallpaper rotation
- DWM window manager startup
Alacritty comes with multiple theme options. To switch themes:
Option 1: Switch to a different pre-configured theme
- Edit
~/dotfiles/alacritty/.config/alacritty/alacritty.toml - Change the import line to use a different theme:
import = [ "~/.config/alacritty/gruvbox_material_hard_dark.toml" # or any other theme file ]
- Save and reopen Alacritty (changes apply immediately via symlink)
Option 2: Customize an existing theme
- Edit the theme file directly, e.g.,
~/dotfiles/alacritty/.config/alacritty/catppuccin-mocha.toml - Modify color values as desired
- Save and the changes apply immediately
Option 3: Add a new theme
- Create a new
.tomlfile in~/dotfiles/alacritty/.config/alacritty/ - Define your color scheme following the TOML format
- Update the import in
alacritty.tomlto use your new theme - Commit your new theme file
To add functionality to DWM (if you're using it):
- Download desired patch from suckless.org
- Apply patch to DWM source:
patch -p1 < patch-file.diff - Update
config.hif needed - Recompile:
sudo make clean install
For different visual effects or performance tuning:
- Edit
~/dotfiles/picom/.config/picom/picom.conf - Adjust shadow, fade, blur, or transparency settings
- Restart Picom:
pkill picom && picom -b
To change the GTK theme or icons:
- Edit
~/dotfiles/gtk-3.0/.config/gtk-3.0/settings.ini - Modify
gtk-theme-name,gtk-icon-theme-name, or other settings - Changes apply to new GTK applications immediately
To customize your X session startup:
- Edit
~/dotfiles/x11/.xinitrc - Add or modify:
- Monitor configurations
- Startup applications
- Environment variables
- Display settings
- Changes take effect on next X session login
Problem: stow: WARNING! stowing X would cause conflicts
Solution:
# Remove or backup the conflicting file
mv ~/.config/alacritty/alacritty.toml ~/.config/alacritty/alacritty.toml.backup
# Then retry stow
stow alacrittyProblem: Picom fails to start or crashes
Solution:
# Check for errors
picom --config ~/.config/picom/picom.conf
# For NVIDIA users, ensure GLX backend is set in config
# backend = "glx";
# Kill existing instance and restart
pkill picom
picom -b --config ~/.config/picom/picom.confProblem: DWM fails to compile
Solution:
# Ensure you have build dependencies
sudo pacman -S base-devel libx11 libxft libxinerama
# Check for patch conflicts
# May need to manually resolve conflicts in config.h or source filesProblem: Changes in dotfiles not reflecting in system
Solution:
# Verify symlinks exist
ls -la ~/.config/alacritty/
# Re-stow if needed
cd ~/dotfiles
stow -R alacritty # -R restows (removes and re-adds)While this is a personal dotfiles repository, suggestions and improvements are welcome!
- Fork the repository
- Create a feature branch:
git checkout -b feature/improvement - Commit your changes:
git commit -m 'Add improvement' - Push to the branch:
git push origin feature/improvement - Open a Pull Request
This repository is available under the MIT License. Feel free to use, modify, and distribute these configurations as you see fit.
- EndeavourOS Team - For the excellent Arch-based distribution
- Suckless Community - For DWM and the philosophy of simplicity
- Alacritty Contributors - For the blazing-fast terminal emulator
- Catppuccin Team - For the beautiful Mocha color theme
- Picom Developers - For the reliable compositor
- GNU Stow - For elegant dotfile management
Made with β€οΈ for the Linux community