# This is an example Hyprland config file.
# Refer to the wiki for more information.
# https://wiki.hyprland.org/Configuring/

# Please note not all available settings / options are set here.
# For a full list, see the wiki

# You can split this configuration into multiple files
# Create your files separately and then link them to this file like this:
# source = ~/.config/hypr/myColors.conf

################
### MONITORS ###
################

# See https://wiki.hyprland.org/Configuring/Monitors/
# monitor=DP-1,2560x1440@144,0x0,1
# monitor=DP-3,2560x1440@144,2560x0,1
# vrr 2 enables vrr if application is fullscreen
# vrr 3 enables vrr if application is fullscreen and video or game content
# monitor = DP-1, 3440x1440@240,0x0,1,vrr,3
monitorv2 {
    output = DP-1
    mode = 3440x1440@240
    position = 0x0
    scale = 1
    vrr = 2
    # cm = srgb
    # Optional HDR settings
    cm = hdr
    bitdepth = 10
    sdr_min_luminance = 0.005
    sdr_max_luminance = 200
    min_luminance = 0
    max_luminance = 1000
    max_avg_luminance = 200
    sdrbrightness = 1.0
    sdrsaturation = 0.98
}

source = ~/.config/hypr/keybindings.conf
source = ~/.config/hypr/windowrules.conf
source = ~/.config/hypr/macchiato.conf

# unscale XWayland
xwayland {
  force_zero_scaling = true
}

###################
### MY PROGRAMS ###
###################

# See https://wiki.hyprland.org/Configuring/Keywords/

# Set programs that you use
$terminal = uwsm app -- ghostty +new-window
$fileManager = uwsm app -- thunar
$menu = rofi -show drun -run-command "uwsm app -- {cmd}"
# $notification_daemon = dunst
$notification_daemon = uwsm app -- swaync -c ~/.config/swaync/config.json


#################
### AUTOSTART ###
#################

# Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this:

exec-once = uwsm app -sb -- hyprpm update -n
exec-once = uwsm app -sb -- hyprpm reload -n
exec-once = $notification_daemon
exec-once = $terminal
exec-once = uwsm app -sb -S both -t scope -- hyprpm update -n
exec-once = uwsm app -sb -S both -t scope -- hyprpm reload -n
exec-once = uwsm app -sb -t service -- nm-applet
exec-once = uwsm app -sb -t service -- waybar -c ~/.config/waybar/catppuccin-macchiato/config.jsonc -s ~/.config/waybar/catppuccin-macchiato/style.css
exec-once = uwsm app -sb -t service -- /usr/lib/polkit-kde-authentication-agent-1
exec-once = uwsm app -sb -t service -- gnome-keyring-daemon --start --components=secrets,ssh,pkcs11
exec-once = uwsm app -sb -t service -- tailscale systray
exec-once = ~/.local/bin/aria
# exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP


#############################
### ENVIRONMENT VARIABLES ###
#############################

# See https://wiki.hyprland.org/Configuring/Environment-variables/

# env = XCURSOR_SIZE,24
# env = HYPRCURSOR_SIZE,24
# done in ../uswm/env and ../uswm/env-hyprland


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

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

# https://wiki.hyprland.org/Configuring/Variables/#general
general {
    gaps_in = 5
    gaps_out = 8

    border_size = 2

    # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
    # col.active_border = rgba($blueAlphaee) rgba($mauveAlphaee) 45deg
    col.active_border = rgba($mauveAlphaee) 45deg
    col.inactive_border = rgba($overlay0Alphaaa)

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

# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
    rounding = 10
    rounding_power = 2

    # Change transparency of focused and unfocused windows
    active_opacity = 0.88
    # active_opacity = 1.0
    inactive_opacity = 0.88
    # inactive_opacity = 1.0

    shadow {
        enabled = true
        range = 4
        render_power = 3
        color = rgba($surface0Alphaee)
    }

    # https://wiki.hyprland.org/Configuring/Variables/#blur
    blur {
        enabled = true
        size = 7
        passes = 2
        xray = true

        vibrancy = 0.1696
    }
}

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

    # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
    # slide, slidevert, fade, slidefade, slidefadevert

    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

    animation = global, 1, 10, default
    animation = border, 1, 5.39, easeOutQuint
    animation = windows, 1, 4.79, easeOutQuint
    # animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
    # animation = windowsOut, 1, 1.49, linear, popin 87%
    animation = windowsIn, 1, 4.1, easeOutQuint, slide
    animation = windowsOut, 1, 1.49, linear, slide
    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, slidefade
    animation = workspacesIn, 1, 1.21, almostLinear, slidefade
    animation = workspacesOut, 1, 1.94, almostLinear, 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

# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle {
    pseudotile = false # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
    preserve_split = true
    split_width_multiplier = 1.69
}

scrolling {
    fullscreen_on_one_column = true
}

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

# https://wiki.hyprland.org/Configuring/Variables/#misc
misc {
    force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
    disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
}


#############
### INPUT ###
#############

# https://wiki.hyprland.org/Configuring/Variables/#input
input {
    kb_layout = us
    kb_variant =
    kb_model = pc86
    kb_options = caps:escape_shifted_capslock
    kb_rules =

    follow_mouse = 1

    sensitivity = 0 # -1.0 - 1.0, 0 means no modification.

    touchpad {
        natural_scroll = false
    }
}

# https://wiki.hyprland.org/Configuring/Variables/#gestures
gestures {
    # workspace_swipe = false
}

# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
device {
    name = epic-mouse-v1
    sensitivity = -0.5
}

render {
    # explicit_sync = true
}

misc {
    font_family = Manrope ExtraLight Medium, JetBrainsMono Nerd Font, M PLUS 1
}

# {{{ WORKSPACES - HANDLED IN WAYBAR CONFIG
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# workspace = name:,monitor:DP-1
# workspace = 2,monitor:DP-1,defaultName:
# workspace = 2,monitor:DP-1,persistent:false
# workspace = 3,monitor:DP-1,persistent:false
# workspace = 4,monitor:DP-1,persistent:false
# workspace = 5,monitor:DP-1,persistent:false
# workspace = 6,monitor:DP-3,persistent:false,default:true
# workspace = 7,monitor:DP-3,persistent:false
# workspace = 8,monitor:DP-3,persistent:false
# workspace = 9,monitor:DP-3,persistent:false
# workspace = 10,monitor:DP-3,persistent:false
# }}}

# windowrule = match:class my-window, border_size 10

debug {
    disable_logs = true
    enable_stdout_logs = false
}


layerrule {
    name = fix-rofi
    match:namespace = rofi
    no_anim = true
}
