Files
dotfiles/dot_config/umbriel/rules.toml
T

172 lines
5.3 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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