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!
.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
.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
Adjust animations
Modify bezier curves and animation speeds in the animations block to match your preference
Change color scheme
Update col.active_border and col.inactive_border to match your theme
Add window rules
Use hyprctl clients to identify window classes and create custom rules
Configure per-device input
Add device-specific configurations for multiple keyboards or mice
Related pages
Waybar
Status bar configuration and modules
Wofi
Application launcher setup
Mako
Notification daemon configuration
Wallpapers
Wallpaper management with hyprpaper
Resources