Skip to main content
Hyprland is a dynamic tiling Wayland compositor that provides smooth animations, powerful features, and extensive customization options.

Overview

The Hyprland configuration is located at .config/hypr/hyprland.conf and includes:
  • Monitor configuration
  • Program definitions and autostart
  • Environment variables
  • Visual styling and animations
  • Input device settings
  • Keybindings
  • Window and workspace rules

Monitor setup

The configuration uses automatic monitor detection:
.config/hypr/hyprland.conf
monitor=,preferred,auto,auto
This automatically detects and configures all connected monitors with their preferred resolution and refresh rate.

Default programs

Define your preferred applications for common tasks:
.config/hypr/hyprland.conf
$terminal = ghostty
$fileManager = dolphin
$menu = wofi --show drun
$browser = brave
These variables can be referenced throughout the configuration using $terminal, $menu, etc.

Autostart programs

Programs that launch automatically when Hyprland starts:
.config/hypr/hyprland.conf
exec-once = agsv1 & hyprpaper
exec-once = nm-applet --indicator    # NetworkManager tray icon
exec-once = blueman-applet           # Bluetooth tray icon
exec-once = /usr/lib/pam_kwallet_init
exec-once = mako

agsv1

AGS (Aylur’s GTK Shell) for widgets and status bar

hyprpaper

Wallpaper daemon for Hyprland

nm-applet

NetworkManager system tray applet

mako

Notification daemon for Wayland

Environment variables

Set cursor size for both X and Hyprland:
.config/hypr/hyprland.conf
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24

Visual styling

General appearance

.config/hypr/hyprland.conf
general {
    gaps_in = 5
    gaps_out = 20
    border_size = 2
    col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
    col.inactive_border = rgba(595959aa)
    resize_on_border = false
    allow_tearing = false
    layout = dwindle
}
  • gaps_in: Space between windows (5px)
  • gaps_out: Space between windows and screen edges (20px)
  • border_size: Window border thickness (2px)
  • col.active_border: Gradient border for focused windows (cyan to green)
  • col.inactive_border: Gray border for unfocused windows

Decoration

.config/hypr/hyprland.conf
decoration {
    rounding = 10
    active_opacity = 1.0
    inactive_opacity = 1.0
    
    shadow {
        enabled = true
        range = 4
        render_power = 3
        color = rgba(1a1a1aee)
    }
    
    blur {
        enabled = true
        size = 3
        passes = 1
        vibrancy = 0.1696
    }
}

Animations

Hyprland features smooth, customizable animations using bezier curves:
.config/hypr/hyprland.conf
animations {
    enabled = yes, please :)
    
    # Bezier curves
    bezier = easeOutQuint,0.23,1,0.32,1
    bezier = easeInOutCubic,0.65,0.05,0.36,1
    bezier = linear,0,0,1,1
    bezier = almostLinear,0.5,0.5,0.75,1.0
    bezier = quick,0.15,0,0.1,1
    
    # Animation definitions
    animation = global, 1, 10, default
    animation = border, 1, 5.39, easeOutQuint
    animation = windows, 1, 4.79, easeOutQuint
    animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
    animation = windowsOut, 1, 1.49, linear, popin 87%
    animation = workspaces, 1, 1.94, almostLinear, fade
}
The “yes, please :)” syntax is a fun Easter egg that enables animations!

Input configuration

.config/hypr/hyprland.conf
input {
    kb_layout = us
    kb_variant = intl
    follow_mouse = 1
    sensitivity = 0
    
    touchpad {
        natural_scroll = false
    }
}

gestures {
    workspace_swipe = true
    workspace_swipe_fingers = 3
}

Keybindings

Window management

.config/hypr/hyprland.conf
$mainMod = SUPER

bind = $mainMod, Q, killactive,
bind = $mainMod, M, exit,
bind = $mainMod, V, togglefloating,
bind = $mainMod, F, fullscreen,
bind = $mainMod, P, pseudo,
bind = $mainMod, J, togglesplit,

Application launchers

.config/hypr/hyprland.conf
bind = SUPER, RETURN, exec, $terminal
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, R, exec, $menu
bind = $mainMod, B, exec, $browser
bindl = SUPER, L, exec, swaylock -f -e -l -L -s fill -i ~/dotfiles/Wallpaper/street-tn.png
Press SUPER + L to lock your screen with a custom wallpaper

Focus movement

.config/hypr/hyprland.conf
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d

Workspace switching

.config/hypr/hyprland.conf
# Switch to workspace
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
# ... (continues 1-10)

# Move window to workspace
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
# ... (continues 1-10)

Special workspace (scratchpad)

.config/hypr/hyprland.conf
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic

Multimedia keys

.config/hypr/hyprland.conf
# Volume control
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle

# Brightness control
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-

# Media controls (requires playerctl)
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous

Mouse bindings

.config/hypr/hyprland.conf
# Scroll through workspaces
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1

# Move/resize windows
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow

Window rules

Window rules allow you to set specific behaviors for applications:
.config/hypr/hyprland.conf
# Ignore maximize requests from apps
windowrulev2 = suppressevent maximize, class:.*

# Fix dragging issues with XWayland
windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0

Layout configuration

Dwindle layout

.config/hypr/hyprland.conf
dwindle {
    pseudotile = true
    preserve_split = true
}

Master layout

.config/hypr/hyprland.conf
master {
    new_status = master
}

Customization tips

1

Adjust animations

Modify bezier curves and animation speeds in the animations block to match your preference
2

Change color scheme

Update col.active_border and col.inactive_border to match your theme
3

Add window rules

Use hyprctl clients to identify window classes and create custom rules
4

Configure per-device input

Add device-specific configurations for multiple keyboards or mice

Waybar

Status bar configuration and modules

Wofi

Application launcher setup

Mako

Notification daemon configuration

Wallpapers

Wallpaper management with hyprpaper

Resources

Build docs developers (and LLMs) love