# Take note not everything here is complete as the
# workflow module will also generated dynamic
# configuration for certain settings such as the
# keybindings related to the chosen terminal emulator.
decoration {
  dim_inactive = true
  dim_strength = 0.66
}

animations {
  enabled = true

  bezier = ease, .84, .91, .69, 1.04

  animation = windows, 1, 2, ease, slide
  animation = workspaces, 1, 1, ease, slide
  animation = fadeDim, 0, 0.5, ease
}

input {
  touchpad {
    disable_while_typing = false
    scroll_factor = 1.1
    middle_button_emulation = true
    tap-to-click = true
  }
}

gestures {
  workspace_swipe = true
  workspace_swipe_fingers = 3
  workspace_swipe_invert = false
}

misc {
  disable_hyprland_logo = true
  animate_manual_resizes = true
  animate_mouse_windowdragging = true

  # We're going to force using this configuration
  # anyways so...
  disable_autoreload = true
}

binds {
  allow_workspace_cycles = true
}

$mainMod = SUPER

# Windows management.
bind = $mainMod, q, killactive
bind = $mainMod, y, togglefloating
bind = $mainMod, f, fullscreen
bind = $mainMod SHIFT, f, pin

# Mouse bindings for window management.
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow

# Workspace-related movements.
# With Vim keybindings.
bind = $mainMod, l, movefocus, r
bind = $mainMod, h, movefocus, l
bind = $mainMod, j, movefocus, u
bind = $mainMod, k, movefocus, d

bind = $mainMod, Right, movefocus, r
bind = $mainMod, Left, movefocus, l
bind = $mainMod, Up, movefocus, u
bind = $mainMod, Down, movefocus, d

bind = $mainMod, Tab, focuscurrentorlast
bind = $mainMod, grave, cyclenext
bind = $mainMod SHIFT, grave, cyclenext

# Workspace management.
bind = $mainMod CTRL, l, workspace, +1
bind = $mainMod CTRL, h, workspace, -1
bind = $mainMod, 0, workspace, empty

bind = $mainMod SHIFT, l, movetoworkspace, +1
bind = $mainMod SHIFT, h, movetoworkspace, -1

# Applications.
bind = $mainMod, Return, exec, wezterm