2026-08-04 11:15:48 +02:00
|
|
|
local colors = require("config/colors")
|
|
|
|
|
|
|
|
|
|
hl.config({
|
|
|
|
|
general = {
|
|
|
|
|
gaps_in = 1,
|
|
|
|
|
gaps_out = 1,
|
|
|
|
|
border_size = 1,
|
|
|
|
|
-- Resizing windows by clicking and dragging on borders and gaps
|
|
|
|
|
resize_on_border = true,
|
|
|
|
|
allow_tearing = false,
|
|
|
|
|
layout = "dwindle",
|
|
|
|
|
col = {
|
|
|
|
|
active_border = active_color,
|
|
|
|
|
inactive_border = inactive_color,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
hl.config({
|
|
|
|
|
decoration = {
|
|
|
|
|
rounding = 2,
|
|
|
|
|
-- Change transparency of focused and unfocused windows
|
|
|
|
|
active_opacity = 1.0,
|
|
|
|
|
inactive_opacity = 1.0,
|
|
|
|
|
shadow = {
|
|
|
|
|
enabled = true,
|
|
|
|
|
range = 4,
|
|
|
|
|
render_power = 3,
|
|
|
|
|
color = "rgba(1a1a1aee)",
|
|
|
|
|
},
|
|
|
|
|
blur = {
|
|
|
|
|
enabled = true,
|
|
|
|
|
size = 6,
|
|
|
|
|
passes = 4,
|
|
|
|
|
vibrancy = 0.1696,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
-- Layer rules
|
|
|
|
|
|
|
|
|
|
hl.layer_rule({
|
|
|
|
|
match = {
|
|
|
|
|
namespace = "^(swaync-control-center)$",
|
|
|
|
|
},
|
|
|
|
|
blur = true,
|
|
|
|
|
ignore_alpha = 0.2,
|
|
|
|
|
animation = "slide right",
|
|
|
|
|
dim_around = true,
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
hl.layer_rule({
|
|
|
|
|
match = {
|
|
|
|
|
namespace = "^(rofi)$",
|
|
|
|
|
},
|
|
|
|
|
blur = false,
|
|
|
|
|
animation = "popin 90%",
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
hl.layer_rule({
|
|
|
|
|
match = {
|
|
|
|
|
namespace = "^(waybar)$",
|
|
|
|
|
},
|
|
|
|
|
blur = false,
|
|
|
|
|
animation = "slide up",
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
hl.layer_rule({
|
|
|
|
|
match = {
|
|
|
|
|
namespace = "^(selection)$",
|
|
|
|
|
},
|
|
|
|
|
blur = false,
|
|
|
|
|
animation = "fade",
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
hl.layer_rule({
|
|
|
|
|
match = {
|
|
|
|
|
namespace = "^(hyprpicker)$",
|
|
|
|
|
},
|
|
|
|
|
blur = false,
|
|
|
|
|
animation = "fade",
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
-------------------
|
|
|
|
|
---- ANIMATIONS ---
|
|
|
|
|
-------------------
|
|
|
|
|
|
|
|
|
|
hl.config({
|
|
|
|
|
animations = {
|
|
|
|
|
enabled = true,
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
-- Bezier curves
|
|
|
|
|
hl.curve( "easeOutQuint", { type = "bezier", points = { {0.23, 1}, { 0.32,1} } })
|
|
|
|
|
hl.curve( "easeInOutCubic", { type = "bezier", points = { {0.65, 0.05}, { 0.36,1} } })
|
|
|
|
|
hl.curve( "linear", { type = "bezier", points = { {0, 0}, { 0, 1 } } })
|
|
|
|
|
hl.curve( "almostLinear", { type = "bezier", points = { {0.5, 0.5}, { 0.75, 1.0} } })
|
|
|
|
|
hl.curve( "quick", { type = "bezier", points = { {0.15, 0}, { 0.1, 1} } })
|
|
|
|
|
hl.curve( "easeInOutExpo", { type = "bezier", points = { {0.87, 0}, { 0.13, 1} } })
|
|
|
|
|
|
|
|
|
|
hl.animation({ leaf="global", enabled=true, speed=10, bezier="default" })
|
|
|
|
|
hl.animation({ leaf="border", enabled=true, speed=4, bezier="easeOutQuint" })
|
|
|
|
|
|
|
|
|
|
hl.animation({ leaf="windows", enabled=true, speed=3.5, bezier="easeOutQuint" })
|
|
|
|
|
hl.animation({ leaf="windowsIn", enabled=true, speed=3.1, bezier="easeOutQuint", style="popin 87%" })
|
|
|
|
|
hl.animation({ leaf="windowsOut", enabled=true, speed=1.49, bezier="linear", style="popin 87%" })
|
|
|
|
|
|
|
|
|
|
hl.animation({ leaf="fadeIn", enabled=true, speed=1.73, bezier="easeOutQuint" })
|
|
|
|
|
hl.animation({ leaf="fadeOut", enabled=true, speed=1.46, bezier="easeOutQuint" })
|
|
|
|
|
hl.animation({ leaf="fade", enabled=true, speed=3.03, bezier="easeOutQuint" })
|
|
|
|
|
|
|
|
|
|
hl.animation({ leaf="layers", enabled=true, speed=3, bezier="easeOutQuint" })
|
|
|
|
|
hl.animation({ leaf="layersIn", enabled=true, speed=2.4, bezier="easeOutQuint", style="fade" })
|
|
|
|
|
hl.animation({ leaf="layersOut", enabled=true, speed=2.4, bezier="easeOutQuint", style="fade" })
|
|
|
|
|
hl.animation({ leaf="fadeLayersIn", enabled=true, speed=2, bezier="easeOutQuint" })
|
|
|
|
|
hl.animation({ leaf="fadeLayersOut", enabled=true, speed=2, bezier="easeOutQuint" })
|
|
|
|
|
|
|
|
|
|
hl.animation({ leaf="workspaces", enabled=true, speed=2.8, bezier="easeOutQuint", style="slidefadevert" })
|
|
|
|
|
hl.animation({ leaf="workspacesIn", enabled=true, speed=2.6, bezier="easeOutQuint", style="slide" })
|
|
|
|
|
hl.animation({ leaf="workspacesOut", enabled=true, speed=2.6, bezier="easeOutQuint", style="slide" })
|
|
|
|
|
|
|
|
|
|
|
2026-08-04 11:39:33 +02:00
|
|
|
-- Layouts
|
2026-08-04 11:15:48 +02:00
|
|
|
|
2026-08-04 11:39:33 +02:00
|
|
|
-- Dwindle
|
2026-08-04 11:15:48 +02:00
|
|
|
hl.config({
|
|
|
|
|
dwindle = {
|
|
|
|
|
preserve_split = true,
|
|
|
|
|
-- You probably want this
|
|
|
|
|
},
|
|
|
|
|
})
|
2026-08-04 11:39:33 +02:00
|
|
|
-- Master
|
2026-08-04 11:15:48 +02:00
|
|
|
hl.config({
|
|
|
|
|
master = {
|
|
|
|
|
new_status = "master",
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
|
2026-08-04 11:39:33 +02:00
|
|
|
-- Misc
|
2026-08-04 11:15:48 +02:00
|
|
|
hl.config({
|
|
|
|
|
misc = {
|
|
|
|
|
force_default_wallpaper = 0, -- Set to 0 or 1 to disable the anime mascot wallpapers
|
|
|
|
|
disable_hyprland_logo = true, -- If true disables the random hyprland logo / anime girl background. :(
|
|
|
|
|
disable_splash_rendering = true, -- Disable default wallpapers rendering
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
2026-08-04 12:49:45 +02:00
|
|
|
------ Windows rules
|
|
|
|
|
|
|
|
|
|
---- Desktop behavior
|
2026-08-04 11:15:48 +02:00
|
|
|
|
|
|
|
|
-- Ignore maximize requests from apps. You'll probably like this.
|
|
|
|
|
hl.window_rule({
|
|
|
|
|
name = "suppress-maximize-events",
|
|
|
|
|
match = { class = ".*" },
|
|
|
|
|
|
|
|
|
|
suppress_event = "maximize",
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
-- Fix some dragging issues with XWayland
|
|
|
|
|
hl.window_rule({
|
|
|
|
|
-- Fix some dragging issues with XWayland
|
|
|
|
|
name = "fix-xwayland-drags",
|
|
|
|
|
match = {
|
|
|
|
|
class = "^$",
|
|
|
|
|
title = "^$",
|
|
|
|
|
xwayland = true,
|
|
|
|
|
float = true,
|
|
|
|
|
fullscreen = false,
|
|
|
|
|
pin = false,
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
no_focus = true,
|
|
|
|
|
})
|
|
|
|
|
|
2026-08-04 12:49:45 +02:00
|
|
|
---- Applications
|
|
|
|
|
|
2026-08-04 11:15:48 +02:00
|
|
|
-- Prism Launcher
|
|
|
|
|
hl.window_rule({
|
|
|
|
|
name = "prismlauncher-all",
|
|
|
|
|
match = {
|
|
|
|
|
class = "(org.prismlauncher.PrismLauncher)",
|
|
|
|
|
},
|
|
|
|
|
pseudo = true,
|
|
|
|
|
})
|
|
|
|
|
hl.window_rule({
|
|
|
|
|
name = "prismlauncher-main",
|
|
|
|
|
match = {
|
|
|
|
|
class = "(org.prismlauncher.PrismLauncher)",
|
|
|
|
|
title = "^(Prism Launcher.*)$",
|
|
|
|
|
},
|
|
|
|
|
size = { "(monitor_w*0.65)", "(monitor_h*0.7)" },
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
-- Nautilus
|
|
|
|
|
hl.window_rule({
|
|
|
|
|
name = "nautilus-main",
|
|
|
|
|
match = {
|
|
|
|
|
class = "(org.gnome.Nautilus)",
|
|
|
|
|
},
|
|
|
|
|
pseudo = true,
|
|
|
|
|
size = { "(monitor_w*0.65)", "(monitor_h*0.7)" },
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
-- GTK file picker
|
|
|
|
|
hl.window_rule({
|
|
|
|
|
name = "gtk-file-picker",
|
|
|
|
|
match = {
|
|
|
|
|
class = "(xdg-desktop-portal-gtk)",
|
|
|
|
|
},
|
|
|
|
|
float = true,
|
|
|
|
|
size = { "(monitor_w*0.65)", "(monitor_h*0.7)" },
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
-- Vivado
|
|
|
|
|
|
|
|
|
|
--# Loading screen
|
|
|
|
|
hl.window_rule({
|
|
|
|
|
name = "vivado-loading-screen",
|
|
|
|
|
match = {
|
|
|
|
|
class = "(ui-PlanAhead)",
|
|
|
|
|
},
|
|
|
|
|
float = true,
|
|
|
|
|
center = true,
|
|
|
|
|
})
|
|
|
|
|
hl.window_rule({
|
|
|
|
|
name = "vivado-loading-screen-2",
|
|
|
|
|
match = {
|
|
|
|
|
class = "(ui-PlanAhead) title:^(win0)$",
|
|
|
|
|
},
|
|
|
|
|
size = { 397, 295 },
|
|
|
|
|
})
|
|
|
|
|
--# Main window
|
|
|
|
|
hl.window_rule({
|
|
|
|
|
name = "vivado-main",
|
|
|
|
|
match = {
|
|
|
|
|
class = "(Vivado)",
|
|
|
|
|
},
|
|
|
|
|
tile = true,
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
-- Kdenlive
|
|
|
|
|
hl.window_rule({
|
|
|
|
|
name = "kdenlive-all",
|
|
|
|
|
match = {
|
|
|
|
|
class = "(org.kde.kdenlive)",
|
|
|
|
|
},
|
|
|
|
|
pseudo = true,
|
|
|
|
|
})
|
|
|
|
|
hl.window_rule({
|
|
|
|
|
name = "kdenlive-welcome",
|
|
|
|
|
match = {
|
|
|
|
|
class = "(org.kde.kdenlive)",
|
|
|
|
|
},
|
|
|
|
|
size = { "(512)", "(544)" },
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
-- Gnome characters
|
|
|
|
|
hl.window_rule({
|
|
|
|
|
name = "gnome-characters",
|
|
|
|
|
match = {
|
|
|
|
|
class = "(org.gnome.Characters)",
|
|
|
|
|
},
|
|
|
|
|
float = true,
|
|
|
|
|
size = { "(849)", "(566)" },
|
|
|
|
|
})
|
|
|
|
|
|
2026-08-04 11:39:33 +02:00
|
|
|
-- Albert
|
|
|
|
|
hl.window_rule({
|
|
|
|
|
name = "albert",
|
|
|
|
|
match = {
|
|
|
|
|
class = "^(albert)$",
|
|
|
|
|
},
|
|
|
|
|
border_size = 0,
|
|
|
|
|
no_blur = true,
|
|
|
|
|
no_shadow = true,
|
|
|
|
|
float = true,
|
|
|
|
|
stay_focused = true,
|
|
|
|
|
no_dim = true,
|
|
|
|
|
})
|
|
|
|
|
|
2026-08-04 11:15:48 +02:00
|
|
|
|
|
|
|
|
-- Legacy disabled code
|
|
|
|
|
|
|
|
|
|
-- Mullvad VPN
|
|
|
|
|
-- hl.window_rule({
|
|
|
|
|
-- name = "mullvad-vpn",
|
|
|
|
|
-- float = "on",
|
|
|
|
|
-- size = (320) (568),
|
|
|
|
|
-- # move = "{ (monitor_w - window_w - 4), (monitor_h - window_h - 4) }",
|
|
|
|
|
-- match:class = (Mullvad VPN),
|
|
|
|
|
-- })
|
|
|
|
|
|
|
|
|
|
-- TODO Automatically fullscreen single apps
|
|
|
|
|
-- - Seems impossible for now (try mixing with workspace rules)
|
|
|
|
|
|
|
|
|
|
-- Default size for floating windows
|
|
|
|
|
--# TODO
|
|
|
|
|
--windowrulev2 = size 100 100,floating:1
|
|
|
|
|
|
2026-08-04 12:49:45 +02:00
|
|
|
------ Workspace rules
|
|
|
|
|
|
2026-08-04 11:15:48 +02:00
|
|
|
-- Increase gaps for single apps
|
|
|
|
|
--# Usless since I changed the default gap but may be useful if you decide to reset it to 0
|
|
|
|
|
--workspace=w[t1], gapsout:2
|