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

image

Neovim setup with bufferline, telescope, and modern UI tweaks

⚑ 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