This repo contains my Arch Linux dotfiles for a Hyprland-based Wayland desktop.
hypr/— Hyprland config (hyprland.conf+configs/includes) and helper scriptswaybar/— Waybar config + styling, plus a custom CFFI module (hypr-ws-apps/)swaync/— Sway Notification Center config + stylingghostty/— Ghostty terminal config
Below are the packages I had installed when these dotfiles were captured.
alacritty
amd-ucode
apr-util
archlinux-xdg-menu
ark
base
base-devel
bluez
bluez-utils
celluloid
chromium
cli11
cmake
cpio
dkms
docker
docker-buildx
docker-compose
dolphin
dolphin-plugins
ducker
efibootmgr
expac
fastfetch
ffmpeg4.4
firefox
fragments
fzf
ghostty
git
gnome-calendar
gnome-disk-utility
gnome-keyring
grub
gst-plugin-pipewire
gtk3-demos
htop
hypridle
hyprland
hyprlock
hyprpaper
hyprpicker
hyprshot
inotify-tools
iwd
jdk-openjdk
jemalloc
kate
keyd
konsole
lazydocker
libc++
libc++abi
libpulse
libreoffice-still
libva-nvidia-driver
libxcrypt-compat
linux-firmware
linux-zen
linux-zen-headers
loupe
lxappearance
meson
mpv
nano
nautilus
neovim
network-manager-applet
networkmanager
nodejs
noto-fonts-cjk
npm
nvidia-open-dkms
nwg-look
obs-studio
obsidian
opencl-nvidia
opencode
os-prober
otf-font-awesome
pavucontrol
pipewire
pipewire-alsa
pipewire-jack
pipewire-pulse
plasma-meta
plasma-workspace
polkit-gnome
python-dbus
python-distro
python-gpgme
python-numpy
qt5-multimedia
qt5-quickcontrols2
qt5-svg
qt5-wayland
qt5-x11extras
qt6ct
resources
sassc
smartmontools
speedtest-cli
swaync
swayosd
teamspeak3
telegram-desktop
ttf-nerd-fonts-symbols
ttf-roboto
vim
waybar
wev
wget
wireless_tools
wireplumber
woff2-font-awesome
wtype
xdg-desktop-portal-hyprland
xdg-utils
xorg-xinit
yad
zram-generator
zsh-completionsInstall:
sudo pacman -Syu
sudo pacman -S --needed \
amd-ucode archlinux-xdg-menu ark base base-devel bluez bluez-utils \
cli11 cmake cpio dkms dolphin efibootmgr fastfetch firefox fzf ghostty git \
gnome-calendar gnome-keyring grub gst-plugin-pipewire htop hypridle hyprland \
hyprlock hyprpaper hyprpicker hyprshot inotify-tools iwd jemalloc kate konsole \
libpulse libva-nvidia-driver linux-firmware linux-zen linux-zen-headers \
lxappearance meson nano nautilus neovim network-manager-applet networkmanager \
nodejs npm nvidia-dkms nwg-look obs-studio os-prober otf-font-awesome \
pavucontrol pipewire pipewire-alsa pipewire-jack pipewire-pulse plasma-meta \
plasma-workspace qt5-wayland qt6ct sassc smartmontools swaync telegram-desktop \
ttf-nerd-fonts-symbols vim waybar wget wireless_tools wireplumber woff2-font-awesome \
xdg-desktop-portal-hyprland xdg-utils xorg-xinit zram-generator zsh-completionsactions-for-nautilus-git
aquamarine-git
claude-code
dms-shell-bin-debug
dropbox
github-desktop-bin
google-breakpad
gtk2
hyprhalt
hyprlang-git
hyprutils-git
hyprwayland-scanner-git
jquery
libpng12
localsend-bin
nautilus-admin-gtk4
nautilus-dropbox
nautilus-open-any-terminal
otf-apple-sf-pro
postman-bin
python-cached-property
python-pylspci
qt5-webchannel
qt5-webengine
qt5-websockets
rose-pine-hyprcursor
soulver-cpp-git
swift-bin-6.1
ttf-apple-emoji
ttf-google-sans
ttf-ms-fonts
ttf-segoe-ui-variable
vesktop
vicinae
visual-studio-code-bin
yay-bin
yay-bin-debugInstall yay (if you don’t already have it):
sudo pacman -S --needed git base-devel
cd /tmp
git clone https://aur.archlinux.org/yay-bin.git
cd yay-bin
makepkg -siThen install AUR packages:
yay -S --needed \
actions-for-nautilus-git dms-shell-bin-debug docker-desktop github-desktop-bin \
google-breakpad hellwal hyprshutdown-git nautilus-admin-gtk4 nautilus-open-any-terminal \
otf-apple-sf-pro postman-bin rose-pine-hyprcursor vesktop vicinae-bin \
visual-studio-code-bin yay-bin yay-bin-debugAt minimum:
sudo systemctl enable --now NetworkManager
sudo systemctl enable --now bluetoothNotes:
- If you prefer
iwddirectly (without NetworkManager), enable it instead. If you’re using NetworkManager, you typically don’t need to enableiwdas a separate service unless you know you want that setup. - Audio is PipeWire (
pipewire+wireplumber) and is usually started as user services automatically.
This repo is laid out to mirror ~/.config.
# from the repo root
mkdir -p ~/.config
# Hyprland
mkdir -p ~/.config/hypr
cp -r hypr/* ~/.config/hypr/
# Waybar
mkdir -p ~/.config/waybar
cp -r waybar/* ~/.config/waybar/
# SwayNC
mkdir -p ~/.config/swaync
cp -r swaync/* ~/.config/swaync/
# Ghostty
mkdir -p ~/.config/ghostty
cp -r ghostty/* ~/.config/ghostty/In waybar/config.jsonc, the module_path currently points at /home/grant/....
Waybar does not expand ~ inside module_path, so you must use an absolute path.
Fix it after copying:
sed -i "s|/home/grant|/home/$USER|g" ~/.config/waybar/config.jsoncThen follow the build/install instructions in waybar/hypr-ws-apps/README.md to compile/copy libhypr_ws_apps.so.
The wallpaper reload script expects:
~/.config/hypr/wallpaper/wallpaper.png
Create/copy a wallpaper there, then you can reload it with:
~/.config/hypr/scripts/reload-wallpaper.shHyprland autostart runs:
/usr/lib/polkit-kde-authentication-agent-1
This is typically provided by KDE/Plasma packages (you have plasma-meta installed). If you remove Plasma, install a polkit agent alternative.
These configs reference the hyprexpo plugin (see hypr/configs/plugins.conf) and start hyprpm reload on login.
If the expo bind doesn’t work, install/enable the plugin via hyprpm (exact steps depend on your Hyprland version).
How you start Hyprland is up to you (display manager, greetd, or tty). For a simple manual start from TTY you can create an executable ~/.xinitrc that runs Hyprland and start it with startx (note: many Hyprland setups use greetd or a DM instead).
waybardoesn’t show workspace icons: confirm the CFFI module is built andmodule_pathis correct.- Notifications don’t work:
swayncshould be running (it’s started inhypr/configs/autostart.conf). - Screenshot / picker binds do nothing: ensure
hyprshotandhyprpickerare installed. - Wallpaper colors not updating: ensure
hellwalandjqexist andwallpaper.pngis present.