{config, pkgs, outputs, ...}: { # Enable Sway and write some scripts wayland.windowManager.sway = { config = { # Assign workspaces to outputs workspaceOutputAssign = let workspaces1 = [ "${outputs.ws.w0}" "${outputs.ws.w1}" "${outputs.ws.w2}" "${outputs.ws.w3}" "${outputs.ws.w1a}" "${outputs.ws.w2a}" "${outputs.ws.w3a}" ]; workspaces2 = [ "${outputs.ws.w4}" "${outputs.ws.w5}" "${outputs.ws.w6}" "${outputs.ws.w4a}" "${outputs.ws.w5a}" "${outputs.ws.w6a}" ]; workspaces3 = [ "${outputs.ws.w7}" "${outputs.ws.w8}" "${outputs.ws.w9}" "${outputs.ws.w7a}" "${outputs.ws.w8a}" "${outputs.ws.w9a}" ]; assign = output: workspaces: map (workspace: { inherit workspace; inherit output; }) workspaces; in (assign "${outputs.displays.d1}" workspaces1) ++ (assign "${outputs.displays.d2}" workspaces2) ++ (assign "${outputs.displays.d3}" workspaces3); # Rules window = { border = outputs.look.border.int; titlebar = false; commands = [ # Scratchpads { criteria = {con_mark = "scratchpad";}; command = ''floating enable, sticky enable, move scratchpad, mark borderless''; } { criteria = {app_id = "gotop";}; command = ''mark scratchpad''; } { criteria = {app_id = "music";}; command = ''mark scratchpad''; } { criteria = {app_id = "sound";}; command = ''mark scratchpad''; } { criteria = {app_id = "com.github.wwmm.easyeffects";}; command = ''mark scratchpad, opacity 0.9''; } # Create a "Scratchpad" for apps I don't want to be seen when launched { criteria = {con_mark = "hiddenaway";}; command = ''move scratchpad''; } # Give apps that don't have them borders { criteria = {con_mark = "borderless";}; command = ''border pixel ${outputs.look.border.string}''; } { criteria = {app_id = "com.github.wwmm.easyeffects";}; command = ''mark borderless''; } { criteria = {class = "steam";}; command = ''mark borderless''; } { criteria = {app_id = "swappy";}; command = ''mark borderless''; } { criteria = {app_id = "virt-manager";}; command = ''mark borderless''; } { criteria = {window_role = "pop-up";}; command = ''mark borderless''; } # Floating or fullscreen rules { criteria = {app_id = "float";}; command = ''floating enable''; } { criteria = {title = "^GlobalShot";}; command = ''floating enable, fullscreen enable global''; } ]; }; assigns = { # Brooutputs.wsers "${outputs.ws.w1}" = [{app_id = "JimBrooutputs.wser";}]; "${outputs.ws.w1a}" = [{app_id = "AltBrooutputs.wser";}]; # Communication "${outputs.ws.w3a}" = [{class = "zoom";}]; "${outputs.ws.w7}" = [{app_id = "MiscBrowser";} {app_id = "vesktop";} {class = "vesktop";}]; "${outputs.ws.w8}" = [{app_id = "org.gnome.Fractal";}]; "${outputs.ws.w9}" = [{app_id = "thunderbird";}]; # Else "${outputs.ws.w2}" = [{class = "steam";} {app_id = "heroic";}]; "${outputs.ws.w2a}" = [{app_id = "looking-glass-client";}]; "${outputs.ws.w4a}" = [{app_id = "com.obsproject.Studio";}]; }; focus.newWindow = "focus"; }; }; }