{ 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 = { # Refer to https://wiki.hyprland.org/Configuring/Variables/ # https://wiki.hyprland.org/Configuring/Variables/#general general = { gaps_in = 5; gaps_out = 10; border_size = 2; # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors "col.active_border" = activeBorder; "col.inactive_border" = hexToRgba theme.surface_variant "aa"; # Set to true enable resizing windows by clicking and dragging on borders and gaps resize_on_border = false; # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on allow_tearing = false; layout = "dwindle"; }; # https://wiki.hyprland.org/Configuring/Variables/#decoration decoration = { rounding = 0; shadow = { enabled = true; range = 2; render_power = 3; color = hexToRgba theme.background "ee"; }; # https://wiki.hyprland.org/Configuring/Variables/#blur blur = { enabled = true; size = 3; passes = 1; vibrancy = 0.1696; }; }; # https://wiki.hyprland.org/Configuring/Variables/#animations 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" ]; }; # Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/ # "Smart gaps" / "No gaps when only" # uncomment all if you wish to use that. # 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] # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more dwindle = { pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below preserve_split = true; # You probably want this force_split = 2; # Always split on the right }; # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more master = { new_status = "master"; }; # https://wiki.hyprland.org/Configuring/Variables/#misc misc = { disable_hyprland_logo = true; disable_splash_rendering = true; }; }; }