Just another generic Arch Linux rice with Hyprland
This is a custom Linux desktop environment configuration built around Hyprland as the Wayland compositor. It includes configurations for various tools to create my workflow. Currently using Caelestia (QuickShell-based) as the desktop shell, but I'm planning to create a new version with a custom one... I just some free time to do that ;-;
- Window Manager: Hyprland - Dynamic tiling Wayland compositor
- Shell: Caelestia Shell - QuickShell-based desktop shell (current)
- Terminal: Alacritty - GPU-accelerated terminal emulator
- Shell: Fish - Friendly interactive shell
- Prompt: Starship - Cross-shell prompt
- System Info: Fastfetch
- Multiplexer: Zellij
- Editor: Lazyvim
- Media Player: MPV
- Image Viewer: QIMGV
- File Explorer: Nemo
- Status Bar: Caelestia (I have some configuration for a barebones waybar, but I'll remove it later)
- Wireplumber - Audio session manager
- XDG Desktop Portal - Desktop integration
- Hyprlock configuration (I need to remove this)
Note: This is a WIP configuration. Not all components may be fully configured or stable.
# CPU microcode (choose one based on your processor)
sudo pacman -S intel-ucode # Intel processors
sudo pacman -S amd-ucode # AMD processors
# Core system packages
sudo pacman -S hyprland hyprlock hyprpaper hypridle \
pipewire wireplumber \
xdg-desktop-portal-hyprland \
qt5-wayland qt6-wayland
# Terminal & Shell
sudo pacman -S alacritty fish starship
# System utilities
sudo pacman -S fastfetch eza \
git wget curl ufw \
zip unzip ntfs-3g \
fwupd dosfstools mtools \
reflector pacman-contrib
# Wayland utilities
sudo pacman -S grim slurp wl-clipboard wl-clip-persist
# Multimedia
sudo pacman -S mpv ffmpeg \
gst-plugins-ugly gst-plugins-good \
gst-plugins-base gst-plugins-bad \
gst-libav gstreamer
# Audio
sudo pacman -S pipewire-audio pipewire-alsa pipewire-pulse \
pipewire-jack wireplumber wiremix
# Fonts
sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji \
ttf-liberation ttf-dejavu \
ttf-jetbrains-mono-nerd ttf-cascadia-code-nerd
# Development tools
# For runtimes/language specific tools, you can install them separately: go, rustup, node, bun, zig...
sudo pacman -S vim neovim base-devel cmake ninja \
zellij zoxide fzf fd ripgrep
# Applications
sudo pacman -S firefox# Install an AUR helper first (if not already installed)
sudo pacman -S --needed git base-devel &&
git clone https://aur.archlinux.org/yay.git &&
cd yay &&
makepkg -si
# Desktop shell & utilities
yay -S quickshell-git \
hyprshell \
mpvpaper # If you want to setup video based wpp
# Optional: Additional tools
yay -S spotify_player \
gitui# File manager
sudo pacman -S nemo
# Image viewer
sudo pacman -S qimgv
# Docker (if needed)
sudo pacman -S docker docker-compose
sudo systemctl enable docker.service
# Gaming/Emulation
sudo pacman -S steam # (https://wiki.archlinux.org/title/Steam)
# Proton Up (You can also follow this guide to setup everything: https://github.com/popcar2/SimpleLinuxGamingGuide)
yay -S protonup-qt # (https://github.com/DavidoTek/ProtonUp-Qt)
# A nice way to setup games
# You can also use Heroic/bottles...
yay -S faugus-launcher # (https://github.com/Faugus/faugus-launcher)
yay -S ryujinx
# Additional CLI tools
sudo pacman -S htop btopAfter installing the packages, initialize required tools:
# Initialize Rust toolchain
rustup default stable
# Set Fish as default shell (optional)
chsh -s /usr/bin/fish
# Enable Docker service (if installed)
sudo systemctl enable --now docker.service
sudo usermod -aG docker $USERJust remember to cherry-pick configurations you want to use config directory and test everything, it's not a fully fledged configuration:
# Example: Move specific configs
mv [repository]/.config/fish ~/.config/
# Refresh font cache
fc-cache -fvEnable colors and multilib repositories:
sudo nvim /etc/pacman.confUpdate mirror list:
sudo reflector --country Brazil --protocol https --sort rate \
--save /etc/pacman.d/mirrorlist && sudo pacman -SyyuEnable services:
# Firewall
sudo systemctl enable ufw.service
# Package cache cleanup
sudo systemctl enable --now paccache.timer
# Systemd-boot auto-update
sudo systemctl enable systemd-boot-update.serviceAdjust zram size (optional):
sudo nvim /etc/systemd/zram-generator.conf.
├── .config/
│ ├── hypr/ # Hyprland configuration
│ ├── caelestia/ # Caelestia shell config
│ ├── quickshell/ # QuickShell components
│ ├── alacritty/ # Terminal config
│ ├── fish/ # Shell configuration
│ ├── waybar/ # Status bar config (Barebones, it's optional you can remove this)
│ ├── nvim/ # Neovim configuration (Basic Lazyvim config with a few changes)
│ ├── mpv/ # Media player config
│ ├── zellij/ # Terminal multiplexer (just like tmux)
│ └── ...
├── .local/ # Fonts/icons
├── .icons/ # Custom icons
└── .cargo/ # Fish environment file
It's messy, so don't expect a clear setup/configuration.
- I'm constatly tweaking the configuration, so it will break stuff. I recommend just cloning and creating a new git repository.
- Some components may be incomplete or experimental
- Package list may be outdated