kwerty

Hyprland

Dynamic tiling Wayland compositor with modular configuration

linuxratataquewmwaylandtiling

Overview

Hyprland is ratataque's window manager on Arch Linux. The config is organized into modular files for maintainability, with Caelestia shell integration for notifications, dashboard, and system controls.

Configuration Structure

The main hyprland.conf sources modular config files:

$hypr = ~/.config/hypr
 
# Source modular configuration files
source = $hypr/env_var.conf
source = $hypr/scheme/current.conf
source = $hypr/input.conf
source = $hypr/autostart.conf
source = $hypr/appearance.conf
source = $hypr/layouts.conf
source = $hypr/windowrules.conf
source = $hypr/keybinds.conf
 
monitor=eDP-1,3072x1920@120.00,0x0,2.00,vrr,1
monitor=DP-2,1920x1080@60.00,0x0,1.00,mirror,0

Appearance

general {
    gaps_in = 5
    gaps_out = 10
    border_size = 2
    col.active_border = rgba($primarye6)
    col.inactive_border = rgba(2E3440fe)
    layout = dwindle
    allow_tearing = true
}
 
decoration {
    rounding = 5
    blur {
        enabled = true
        size = 7
        passes = 4
        new_optimizations = true
    }
}
 
animations {
    enabled = no
    bezier = myBezier, 0.10, 0.9, 0.1, 1.05
    bezier = decel, 0.05, 0.7, 0.1, 1
    animation = windows, 1, 7, myBezier, slide
    animation = workspaces, 1, 6, decel, slidefade 20%
}

Keybindings

All bindings use SUPER as the main modifier:

$mainMod = SUPER
 
# Application launchers
bind = $mainMod, R, exec, kitty -e tmux -u
bind = SuperShift, R, exec, kitty
bind = $mainMod, E, exec, footclient yazi
bind = $mainMod, W, exec, kitty -e ~/.config/sesh/sesh.sh
bind = $mainMod, C, exec, qalculate-qt
bind = $mainMod, B, exec, footclient bluetui
bind = $mainMod, z, exec, footclient wifitui
bind = $mainMod, COMMA, exec, footclient pulsemixer
 
# Window management
bind = $mainMod, Q, killactive,
bind = $mainMod, G, fullscreen,
bind = $mainMod, F, togglefloating,
bind = SuperShift, V, togglesplit,
 
# Vim-style focus
bind = $mainMod, H, movefocus, l
bind = $mainMod, L, movefocus, r
bind = $mainMod, K, movefocus, u
bind = $mainMod, J, movefocus, d
 
# Swap windows
bind = SuperShift, H, movewindow, l
bind = SuperShift, L, movewindow, r
bind = SuperShift, K, movewindow, u
bind = SuperShift, j, movewindow, d
 
# Window split ratio
binde = Super, Minus, splitratio, -0.1
binde = Super, Equal, splitratio, 0.1
 
# Workspaces 1-10
bind = $mainMod, 1, workspace, 1
# ... through 0 for workspace 10
 
# Caelestia integration
bind = Super, SPACE, global, caelestia:launcher
bind = Super, T, global, caelestia:dashboard
bind = Super, S, global, caelestia:screenshotClipboard
bind = SuperShift, S, global, caelestia:screenshotFreeze
bind = Ctrl+Super, L, global, caelestia:lock
 
# Special workspace toggles
bind = super, A, exec, caelestia toggle sysmon
bind = super, N, exec, caelestia toggle todo
bind = super, M, exec, caelestia toggle communication
 
# Utilities
bind = $mainMod, P, exec, 1password --quick-access
bind = Super, V, exec, pkill fuzzel || caelestia clipboard
bind = $mainMod, X, exec, wlogout --protocol layer-shell

Window Rules

# Opacity for non-fullscreen windows
windowrule = opacity $windowOpacity override, match:fullscreen false
windowrule = opaque true, match:class foot|vesktop|equibop
 
# Workspace assignments
windowrule = workspace 2 silent, match:class firefox
windowrule = workspace 1 silent, match:class chromium
windowrule = workspace 5 silent, match:class Notion
 
# Special workspaces
windowrule = workspace special:sysmon, match:class btop
windowrule = workspace special:music, match:class feishin|Spotify
windowrule = workspace special:communication, match:class discord|equibop|vesktop
 
# Float dialogs
windowrule = float true, match:title (Select|Open)( a)? (File|Folder)(s)?
windowrule = float true, match:title Save As
 
# Steam
windowrule = immediate true, match:class steam_app_[0-9]+
windowrule = idle_inhibit always, match:class steam_app_[0-9]+

Autostart

# XDG Portal and desktop environment
exec-once = ~/.config/hypr/xdg-portal-hyprland
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=Hyprland
 
# System services
exec-once = systemctl --user start hyprpolkitagent
exec-once = systemctl --user start xremap
exec-once = foot --server
 
# System tray
exec-once = blueman-applet
exec-once = nm-applet --indicator
exec-once = wl-paste --watch cliphist store
 
# Applications
exec-once = 1password --ozone-platform=x11
exec-once = vesktop
exec-once = chromium
exec-once = firefox
exec-once = [workspace 4 silent] kitty -e tmux -u new -s dev
 
# Shell
exec-once = caelestia shell -d

Input

input {
    kb_layout = us
    repeat_delay = 200
    repeat_rate = 35
    
    touchpad {
        natural_scroll = yes
    }
    
    sensitivity = 0.2
    accel_profile = flat
}
 
gestures {
    gesture = 3, horizontal, workspace
}

Integration

Hyprland integrates with:

  • xremap for system-wide key remapping (CapsLock → Ctrl, app-specific bindings)
  • Caelestia shell for notifications, dashboard, launcher, and system controls
  • foot terminal server for fast terminal spawning
  • fuzzel for clipboard and emoji picker

Source Repositories