mirror of
https://github.com/prdlk/dotfiles.git
synced 2026-11-02 11:32:42 +00:00
172 lines
5.3 KiB
TOML
172 lines
5.3 KiB
TOML
# 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; 819×799 on the laptop panel; 1229×1109 on the Studio
|
||
# Display). Fractions rather than px so it fits the laptop's 1038px 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
|