dotfiles/install/README.md
Claude 6577def1b5
feat(install): add hyprlock, mako, and a rofi power menu
- 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)
2026-06-09 15:24:32 +00:00

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 sudonot root.
  • Internet (pacman mirrorlist working).
  • git, sudo, curl available (sudo pacman -S git sudo curl if you did a truly minimal archinstall).

No filesystem, bootloader, or Secure Boot constraints — unlike the previous Omarchy-based approach.

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)