diff --git a/docs/desktop/umbriel.mdx b/docs/desktop/umbriel.mdx index 943ae6d..01167ab 100644 --- a/docs/desktop/umbriel.mdx +++ b/docs/desktop/umbriel.mdx @@ -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 | diff --git a/dot_config/umbriel/binds.toml b/dot_config/umbriel/binds.toml index fde3238..ff72656 100644 --- a/dot_config/umbriel/binds.toml +++ b/dot_config/umbriel/binds.toml @@ -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 } # ------------------------------------------------------------------------------ diff --git a/dot_config/umbriel/config.toml b/dot_config/umbriel/config.toml index 52e138a..7b42d23 100644 --- a/dot_config/umbriel/config.toml +++ b/dot_config/umbriel/config.toml @@ -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] diff --git a/dot_config/umbriel/outputs.toml b/dot_config/umbriel/outputs.toml index 6300c6b..af92700 100644 --- a/dot_config/umbriel/outputs.toml +++ b/dot_config/umbriel/outputs.toml @@ -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