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 |
| π Desktop Shell | Noctalia Shell |
Sleek, minimal Wayland shell |
| π Browser | Zen Browser |
Privacy-focused & customizable |
| π₯οΈ Terminal | Kitty + Wezterm |
GPU-accelerated performance |
| π Shell | Fish + Starship |
Beautiful & user-friendly |
| βοΈ Editor | Neovim |
Extensible text editing |
| π Launcher | Rofi + Vicinae |
Fast application switching |
| π Bar | Noctalia Bar |
Built into Noctalia Shell |
| π Notifications | Noctalia Notifications |
Integrated notification system |
| πΌοΈ Wallpaper | Hyprpaper + Waypaper |
Dynamic wallpaper management |
| π File Manager | Yazi |
Terminal-based file manager |
| π PDF Viewer | Zathura |
Vim-like document viewer |
| π₯οΈ Multiplexer | Tmux |
Terminal session 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 ~/dotfilesWant to try my Neovim configuration?
You can find it here: https://github.com/R7rainz/neovim-conf
If you like it, consider leaving a β β it really helps!
Clone it directly into your Neovim config directory:
git clone https://github.com/R7rainz/neovim-conf ~/.config/nvimποΈ 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 1.5: Noctalia Shell Installation
Noctalia Shell is a sleek and minimal desktop shell thoughtfully crafted for Wayland. Built on Quickshell, it provides:
- Beautiful status bar with integrated modules
- Notification center
- Application launcher
- Control center with quick settings
- Lock screen
- Plugin support for extensibility
Using AUR (Recommended):
# Install stable version
paru -S noctalia-shell
# Or install development version for latest features
paru -S noctalia-shell-gitNoctalia Shell will automatically install its dependencies, but here's what it uses:
Required:
quickshell- Core shell frameworkbrightnessctl- Screen brightness controlimagemagick- Image processing for wallpaperspython- Required for template processinggit- Update checking and plugin system
Optional (Recommended):
paru -S cliphist cava wlsunset power-profiles-daemon ddcutilcliphist- Clipboard history supportcava- Audio visualizer componentwlsunset- Night light functionalitypower-profiles-daemon- Power profile managementddcutil- External display brightness control
Add this line to your Hyprland config (~/.config/hypr/hyprland.conf):
exec-once = qs -c noctalia-shellAdd these settings for optimal integration with Noctalia Shell:
# Enable blur for Noctalia panels
layerrule {
name = noctalia
match:namespace = noctalia-background-.*$
ignore_alpha = 0.5
blur = true
blur_popups = true
}Noctalia uses IPC for various functions. Example keybind for lock screen:
# Lock screen
bind = SUPER, L, exec, qs -c noctalia-shell ipc call lockScreen lockNoctalia configuration is stored in:
- Config:
~/.config/noctalia/ - Cache:
~/.cache/noctalia/
π¦ 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 wezterm fish neovim rofi hyprpaper thunar gvfs gvfs-mtp npm yazi zathura zathura-pdf-mupdf tmux
yay -S waypaper zen-browser-bin pnpm-bin avizo vicinae
# Noctalia Shell (replaces waybar, swaync, mako)
yay -S noctalia-shell
# Fonts & Tools
sudo pacman -S ttf-jetbrains-mono-nerd ttf-liberation ttf-dejavu starship
yay -S ttf-inconsolata-lgc-nerd ttf-hurmit-nerd bat fastfetch kotofetchπ 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 avizo
stow batfetch
stow fastfetch
stow fish
stow kitty
stow wezterm
stow neovim
stow rofi
stow hyprland
stow yazi
stow zathura
stow starship
# Note: Noctalia Shell manages its own config in ~/.config/noctalia/
# You don't need to stow waybar, swaync, or mako if using Noctalia Shell
# 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/
β βββ avizo/ # Volume/brightness OSD
β βββ batfetch/ # Fetch utility
β βββ fastfetch/ # System info fetch
β βββ fish/ # Fish shell config
β βββ hypr/ # Hyprland configs
β β βββ hyprland.conf # Main config (includes Noctalia autostart)
β β βββ hypridle.conf
β β βββ hyprlock.conf
β β βββ window_rules.conf
β β βββ scripts/
β βββ kitty/ # Kitty terminal (Noctalia theme)
β βββ kotofetch/ # Fetch utility
β βββ nvim/ # Neovim config
β βββ oh-my-posh/ # Shell prompt theme (alternative)
β β βββ themes/
β β βββ custom.omp.json
β βββ rofi/ # Application launcher
β βββ scripts/ # Utility scripts
β βββ starship.toml # Starship prompt config
β βββ wezterm/ # Wezterm terminal
β β βββ wezterm.lua # Main config with Noctalia colors
β β βββ colors/
β β βββ Noctalia.toml # Noctalia color scheme
β βββ yazi/ # File manager (Noctalia flavor)
β βββ zathura/ # PDF viewer
βββ system/
β βββ sddm/
β βββ themes/
β βββ silent/
βββ bluetooth-auto-switch.sh
βββ install-bluetooth-auto-switch.sh
βββ install-sdddm-theme.sh
This rice uses Noctalia Shell as the primary desktop shell, replacing traditional status bars and notification daemons.
- Status Bar - Clean, minimal bar with workspace indicators, system tray, and clock
- Notification Center - Integrated notification system with history
- Control Center - Quick settings panel for Wi-Fi, Bluetooth, brightness, volume
- Application Launcher - Built-in launcher (or use Rofi/Vicinae)
- Lock Screen - Integrated lock screen via IPC
| Component | Noctalia Equivalent |
|---|---|
| Waybar | Noctalia Bar |
| SwayNC/Mako | Noctalia Notifications |
| wlogout | Noctalia Power Menu |
Noctalia Shell stores its configuration at ~/.config/noctalia/. Access settings through the shell's built-in settings panel.
# Lock screen
qs -c noctalia-shell ipc call lockScreen lock
# Toggle control center
qs -c noctalia-shell ipc call controlCenter toggle
# Toggle launcher
qs -c noctalia-shell ipc call launcher toggleThe Noctalia color palette is used across multiple applications:
| Color | Hex | Usage |
|---|---|---|
| Background | #141316 |
Dark charcoal base |
| Foreground | #e6e1e6 |
Light gray text |
| Accent Pink | #eeb8cb |
Highlights |
| Accent Purple | #cbbeff |
Secondary accent |
| Accent Red | #ffb4ab |
Alerts/errors |
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
Two shell prompt options are available:
- Oh My Posh: Custom theme at
~/.config/oh-my-posh/themes/custom.omp.json - Starship: Configuration at
~/.config/starship.toml
Modify these files to customize your shell prompt appearance and behavior.
Noctalia Shell provides an integrated status bar with:
- πΆ Bluetooth & Network indicators
- π Audio control (PipeWire integration)
- π Brightness control
- π» System information
- πͺ Hyprland workspaces integration
- π Notification indicator
Note: Waybar config files are included in this repo for reference, but Noctalia Shell's bar is the primary status bar.
Two terminal options are included, both with the Noctalia color scheme:
- Kitty: Fast, GPU-accelerated terminal with config at
~/.config/kitty/- Uses Noctalia theme via
current-theme.conf
- Uses Noctalia theme via
- Wezterm: Feature-rich terminal with Lua config at
~/.config/wezterm/- Custom Noctalia color scheme at
~/.config/wezterm/colors/Noctalia.toml - Full color palette defined inline in
wezterm.lua
- Custom Noctalia color scheme at
Terminal-based file manager with:
- Noctalia theme/flavor for both dark and light modes
- Vim-style keybindings
- Image previews support
- Configuration at
~/.config/yazi/theme.toml
Minimalist PDF viewer with vim keybindings configured at ~/.config/zathura/
Terminal multiplexer setup at ~/.config/tmux/tmux.conf
- π 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
- π Noctalia Shell not starting: Check if quickshell is installed with
pacman -Q quickshell - π Noctalia bar not showing: Ensure
exec-once = qs -c noctalia-shellis in your hyprland.conf
# Check if Noctalia/Quickshell is running
pgrep -f "qs.*noctalia"
# Restart Noctalia Shell
killall qs && qs -c noctalia-shell &
# Check Noctalia logs
journalctl --user -f | grep -i noctalia
# Verify quickshell installation
pacman -Qi quickshell
pacman -Qi noctalia-shell
# Test IPC commands
qs -c noctalia-shell ipc call lockScreen lock
# Clear Noctalia cache (if having issues)
rm -rf ~/.cache/noctalia/# 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 (
bluetooth-auto-switch.sh,install-bluetooth-auto-switch.sh) - π¨ 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
- π₯οΈ Terminal choice: Both Kitty and Wezterm configs included with Noctalia theme
- π Noctalia Shell: Replaces Waybar, SwayNC, and Mako - all-in-one desktop shell
- π Noctalia config: Stored in
~/.config/noctalia/(not managed by stow)
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
- Noctalia Shell - Sleek and minimal desktop shell for Wayland
- Quickshell - Building blocks for desktop shells
- Zen Browser - Privacy-focused Firefox-based browser
- Nebula Theme - Beautiful cosmic theme for Zen Browser
- Starship - Cross-platform prompt
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