#####################
### LOOK AND FEEL ###
#####################

# Refer to https://wiki.hyprland.org/Configuring/Variables/

$active_color = rgba(98C1D9FF)
$inactive_color = rgba(595959aa)

# https://wiki.hyprland.org/Configuring/Variables/#general
general {
    gaps_in = 1
    gaps_out = 0

    border_size = 1

    # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
    col.active_border = $active_color
    col.inactive_border = $inactive_color

    # Resizing windows by clicking and dragging on borders and gaps
    resize_on_border = true

    # 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 = 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)
    }

    # https://wiki.hyprland.org/Configuring/Variables/#blur
    blur {
        enabled = true
        size = 6
        passes = 3

        vibrancy = 0.1696
    }

}

# Apply blur to waybar
layerrule = blur,waybar


# https://wiki.hyprland.org/Configuring/Variables/#animations
animations {
    enabled = yes, please :)

    # See https://wiki.hyprland.org/Configuring/Animations/ for more

    # Bezier curves
    bezier = easeOutQuint,0.23,1,0.32,1
    bezier = easeInOutCubic,0.65,0.05,0.36,1
    bezier = linear,0,0,1,1
    bezier = almostLinear,0.5,0.5,0.75,1.0
    bezier = quick,0.15,0,0.1,1

    bezier = easeInOutExpo,0.87,0,0.13,1

    # Animations
    animation = global, 1, 10, default
    animation = border, 1, 5.39, easeOutQuint

    animation = windows, 1, 3.79, easeOutQuint
    animation = windowsIn, 1, 3.1, easeOutQuint, popin 87%
    animation = windowsOut, 1, 1.49, linear, popin 87%

    animation = fadeIn, 1, 1.73, almostLinear
    animation = fadeOut, 1, 1.46, almostLinear
    animation = fade, 1, 3.03, quick

    animation = layers, 1, 3.81, easeOutQuint
    animation = layersIn, 1, 4, easeOutQuint, fade
    animation = layersOut, 1, 1.5, linear, fade
    animation = fadeLayersIn, 1, 1.79, almostLinear
    animation = fadeLayersOut, 1, 1.39, almostLinear

    animation = workspaces, 1, 1.94, almostLinear, fade
    animation = workspacesIn, 1, 3, easeOutQuint, slide
    animation = workspacesOut, 1, 3, easeOutQuint, slide

    #animation = workspacesIn, 1, 3, easeOutQuint, slidefade
    #animation = workspacesOut, 1, 5, easeOutQuint, slidefade
}

# 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
# windowrulev2 = bordersize 0, floating:0, onworkspace:w[tv1]
# windowrulev2 = rounding 0, floating:0, onworkspace:w[tv1]
# windowrulev2 = bordersize 0, floating:0, onworkspace:f[1]
# windowrulev2 = 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
}

# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
master {
    new_status = master
}

# https://wiki.hyprland.org/Configuring/Variables/#misc
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
    vfr = true # Lower sent frames when idle
}


##############################
### WINDOWS AND WORKSPACES ###
##############################

# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules

# Example windowrule v1
# windowrule = float, ^(kitty)$

# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$

# Ignore maximize requests from apps. You'll probably like this.
windowrule = suppressevent maximize, class:.*

# Fix some dragging issues with XWayland
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0

# Albert
windowrule=noborder,class:^(albert)$
windowrule=noblur,class:^(albert)$
windowrule=noshadow,class:^(albert)$
windowrule=float,class:^(albert)$
windowrule=stayfocused,class:^(albert)$
windowrule=nodim,class:^(albert)$

# Prism Launcher
windowrule=pseudo, class:(org.prismlauncher.PrismLauncher) 
windowrule=size 65% 70%, class:(org.prismlauncher.PrismLauncher), title:^(Prism Launcher .*)$

# TODO Automatically fullscreen single apps
# - Seems impossible for now (try mixing with workspace rules)

# Increase gaps for single apps
workspace=w[t1], gapsout:2 
