- files/hypr/hyprlock.conf: blurred-screenshot lock with Kanagawa clock, date, user label, and rounded password input (green/red on success/fail) - files/mako/config: Kanagawa Wave notifications, JetBrainsMono Nerd Font, per-urgency border colors, critical stays until dismissed - files/bin/power-menu: rofi-driven Lock/Suspend/Logout/Reboot/Shutdown, bound to Super+Shift+E and the Waybar power button - lib/hyprland.sh: link the three new pieces (hyprlock.conf, mako/config, ~/.local/bin/power-menu)
5.3 KiB
Arch + Hyprland installer
Installs a minimal Hyprland desktop on plain Arch Linux and wires up these dotfiles. No framework layered on top — just packages, services, and symlinks.
Environment required
- Vanilla Arch Linux (x86_64). Arch derivatives untested.
- A regular user with
sudo— not root. - Internet (
pacmanmirrorlist working). git,sudo,curlavailable (sudo pacman -S git sudo curlif you did a truly minimalarchinstall).
No filesystem, bootloader, or Secure Boot constraints — unlike the previous Omarchy-based approach.
Recommended archinstall answers
| Question | Choice |
|---|---|
| Disk → filesystem | any (ext4 or btrfs both fine) |
| Bootloader | any (systemd-boot, GRUB, or Limine) |
| Profile | Minimal (no desktop env) |
| Audio | Pipewire |
| Network | NetworkManager |
| Additional packages | git sudo curl |
| User account | regular user with sudo |
Install
git clone https://github.com/brianpooe/dotfiles.git ~/dotfiles
~/dotfiles/install/install.sh
Then reboot. SDDM lands you at a graphical login; pick the Hyprland session and log in.
Flags
install/install.sh # full install
install/install.sh --packages-only # only install packages
install/install.sh --dotfiles-only # only link dotfiles + tpm/nvm
install/install.sh --help
--dotfiles-only is useful on a system that already has Hyprland — it just
links configs and installs zsh/tmux/nvm helpers without touching pacman.
What gets installed
Packages (pacman): hyprland hyprlock hypridle hyprpaper hyprpicker xdg-desktop-portal-hyprland xdg-desktop-portal-gtk waybar rofi-wayland mako polkit-gnome qt{5,6}-wayland grim slurp wl-clipboard brightnessctl playerctl sddm pipewire{,-alsa,-pulse,-jack} wireplumber pavucontrol networkmanager network-manager-applet bluez{,-utils} blueman nautilus ffmpegthumbnailer ttf-jetbrains-mono-nerd noto-fonts{,-emoji,-cjk} ttf-font-awesome zsh zsh-syntax-highlighting zsh-autosuggestions wezterm tmux neovim starship lazygit fzf fd bat eza zoxide git github-cli ripgrep base-devel
AUR (yay, bootstrapped): brave-beta-bin
Dotfile symlinks: nvim, tmux, starship, lazygit, wezterm, zed → ~/.config/...; .config/.ideavimrc → ~/.ideavimrc; .zshrc, .gitconfig
→ ~.
Hyprland config: symlinks ~/.config/hypr/{hyprland,monitors,env,input,keybinds,autostart}.conf
from install/files/hypr/. Pre-existing configs are backed up, not deleted.
Waybar config: symlinks ~/.config/waybar/{config.jsonc,style.css} — a
Kanagawa Wave bar with workspaces, window title, clock, tray, network, audio,
backlight, battery, and a power button.
Rofi config: symlinks ~/.config/rofi/{config.rasi,kanagawa.rasi} — a
fuzzy-matched, icon-enabled launcher themed Kanagawa Wave. Modes: drun,
run, window, ssh.
Hyprlock config: symlinks ~/.config/hypr/hyprlock.conf — blurred
screenshot background, large Kanagawa-style clock, date, user, and a rounded
password input that turns green on success, red on fail.
Mako config: symlinks ~/.config/mako/config — Kanagawa Wave colors,
top-right anchored, JetBrainsMono Nerd Font, per-urgency border colors
(grey/blue/red), critical notifications stay until dismissed.
Power menu: symlinks install/files/bin/power-menu to ~/.local/bin/ —
a rofi-driven menu with Lock / Suspend / Logout / Reboot / Shutdown.
Bound to Super + Shift + E in Hyprland and to the Waybar power button.
Services enabled: sddm, NetworkManager, bluetooth; user-level
pipewire, pipewire-pulse, wireplumber.
Other: tpm cloned to ~/.tmux/plugins/tpm; nvm to ~/.nvm; login shell
switched to zsh.
Default keybinds (Hyprland)
| Key | Action |
|---|---|
| Super + Return | WezTerm |
| Super + B | Brave Beta |
| Super + E | Nautilus |
| Super + D | Rofi (app launcher) |
| Super + Tab | Rofi window switcher |
| Super + L | Lock (hyprlock) |
| Super + Shift + E | Power menu (lock/suspend/logout/reboot/shutdown) |
| Super + Q | Close window |
| Super + Shift + M | Exit Hyprland |
| Super + V / F | Float / Fullscreen |
| Super + h/j/k/l | Focus movement |
| Super + 1-0 | Switch workspace |
| Super + Shift + 1-0 | Move window to workspace |
| Print / Shift + Print | Screenshot (full / region) → clipboard |
| Volume / Brightness / Media keys | wpctl / brightnessctl / playerctl |
Edit ~/.config/hypr/keybinds.conf (the symlinked file in the repo) to
customize.
Theming
Kanagawa via the KANAGAWA_THEME env var in ~/.zshrc (wave or dragon).
WezTerm, neovim, tmux, and starship all read from that chain. Border colors
in hyprland.conf are hardcoded to the Kanagawa Wave palette — edit there if
you want to track a different theme.
Layout
install/
install.sh entry point
lib/common.sh helpers
lib/packages.sh pacman + yay + AUR
lib/dotfiles.sh symlinks + tpm/nvm + chsh
lib/hyprland.sh link Hyprland starter config
lib/services.sh enable system + user services
files/hypr/ starter Hyprland config
files/waybar/ Kanagawa-themed Waybar config
files/rofi/ Kanagawa-themed Rofi launcher
files/mako/ Kanagawa-themed notifications
files/bin/ Helper scripts (power-menu)