Merge pull request #12711 from Adjective-Object/fix/bspwm-session-start

bspwm: add startThroughSession & sessionScript option

+28 -5
+28 -5
nixos/modules/services/x11/window-managers/bspwm.nix
··· 8 8 9 9 { 10 10 options = { 11 - services.xserver.windowManager.bspwm.enable = mkEnableOption "bspwm"; 11 + services.xserver.windowManager.bspwm = { 12 + enable = mkEnableOption "bspwm"; 13 + startThroughSession = mkOption { 14 + type = with types; bool; 15 + default = false; 16 + description = " 17 + Start the window manager through the script defined in 18 + sessionScript. Defaults to the the bspwm-session script 19 + provided by bspwm 20 + "; 21 + }; 22 + sessionScript = mkOption { 23 + default = "${pkgs.bspwm}/bin/bspwm-session"; 24 + defaultText = "(pkgs.bspwm)/bin/bspwm-session"; 25 + description = " 26 + The start-session script to use. Defaults to the 27 + provided bspwm-session script from the bspwm package. 28 + 29 + Does nothing unless `bspwm.startThroughSession` is enabled 30 + "; 31 + }; 32 + }; 12 33 }; 13 34 14 35 config = mkIf cfg.enable { 15 36 services.xserver.windowManager.session = singleton { 16 37 name = "bspwm"; 17 - start = " 18 - SXHKD_SHELL=/bin/sh ${pkgs.sxhkd}/bin/sxhkd -f 100 & 19 - ${pkgs.bspwm}/bin/bspwm 20 - "; 38 + start = if cfg.startThroughSession 39 + then cfg.sessionScript 40 + else '' 41 + SXHKD_SHELL=/bin/sh ${pkgs.sxhkd}/bin/sxhkd -f 100 & 42 + ${pkgs.bspwm}/bin/bspwm 43 + ''; 21 44 }; 22 45 environment.systemPackages = [ pkgs.bspwm ]; 23 46 };