hypr/hyprland.conf
2025-06-08 10:43:19 +02:00

206 lines
9.6 KiB
Text

# WHY:
# ╭───────────────────────────────────────────────────╮
# │ This is the hyprland configuration file to source │
# │ and setup my hyprland environment │
# ╰───────────────────────────────────────────────────╯
# ╭──────────╮
# │ security │
# ╰──────────╯
# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
# ╭──────────────╮
# │ Source files │
# ╰──────────────╯
$h_conf = ~/.config/hypr
# NOTE:
#╭───────────────────────────────────────────────────────────────────────────╮
#│ sources monitors config outside of git repo to let useroptions be a thing │
#│ also sources the following variables: │
#│ > $main <- this should contain the main monitor (e.g. DP-1 or HDMI-A-1..) │
#│ > $secondary <- This is just the second monitor │
#╰───────────────────────────────────────────────────────────────────────────╯
# ─< source hotkeys file for hyprland >──────────────────────────────────────────────────────
source = $h_conf/hotkeys.conf
source = $HOME/.monitors.conf
# variable for specialworkspace (has to be configured in .monitors.conf like -> 'workspace = name:x, on-created-empty:$terminal')
# $terminal = foot
# $browser = zen-browser
# $secondary = $main # <- Uncomment this, if you only have one monitor
# ─< main-workspaces >────────────────────────────────────────────────────────────────────────────
workspace = 1, monitor:$main, persitent:true
workspace = 2, monitor:$secondary, persitent:true
workspace = 3, monitor:$main, persitent:true
workspace = 4, monitor:$secondary, persitent:true, on-created-empty:$browser
workspace = 5, monitor:$main
workspace = 6, monitor:$main
workspace = 7, monitor:$secondary
workspace = 8, monitor:$secondary
workspace = 9, monitor:$main, persistent:true, allow-tearing:true
# ─< Gaming workspace >──────────────────────────────────────────────────────────────────────
workspace = 69, monitor:$main, persistent:true, allow-tearing:true, gapsin:0, gapsout:0, rounding:0, border:0
# ────────────────────────────────────────< specials >────────────────────────────────────────
workspace = special:magic, monitor:$main, on-created-empty:$terminal, border:0
# ─< initialisation script >─────────────────────────────────────────────────────────────────
# exec-once = systemctl --user start hyprpolkitagent
# exec-once = $h_conf/.scripts/init.sh
exec-once = $h_conf/.scripts/init
exec-once = hypridle
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
# See https://wiki.hyprland.org/Configuring/Environment-variables/
# ╭───────────────────────╮
# │ Environment-variables │
# ╰───────────────────────╯
env = XCURSOR_SIZE,16
env = HYPRCURSOR_THEME,catppuccin-mocha-dark-cursors
env = HYPRCURSOR_SIZE,16
env = QT_QPA_PLATFORMTHEME,qt6ct # change to qt6ct if you have that
env = QT_QPA_PLATFORM,wayland;xcb
env = QT_SCALE_FACTOR,1
# env = GTK_THEME,Nordic-darker
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
# ──────────────────────────────────────< windowrules >─────────────────────────────────────
windowrule = workspace special:windoof, title:^(.*[Ll]ooking [Gg]lass.*)
windowrule = workspace 69, title:^(.*[Ss]team.*)
windowrule = workspace 69, title:^(.*GDLauncher.*)
# WHY:
# ─< smartgaps >─────────────────────────────────────────────────────────────────────────────
workspace = w[tv1], gapsout:0, gapsin:0
workspace = f[1], gapsout:0, gapsin:0
windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
windowrule = rounding 0, floating:0, onworkspace:w[tv1]
windowrule = bordersize 0, floating:0, onworkspace:f[1]
windowrule = rounding 0, floating:0, onworkspace:f[1]
# ╭───────────────╮
# │ LOOK AND FEEL │
# ╰───────────────╯
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
gaps_in = 1
gaps_out = 4
border_size = 2
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
# col.active_border = rgba(d0d0d0d0) rgba(4f4f4ff4) 45deg
col.active_border = rgba(392e89cf) rgba(392ef9cf) 45deg
col.inactive_border = rgba(2f2f2fe0)
extend_border_grab_area = false
resize_on_border = true
# layout = master
layout = dwindle
snap {
enabled = true
window_gap = 12
monitor_gap = 24
border_overlap = false
}
allow_tearing = false
}
windowrule = immediate, class:^(cs2)$
windowrule = immediate, class:^(steam)$
windowrule = immediate, class:^(cemu)$
windowrule = immediate, class:^(GDLauncher)$
windowrule = noblur, class:open-joystick-display-transparent
windowrule = noborder, class:open-joystick-display-transparent
windowrule = noshadow, class:open-joystick-display-transparent
windowrule = nodim, class:^(zen-browser)$
windowrule = renderunfocused, class:^(youtube)$
windowrule = renderunfocused, class:^(twitch)$
# windowrule = immediate, class:^(cs2)$
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
rounding = 4
rounding_power = 16
# Change transparency of focused and unfocused windows
active_opacity = 0.98
# inactive_opacity = 0.284
fullscreen_opacity = 1
dim_inactive = true
dim_strength = 0.2
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
enabled = true
size = 5
passes = 2
vibrancy = 0.01696
}
}
# ▄▀█ █▄░█ █ █▀▄▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█
# █▀█ █░▀█ █ █░▀░█ █▀█ ░█░ █ █▄█ █░▀█
animations {
enabled = true
# Animation curves
bezier = linear, 0, 0, 1, 1
bezier = md3_standard, 0.2, 0, 0, 1
bezier = md3_decel, 0.05, 0.7, 0.1, 1
bezier = md3_accel, 0.3, 0, 0.8, 0.15
bezier = overshot, 0.05, 0.9, 0.1, 1.1
bezier = crazyshot, 0.1, 1.5, 0.76, 0.92
bezier = hyprnostretch, 0.05, 0.9, 0.1, 1.0
bezier = menu_decel, 0.1, 1, 0, 1
bezier = menu_accel, 0.38, 0.04, 1, 0.07
bezier = easeInOutCirc, 0.85, 0, 0.15, 1
bezier = easeOutCirc, 0, 0.55, 0.45, 1
bezier = easeOutExpo, 0.16, 1, 0.3, 1
bezier = softAcDecel, 0.26, 0.26, 0.15, 1
bezier = md2, 0.4, 0, 0.2, 1 # use with .2s duration
# Animation configs
animation = windows, 1, 1, md3_decel, popin 60%
animation = windowsIn, 1, 1, md3_decel, popin 60%
animation = windowsOut, 1, 1, md3_accel, popin 60%
animation = border, 1, 1, default
animation = fade, 1, 1, md3_decel
# animation = layers, 1, 2, md3_decel, slide
animation = layersIn, 1, 1, menu_decel, slide
animation = layersOut, 1, 1, menu_accel
animation = fadeLayersIn, 1, 1, menu_decel
animation = fadeLayersOut, 1, 1, menu_accel
animation = workspaces, 1, 1, menu_decel, slide
# animation = workspaces, 1, 2.5, softAcDecel, slide
# animation = workspaces, 1, 7, menu_decel, slidefade 15%
# animation = specialWorkspace, 1, 3, md3_decel, slidefadevert 15%
animation = specialWorkspace, 1, 1, md3_decel, slidevert
}
# https://wiki.hyprland.org/Configuring/Variables/#misc
misc {
vrr = 2
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
enable_swallow = true
swallow_regex = ^(ghostty|wezterm-gui|kitty|Alacritty|foot)$
animate_manual_resizes = true
animate_mouse_windowdragging = true
new_window_takes_over_fullscreen = 2
}