My Arch Linux + Hyprland configuration with synchronized dual-monitor workspaces.
- Synchronized workspaces: Both monitors switch together (KDE-style virtual desktops)
- Smart monitor handling: Windows migrate automatically when external monitor disconnects
- Touchpad gestures: 3-finger swipe to switch workspaces
- Cursor preservation: Workspace switching doesn't move cursor
dotfiles/
├── hypr/ # Hyprland config
├── waybar/ # Waybar config
├── alacritty/ # Alacritty terminal config
├── tmux/ # Tmux config
├── scripts/ # Custom scripts (hypr-*, tmux-sessionizer)
├── zsh/ # Zsh config
├── git/ # Git config
└── libinput-gestures/ # Touchpad gestures
# Core
sudo pacman -S hyprland waybar zsh stow alacritty tmux fzf
# For gestures
yay -S libinput-gestures
sudo gpasswd -a $USER input
# For monitor event handling
sudo pacman -S socat jqgit clone https://github.com/YOUR_USERNAME/dotfiles.git ~/dotfiles
cd ~/dotfiles
./install.shOr install specific modules:
./install.sh hypr waybar scriptsHyprland 0.56+ loads ~/.config/hypr/hyprland.lua. Personal settings live in
bindings.lua, input.lua, monitors.lua, looknfeel.lua, and autostart.lua.
The defaults/ modules contain our Lua versions of the Omarchy defaults; changes
to upstream .conf files do not automatically change this configuration. These
modules were adapted from Omarchy a7995efa; its license is in
LICENSES/Omarchy.txt.
Only SwayNC starts for notifications. The native gap toggle, monitor scripts, and
screensaver use Lua APIs instead of the legacy hyprctl keyword interface.
Theme switching still follows Omarchy's current/theme/colors.toml palette,
including Kanagawa's foreground border color. Custom themes can supply a native
hyprland.lua in their theme directory; legacy theme .conf overrides are not
loaded. Personal settings still take precedence.
Before applying changes:
Hyprland --verify-config -c ~/.config/hypr/hyprland.luaThe first switch from .conf to Lua requires logging out and back in. Do not use
hyprctl reload full-reset on 0.56.2: switching config managers can crash that
build. Subsequent Lua edits use an ordinary hyprctl reload.
The old .conf files remain as a rollback snapshot, not an active source of Lua
settings. To roll back, move hyprland.lua outside ~/.config/hypr/, then log out
and back in. Omarchy's old configuration editor menu entries still open those
legacy files; edit the .lua files directly instead.
| Key | Laptop (eDP-1) | External (HDMI-A-1) |
|---|---|---|
| Super+1 | WS 1 | WS 11 |
| Super+2 | WS 2 | WS 12 |
| Super+3 | WS 3 | WS 13 |
| Super+8 | WS 4 | WS 14 |
| Super+9 | WS 5 | WS 15 |
| Super+0 | WS 6 | WS 16 |
hypr-switch-workspace- Switch synchronized workspace pairshypr-move-to-workspace- Move window (context-aware based on monitor)hypr-event-listener- Handle monitor connect/disconnect eventshypr-gesture-workspace- Handle touchpad gesture workspace switchingtmux-sessionizer- Fuzzy find and attach to project tmux sessions
- Requires Omarchy base config
- External monitor config assumes HDMI-A-1 above eDP-1