# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=,highrr,auto,1.5,bitdepth,10
monitor=HDMI-A-1,3840x2160,auto,2,bitdepth,10

$hypr_dir="$HOME/.config/hypr"
$accent=6FAAFF
$browser=google-chrome-stable
#$browser=firefox

#envs
env = BROWSER,$browser
env = EDITOR,nvim
env = GDK_BACKEND,wayland,x11
env = GDK_SCALE,2 #xwayland fractional scaling
env = GTK_THEME,Materia-dark
env = GLOBAL_ACCENT,$accent
env = IMAGE,nsxiv
env = LIBSEAT_BACKEND,logind
env = MOZ_ENABLE_WAYLAND,1
env = OPENER,xdg-open
env = QT_QPA_PLATFORMTHEME,qt5ct
env = QT_QPA_PLATFORM,wayland
env = SDL_VIDEODRIVER,wayland
env = TERMINAL,foot
env = VIDEO,mpv
env = VISUAL,nvim
env = WLR_NO_HARDWARE_CURSORS,1
env = WM,hyprland
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland

# See https://wiki.hyprland.org/Configuring/Keywords/ for more
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
    kb_layout = us
    kb_variant =
    kb_model =
    kb_options =
    kb_rules =

    follow_mouse = 1

    touchpad {
        natural_scroll = yes
    }

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

general {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more

    gaps_in = 2
    gaps_out = 4
    border_size = 3
    col.active_border = rgb($accent)
    col.inactive_border = rgba(484848aa)
    resize_on_border=false

    layout = dwindle
}

decoration {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more

    rounding = 10
    drop_shadow = yes
    shadow_range = 4
    shadow_render_power = 3
    col.shadow = rgba(1a1a1aee)
    blur {
    	enabled = yes
	size = 8
	passes = 2
    }
}

animations {
    enabled = yes

    # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more

    bezier = myBezier, 0.05, 0.9, 0.1, 1.05

    animation = windows, 1, 7, myBezier
    animation = windowsOut, 1, 7, default, popin 80%
    animation = border, 1, 10, default
    animation = fade, 1, 7, default
    animation = workspaces, 1, 6, default
}


dwindle {
    # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
    pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
    preserve_split = yes # you probably want this
    force_split=2
}

gestures {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more
    workspace_swipe = true
    workspace_swipe_fingers = 3
}

misc {
    force_default_wallpaper = 0
    vfr = 1
    vrr = 2
}

xwayland {
  force_zero_scaling = false
}

# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER

# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, W, killactive, 
bind = $mainMod, M, fullscreen, 
bind = $mainMod, F, togglefloating, 
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle

# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
bind = $mainMod,Tab,cyclenext,
bind = $mainMod,Tab,bringactivetotop,

# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 49, togglespecialworkspace
#bind = $mainMod, 49,exec,hyprctl dispatch $(head -1 /tmp/workprev)

# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, up, movewindow, u
bind = $mainMod SHIFT, down, movewindow, d
bind = $mainMod SHIFT, left, movewindow, l
bind = $mainMod SHIFT, right, movewindow, r
bind = $mainMod SHIFT, 49, movetoworkspace, special

# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1

# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow

#applications shortcuts
bind = $mainMod, F4, exec, $HOME/repos_scripts/ani-new
bind = $mainMod, F5, exec, $hypr_dir/wifi
bind = $mainMod, return, exec, [workspace 2] foot
bind = $mainMod, Q, exec, $hypr_dir/dmenu_run_history
bind = $mainMod, G, exec, $hypr_dir/rungame
bind = $mainMod, SPACE, exec, $hypr_dir/bemoji
bind = $mainMod, A, exec, [workspace 1] $browser
bind = $mainMod, C, exec, [workspace 3] code
bind = $mainMod, E, exec, [workspace 3] pcmanfm
bind = $mainMod, B, exec, $hypr_dir/bkmark "add"
bind = $mainMod, I, exec, $hypr_dir/bkmark
bind = $mainMod SHIFT, I, exec, $hypr_dir/bkmark "copy"
bind = $mainMod SHIFT, B, exec, $hypr_dir/bkmark "rm"
bind = $mainMod SHIFT, L, exit,
bind = $mainMod, F11, exec, $hypr_dir/info
#bind = $mainMod, F10, exec, $hypr_dir/bluetooth
bind = $mainMod, F6, exec, $hypr_dir/workspace
bind = $mainMod SHIFT, F6, exec, $hypr_dir/workspace "toggle"
bind = $mainMod, F1, exec, $hypr_dir/screenshot 'selclip'
bind = $mainMod SHIFT, F1, exec, $hypr_dir/screenshot 'fullclip'
bind = ,Print, exec, $hypr_dir/screenshot 'fullsave'
bind = $mainMod, F12, exec, $hypr_dir/date
bind = $mainMod, Delete, exec, $hypr_dir/workspace 'list'

#media keys
binde=, XF86AudioLowerVolume, exec, pamixer --set-limit 140 --allow-boost -d 2 && $hypr_dir/volume
binde=, XF86AudioRaiseVolume, exec, pamixer --set-limit 140 --allow-boost -i 2 && $hypr_dir/volume
binde=, XF86AudioMute, exec, pamixer --set-limit 140 --allow-boost -t && $hypr_dir/volume
binde=, XF86AudioPlay, exec, echo cycle pause | socat - "/tmp/yt-music/yt-music-mpvsocket"
binde=, XF86AudioPause, exec, echo cycle pause | socat - "/tmp/yt-music/yt-music-mpvsocket"
binde=, XF86Launch2, exec, $HOME/repos_scripts/yt-music search_play #why not :)
binde=, XF86AudioNext, exec, $HOME/repos_scripts/yt-music play_next
binde=, XF86AudioPrev, exec, $HOME/repos_scripts/yt-music play_next menu
binde=, XF86MonBrightnessUp, exec, $hypr_dir/brightness '+'
binde=, XF86MonBrightnessDown, exec, $hypr_dir/brightness '-'

#windows rules
windowrulev2=workspace 1,class:^(google-chrome)$
windowrulev2=workspace 1,class:^(firefox)$
windowrulev2=workspace 4,class:^(Google-chrome)$
windowrulev2=workspace 3,class:^(mpv)$
windowrulev2=workspace 3,class:^([c|C]ode)
windowrulev2=workspace 4,class:^(pavucontrol)$
windowrulev2=workspace 4,class:^(org.freedesktop.Xwayland)$
windowrulev2=fullscreen,class:^(org.freedesktop.Xwayland)$
windowrulev2=workspace 4,class:^(virt-manager)$
windowrulev2=bordercolor rgba(64f2a4FF), xwayland: 1

#workspace rules
#workspace = 1, on-created-empty:-chrome-stable
workspace = 1, on-created-empty:$browser
workspace = 2, on-created-empty:foot
workspace = special, on-created-empty:[float] foot

#startup applications
exec-once=dbus-update-activation-environment --systemd --all
exec-once=ssh-agent
exec-once=/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once=node $HOME/github/arrpc/src > /tmp/arrpc-log
exec-once=swaybg -i $HOME/.config/wall/3.png -m fill
exec-once=sleep 5 && xrdb -merge $HOME/.config/.Xresource
exec-once=$hypr_dir/workspace 'focus'
exec-once=$hypr_dir/battery
#exec-once=sleep 2 && $hypr_dir/workspace
