{ config, pkgs, ... }: let cfg = config.omarchy; themes = import ../../themes.nix; theme = themes.${cfg.theme}; # Convert hex color to rgba format for hyprland hexToRgba = hex: alpha: let cleanHex = builtins.substring 1 6 hex; # Remove the # prefix in "rgba(${cleanHex}${alpha})"; # Special handling for tokyo-night gradient activeBorder = if cfg.theme == "tokyo-night" then "${hexToRgba theme.accent "ee"} ${hexToRgba theme.success "ee"} 45deg" else hexToRgba theme.foreground "ff"; in { wayland.windowManager.hyprland.settings = { general = { gaps_in = 5; gaps_out = 10; border_size = 2; "col.active_border" = activeBorder; "col.inactive_border" = hexToRgba theme.surface_variant "aa"; resize_on_border = false; allow_tearing = false; layout = "dwindle"; }; decoration = { rounding = 0; shadow = { enabled = true; range = 2; render_power = 3; color = hexToRgba theme.background "ee"; }; blur = { enabled = true; size = 3; passes = 1; vibrancy = 0.1696; }; }; animations = { enabled = true; # yes, please :) # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more bezier = [ "easeOutQuint,0.23,1,0.32,1" "easeInOutCubic,0.65,0.05,0.36,1" "linear,0,0,1,1" "almostLinear,0.5,0.5,0.75,1.0" "quick,0.15,0,0.1,1" ]; animation = [ "global, 1, 10, default" "border, 1, 5.39, easeOutQuint" "windows, 1, 4.79, easeOutQuint" "windowsIn, 1, 4.1, easeOutQuint, popin 87%" "windowsOut, 1, 1.49, linear, popin 87%" "fadeIn, 1, 1.73, almostLinear" "fadeOut, 1, 1.46, almostLinear" "fade, 1, 3.03, quick" "layers, 1, 3.81, easeOutQuint" "layersIn, 1, 4, easeOutQuint, fade" "layersOut, 1, 1.5, linear, fade" "fadeLayersIn, 1, 1.79, almostLinear" "fadeLayersOut, 1, 1.39, almostLinear" "workspaces, 0, 0, ease" ]; }; dwindle = { pseudotile = true; preserve_split = true; force_split = 2; }; master = { new_status = "master"; }; misc = { disable_hyprland_logo = true; disable_splash_rendering = true; }; }; }