{pkgs, ...}: {
  # TODO: implement a way to show binds, preferably use vicinae.
  wayland.windowManager.hyprland.settings = {
    binds = {
      workspace_back_and_forth = true;
    };
    bindel = [
      ", XF86MonBrightnessUp, exec, ddcutil setvcp 10 + 10"
      ", XF86MonBrightnessDown, exec, ddcutil setvcp 10 - 10"
    ];
    bindm = [
      "SUPER, mouse:272, movewindow"
      "SUPER, mouse:273, resizewindow"
    ];

    bindd =
      [
        # essential
        "SUPER, Return, Open Terminal, exec, uwsm app -- xdg-terminal-exec"
        "SUPER, Q, Kill active, killactive"

        # resize
        "SUPER CTRL, H, Resize Left, resizeactive, -40 0"
        "SUPER CTRL, J, Resize Down, resizeactive, 0 40"
        "SUPER CTRL, K, Resize Up, resizeactive, 0 -40"
        "SUPER CTRL, L, Resize Right, resizeactive, 40 0"

        # move focus
        "SUPER, J, Move focus down, movefocus, d"
        "SUPER, K, Move focus up, movefocus, u"
        "SUPER, H, Move focus left, movefocus, l"
        "SUPER, L, Move focus right, movefocus, r"
        "SUPER, G, Switch Focus (Float/Tile), exec, hakase-focus-switch"

        # move window
        "SUPER SHIFT, h, Move window left, movewindow, l"
        "SUPER SHIFT, j, Move window down, movewindow, d"
        "SUPER SHIFT, k, Move window up, movewindow, u"
        "SUPER SHIFT, l, Move window right, movewindow, r"

        # fullscreen
        "SUPER, F, Toggle Fullscreen, fullscreen, 0"
        "SUPER SHIFT, F, Toggle Maximized Fullscreen, fullscreen, 1"

        # layout
        "SUPER, O, Toggle Split, layoutmsg, togglesplit"

        # apps
        # "SUPER, SPACE, Open App Launcher, exec, nc -U $XDG_RUNTIME_DIR/walker/walker.sock"

        # TODO:
        # add screen recording

        # Special workspace
        "SUPER, U, Toggle Special Workspace, togglespecialworkspace, custom"
        "SUPER SHIFT, U, Move to Special Workspace, movetoworkspace, special:custom"

        # [Workspaces] Toggle between most recent workspaces
        "SUPER, Tab, Cycle workspaces, workspace, previous"

        # [Workspaces] Move to another workspace
        "CTRL SHIFT, H, Move to previous workspace, split:workspace, -1"
        "CTRL SHIFT, L, Move to next workspace, split:workspace, +1"
        "CTRL SHIFT, K, Move to previous workspace, split:workspace, -1"
        "CTRL SHIFT, J, Move to next workspace, split:workspace, +1"

        # hyprspace - workspace overview
        # "SUPER, E, Toggle Workspace Overview, overview:toggle"
      ]
      ++ (
        # Generate binds for Super + [1-5] to switch workspaces with special workspace toggle support
        # and Super + Shift + [1-5] to move window to workspace on current monitor
        builtins.concatLists (builtins.genList (
            i: let
              ws = i + 1;
              key = toString ws;
            in [
              "SUPER, ${key}, Switch to workspace ${toString ws}, exec, workspace-toggle ${toString ws}"
              "SUPER SHIFT, ${key}, Move window to workspace ${toString ws}, split:movetoworkspace, ${toString ws}"
            ]
          )
          5)
      );
  };
}
