record-20260729-181903-compressed.mp4
🔀 Per-Workspace Layout Switching 🔀
Switch between Hyprland & Niri tiling styles with one keybind
SUPER + SHIFT + L
A complete, ready-to-use Hyprland configuration for Arch Linux. One command to install everything.
- Hyprland - Wayland compositor with smooth animations
- Waybar - Status bar with multiple themes (vertical/horizontal)
- Kitty - Terminal with custom colors and fonts
- Rofi - App launcher and menus
- Mako - Notification daemon
- Zsh - Shell with Starship prompt
- Theming - Automatic color generation
bash <(curl -s https://raw.githubusercontent.com/midn8crow/scrow/main/get)This clones SCROW to ~/.cache/scrow and runs ./setup install.
git clone https://github.com/midn8crow/scrow.git
cd scrow
./setup installReboot your system for all changes to take effect.
- Installs yay (AUR helper, builds from source if needed)
- Installs official packages via pacman (Hyprland, Waybar, Kitty, etc.)
- Installs AUR packages (custom themes, tools)
- Installs Hyprpm plugins (ScrollOverview for workspace overview)
- Sets up system (user groups, kernel modules, services, fonts)
- Deploys dotfiles — mirrors
dots/tree into your$HOME - Backs up existing configs on first install
- Verifies the installation
./setup --help # Show help
./setup install # Full install
./setup install --skip-deps # Skip package installation
./setup install --skip-files # Skip dotfile deployment
./setup install --interactive # Prompt before each stepcd ~/.cache/scrow # or your clone directory
git pull
./setup installEach workspace gets its own tiling layout. Switch between different tiling styles on the fly:
| Key | Action |
|---|---|
SUPER + SHIFT + L |
Toggle between Hyprland & Niri layout |
- Hyprland style - Classic dynamic tiling
- Niri style - Scrollable column-based tiling
- Change layout per workspace without affecting others
Switch between different waybar styles:
# Next theme
ALT + SHIFT + W
# Previous theme
ALT + WAvailable themes:
- Default (scrowland)
- cxorz
- Athena
- And more...
| Key | Action |
|---|---|
SUPER + Q |
Terminal |
SUPER + B |
Browser |
SUPER + E |
File Manager |
SUPER + C |
Close Window |
SUPER + M |
Exit Menu |
ALT + Space |
App Launcher |
ALT + SHIFT + Space |
Power Menu |
SUPER + N |
Notifications |
SUPER + W |
Switch Wallpaper |
SUPER + R |
Reload Hyprland |
SUPER + S |
Screenshot Region |
SUPER + PRINT |
Screenshot Full |
ALT + ↑/↓ |
Brightness |
ALT + ←/→ |
Volume |
CTRL + SHIFT + ? |
Keybinds Help |
SUPER + SHIFT + L |
Toggle Layout (Hyprland/Niri) |
All scripts are in ~/.local/bin/:
| Script | Description |
|---|---|
wallpaper-switch.sh |
Cycle wallpapers |
vol-notify.sh |
Volume control with notification |
brightness.sh |
Brightness control |
screenshot-region.sh |
Region screenshot |
screenshot-full.sh |
Full screenshot |
gpu-recorder.sh |
GPU screen recording |
scrow-menu.sh |
Scrow menu |
powermenu.sh |
Power/logout menu |
force-kill.sh |
Force kill window |
keybinds |
Show keybinds |
Packages are defined in packages/official.txt (pacman) and packages/aur.txt (AUR).
hyprland hyprlock hypridle hyprutils uwsm xdg-desktop-portal-hyprland
xdg-desktop-portal-gtk xdg-utils wl-clipboard cliphist grim slurp swappy
satty hyprshot awww gnome-keyring network-manager-applet blueman
nm-connection-editor kdeconnect fcitx5 fcitx5-configtool fcitx5-gtk
fcitx5-qt pipewire pipewire-pulse wireplumber pipewire-alsa pipewire-jack
pavucontrol polkit-kde-agent
waybar cava playerctl jq
rofi rofi-emoji
kitty
mako
zsh zsh-autosuggestions zsh-syntax-highlighting starship
fzf zoxide eza bat fd ripgrep
adw-gtk-theme qt6ct kvantum nwg-look papirus-icon-theme
ttf-jetbrains-mono-nerd noto-fonts noto-fonts-emoji
ttf-font-awesome ttf-cascadia-code
fastfetch btop htop mpv cava yazi yt-dlp brightnessctl playerctl
ffmpeg imagemagick jq tree 7zip wget curl git unzip xdg-user-dirs
wtype pacman-contrib
nftables fail2ban clamav rkhunter pacman-contrib bubblewrap lynis
sddm grub efibootmgr
hyprpolkitagent openbangla-keyboard-fcitx-git hypr-kdeconnect-fix-git
libcava matugen awww mpvpaper gpu-screen-recorder wlr-randr
ytdlp-gui-bin songrec bibata-cursor-theme stockfish moviebox-tui
Waybar itself is built locally during setup: the AUR
waybar-cava-gitclones moving-git master and keeps failing on the installer VM's slow link, so the installer buildspackages/waybar-cava/PKGBUILD(the real waybar with the compiledcavamodule) from a pinned Waybar git snapshot (same master code line upstreamwaybar-cava-gitbuilds, caught up withlibcava1.0.0). The build does not force--auto-features=enabled— meson builds every module whose dependency is installed and skips the rest (that flag is what made fresh VMs abort on missinggpsd/modemmanager/epoxy); onlycavais forced on. There is no stock fallback: if the build fails, setup stops and shows the log — the cava module is required, never degraded.
Edit ~/.config/waybar/colors/colors.css:
@define-color bg #1e1e2e;
@define-color fg #cdd6f4;
@define-color module-bg rgba(30, 30, 46, 0.8);
@define-color accent #89b4fa;Edit ~/.config/kitty/kitty.conf:
font_family YourFont Nerd Font
font_size 12.0
Edit ~/.config/hypr/modules/binds.lua:
hl.bind("SUPER + SHIFT + A", hl.dsp.exec_cmd("your-command"))Edit ~/.config/hypr/modules/monitors-hardware.lua:
-- Single monitor
hl.monitor({
output = "",
mode = "1920x1080@144",
position = "0x0",
scale = "1",
})
-- Dual monitor
hl.monitor({
output = "eDP-1",
mode = "1920x1080@60",
position = "0x0",
scale = "1",
})
hl.monitor({
output = "HDMI-A-1",
mode = "2560x1440@144",
position = "1920x0",
scale = "1",
})waybar &
# or
~/.config/waybar/launch.shmakoSCROW applies the default wallpaper automatically on login and self-heals a stale/removed wallpaper index, so no manual cache clearing is needed. To re-apply manually:
~/.local/bin/wallpaper-switch.sh restoreThe default SCROW wallpaper is installed with SCROW and lives in
~/Pictures/Wallpapers/. Add more wallpapers there and switch them with
SUPER + W.
matugenwpctl status
wpctl set-default <sink-id>hyprctl reloadSome keyboards don't support Linux keyboard backlight control. Use this script to force the scrolllock LED on:
#!/bin/bash
while true; do
LED_DIR=$(find /sys/class/leds/ -maxdepth 1 -name "*scrolllock" 2>/dev/null | head -1)
if [ -n "$LED_DIR" ] && [ -f "$LED_DIR/brightness" ]; then
echo 1 > "$LED_DIR/brightness" 2>/dev/null
fi
sleep 0.005
doneSave as ~/.local/bin/kbd-backlight-keep.sh and run:
chmod +x ~/.local/bin/kbd-backlight-keep.sh
~/.local/bin/kbd-backlight-keep.sh &To auto-start, add to ~/.config/hypr/modules/autostart.lua:
hl.exec_cmd("bash -c '$HOME/.local/bin/kbd-backlight-keep.sh &'")To remove SCROW-managed files, delete the deployed dotfiles:
rm -rf ~/.config/hypr ~/.config/waybar ~/.config/rofi ~/.config/mako
rm -rf ~/.config/kitty ~/.config/scrow ~/.local/bin/*
rm -f ~/.zshrc ~/.fzf-init.zsh ~/.starship-init.zsh ~/.zoxide-init.zshBackups are stored in ~/scrow-original-dots-backup/.
Feel free to fork and customize! Pull requests welcome.
MIT License - see LICENSE
If you like this setup, give it a ⭐ on GitHub!