NixOS-Config/modules/home/sway/rules/default.nix

142 lines
4 KiB
Nix
Raw Normal View History

2024-10-19 19:59:55 -04:00
{ config, ... }:
2024-10-09 03:36:08 -04:00
{
2024-08-24 22:16:51 -04:00
wayland.windowManager.sway = {
2024-09-23 16:22:01 -04:00
config = {
2024-10-15 02:40:43 -04:00
# Assign workspaces to config
2024-08-24 22:16:51 -04:00
workspaceOutputAssign = let
2024-09-23 16:22:01 -04:00
workspaces1 = [
"${config.ws.w0}"
"${config.ws.w1}"
"${config.ws.w2}"
"${config.ws.w3}"
"${config.ws.w1a}"
"${config.ws.w2a}"
"${config.ws.w3a}"
];
2024-09-23 16:22:01 -04:00
workspaces2 = [
"${config.ws.w4}"
"${config.ws.w5}"
"${config.ws.w6}"
"${config.ws.w4a}"
"${config.ws.w5a}"
"${config.ws.w6a}"
];
2024-09-23 16:22:01 -04:00
workspaces3 = [
"${config.ws.w7}"
"${config.ws.w8}"
"${config.ws.w9}"
"${config.ws.w7a}"
"${config.ws.w8a}"
"${config.ws.w9a}"
];
2024-08-24 22:16:51 -04:00
assign = output: workspaces:
map (workspace: {
inherit workspace;
inherit output;
})
workspaces;
in
2024-10-15 02:40:43 -04:00
(assign "${config.displays.d1}" workspaces1) ++
(assign "${config.displays.d2}" workspaces2) ++
(assign "${config.displays.d3}" workspaces3);
2024-08-24 22:16:51 -04:00
# Rules
defaultWorkspace = config.ws.w1;
2024-08-24 22:16:51 -04:00
window = {
2024-10-15 02:40:43 -04:00
border = config.look.border.int;
2024-08-24 22:16:51 -04:00
titlebar = false;
commands = [
# Scratchpads
{
criteria = { con_mark = "scratchpad"; };
2024-08-24 22:16:51 -04:00
command = ''floating enable, sticky enable, move scratchpad, mark borderless'';
}
{
criteria = { app_id = "gotop"; };
2024-08-24 22:16:51 -04:00
command = ''mark scratchpad'';
}
{
criteria = { app_id = "music"; };
2024-08-24 22:16:51 -04:00
command = ''mark scratchpad'';
}
{
criteria = { app_id = "sound"; };
2024-08-24 22:16:51 -04:00
command = ''mark scratchpad'';
}
{
criteria = { app_id = "com.github.wwmm.easyeffects"; };
2024-08-24 22:16:51 -04:00
command = ''mark scratchpad, opacity 0.9'';
}
# Create a "Scratchpad" for apps I don't want to be seen when launched
{
criteria = { con_mark = "hiddenaway"; };
2024-08-24 22:16:51 -04:00
command = ''move scratchpad'';
}
# Give apps that don't have them borders
{
criteria = { con_mark = "borderless"; };
2024-10-15 02:40:43 -04:00
command = ''border pixel ${config.look.border.string}'';
2024-08-24 22:16:51 -04:00
}
{
criteria = { app_id = "com.github.wwmm.easyeffects"; };
2024-08-24 22:16:51 -04:00
command = ''mark borderless'';
}
{
criteria = { class = "steam"; };
2024-08-24 22:16:51 -04:00
command = ''mark borderless'';
}
{
criteria = { app_id = "swappy"; };
2024-08-24 22:16:51 -04:00
command = ''mark borderless'';
}
{
criteria = { app_id = "virt-manager"; };
2024-08-24 22:16:51 -04:00
command = ''mark borderless'';
}
{
criteria = { window_role = "pop-up"; };
2024-08-24 22:16:51 -04:00
command = ''mark borderless'';
}
# Floating or fullscreen rules
{
criteria = { app_id = "float"; };
2024-08-24 22:16:51 -04:00
command = ''floating enable'';
}
{
criteria = { title = "^GlobalShot"; };
2024-08-24 22:16:51 -04:00
command = ''floating enable, fullscreen enable global'';
}
];
};
assigns = {
2024-10-15 02:40:43 -04:00
# Broconfig.wsers
"${config.ws.w1}" = [{ app_id = "MainBrowser"; }];
"${config.ws.w1a}" = [{ app_id = "AltBrowser"; }];
2024-08-24 22:16:51 -04:00
# 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"; }];
2024-08-24 22:16:51 -04:00
# 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"; }];
2024-08-24 22:16:51 -04:00
};
focus.newWindow = "focus";
};
};
}