{ pkgs, ... }:
{
  programs.niri.settings.binds = {
    # spawn terminal
    "Mod+Return".action.spawn = "kitty";
    "Mod+Return".repeat = false;
    "Mod+D".action.spawn = [
      "wofi"
      "-S"
      "drun"
      "--allow-images"
    ];
    "Mod+D".repeat = false;
    "Mod+I".action.spawn = [
      "${pkgs.rofimoji}/bin/rofimoji"
      "--selector"
      "wofi"
      "-f"
      "alchemical_symbols"
      "anatolian_hieroglyphs"
      "emojis"
      "braille_patterns"
      "box_drawing"
      "chess_symbols"
      "emoticons"
      "geometric_shapes"
      "gothic"
      "greek_extended"
      "math"
      "mathematical_alphanumeric_symbols"
      "mathematical_operators"
      "miscellaneous_symbols"
      "miscellaneous_mathematical_symbols-a"
      "miscellaneous_mathematical_symbols-b"
      "miscellaneous_symbols_and_arrows"
      "miscellaneous_symbols_and_pictographs"
      "miscellaneous_technical"
      "modi"
      "modifier_tone_letters"
      "musical_symbols"
      "nerd_font"
      "number_forms"
      "shorthand_format_controls"
      "specials"
      "variation_selectors"
      "vertical_forms"
      "-a"
      "copy"
    ];

    "Mod+Shift+E".action.quit = [ ];
    "Mod+Shift+Q".action.close-window = [ ];
    "Mod+Shift+P".action.power-off-monitors = [ ];

    "Mod+Shift+Ctrl+Slash".action.toggle-keyboard-shortcuts-inhibit = [ ];
    "Mod+Shift+Ctrl+Slash".allow-inhibiting = false;

    "Mod+Shift+Slash".action.show-hotkey-overlay = [ ];

    # window/columns controls
    "Mod+H".action.focus-column-left = [ ];
    "Mod+J".action.focus-window-down = [ ];
    "Mod+K".action.focus-window-up = [ ];
    "Mod+L".action.focus-column-right = [ ];
    "Mod+Ctrl+H".action.move-column-left = [ ];
    "Mod+Ctrl+J".action.move-window-down = [ ];
    "Mod+Ctrl+K".action.move-window-up = [ ];
    "Mod+Ctrl+L".action.move-column-right = [ ];
    "Mod+R".action.switch-preset-column-width = [ ];

    "Mod+V".action.toggle-window-floating = [ ];
    "Mod+Shift+V".action.switch-focus-between-floating-and-tiling = [ ];

    # monitor controls
    "Mod+Shift+H".action.focus-monitor-left = [ ];
    "Mod+Shift+J".action.focus-monitor-down = [ ];
    "Mod+Shift+K".action.focus-monitor-up = [ ];
    "Mod+Shift+L".action.focus-monitor-right = [ ];
    "Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = [ ];
    "Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = [ ];
    "Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = [ ];
    "Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = [ ];

    # workspace controls
    "Mod+P".action.focus-workspace-up = [ ];
    "Mod+N".action.focus-workspace-down = [ ];
    "Mod+Ctrl+P".action.move-column-to-workspace-up = [ ];
    "Mod+Ctrl+N".action.move-column-to-workspace-down = [ ];
    "Mod+1".action.focus-workspace = 1;
    "Mod+2".action.focus-workspace = 2;
    "Mod+3".action.focus-workspace = 3;
    "Mod+4".action.focus-workspace = 4;
    "Mod+5".action.focus-workspace = 5;
    "Mod+6".action.focus-workspace = 6;
    "Mod+7".action.focus-workspace = 7;
    "Mod+8".action.focus-workspace = 8;
    "Mod+9".action.focus-workspace = 9;
    "Mod+Ctrl+1".action.move-column-to-workspace = 1;
    "Mod+Ctrl+2".action.move-column-to-workspace = 2;
    "Mod+Ctrl+3".action.move-column-to-workspace = 3;
    "Mod+Ctrl+4".action.move-column-to-workspace = 4;
    "Mod+Ctrl+5".action.move-column-to-workspace = 5;
    "Mod+Ctrl+6".action.move-column-to-workspace = 6;
    "Mod+Ctrl+7".action.move-column-to-workspace = 7;
    "Mod+Ctrl+8".action.move-column-to-workspace = 8;
    "Mod+Ctrl+9".action.move-column-to-workspace = 9;

    # column editing stuffs
    "Mod+BracketLeft".action.consume-or-expel-window-left = [ ];
    "Mod+BracketRight".action.consume-or-expel-window-right = [ ];
    "Mod+F".action.maximize-column = [ ];
    "Mod+Shift+F".action.expand-column-to-available-width = [ ];
    "Mod+Ctrl+F".action.fullscreen-window = [ ];
    "Mod+C".action.center-column = [ ];
    "Mod+Minus".action.set-column-width = "-5%";
    "Mod+Equal".action.set-column-width = "+5%";
    "Mod+Shift+Minus".action.set-window-height = "-10%";
    "Mod+Shift+Equal".action.set-window-height = "+10%";
    "Mod+W".action.toggle-column-tabbed-display = [ ];

    # media keys
    "XF86AudioRaiseVolume".action.spawn = [
      "wpctl"
      "set-volume"
      "@DEFAULT_AUDIO_SINK@"
      "0.1+"
    ];
    "XF86AudioLowerVolume".action.spawn = [
      "wpctl"
      "set-volume"
      "@DEFAULT_AUDIO_SINK@"
      "0.1-"
    ];
    "XF86AudioMute".action.spawn = [
      "wpctl"
      "set-mute"
      "@DEFAULT_AUDIO_SINK@"
      "toggle"
    ];
    "XF86AudioMicMute".action.spawn = [
      "wpctl"
      "set-mute"
      "@DEFAULT_AUDIO_SOURCE@"
      "toggle"
    ];
    "XF86AudioRaiseVolume".allow-when-locked = true;
    "XF86AudioLowerVolume".allow-when-locked = true;
    "XF86AudioMute".allow-when-locked = true;
    "XF86AudioMicMute".allow-when-locked = true;
  };
}
