Skip to content

R7rainz/dotfiles

Repository files navigation

✨ RAINZ'S Arch Hyprland Rice

A meticulously crafted Arch Linux desktop experience

Arch Linux Hyprland Neovim Fish Shell Noctalia Shell


Elevate your Linux workflow with this carefully curated collection of dotfiles

⚑ Tech Stack

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

πŸš€ Quick Start

Prerequisites

# Ensure you have these essentials
- Arch Linux (fresh install recommended)
- git, yay, sudo privileges
- Proper GPU drivers installed

One-Command Setup

git clone https://github.com/R7rainz/dotfiles.git ~/dotfiles && cd ~/dotfiles

Neovim Setup ( recommended to setup in a different repo for better updates and management )

Want 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

πŸ“¦ Installation Steps

πŸ—οΈ Step 1: Hyprland Installation

System Update & Dependencies

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-scanner

GPU Drivers

NVIDIA:

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.cfg

AMD:

sudo pacman -S mesa lib32-mesa vulkan-radeon lib32-vulkan-radeon

Intel:

sudo pacman -S mesa lib32-mesa vulkan-intel lib32-vulkan-intel

Install Hyprland

sudo pacman -S hyprland
# Or for latest features:
yay -S hyprland-git
yay -S xdg-desktop-portal-hyprland-git

Configure XDG Desktop Portal

# 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

What is Noctalia Shell?

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

Installation (Arch Linux)

Using AUR (Recommended):

# Install stable version
paru -S noctalia-shell

# Or install development version for latest features
paru -S noctalia-shell-git

Dependencies

Noctalia Shell will automatically install its dependencies, but here's what it uses:

Required:

  • quickshell - Core shell framework
  • brightnessctl - Screen brightness control
  • imagemagick - Image processing for wallpapers
  • python - Required for template processing
  • git - Update checking and plugin system

Optional (Recommended):

paru -S cliphist cava wlsunset power-profiles-daemon ddcutil
  • cliphist - Clipboard history support
  • cava - Audio visualizer component
  • wlsunset - Night light functionality
  • power-profiles-daemon - Power profile management
  • ddcutil - External display brightness control

Running Noctalia Shell

Add this line to your Hyprland config (~/.config/hypr/hyprland.conf):

exec-once = qs -c noctalia-shell

Hyprland Settings for Noctalia

Add 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 IPC Commands

Noctalia uses IPC for various functions. Example keybind for lock screen:

# Lock screen
bind = SUPER, L, exec, qs -c noctalia-shell ipc call lockScreen lock

Configuration

Noctalia configuration is stored in:

  • Config: ~/.config/noctalia/
  • Cache: ~/.cache/noctalia/

Resources

πŸ“¦ 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

Nebula Theme Installation

git clone https://github.com/JustAdumbPrsn/Zen-Nebula.git ~/zen-nebula

Apply Custom CSS

  1. Open Zen Browser β†’ about:config
  2. Set toolkit.legacyUserProfileCustomizations.stylesheets to true
  3. Go to about:support β†’ Open Profile Folder
  4. Create chrome folder
  5. Copy CSS files:
cp ~/zen-nebula/userChrome.css ~/.zen/[your-profile]/chrome/
cp ~/zen-nebula/userContent.css ~/.zen/[your-profile]/chrome/

Extensions & Settings

  • 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

Services

# 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 Display Manager

# 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 */

Configure Shell

# 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

Font Configuration

# Refresh font cache
fc-cache -fv

# Verify fonts are installed
fc-list | grep -i "jetbrains\\|hurmit\\|inconsolata"
βœ… Step 7: Final Configuration

Reload Fish Configuration

fish
source ~/.config/fish/config.fish

Test Applications

# Test fetch tools
batfetch
fastfetch

# Test terminal
kitty &

# Test editor
nvim

# Test application launcher
rofi -show drun

# Test browser
zen-browser &

Launch Hyprland

# If using a display manager, select Hyprland from the session menu
# Or start Hyprland manually from TTY:
Hyprland

πŸ”„ Updating Dotfiles

To update your dotfiles after making changes:

cd ~/dotfiles

# Restow modified packages
stow -R package-name

# Or restow all packages
stow -R */

πŸ—‚οΈ Directory Structure

~/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

🎨 Customization Options

πŸŒ™ Noctalia Shell

This rice uses Noctalia Shell as the primary desktop shell, replacing traditional status bars and notification daemons.

Features

  • 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

Key Components

Component Noctalia Equivalent
Waybar Noctalia Bar
SwayNC/Mako Noctalia Notifications
wlogout Noctalia Power Menu

Configuration

Noctalia Shell stores its configuration at ~/.config/noctalia/. Access settings through the shell's built-in settings panel.

Useful IPC Commands

# 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 toggle

Noctalia Color Theme

The 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

πŸͺŸ Hyprland Configuration

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

Key Features

  • 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

🌐 Zen Browser

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

Browser Extensions

  • uBlock Origin: Essential privacy and ad-blocking extension
    • Enable additional filter lists for enhanced protection
    • Configure custom filters as needed

Nebula Theme Features

  • Dark cosmic color scheme
  • Smooth animations and transitions
  • Compact interface design
  • Enhanced readability

πŸ”€ Fonts

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

🎭 Oh My Posh / Starship Theme

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.

πŸ“Š Status Bar (Noctalia)

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.

πŸ–₯️ Terminal Emulators

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
  • 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

πŸ“ Yazi File Manager

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

πŸ“„ Zathura PDF Viewer

Minimalist PDF viewer with vim keybindings configured at ~/.config/zathura/

πŸ–₯️ Tmux Configuration

Terminal multiplexer setup at ~/.config/tmux/tmux.conf


πŸ› οΈ Troubleshooting

⚠️ Common Issues

  1. πŸ”— Stow conflicts: Use stow --adopt package-name to resolve conflicts
  2. πŸ”€ Font not loading: Run fc-cache -fv and restart applications
  3. πŸ”Š Audio issues: Check PipeWire services with systemctl --user status pipewire
  4. πŸ“Ά Bluetooth not working: Ensure bluetoothd service is running
  5. 🌐 Zen Browser CSS not applying: Ensure toolkit.legacyUserProfileCustomizations.stylesheets is set to true
  6. πŸͺŸ Hyprland not starting: Check GPU drivers and Wayland support
  7. πŸ–₯️ Screen sharing not working: Ensure xdg-desktop-portal-hyprland is installed and configured
  8. πŸŒ™ Noctalia Shell not starting: Check if quickshell is installed with pacman -Q quickshell
  9. πŸŒ™ Noctalia bar not showing: Ensure exec-once = qs -c noctalia-shell is in your hyprland.conf

πŸŒ™ Noctalia Shell Troubleshooting

# 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/

πŸ” Logs and Debugging

# 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

πŸͺŸ Hyprland Troubleshooting

# 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

🌐 Browser Troubleshooting

# 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

πŸ“ Important Notes

⚠️ 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)

πŸ’ Support

Enjoying this rice? Show some love!

GitHub Stars GitHub Forks

Issues Pull Requests


🀝 Contributing

Found a bug? Have an improvement?

Feel free to fork this repository and submit pull requests for improvements or additional configurations.


πŸ™ Credits


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