{ config, ... }: { wayland.windowManager.sway.config = { # Assign workspaces to config workspaceOutputAssign = let workspaces1 = [ "${config.ws.w0}" "${config.ws.w1}" "${config.ws.w2}" "${config.ws.w3}" "${config.ws.w1a}" "${config.ws.w2a}" "${config.ws.w3a}" ]; workspaces2 = [ "${config.ws.w4}" "${config.ws.w5}" "${config.ws.w6}" "${config.ws.w4a}" "${config.ws.w5a}" ]; workspaces3 = [ "${config.ws.w7}" "${config.ws.w8}" "${config.ws.w9}" "${config.ws.w7a}" "${config.ws.w8a}" ]; workspaces4 = [ "${config.ws.w6a}" "${config.ws.w9a}" ]; assign = output: workspaces: map (workspace: { inherit workspace; inherit output; }) workspaces; in (assign "${config.displays.d1}" workspaces1) ++ (assign "${config.displays.d2}" workspaces2) ++ (assign "${config.displays.d3}" workspaces3) ++ (assign "${config.displays.d4}" workspaces4); # Rules defaultWorkspace = config.ws.w1; window = { border = config.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''; } # Give apps that don't have them borders { criteria = { con_mark = "borderless"; }; command = ''border pixel ${config.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 = { # Broconfig.wsers "${config.ws.w1}" = [{ app_id = "MainBrowser"; }]; "${config.ws.w1a}" = [{ app_id = "AltBrowser"; }]; # Communication "${config.ws.w3a}" = [{ class = "zoom"; }]; "${config.ws.w7}" = [ { app_id = "MiscBrowser"; } { app_id = "vesktop"; } { class = "vesktop"; } ]; "${config.ws.w8}" = [{ app_id = "org.gnome.Fractal"; }]; "${config.ws.w9}" = [{ app_id = "thunderbird"; }]; # Etc "${config.ws.w2}" = [ { class = "steam"; } {app_id = "heroic";} ]; "${config.ws.w2a}" = [{ app_id = "looking-glass-client"; }]; "${config.ws.w4a}" = [{ app_id = "com.obsproject.Studio"; }]; }; focus.newWindow = "focus"; }; }