# Window rules, layer rules, and scratchpads. Every matching rule applies; the # later one wins a conflicting key. `umbriel windows` lists app ids and titles. # ============================================================================== # Scratchpads — Hyprland's special workspaces (omarchy-toggle-scratch). Each # app opens hidden in its scratchpad; toggling an empty one launches it. [[scratchpad]] name = "tern" spawn_when_empty = "tern" [[scratchpad]] name = "claude" spawn_when_empty = "claude-desktop" [[scratchpad]] name = "fastmail" spawn_when_empty = "gtk-launch com.fastmail.Fastmail" [[scratchpad]] name = "beeper" spawn_when_empty = "gtk-launch beeper" [[scratchpad]] name = "home" spawn_when_empty = "gtk-launch 'Google Home'" [[scratchpad]] name = "lmstudio" spawn_when_empty = "gtk-launch ai.elementlabs.lmstudio" # ============================================================================== # Every window [[window_rule]] blur = true # ============================================================================== # Translucent apps (niri: opacity 0.9, blur, open focused) [[window_rule]] match.app_id = [ "^Folo$", "^Spotify$", "^zen$", "^brave-origin$", "^gemini-desktop$", "^claude-desktop$", "^kitty", "^zed$", "^obsidian$", "^Beeper$", "^chromium$", "^com[.]mitchellh[.]ghostty$", ] opacity = 0.9 default_floating = false default_focused = true # ============================================================================== # Floating utilities [[window_rule]] match.app_id = "^dev[.]noctalia[.]Noctalia$" default_floating = true default_floating_size_px = { width = 1080, height = 920 } [[window_rule]] match.app_id = "^dev[.]noctalia[.]UmbrielSharePicker$" default_floating = true default_floating_size_px = { width = 800, height = 600 } [[window_rule]] match.app_id = ["^io[.]github[.]lgse[.]Strata$", "^org[.]gnome[.]Nautilus$", "^com[.]gabm[.]satty$"] default_floating = true default_focused = true default_floating_size = { width = 0.5 } # Hyprland: YouTube web app floats pinned in the bottom-left corner. [[window_rule]] match.app_id = "^brave-(www[.])?youtube[.]com__" default_floating = true default_pinned = true default_floating_size = { width = 0.3, height = 0.3 } default_position = { x = 10, y = 10, anchor = "bottom_left" } # Picture-in-picture: top-right corner of the laptop panel (after the YouTube # rule, so its own PiP window lands here too). [[window_rule]] match.title = "^(Picture-in-Picture|Picture in picture)$" default_floating = true default_maximize = false default_focused = false opacity = 1.0 default_output = "eDP-1" default_position = { x = 24, y = 24, anchor = "top_right" } [[window_rule]] match.title = "^notificationtoasts_.+_desktop" default_position = { x = 0, y = 0, anchor = "bottom_right" } default_focused = false default_pinned = true # ============================================================================== # Placement (niri 91-internal-display / 93-apple-display) # Chat, mail, and dashboards open maximized on the laptop's first workspace. [[window_rule]] match.app_id = [ "^chrome-youtube[.]com__-Default$", "^chromium$", "^org[.]gnome[.]Calendar$", "^discord$", "^slack$", "^gemini-desktop$", "^Hermes$", "^todoist$", "^WebApp-Cloudflare", ] default_output = "eDP-1" default_workspace = 1 default_maximize = true default_focused = true # Editors and terminals open on the Studio Display when it is connected. [[window_rule]] match.app_id = [ "^zed$", "^obsidian$", "^sticky-notest-canvas$", "^vacuumtube$", "^Fladder$", "^kitty$", "^kitty-herdr$", "^kitty-tmux$", ] default_output = "Apple Computer Inc StudioDisplay 0x984262A7" [[window_rule]] match.title = "^Sticky Notes$" default_output = "Apple Computer Inc StudioDisplay 0x984262A7" # Scratchpad residents, last so they win over the placement rules above. [[window_rule]] match.app_id = "^so[.]stencil[.]tern$" default_scratchpad = "tern" [[window_rule]] match.app_id = "^com[.]anthropic[.]Claude$" default_scratchpad = "claude" [[window_rule]] match.app_id = "^com[.-]fastmail[.-][Ff]astmail$" default_scratchpad = "fastmail" [[window_rule]] match.app_id = "^Beeper$" default_scratchpad = "beeper" [[window_rule]] match.app_id = "^brave-home[.]google[.]com__" default_scratchpad = "home" [[window_rule]] match.app_id = "^ai[.]elementlabs[.]lmstudio$" default_scratchpad = "lmstudio" # Presentation shared by every scratchpad resident: floating, centered on the # output, 48% × 77% of its usable area (1638×1109 on the ultrawide, the size # Fastmail was resized to; 614×594 on the laptop panel; 1229×1109 on the Studio # Display). Fractions rather than px so it fits the laptop's 772px height. # Last, so it overrides default_floating = false from the translucent-apps # rule for Claude and Beeper. [[window_rule]] match.app_id = [ "^so[.]stencil[.]tern$", "^com[.]anthropic[.]Claude$", "^com[.-]fastmail[.-][Ff]astmail$", "^Beeper$", "^brave-home[.]google[.]com__", "^ai[.]elementlabs[.]lmstudio$", ] default_floating = true default_maximize = false default_floating_size = { width = 0.48, height = 0.77 } default_position = { x = 0, y = 0, anchor = "center" } # ============================================================================== # Layer rules [[layer_rule]] match.namespace = "^noctalia-(bar-[^\"]+|notification|dock|panel|attached-panel|osd|desktop-widget-[^\"]*)$" blur = true blur_ignore_alpha = 0.5 blur_popups = true