local float_classes = {
  "^(.*Emulator.*)$", "^(.*desktop-portal.*)$", "^(org.quickshell)$",
  "^(polkit.*agent.*)$", "^(praat)$", "^(network)$", "^(nm-)$", "^(Network)$",
  "^(Rofi)$",  "^(Gimp)$", "^(thunar)$", "^(Nautilus)$",
  "^(LmDev-.*)$", "^(notification)$", "^(Genymotion Player)$", "^(launcher)$",
}
local workspace_rules = {
  { class =  "^(KeePassXC)$",                                 ws = "2" },
  { class =  "^(firefox)$",                                   ws = "3" },
  { class =  "^(floorp)$",                                    ws = "3" },
  { class =  "^(brave-browser)$",                             ws = "3" },
  { class =  "^(Spotify)$",                                   ws = "4" },
  { class =  "^(discord)$",                                   ws = "6" },
  { class =  "^(.*obs.*)$",                                   ws = "8" },
  { title = "^(Minecraft)$",                                  ws = "name:extra" },
  { class = "^(signal)$",         title = "^(Signal)$",       ws = "6" },
  { class = "^(.*)$",             title = "^(.*WhatsApp.*)$", ws = "6" },
}
local fullscreen_inhibits = {
 "^(floorp)$", "^(firefox)$", "^(ghostty)$", "^(brave-browser)$",
}
local focus_inhibits = {
 "^(mpv)$", "^(firefox)$", "^(floorp)$", "^(spotify)$",
 "^(Emacs|emacs)$", "^(brave-browser)$", "^(Discord|dicord)$",
}

hl.window_rule({
  match = { class = "steam", title = "^(Friends List)$"},
  float = true,
})
hl.window_rule({
  match = { class = "^(Discord|discord)$" },
  opacity = "0.98 0.90",
})
hl.window_rule({
  match = { class = "^(Emacs|emacs)$" },
  opacity = "0.96 0.90",
})
hl.window_rule({
  match = { xwayland = true },
  rounding = 0,
})

for _, float_class in ipairs(float_classes) do
  hl.window_rule({
    match = { class = float_class},
    float = true
  })
end
for _, rule in ipairs(workspace_rules) do
  hl.window_rule({
    match = { class = rule.class, title = rule.title },
    workspace = rule.ws
  })
end
for _, fs_inhib in ipairs(fullscreen_inhibits) do
  hl.window_rule({
    match = { class = fs_inhib },
    idle_inhibit = "fullscreen",
  })
end
for _, fo_inhib in ipairs(focus_inhibits) do
  hl.window_rule({
    match = { class = fo_inhib },
    idle_inhibit = "focus",
  })
end
