hypr/hyprland.conf
2025-04-13 15:15:15 +02:00

243 lines
10 KiB
Text

# WHY:
# ╭───────────────────────────────────────────────────╮
# │ This is the hyprland configuration file to source │
# │ and setup my hyprland environment │
# ╰───────────────────────────────────────────────────╯
# ╭──────────────╮
# │ 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 = $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, inactive_opacity:1
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
# 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
# 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:^(GDLauncher)$
# windowrule = immediate, class:^(cs2)$
# windowrule = immediate, class:^(cs2)$
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
rounding = 4
rounding_power = 7
# Change transparency of focused and unfocused windows
active_opacity = 0.98
# inactive_opacity = 0.284
# fullscreen_opacity = 1
dim_inactive = true
dim_strength = 0.3
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
enabled = true
size = 5
passes = 2
vibrancy = 0.01696
}
}
# ▄▀█ █▄░█ █ █▀▄▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█
# █▀█ █░▀█ █ █░▀░█ █▀█ ░█░ █ █▄█ █░▀█
# 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 {
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
}