{ pkgs, lib, ... }: let monitorPages = [ "I" "II" "III" "IV" "V" "VI" "VII" "VIII" "IX" "X" ]; monitorPagesString = lib.strings.concatStringsSep " " monitorPages; strPalette = pkgs.lib.rice.palette.toRGBHex pkgs.rice.colorPalette; xrandr = "${pkgs.xorg.xrandr}/bin/xrandr"; xsetroot = "${pkgs.xorg.xsetroot}/bin/xsetroot"; in { xsession.windowManager.bspwm = { enable = true; settings = { border_width = 2; border_radius = 8; window_gap = 4; split_ratio = 0.5; top_padding = 0; borderless_monocle = true; gapless_monocle = false; normal_border_color = strPalette.normal.blue; focused_border_color = strPalette.bright.blue; }; # monitors = builtins.foldl' (acc: monitor: acc // { ${monitor} = monitorPages; }) { } monitors; rules = { "*" = { follow = true; }; "Zathura" = { state = "tiled"; }; }; extraConfig = '' for monitor in $(${xrandr} --listactivemonitors | cut -d " " -f 6); do bspc monitor $monitor -d ${monitorPagesString} done autorandr -c ${xsetroot} -solid black -cursor_name left_ptr systemctl --user restart \ polybar.service \ update-background.service ''; startupPrograms = [ ]; }; services = { network-manager-applet.enable = true; blueman-applet.enable = true; }; home.packages = with pkgs; [ blueman ]; }