feat(umbriel): enhance workspace layouts and focus behavior

This commit is contained in:
Prad Nukala committed 2026-10-16 14:29:54 -04:00
1 parent 965cdaa000
commit 2bae3e12b9
4 files changed
+28 -22

No files matched your search

+2 -1
View File
@@ -151,7 +151,8 @@ Noctalia's bar, panels, notifications, dock, OSD, and desktop widgets get blur t
| `Mod+Ctrl+F` | fullscreen |
| `Mod+C` | center column |
| `Mod+Ctrl+O` | toggle floating |
| `Mod+W` | tab / untab the column |
| `Mod+W` | toggle the workspace between the scrolling and master layouts |
| `Mod+Shift+W` | tab / untab the column |
| `Mod+Q` | close window |
| `Mod+1`…`Mod+9`, `Alt+Q W E R Y U I O` | workspace 1–9 / 1–8 |
| `Mod+Shift+1`…`9`, `Alt+Shift+Q`…`O` | move window to that workspace |
+8 -4
View File
@@ -49,7 +49,7 @@
# Apps: focus or launch. Spawns run through /bin/sh with the session PATH,
# which lacks ~/.local/bin, hence the explicit path.
"Super+Alt+Ctrl+J" = { action = "spawn:~/.local/bin/umbriel-launch '^(kitty|alacritty|com[.]mitchellh[.]ghostty)' kitty", repeat = false }
"Super+Alt+Ctrl+J" = { action = "spawn:~/.local/bin/umbriel-launch '^(com[.]mitchellh[.]ghostty|kitty|alacritty)' ghostty", repeat = false }
"Super+Alt+Ctrl+K" = { action = "spawn:~/.local/bin/umbriel-launch '^brave-origin$' brave-origin", repeat = false }
"Super+Alt+Ctrl+G" = { action = "spawn:~/.local/bin/umbriel-launch ghostty ghostty", repeat = false }
"Super+Alt+Ctrl+O" = { action = "spawn:~/.local/bin/umbriel-launch '^obsidian$' obsidian", repeat = false }
@@ -64,8 +64,9 @@
# ------------------------------------------------------------------------------
# Focus
"Mod+H" = "window-focus-left"
"Mod+L" = "window-focus-right"
# At the strip's edge, H/L continue onto the output on that side.
"Mod+H" = "window-focus-or-output-left"
"Mod+L" = "window-focus-or-output-right"
"Mod+J" = "window-focus-or-workspace-down"
"Mod+K" = "window-focus-or-workspace-up"
"Mod+BackSpace" = "window-focus-last"
@@ -109,7 +110,10 @@
"Mod+Ctrl+F" = { action = "window-toggle-fullscreen", repeat = false }
"Mod+C" = "column-center"
"Mod+Ctrl+O" = { action = "window-toggle-floating", repeat = false }
"Mod+W" = { action = "column-toggle-tabbed", repeat = false }
# Super+W flips the active workspace between scrolling and master (Hyprland's
# omarchy-toggle-layout); tabbing a column moves to Super+Shift+W.
"Mod+W" = { action = "workspace-set-layout:toggle:scrolling,master", repeat = false }
"Mod+Shift+W" = { action = "column-toggle-tabbed", repeat = false }
"Mod+Q" = { action = "window-close", repeat = false }
# ------------------------------------------------------------------------------
+17 -1
View File
@@ -22,9 +22,16 @@ files = ["noctalia.toml"]
# polkit agent; nothing else is started.
autostart = ["noctalia"]
show_cheatsheet = false
# niri's honor-xdg-activation-with-invalid-serial: Noctalia notification
# actions and apps that hand off to another window (links, file pickers) can
# focus and reveal their target.
focus_on_activate = true
# Umbriel owns XDG_CURRENT_DESKTOP and the session variables.
[environment]
# Default terminal: Noctalia runs Terminal=true launcher entries through
# $TERMINAL before its own fallback list.
TERMINAL = "ghostty"
ELECTRON_OZONE_PLATFORM_HINT = "auto"
QT_QPA_PLATFORM = "wayland"
QT_QPA_PLATFORMTHEME = "kde"
@@ -48,23 +55,32 @@ map_to_output = "eDP-1"
[input.touch]
map_to_output = "eDP-1"
# follows_focus: keyboard focus moves (Mod+H/L across outputs, umbriel-launch)
# take the pointer along, so scratchpads — shown on the pointer's output —
# open where focus is.
[input.cursor]
theme = "capitaine-cursors-light"
size = 24
hide_when_typing = true
follows_focus = true
[layout]
gap = 8
extent_presets = [0.333, 0.5, 0.667]
# New columns take a third of the output; Mod+R cycles 1/3 → 1/2 → 2/3.
[layout.scrolling]
default_extent_fraction = 0.5
default_extent_fraction = 0.333
center_focused = "never"
center_underfull_strip = true
[appearance]
corner_radius = 10
# niri ran without shadows; also one less pass per window.
[appearance.shadow]
enabled = false
# Optimized blur samples only the wallpaper: cheaper than blurring the windows
# behind each translucent surface.
[appearance.blur]
+1 -16
View File
@@ -20,24 +20,18 @@
# niri needed `output "DP-5" { off }` for the Studio Display's phantom 640x480
# connector; Umbriel leaves connectors without a preferred mode or identity off.
# Laptop panel, eDP-1 (niri 91-internal-display): one full-width column.
# Laptop panel, eDP-1 (niri 91-internal-display).
[output."Tianma Microelectronics Ltd. TL134ADXP03 Unknown"]
position = [0, 0]
scale = 1.5
vrr = "fullscreen"
focus_at_startup = true
[output."Tianma Microelectronics Ltd. TL134ADXP03 Unknown".layout.scrolling]
default_extent_fraction = 1.0
# Apple Studio Display (niri 93-apple-display): 2560x1440 logical.
[output."Apple Computer Inc StudioDisplay 0x984262A7"]
position = [-2560, -374]
scale = 2.0
[output."Apple Computer Inc StudioDisplay 0x984262A7".layout.scrolling]
default_extent_fraction = 0.5
# Samsung ultrawide (niri 92-ultrawide, Hyprland monitors.lua): 3440x1440.
[output."Samsung Electric Company S34CG50 HNTY501103"]
mode = "3440x1440@100"
@@ -45,22 +39,13 @@ position = [-3440, -374]
scale = 1.0
vrr = "fullscreen"
[output."Samsung Electric Company S34CG50 HNTY501103".layout.scrolling]
default_extent_fraction = 0.333
# Portable HDMI panel, mounted portrait (niri 94-portable-hdmi): 864x1536.
[output."PNP(AOP) 16PM1QB 14490001D3X00"]
transform = "90"
position = [-864, -470]
scale = 1.25
[output."PNP(AOP) 16PM1QB 14490001D3X00".layout.scrolling]
default_extent_fraction = 1.0
# Portable USB-C panel (niri 95-portable-usbc): 1536x864.
[output."ASUSTek COMPUTER INC ASUS MB16AC M8LMTF195749"]
position = [-1536, 202]
scale = 1.25
[output."ASUSTek COMPUTER INC ASUS MB16AC M8LMTF195749".layout.scrolling]
default_extent_fraction = 1.0