{ pkgs, config, lib, ... }: {
  # xsession.enable = true; # Хз надо ли
  xsession.windowManager.bspwm = {
    enable = true;
    # alwaysResetDesktops = false;

    # Как я понял, эти команды выполняются в начале bspwmrc
    # Ниже настройки для основного монитора. Мб вместе с --primary надо
    # И настройки для второго (правого) монитора
    extraConfigEarly = ''
      xrandr --output DisplayPort-2 --mode 2560x1440 --rate 144 --primary
      xrandr --output DisplayPort-0 --mode 2560x1440 --rate 144 --left-of DisplayPort-2
    '';

    # Эти команды выполняются в конце bspwmrc
    extraConfig = ''
    polybar --reload bspwm &
    polybar --reload tray &
      # for m in $(polybar --list-monitors | cut -d":" -f1); do
      #     MONITOR=$m polybar --reload bottom &
      # done
    '';

    startupPrograms = [
      # "lxqt-policykit-agent" # Заменил на гномовский
      "sxhkd"
      "nm-applet"
      "ksnip"
      # "nekoray"
      "obsidian"
      "planify"
      # "spice-vdagent" # Для виртуалки
      "discord"
      "firefox"
      "librewolf"
    ];


    monitors = let
      workspaces = [ "1" "2" "3" "4" "5" "6" "7" "8" "9" "10"];
    in {
      "^1" = workspaces;
      "^2" = workspaces;
    };

    rules = let # Это переменные
      floating1600x900 = {
        state = "floating";
        center = true;
        focus = true;
        rectangle = "1600x900+0+0";
      };
      floating1200x800 = {
        state = "floating";
        center = true;
        focus = true;
        rectangle = "1200x800+0+0";
      };
      floating900x600 = {
        state = "floating";
        center = true;
        focus = true;
        rectangle = "900x600+0+0";
      };
      floating = {
        state = "floating";
      };
    in { # А тут правила окон
      "Screenkey" = { manage = false; };
      "gcolor3" = floating;
      "obs" = floating;
      "steam" = floating;
      "steam:steamwebhelper:Steam" = { state = "tiled"; };
      "krita:krita:Krita - Edit Text" = floating;
      "krita:krita:Create new document" = floating;
      "librewolf:librewolf:Save Image" = floating;
      "SshAskpass" = floating;
      "Nm-connection-editor" = floating;
      "nekoray" = floating;
      "Kvantum Manager" = floating;
      "qt5ct" = floating;
      "qt6ct" = floating;
      "ksnip" = floating1600x900;
      # "ark" = floating1200x800; # Удалил, чтоб blowjob на экран не выдавало
      "file-roller" = floating;
      "floating-terminal" = floating1200x800;
      "pavucontrol" = floating900x600;
      # blueman-манагер надо флоатинг
      "discord" = { monitor = "^2"; desktop = "3"; };
      "firefox" = { monitor = "^1"; desktop = "2"; };
      "librewolf" = { monitor = "^1"; desktop = "1"; };
      "obsidian" = { monitor = "^2"; desktop = "2"; };
      "planify" = { monitor = "^2"; desktop = "1"; };
    };

    settings = {
      # Цвет бордера для не активного окна
      normal_border_color = lib.mkForce "#${config.lib.stylix.colors.base0B}"; # #b8bb26

      # Цвет бордера для фокусед окна на анфокусед мониторе (считаей не активное окно)
      active_border_color = lib.mkForce "#${config.lib.stylix.colors.base0B}"; # #b8bb26

      # Цвет бордера для окна в фокусе
      focused_border_color = lib.mkForce "#${config.lib.stylix.colors.base09}"; # #fe8019

      # Устанавливает ширину границ окон в 2 пикселя.
      border_width = 2;

      # Задаёт расстояние между окнами (отступ) в 5 пикселей.
      window_gap = 5;

      # Коэффициент разделения окон. 0.5 означает, что при разделении окно будет занимать 50% доступного пространства.
      split_ratio = 0.5;

      # В режиме monocle (максимизация окна на весь экран) границы окон будут скрыты.
      borderless_monocle = true;

      # В режиме monocle будет отсутствовать отступ между окнами.
      gapless_monocle = true;

      # Eсли вы активируете режим "monocle" на одном мониторе, другие мониторы остаются в обычном режиме
      single_monocle = false;

      # Фокусировка следует за курсором
      focus_follows_pointer = true;

      # When focusing a window, put the pointer at its center.
      # pointer_follows_focus = true;

      # Какую кнопку надо зажать, чтоб кнопки мыши меняли окно?
      pointer_modifier = "mod4"; # control lock mod1 mod2 mod3 mod4 mod5 shift

      # Действия с кнопками мыши 1, 2 и 3
      pointer_action1 = "move";
      pointer_action2 = "resize_side";
      pointer_action3 = "resize_corner";
    };
  };
}
