{ pkgs, lib, ... }: let xsetroot = "${pkgs.xorg.xsetroot}/bin/xsetroot"; monitorPages = [ "Ⅰ" "Ⅱ" "Ⅲ" "Ⅳ" "Ⅴ" "Ⅵ" "Ⅶ" "Ⅷ" "Ⅸ" "Ⅹ" ]; monitorPagesString = lib.strings.concatStringsSep " " monitorPages; monitorSetupScript = pkgs.writeShellScript "monitorSetupScript" '' autorand -c || true for monitor in $(bspc query -M --names); do bspc monitor $monitor -d ${monitorPagesString} done ''; strPalette = pkgs.lib.rice.palette.toRGBHex pkgs.rice.colorPalette; in { xsession.windowManager.bspwm = { enable = true; settings = { border_width = 1; border_radius = 8; window_gap = 2; split_ratio = 0.5; top_padding = 0; borderless_monocle = true; gapless_monocle = false; normal_border_color = strPalette.normal.blue; focused_border_color = strPalette.bright.red; }; # monitors = builtins.foldl' (acc: monitor: acc // { ${monitor} = monitorPages; }) { } monitors; rules = { "*" = { follow = true; }; "Zathura" = { state = "tiled"; }; "Yad" = { state = "floating"; }; }; startupPrograms = [ "${monitorSetupScript}" # Setup monitors "${xsetroot} -solid black -cursor_name left_ptr" # Set cursor "${pkgs.update-background}/bin/update-background" # Set background "systemctl --user restart polybar" # Restart polybar ]; }; services = { network-manager-applet.enable = true; blueman-applet.enable = true; }; home.packages = with pkgs; [ blueman ]; }