75 lines
3.2 KiB
Lua
75 lines
3.2 KiB
Lua
-- https://wiki.hypr.land/Configuring/Basics/Window-Rules/
|
|
--
|
|
-- Rules are evaluated top to bottom and the last match wins, so order matters.
|
|
-- Named rules are all evaluated before anonymous ones.
|
|
|
|
-- ==========================================
|
|
-- MATCHERS
|
|
-- ==========================================
|
|
-- Dialogs and utility apps that should float in the center
|
|
local DIALOG_TITLES = "^(Open Form|Open File|Select a File|Choose a file|Open Workspace|Choose Directory.*|Save As.*|Save File.*|branchdialog|pinentry-gtk-2|Confirm to replace files|File Operation Progress|Open Files.*|Anmelden.*|File Upload.*|TRuDI-Export laden)$"
|
|
local DIALOG_CLASSES = "^(pavucontrol|blueman-manager|nm-connection-editor|org.pulseaudio.pavucontrol|io.narl.proton-drive-linux-prompt)$"
|
|
|
|
local STEAM = "^(steam)$"
|
|
local GAMESCOPE = "^(gamescope)$"
|
|
|
|
-- ==========================================
|
|
-- GENERAL & FIXES
|
|
-- ==========================================
|
|
-- Ignore maximize requests from apps. You'll probably like this.
|
|
-- hl.window_rule({ match = { class = ".*" }, suppress_event = "maximize" })
|
|
|
|
-- Fix some dragging issues with XWayland
|
|
-- hl.window_rule({
|
|
-- match = { class = "^$", title = "^$", xwayland = true, float = true, fullscreen = false, pin = false },
|
|
-- no_focus = true,
|
|
-- })
|
|
hl.window_rule({ match = { class = "^$", title = "^$" }, no_blur = true })
|
|
|
|
-- ==========================================
|
|
-- FLOATING & CENTERED DIALOGS
|
|
-- ==========================================
|
|
-- Float, size, center, no blur — one rule per matcher instead of four.
|
|
for _, match in ipairs({ { title = DIALOG_TITLES }, { class = DIALOG_CLASSES } }) do
|
|
hl.window_rule({
|
|
match = match,
|
|
float = true,
|
|
size = { 800, 600 },
|
|
center = true,
|
|
no_blur = true,
|
|
})
|
|
end
|
|
|
|
-- ==========================================
|
|
-- WORKSPACE ASSIGNMENTS
|
|
-- ==========================================
|
|
-- hl.window_rule({ match = { class = "^(firefox)$" }, workspace = "1" })
|
|
-- hl.window_rule({ match = { class = "^(kitty)$" }, workspace = "2" })
|
|
-- hl.window_rule({ match = { class = "^(Code)$" }, workspace = "3" })
|
|
hl.window_rule({ match = { class = GAMESCOPE }, workspace = "1" })
|
|
|
|
-- Special workspaces
|
|
hl.window_rule({ match = { class = "^(Spotify|spotify)$" }, workspace = "special:virtual" })
|
|
hl.window_rule({ match = { class = "^(discord|vesktop)$" }, workspace = "special:discord" })
|
|
|
|
-- ==========================================
|
|
-- STEAM & GAMING
|
|
-- ==========================================
|
|
-- hl.window_rule({ match = { class = STEAM, title = "^(Steam)$" }, workspace = "3 silent" })
|
|
|
|
-- Fixed sizes for specific Steam windows
|
|
hl.window_rule({ match = { class = STEAM, title = "^(Friends List)$" }, size = { 400, 800 } })
|
|
hl.window_rule({ match = { class = STEAM, title = "^(Steam Settings)$" }, size = { 1000, 800 } })
|
|
hl.window_rule({ match = { class = STEAM, title = "^(Add Non-Steam Game)$" }, size = { 1000, 800 } })
|
|
|
|
-- Float and disable blur for Steam windows that aren't the main window
|
|
hl.window_rule({
|
|
match = { class = STEAM, title = "negative:^(Steam)$" },
|
|
float = true,
|
|
no_blur = true,
|
|
-- center = true,
|
|
})
|
|
|
|
-- Allow tearing for games started with Gamescope
|
|
hl.window_rule({ match = { class = GAMESCOPE }, immediate = true })
|