{ config, pkgs, lib, ... }:
let
  cfg = config.luj.programs.sway;
  modifier = "Mod4";
  terminal = "alacritty";
in
with lib;
{
  options.luj.programs.sway = {
    enable = mkEnableOption "Enable SwayWM";
  };

  config = mkIf cfg.enable {
    wayland.windowManager.sway = {
      enable = true;
      config = {
        terminal = terminal;
        modifier = modifier;
        input = {
          "*" = {
            xkb_layout = "fr";
            xkb_variant = "mac";
          };
        };

        gaps = {
          right = 2;
          left = 2;
          top = 2;
          bottom = 2;
          inner = 7;
        };

        keybindings = lib.mkOptionDefault {
          "${modifier}+ampersand" = "workspace 1";
          "${modifier}+eacute" = "workspace 2";
          "${modifier}+quotedbl" = "workspace 3";
          "${modifier}+apostrophe" = "workspace 4";
          "${modifier}+parenleft" = "workspace 5";
          "${modifier}+egrave" = "workspace 6";
          "${modifier}+minus" = "workspace 7";
          "${modifier}+underscore" = "workspace 8";
          "${modifier}+ccedilla" = "workspace 9";
          "${modifier}+agrave" = "workspace 10";

          "${modifier}+Shift+ampersand" = "move container to workspace 1";
          "${modifier}+Shift+eacute" = "move container to workspace 2";
          "${modifier}+Shift+quotedbl" = "move container to workspace 3";
          "${modifier}+Shift+apostrophe" = "move container to workspace 4";
          "${modifier}+Shift+parenleft" = "move container to workspace 5";
          "${modifier}+Shift+egrave" = "move container to workspace 6";
          "${modifier}+Shift+minus" = "move container to workspace 7";
          "${modifier}+Shift+underscore" = "move container to workspace 8";
          "${modifier}+Shift+ccedilla" = "move container to workspace 9";
          "${modifier}+Shift+agrave" = "move container to workspace 10";

          "${modifier}+h" = "focus left";
          "${modifier}+j" = "focus down";
          "${modifier}+k" = "focus up";
          "${modifier}+l" = "focus right";

          "${modifier}+Shift+h" = "move left";
          "${modifier}+Shift+j" = "move down";
          "${modifier}+Shift+k" = "move up";
          "${modifier}+Shift+l" = "move right";


          "${modifier}+q" = "kill";
          "${modifier}+space" = "exec rofi -show run";
          "${modifier}+Return" = "exec ${terminal}";
          "${modifier}+f" = "fullscreen toggle";

          "XF86MonBrightnessUp" = "exec brightnessctl s +10";
          "XF86MonBrightnessDown" = "exec brightnessctl s 10-";
        };
      };
      extraConfig = ''
        exec_always nm-applet --indicator
      '';

    };

    services.swayidle.enable = true;
    programs.waybar.enable = true;


  };
}