Skip to main content

What is Hyprland?

Hyprland is a highly customizable dynamic tiling Wayland compositor that is known for its eye candy and extensive customization options. This configuration provides a beautiful and efficient window management experience with smooth animations and intelligent window placement.

Key Features

Smooth Animations

Hyprland is configured with custom bezier curves for smooth, visually pleasing animations:
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
bezier = easeInOutQuad, 0.45, 0, 0.55, 1

animation = windows, 1, 7, myBezier
animation = windowsIn, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = windowsMove, 1, 5, myBezier
animation = workspaces, 1, 6, easeInOutQuad

Visual Effects

  • Rounding: Windows have 9px rounded corners
  • Active Opacity: 1.0 (fully opaque)
  • Inactive Opacity: 0.85 (slightly transparent)
  • Dim Strength: 0.2 for inactive windows
Gaussian blur is enabled for translucent windows:
  • Size: 8px
  • Passes: 1
  • Optimizations enabled
  • Special workspace blur support
Subtle drop shadows enhance depth:
  • Range: 6px
  • Render power: 2
  • Color: rgba(1a1a1aee)

Workspace Management

Hyprland supports 10 standard workspaces plus special workspaces.

Standard Workspaces

# Super + 1-0 switches to workspace 1-10
Super + 1  # Workspace 1
Super + 2  # Workspace 2
# ... and so on

Special Workspaces

Special workspaces act as scratchpads that can be toggled on and off:
# Toggle special workspace "magic"
Super + Tab

# Move window to special workspace
Super + Shift + Tab

Window Rules

Custom window rules provide intelligent window behavior:
# Wofi launcher - floating, centered, 50% size
windowrule {
    name = wofi-config
    match:class = ^(wofi)$
    float = on
    size = 50% 50%
    center = on
}

# Pavucontrol - floating, 80% size
windowrule {
    name = pavucontrol-config
    match:class = ^(pavucontrol)$
    float = on
    size = 80% 80%
}

# Notifications - pinned and floating
windowrule {
    name = notifications
    match:class = ^(mako)$
    pin = on
    float = on
}

General Settings

The window manager uses the master layout with smart gap management:

Borders

  • Size: 2px
  • Active: Blue accent
  • Inactive: Surface0

Gaps

  • Inner gaps: 5px
  • Outer gaps: 9px

Layout

  • Default: Master layout
  • Resize on border: Enabled
  • Border grab area: 15px

Snapping

  • Window gap: 10px
  • Monitor gap: 10px
  • Respect gaps: Yes

Window Management Keybindings

KeyAction
Super + QKill active window
Super + VToggle floating
Super + F11Fullscreen
Super + FSwap with master
Super + Shift + FFocus master
KeyAction
Super + HFocus left
Super + JFocus down
Super + KFocus up
Super + LFocus right
KeyAction
Super + Shift + HMove window left
Super + Shift + JMove window down
Super + Shift + KMove window up
Super + Shift + LMove window right
KeyAction
Ctrl + HResize left -30px
Ctrl + LResize right +30px
Ctrl + KResize up -30px
Ctrl + JResize down +30px
KeyAction
Super + Left ClickMove window
Super + Right ClickResize window
Super + Scroll UpNext workspace
Super + Scroll DownPrevious workspace

Configuration Modules

The Hyprland configuration is organized into modular files:
$modules = ~/.config/hypr/modules

source = $modules/vars.conf         # Variables
source = $modules/env.conf          # Environment variables
source = $modules/input.conf        # Input devices
source = $modules/monitors.conf     # Monitor configuration
source = $modules/general.conf      # General settings
source = $modules/theme.conf        # Theme and animations
source = $modules/layout.conf       # Layout settings
source = $modules/autostart.conf    # Autostart applications
source = $modules/windowrules.conf  # Window rules
source = $modules/binds.conf        # Keybindings
Edit individual module files in ~/.config/hypr/modules/ to customize specific aspects of Hyprland without touching the main configuration.

Idle and Lock Management

Hyprland integrates with hypridle and hyprlock to provide automatic screen locking and power management.

Hypridle - Idle Daemon

Automatically manages screen timeouts and system power states:
hypridle.conf
general {
    lock_cmd = pidof hyprlock || hyprlock
    before_sleep_cmd = loginctl lock-session
    after_sleep_cmd = hyprctl dispatch dpms on
    ignore_dbus_inhibit = false
}

# Screen lock after 10 minutes
listener {
    timeout = 600
    on-timeout = hyprlock
}

# Screen off after 15 minutes
listener {
    timeout = 900
    on-timeout = hyprctl dispatch dpms off
    on-resume = hyprctl dispatch dpms on
}

# System suspend after 30 minutes
listener {
    timeout = 1800
    on-timeout = systemctl suspend
}
Hypridle respects DBus and systemd inhibitors, so video playback and downloads won’t trigger the lock.

Hyprlock - Screen Locker

Provides a beautiful, customizable lock screen with:
  • Blurred wallpaper background with adjustable contrast and brightness
  • Large centered clock with date display
  • Password input field with failure attempts counter
  • User information and system uptime
  • Smooth fade-in animation
Configuration in ~/.config/hypr/hyprlock.conf:
hyprlock.conf
general {
    no_fade_in = false
    grace = 0
    disable_loading_bar = false
}

background {
    path = ~/Pictures/Wallpapers/wallpaper.jpg
    blur_passes = 3
    contrast = 0.8916
    brightness = 0.8172
}

input-field {
    size = 350, 60
    placeholder_text = <i>Password</i>
    fail_color = rgb(204, 34, 34)
    capslock_color = rgb(255, 204, 0)
}
Lock Screen Shortcuts:
  • Super + Shift + Q - Manually lock the screen
  • Super + M - Open logout menu (which includes lock option)

Performance

Optimized for performance with:
  • VFR (Variable Frame Rate): Enabled
  • Manual resize animations: Disabled for snappier feel
  • Initial workspace tracking: Level 1
  • Close special on empty: Disabled
The master layout provides efficient window management especially suited for development workflows where you often have one large primary window.

Build docs developers (and LLMs) love