# General Hyprland configuration for dots-hyprland

# MONITOR CONFIG
@MONITOR_CONFIG@

# Gestures
gestures {
    workspace_swipe = @WORKSPACE_SWIPE@
    workspace_swipe_distance = 700
    workspace_swipe_fingers = 3
    workspace_swipe_min_fingers = true
    workspace_swipe_cancel_ratio = 0.2
    workspace_swipe_min_speed_to_force = 5
    workspace_swipe_direction_lock = true
    workspace_swipe_direction_lock_threshold = 10
    workspace_swipe_create_new = true
}

general {
    # Gaps and border
    gaps_in = @GAPS_IN@
    gaps_out = @GAPS_OUT@
    gaps_workspaces = 50
    
    border_size = @BORDER_SIZE@
    col.active_border = @ACTIVE_BORDER_COLOR@
    col.inactive_border = @INACTIVE_BORDER_COLOR@
    resize_on_border = true

    no_focus_fallback = true
    
    allow_tearing = @ALLOW_TEARING@
    
    snap {
        enabled = true
    }
}

dwindle {
    preserve_split = true
    smart_split = false
    smart_resizing = false
}

decoration {
    rounding = @ROUNDING@
    
    blur {
        enabled = @BLUR_ENABLED@
        xray = true
        special = false
        new_optimizations = true
        size = @BLUR_SIZE@
        passes = @BLUR_PASSES@
        brightness = 1
        noise = 0.01
        contrast = 1
        popups = true
        popups_ignorealpha = 0.6
        input_methods = true
        input_methods_ignorealpha = 0.8
    }
    
    shadow {
        enabled = @SHADOW_ENABLED@
        ignore_window = true
        range = 30
        offset = 0 2
        render_power = 4
        color = @SHADOW_COLOR@
    }
    
    # Dim
    dim_inactive = @DIM_INACTIVE@
    dim_strength = 0.025
    dim_special = 0.07
}

animations {
    enabled = @ANIMATIONS_ENABLED@
    # Material Design curves
    bezier = emphasizedDecel, 0.05, 0.7, 0.1, 1
    bezier = emphasizedAccel, 0.3, 0, 0.8, 0.15
    bezier = standardDecel, 0, 0, 0, 1
    bezier = menu_decel, 0.1, 1, 0, 1
    bezier = menu_accel, 0.52, 0.03, 0.72, 0.08
    
    # Window animations
    animation = windowsIn, 1, 3, emphasizedDecel, popin 80%
    animation = windowsOut, 1, 2, emphasizedDecel, popin 90%
    animation = windowsMove, 1, 3, emphasizedDecel, slide
    animation = border, 1, 10, emphasizedDecel
    
    # Layer animations
    animation = layersIn, 1, 2.7, emphasizedDecel, popin 93%
    animation = layersOut, 1, 2.4, menu_accel, popin 94%
    animation = fadeLayersIn, 1, 0.5, menu_decel
    animation = fadeLayersOut, 1, 2.7, menu_accel
    
    # Workspace animations
    animation = workspaces, 1, 7, menu_decel, slide
    animation = specialWorkspaceIn, 1, 2.8, emphasizedDecel, slidevert
    animation = specialWorkspaceOut, 1, 1.2, emphasizedAccel, slidevert
}

input {
    kb_layout = @KEYBOARD_LAYOUT@
    numlock_by_default = true
    repeat_delay = 250
    repeat_rate = 35
    
    follow_mouse = 1
    off_window_axis_events = 2

    touchpad {
        natural_scroll = @NATURAL_SCROLL@
        disable_while_typing = true
        clickfinger_behavior = true
        scroll_factor = 0.5
    }
}

misc {
    disable_hyprland_logo = true
    disable_splash_rendering = true
    vfr = 1
    vrr = @VRR_ENABLED@
    mouse_move_enables_dpms = true
    key_press_enables_dpms = true
    animate_manual_resizes = false
    animate_mouse_windowdragging = false
    enable_swallow = @WINDOW_SWALLOW@
    swallow_regex = (foot|kitty|alacritty|Alacritty)
    new_window_takes_over_fullscreen = 2
    allow_session_lock_restore = true
    session_lock_xray = true
    initial_workspace_tracking = false
    focus_on_activate = true
}

binds {
    scroll_event_delay = 0
    hide_special_on_workspace_change = true
}

cursor {
    zoom_factor = 1
    zoom_rigid = false
}

# Overview plugin
plugin {
    hyprexpo {
        columns = 3
        gap_size = 5
        bg_col = @OVERVIEW_BG_COLOR@
        workspace_method = first 1

        enable_gesture = @OVERVIEW_GESTURE@
        gesture_distance = 300
        gesture_positive = false
    }
}
