{ config, lib, pkgs, ... }@extraArgs: let cfg = config.personal.x.i3; in { imports = [ ./bar.nix ./keybindings.nix ./startup.nix ]; options.personal.x.i3 = { enable = lib.mkEnableOption "i3" // { default = extraArgs.osConfig.services.xserver.windowManager.i3.enable or false; }; }; config = lib.mkIf cfg.enable { xsession.windowManager.i3 = { enable = cfg.enable; package = lib.mkDefault pkgs.i3-gaps; config = { assigns = lib.optionalAttrs (config.personal.profiles.multimedia && (extraArgs.osConfig.programs.steam.enable or true)) { "8: multimedia" = [ { class = "^Steam$"; } { title = "Netflix"; } { title = "MUBI"; } { title = "Deezer"; } ]; } // lib.optionalAttrs config.personal.profiles.social { "9: social" = [ { class = "^Mail$"; } { class = "^thunderbird$"; } ] ++ lib.optionals config.personal.identities.personal [ { class = "^signal$"; } { class = "^Signal$"; } { title = "^Signal"; } ] ++ lib.optionals config.personal.identities.work [ { class = "^zulip"; } { class = "^Zulip"; } ]; } // { "10: passwords" = [ { # matches .kbdx [Locked] - KeePassXC title = ".*\\.kbdx \\[Locked\\] - KeePassXC$"; } ]; }; workspaceAutoBackAndForth = lib.mkDefault true; window = { titlebar = lib.mkDefault false; border = lib.mkDefault 0; }; floating = { titlebar = lib.mkDefault false; border = lib.mkDefault ( if config.services.picom.enable && config.services.picom.shadow then 0 else lib.mkOptionDefault ); }; gaps = { inner = lib.mkDefault 15; outer = lib.mkDefault 5; }; }; }; programs.rofi.enable = lib.mkDefault true; }; }