main
59c7d64 · 8 days ago 139 commits
 1-- ── Workspace ─────────────────────────────────────
 2hl.workspace_rule({ workspace = "1", monitor = "HDMI-A-2", default_name = "AI" })
 3hl.workspace_rule({ workspace = "2", monitor = "HDMI-A-2" })
 4hl.workspace_rule({ workspace = "3", monitor = "HDMI-A-2" })
 5
 6hl.workspace_rule({ workspace = "4", monitor = "DP-1", default_name = "YT", persistent = true })
 7hl.workspace_rule({ workspace = "5", monitor = "DP-1", default_name = "Code", persistent = true })
 8hl.workspace_rule({ workspace = "6", monitor = "DP-1", default_name = "Research", persistent = true })
 9
10hl.workspace_rule({ workspace = "7", monitor = "HDMI-A-1" })
11hl.workspace_rule({ workspace = "8", monitor = "HDMI-A-1" })
12hl.workspace_rule({ workspace = "9", monitor = "HDMI-A-1", default_name = "Communication", persistent = true })
13
14-- ── Window ─────────────────────────────────────
15
16hl.window_rule({
17	match = { tag = "floating-window" },
18	float = true,
19	center = true,
20	size = "875 600",
21})
22
23local floating_apps = {
24	"imv",
25	"mpv",
26	"nwg-look",
27	"localsend",
28	"zenity",
29	"xdg-desktop-portal-gtk",
30	"Termius",
31	"rustdesk",
32	"com.mitchellh.ghostty",
33	"org.telegram.desktop",
34	"org.pulseaudio.pavucontrol",
35	"org.wraith.*",
36	"org.gnome.*",
37}
38
39for _, cls in ipairs(floating_apps) do
40	hl.window_rule({ match = { initial_class = cls }, tag = "+floating-window" })
41end
42
43hl.window_rule({
44	match = {
45		title =
46		"^(Open.*Files?|Open [Ff]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to (?:open|save).*|[Cc]hoose.*)",
47	},
48	tag = "+floating-window",
49})
50
51hl.window_rule({
52	match = {
53		title =
54		"^(Settings|Preferences|Options|About|Help|License|Shortcuts|Keybindings|Update|Updates|Checking for updates|Extensions|Add-ons|Choose a Font|About .*)$",
55	},
56	tag = "+floating-window",
57})
58
59hl.window_rule({
60	match = { initial_class = "code|code-oss|Code-Insiders|zenity" },
61	workspace = "name:Code",
62})
63
64hl.window_rule({
65	match = { initial_class = "chrome-gemini\\.google\\.com.*|chrome-claude\\.ai.*|chrome-chatgpt\\.com.*" },
66	workspace = "name:AI",
67})
68
69hl.window_rule({
70	match = { initial_class = "Beeper|org.mozilla.Thunderbird" },
71	workspace = "name:Communication silent",
72})
73
74hl.window_rule({
75	match = { initial_class = "chrome-music\\.youtube\\..*" },
76	workspace = "special:music",
77})
78
79
80hl.window_rule({
81	match = { title = "^(.*-popup)" }, float = true
82})