A meticulously crafted Arch Linux desktop experience
Elevate your Linux workflow with this carefully curated collection of dotfiles
| Component | Choice | Why |
|---|---|---|
| π§ OS | Arch Linux |
Rolling release perfection |
| πͺ WM | Hyprland |
Smooth Wayland animations |
| π Browser | Zen Browser |
Privacy-focused & customizable |
| π₯οΈ Terminal | Kitty |
GPU-accelerated performance |
| π Shell | Fish + Oh My Posh |
Beautiful & user-friendly |
| βοΈ Editor | Neovim |
Extensible text editing |
| π Launcher | Rofi |
Fast application switching |
| π Bar | Waybar |
Highly customizable status |
| π Notifications | SwayNC |
Clean notification system |
| πΌοΈ Wallpaper | Hyprpaper + Waypaper |
Dynamic wallpaper management |
# Ensure you have these essentials
- Arch Linux (fresh install recommended)
- git, yay, sudo privileges
- Proper GPU drivers installedgit clone https://github.com/R7rainz/dotfiles.git ~/dotfiles && cd ~/dotfilesποΈ Step 1: Hyprland Installation
sudo pacman -Syu
sudo pacman -S base-devel cmake meson ninja gcc pkgconf libxcb xcb-proto xcb-util xcb-util-keysyms libxfixes libx11 libxcomposite xorg-xinput libxrender pixman wayland-protocols cairo pango seatd libxkbcommon xcb-util-wm xorg-xwayland libinput libliftoff libdisplay-info cpio tomlplusplus hyprlang hyprcursor hyprwayland-scannerNVIDIA:
sudo pacman -S nvidia nvidia-utils nvidia-settings
# Add to /etc/mkinitcpio.conf: MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
sudo mkinitcpio -P
# Add to GRUB: nvidia_drm.modeset=1
sudo grub-mkconfig -o /boot/grub/grub.cfgAMD:
sudo pacman -S mesa lib32-mesa vulkan-radeon lib32-vulkan-radeonIntel:
sudo pacman -S mesa lib32-mesa vulkan-intel lib32-vulkan-intelsudo pacman -S hyprland
# Or for latest features:
yay -S hyprland-git
yay -S xdg-desktop-portal-hyprland-git# Install required portal packages
sudo pacman -S xdg-desktop-portal-wlr xdg-desktop-portal-gtk
# Create portal configuration
mkdir -p ~/.config/xdg-desktop-portal
cat > ~/.config/xdg-desktop-portal/portals.conf << EOF
[preferred]
default=hyprland;gtk
org.freedesktop.impl.portal.Screenshot=hyprland
org.freedesktop.impl.portal.ScreenCast=hyprland
org.freedesktop.impl.portal.FileChooser=gtk
EOFπ¦ Step 2: Core Packages
# System essentials
sudo pacman -S git stow brightnessctl pacman-contrib pipewire pipewire-pulse wireplumber bluez-utils pulseaudio pavucontrol blueman wayland wayland-protocols wlroots
# Applications
sudo pacman -S kitty fish neovim rofi hyprpaper thunar gvfs gvfs-mtp npm
yay -S waybar swaync waypaper zen-browser-bin pnpm-bin
# Fonts & Tools
sudo pacman -S ttf-jetbrains-mono-nerd ttf-liberation ttf-dejavu
yay -S ttf-inconsolata-lgc-nerd ttf-hurmit-nerd bat fastfetch
# Oh My Posh
curl -s https://ohmyposh.dev/install.sh | bash -sπ Step 3: Zen Browser Setup
git clone https://github.com/JustAdumbPrsn/Zen-Nebula.git ~/zen-nebula- Open Zen Browser β
about:config - Set
toolkit.legacyUserProfileCustomizations.stylesheetstotrue - Go to
about:supportβ Open Profile Folder - Create
chromefolder - Copy CSS files:
cp ~/zen-nebula/userChrome.css ~/.zen/[your-profile]/chrome/
cp ~/zen-nebula/userContent.css ~/.zen/[your-profile]/chrome/- Install uBlock Origin
- Enable Compact Sidebar Mode
- Configure privacy settings
π Step 4: SDDM Theme Setup
# Install SDDM theme
sudo chmod +x ~/dotfiles/install-sddm-theme.sh
sudo ~/dotfiles/install-sddm-theme.sh
# The theme will be installed to: /usr/share/sddm/themes/silentβοΈ Step 5: System Configuration
# Audio
systemctl --user enable pipewire pipewire-pulse wireplumber
systemctl --user start pipewire pipewire-pulse wireplumber
# Bluetooth
sudo systemctl enable bluetooth && sudo systemctl start bluetooth
# Display Manager
sudo systemctl enable sddm# Configure SDDM to use Wayland session
sudo mkdir -p /etc/sddm.conf.d
sudo tee /etc/sddm.conf.d/10-wayland.conf << EOF
[General]
DisplayServer=wayland
GreeterEnvironment=QT_WAYLAND_SHELL_INTEGRATION=layer-shell
[Wayland]
CompositorCommand=Hyprland
EOFπ Step 6: Apply Dotfiles
cd ~/dotfiles
# Individual stowing (recommended)
stow batfetch
stow fastfetch
stow fish
stow oh-my-posh
stow kitty
stow neovim
stow rofi
stow swaync
stow waybar
stow hyprpaper
stow waypaper
stow hyprland
# Or stow everything at once (be careful of conflicts)
# stow */# Set Fish as default shell
echo /usr/bin/fish | sudo tee -a /etc/shells
chsh -s /usr/bin/fish
# Verify Oh My Posh theme
ls -la ~/.config/oh-my-posh/themes/custom.omp.json# Refresh font cache
fc-cache -fv
# Verify fonts are installed
fc-list | grep -i "jetbrains\\|hurmit\\|inconsolata"β Step 7: Final Configuration
fish
source ~/.config/fish/config.fish# Test fetch tools
batfetch
fastfetch
# Test terminal
kitty &
# Test editor
nvim
# Test application launcher
rofi -show drun
# Test browser
zen-browser &# If using a display manager, select Hyprland from the session menu
# Or start Hyprland manually from TTY:
HyprlandTo update your dotfiles after making changes:
cd ~/dotfiles
# Restow modified packages
stow -R package-name
# Or restow all packages
stow -R */~/dotfiles/
βββ .config/
β βββ hypr/
β β βββ hyprland.conf
β β βββ hyprpaper.conf
β β βββ scripts/
β βββ batfetch/
β βββ fastfetch/
β βββ fish/
β βββ oh-my-posh/
β β βββ themes/
β β βββ custom.omp.json
β βββ kitty/
β βββ neovim/
β βββ rofi/
β βββ swaync/
β βββ waybar/
β βββ hyprpaper/
β βββ waypaper/
βββ Wallpapers/
βββ system/
β βββ sddm/
β βββ themes/
β βββ silent/
βββ install-sddm-theme.sh
The Hyprland setup includes:
- π¨ Custom animations - Smooth window transitions and effects
- β¨οΈ Keybindings - Optimized keyboard shortcuts for productivity
- π₯οΈ Multi-monitor support - Seamless workspace management across displays
- π― Window rules - Automatic window positioning and behavior
- π§ Performance optimizations - Tuned for smooth operation
- Tiling and floating modes with easy switching
- Workspace management with smooth animations
- Custom gaps and borders for aesthetic appeal
- Screen sharing support via xdg-desktop-portal-hyprland
The browser setup includes:
- π Nebula Theme - Beautiful dark theme with cosmic aesthetics
- π‘οΈ uBlock Origin - Advanced ad and tracker blocking
- π± Compact Sidebar - Space-efficient navigation
- π¨ Custom CSS - Personalized interface styling
- uBlock Origin: Essential privacy and ad-blocking extension
- Enable additional filter lists for enhanced protection
- Configure custom filters as needed
- Dark cosmic color scheme
- Smooth animations and transitions
- Compact interface design
- Enhanced readability
The setup uses these carefully selected fonts:
- π JetBrains Mono Nerd Font - Main monospace font with excellent readability
- β‘ Hurmit Nerd Font - Alternative monospace with unique character
- π InconsolataLGC Nerd Font - Additional monospace option for variety
The custom theme is located at ~/.config/oh-my-posh/themes/custom.omp.json.
Modify this file to customize your shell prompt appearance and behavior.
Waybar modules include:
- πΆ Bluetooth (with custom scripts)
- π Audio control (PulseAudio/Pipewire)
- π Brightness control
- π» System information
- π¦ Package update notifications
- πͺ Hyprland workspaces integration
- π Stow conflicts: Use
stow --adopt package-nameto resolve conflicts - π€ Font not loading: Run
fc-cache -fvand restart applications - π Audio issues: Check PipeWire services with
systemctl --user status pipewire - πΆ Bluetooth not working: Ensure bluetoothd service is running
- π Zen Browser CSS not applying: Ensure
toolkit.legacyUserProfileCustomizations.stylesheetsis set totrue - πͺ Hyprland not starting: Check GPU drivers and Wayland support
- π₯οΈ Screen sharing not working: Ensure xdg-desktop-portal-hyprland is installed and configured
# Check Hyprland logs
journalctl --user -u hyprland
# Check Waybar logs
journalctl --user -u waybar
# Check PipeWire status
systemctl --user status pipewire pipewire-pulse wireplumber
# Test audio
pactl info
# Check Zen Browser profile location
zen-browser --ProfileManager
# Debug Hyprland configuration
hyprctl version
hyprctl monitors
hyprctl workspaces# Check if Hyprland is running
pgrep Hyprland
# Restart Hyprland (from within Hyprland)
hyprctl dispatch exit
# Check GPU acceleration
glxinfo | grep "direct rendering"
# For NVIDIA users - check if drivers are loaded
lsmod | grep nvidia
# Test Wayland support
echo $XDG_SESSION_TYPE# Reset Zen Browser profile if needed
rm -rf ~/.zen/[profile-name]/chrome/
# Reapply Nebula theme
cp ~/zen-nebula/*.css ~/.zen/[profile-name]/chrome/
# Check if custom CSS is enabled
# Navigate to about:config and verify toolkit.legacyUserProfileCustomizations.stylesheets = true
β οΈ Backup Warning: Always backup your existing configurations before stowing
- π Some applications may require a logout/login or restart to fully apply themes
- π The SDDM theme requires root privileges to install
- πΆ Custom bluetooth scripts are included in the bluetooth directory
- π¨ Themes and colors can be customized in individual config files
- π Browser CSS changes require browser restart to take effect
- π‘οΈ uBlock Origin settings can be exported/imported for easy setup across devices
- πͺ NVIDIA users: May need additional configuration for optimal Hyprland performance
- π₯οΈ Multi-monitor setups: Configure displays in
~/.config/hypr/hyprland.conf - β‘ Performance: Hyprland performs best with modern GPUs and drivers
Found a bug? Have an improvement?
Feel free to fork this repository and submit pull requests for improvements or additional configurations.
- Arch Linux - The best rolling release distribution
- Hyprland - Dynamic tiling Wayland compositor
- Zen Browser - Privacy-focused Firefox-based browser
- Nebula Theme - Beautiful cosmic theme for Zen Browser
- Oh My Posh - Cross-platform prompt theme engine
- Waybar - Highly customizable Wayland bar
Crafted by RAINZ β’ Making Linux beautiful, one rice at a time
β Star this repo if it helped you!
Made with β€οΈ for the Arch Linux and Hyprland community