hypr/hyprland.conf
2025-04-05 12:12:54 +02:00

219 lines
9 KiB
Text

# ╭──────────────╮
# │ Source files │
# ╰──────────────╯
$h_conf = ~/.config/hypr
# 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 = $HOME/.monitors.conf
# variable for specialworkspace (has to be configured in .monitors.conf like -> 'workspace = name:x, on-created-empty:$terminal')
$terminal = ghostty
# $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
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
# workspace = 0, monitor:HDMI-1
# ─< source hotkeys file for hyprland >──────────────────────────────────────────────────────
source = $h_conf/hotkeys.conf
# ─< initialisation script >─────────────────────────────────────────────────────────────────
exec-once = $h_conf/.scripts/init.sh
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.*)
# ╭───────────────╮
# │ LOOK AND FEEL │
# ╰───────────────╯
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
gaps_in = 2
gaps_out = 4
border_size = 2
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = rgba(ffffffe0) rgba(8f8f8fe0) 45deg
col.inactive_border = rgba(2f2f2fe0)
extend_border_grab_area = false
resize_on_border = true
allow_tearing = false
# layout = master
layout = dwindle
snap {
enabled = true
window_gap = 12
monitor_gap = 24
border_overlap = false
}
}
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
rounding = 2
# Change transparency of focused and unfocused windows
active_opacity = 1.0
inactive_opacity = 1.0
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
enabled = true
size = 3
passes = 2
vibrancy = 0.1696
}
}
# ▄▀█ █▄░█ █ █▀▄▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█
# █▀█ █░▀█ █ █░▀░█ █▀█ ░█░ █ █▄█ █░▀█
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
animations {
enabled = yes
bezier = wind, 0.05, 0.9, 0.1, 1.05
bezier = winIn, 0.1, 1.1, 0.1, 1.1
bezier = winOut, 0.3, -0.3, 0, 1
bezier = liner, 1, 1, 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
animation = windows, 1, 6, wind, slide
animation = windowsIn, 1, 6, winIn, popin
animation = windowsOut, 1, 5, winOut, slide
animation = windowsMove, 1, 5, wind, slide
# animation = border, 1, 1, liner
# animation = borderangle, 1, 30, liner, loop
animation = fade, 1, 10, default
animation = workspaces, 1, 5, wind
animation = specialWorkspace, 1, 3, md3_decel, slidefadevert 15%
# animation = specialWorkspace, 1, 3, md3_decel, slidevert
}
# animations {
# enabled = true
# # Animation deepSeek
# # ==== Custom Bezier Curves ==== :cite[1]:cite[3]
# bezier = smoothElastic, 0.68, -0.55, 0.27, 1.55
# bezier = gentleBounce, 0.34, 1.56, 0.64, 1
# bezier = fluidMove, 0.4, 0, 0.2, 1
# bezier = quickPop, 0.25, 1.1, 0.5, 1
#
# # ==== Window Animations ====
# animation = windows, 1, 6, fluidMove, slide
# animation = windowsIn, 1, 6, smoothElastic, popin 85%
# animation = windowsOut, 1, 6, fluidMove, popin 90%
# animation = windowsMove, 1, 4, gentleBounce
#
# # ==== Workspace Transitions ====
# animation = workspaces, 1, 8, quickPop, slidefadevert 25%
# animation = specialWorkspace, 1, 7, smoothElastic, slidevert
#
# # ==== Layer Effects ====
# animation = layers, 1, 5, fluidMove
# animation = layersIn, 1, 5, smoothElastic, fade
# animation = layersOut, 1, 4, fluidMove, fade
#
# # ==== Fade Effects ====
# animation = fade, 1, 5, fluidMove
# animation = fadeDim, 1, 4, gentleBounce
# animation = fadeSwitch, 1, 3, quickPop
#
# # ==== Border Dynamics ====
# animation = border, 1, 3, fluidMove
# animation = borderangle, 1, 50, fluidMove, loop
# }
# 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, 3, md3_decel, popin 60%
# animation = windowsIn, 1, 3, md3_decel, popin 60%
# animation = windowsOut, 1, 3, md3_accel, popin 60%
# animation = border, 1, 10, default
# animation = fade, 1, 3, md3_decel
# # animation = layers, 1, 2, md3_decel, slide
# animation = layersIn, 1, 3, menu_decel, slide
# animation = layersOut, 1, 1.6, menu_accel
# animation = fadeLayersIn, 1, 2, menu_decel
# animation = fadeLayersOut, 1, 0.5, menu_accel
# animation = workspaces, 1, 7, 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, 3, md3_decel, slidevert
# }
# https://wiki.hyprland.org/Configuring/Variables/#misc
misc {
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
}