# -- Monitors & input defaults (overridable per-host) --
monitor = , preferred, auto, 2.0

device {
    name = apple-spi-keyboard
    kb_options = caps:ctrl_modifier,grp:win_space_toggle
}

# TrackPoint (Corne nipple): hold middle button + move to scroll, joystick-style
device {
    name = corne-tp
    scroll_method = on_button_down
    scroll_button = 274            # BTN_MIDDLE
    scroll_button_lock = false     # set true to toggle scroll on/off with a tap instead of holding
}

input {
    kb_layout = us,dk
    kb_options = grp:win_space_toggle
    follow_mouse = 1
    repeat_rate = 50
    repeat_delay = 300
    accel_profile = custom
    scroll_points = 0.5 1.0 1.5 2.0 2.5
    touchpad {
        natural_scroll = true
        scroll_factor = 0.9
        tap-to-click = false
        disable_while_typing = true
    }
}

general {
    gaps_in = 0
    gaps_out = 0
    border_size = 0
    layout = dwindle
}

animations {
    enabled = false
}

dwindle {
    preserve_split = true
    force_split = 2
}

misc {
    disable_hyprland_logo = true
    disable_splash_rendering = true
    focus_on_activate = true
}

ecosystem {
    no_update_news = true
    no_donation_nag = true
}


# -- Environment --
env = XCURSOR_THEME,Bibata-Modern-Classic
env = XCURSOR_SIZE,24
env = QT_QPA_PLATFORMTHEME,qt6ct
env = QT_STYLE_OVERRIDE,Adwaita-Dark
env = XDG_SCREENSHOTS_DIR,$HOME/Pictures/Screenshots

# -- Autostart --
exec-once = swaybg -c '#16181a'
exec-once = GDK_BACKEND=wayland eww daemon
exec-once = systemctl --user start hyprpolkitagent
exec-once = hypridle
exec-once = hyprctl setcursor Bibata-Modern-Classic 24

# -- Core --
bind = SUPER, Return, exec, kitty
bind = SUPER, D, exec, fuzzel
bind  = SUPER, B, exec, eww open battery-popup
bindr = SUPER, B, exec, eww close battery-popup
bind = SUPER, Q, killactive
bind = SUPER, F, fullscreen, 1
bind = SUPER SHIFT, Space, togglefloating
bind = CTRL, L, exec, hyprlock

# -- Focus --
bind = SUPER, h, movefocus, l
bind = SUPER, j, movefocus, d
bind = SUPER, k, movefocus, u
bind = SUPER, l, movefocus, r

# -- Move windows --
bind = SUPER SHIFT, h, movewindow, l
bind = SUPER SHIFT, j, movewindow, d
bind = SUPER SHIFT, k, movewindow, u
bind = SUPER SHIFT, l, movewindow, r

# -- Workspaces --
bind = SUPER, 1, workspace, 1
bind = SUPER, 2, workspace, 2
bind = SUPER, 3, workspace, 3
bind = SUPER, 4, workspace, 4
bind = SUPER, 5, workspace, 5

bind = SUPER SHIFT, 1, movetoworkspace, 1
bind = SUPER SHIFT, 2, movetoworkspace, 2
bind = SUPER SHIFT, 3, movetoworkspace, 3
bind = SUPER SHIFT, 4, movetoworkspace, 4
bind = SUPER SHIFT, 5, movetoworkspace, 5

# -- Move current workspace to another monitor --
bind = SUPER ALT, h, movecurrentworkspacetomonitor, l
bind = SUPER ALT, l, movecurrentworkspacetomonitor, r

# -- Resize (hold for repeat) --
binde = SUPER CTRL, h, resizeactive, -40 0
binde = SUPER CTRL, j, resizeactive, 0 40
binde = SUPER CTRL, k, resizeactive, 0 -40
binde = SUPER CTRL, l, resizeactive, 40 0

# -- Mouse --
bindm = SUPER, mouse:272, movewindow
bindm = SUPER, mouse:273, resizewindow

# -- Audio (bindel: locked + repeat; bindl: locked, no repeat) --
bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+
bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindl  = , XF86AudioMute,        exec, wpctl set-mute   @DEFAULT_AUDIO_SINK@ toggle
bindl  = , XF86AudioMicMute,     exec, wpctl set-mute   @DEFAULT_AUDIO_SOURCE@ toggle

# -- Brightness --
bindel = , XF86MonBrightnessUp,   exec, brightnessctl set 5%+
bindel = , XF86MonBrightnessDown, exec, brightnessctl set 5%-

# -- Media --
bindl = , XF86AudioPlay,  exec, playerctl play-pause
bindl = , XF86AudioNext,  exec, playerctl next
bindl = , XF86AudioPrev,  exec, playerctl previous

# -- Screenshots --
# Super+S: region -> clipboard
bind = SUPER, S, exec, grimblast --notify copy area
# Super+Ctrl+S: full screen -> file + clipboard
bind = SUPER CTRL, S, exec, grimblast --notify copysave screen
# Super+Shift+S: region -> file + clipboard + open in GIMP
bind = SUPER SHIFT, S, exec, bash -c 'mkdir -p "$HOME/Pictures/Screenshots"; f="$HOME/Pictures/Screenshots/$(date +%Y-%m-%dT%H-%M-%S).png"; grimblast --notify --freeze save area "$f" && wl-copy --type image/png < "$f" && gimp "$f"'

