feat(config): adjust workspace layout toggle defaults and add window centering command

This commit is contained in:
Prad Nukala committed 2026-10-13 18:33:47 -04:00
1 parent 13f7776208
commit 873b5bbc64
2 files changed
+50 -15

No files matched your search

+33 -8
View File
@@ -15,12 +15,11 @@ hl.unbind("SUPER + Q")
o.bind("SUPER + Q", "Close window", hl.dsp.window.close()) o.bind("SUPER + Q", "Close window", hl.dsp.window.close())
-- Mod+W was tabbed display. Here it flips the workspace layout, and sets every -- Mod+W was tabbed display. Here it flips the workspace layout, and sets every
-- column to 75% of the screen when the workspace turns to scrolling. Dwindle -- column to 50% of the screen (niri's default-column-width) when the
-- needs no widths, because it re-tiles on its own. -- workspace turns to scrolling. Dwindle needs no widths, because it re-tiles
-- Needs ~/.local/bin/omarchy-toggle-layout. Pass another fraction to change -- on its own. Needs ~/.local/bin/omarchy-toggle-layout.
-- the width, e.g. "omarchy-toggle-layout 0.6".
hl.unbind("SUPER + W") -- was: close window hl.unbind("SUPER + W") -- was: close window
o.bind("SUPER + W", "Toggle workspace layout", "omarchy-toggle-layout") o.bind("SUPER + W", "Toggle workspace layout", "omarchy-toggle-layout 0.5")
-- Mod+BackSpace -> last window. -- Mod+BackSpace -> last window.
hl.unbind("SUPER + BACKSPACE") -- was: toggle window transparency hl.unbind("SUPER + BACKSPACE") -- was: toggle window transparency
@@ -125,9 +124,8 @@ o.bind("SUPER + CTRL + K", "Previous workspace", hl.dsp.focus({ workspace = "e-1
-- Scratch workspaces. Omarchy's SUPER + S is taken by the region screenshot -- Scratch workspaces. Omarchy's SUPER + S is taken by the region screenshot
-- below, so the main toggle (Tern) lands on SUPER + CTRL + S, with -- below, so the main toggle (Tern) lands on SUPER + CTRL + S, with
-- SUPER + A (free in Omarchy) as the home-row alias. Claude Desktop has its -- SUPER + A (free in Omarchy) as the home-row alias. Claude Desktop has its
-- own scratch workspace on SUPER + SHIFT + A and SUPER + C (the latter -- own scratch workspace on SUPER + CTRL + ALT + L. SUPER + ALT + S (send
-- replaces Omarchy's universal copy). SUPER + ALT + S (send window to the -- window to the scratchpad) is still the Omarchy default and needs no line.
-- scratchpad) is still the Omarchy default and needs no line.
-- --
-- All of them go through ~/.local/bin/omarchy-toggle-scratch rather than the -- All of them go through ~/.local/bin/omarchy-toggle-scratch rather than the
-- raw special-workspace toggle: it opens each workspace on its home monitor -- raw special-workspace toggle: it opens each workspace on its home monitor
@@ -202,6 +200,33 @@ o.bind("SUPER + SHIFT + BACKSPACE", "Dismiss last notification", "omarchy-shell
o.bind("SUPER + ALT + C", "Fit active column", hl.dsp.layout("fit active")) o.bind("SUPER + ALT + C", "Fit active column", hl.dsp.layout("fit active"))
o.bind("SUPER + SHIFT + ALT + C", "Fit visible columns", hl.dsp.layout("fit visible")) o.bind("SUPER + SHIFT + ALT + C", "Fit visible columns", hl.dsp.layout("fit visible"))
-- Super+C (niri center-column). Floating windows go through centerwindow.
-- On a scrolling workspace the column is re-focused with focus_fit_method
-- briefly set to 0 (center), then restored, so plain focus moves keep
-- niri's center-focused-column "never". A relative "move" can't do this: the
-- tape stops at its first column, so the leftmost window never reaches the
-- middle. Dwindle and master have nothing to scroll; the key does nothing.
local function center_window()
local window = hl.get_active_window()
if not window then
return
end
if window.floating then
hl.dispatch(hl.dsp.window.center())
return
end
if not window.workspace or window.workspace.tiled_layout ~= "scrolling" then
return
end
local fit_method = hl.get_config("scrolling.focus_fit_method")
hl.config({ scrolling = { focus_fit_method = 0 } })
hl.dispatch(hl.dsp.focus({ window = window }))
hl.config({ scrolling = { focus_fit_method = fit_method } })
end
hl.unbind("SUPER + C") -- was: universal copy
o.bind("SUPER + C", "Center window / column", center_window)
-- ─── Applications ─────────────────────────────────────────────────────────── -- ─── Applications ───────────────────────────────────────────────────────────
-- Same modifier block as the niri config. Each one focuses an open window -- Same modifier block as the niri config. Each one focuses an open window
-- before it launches a new one. The launch command uses the same desktop -- before it launches a new one. The launch command uses the same desktop
+17 -7
View File
@@ -120,10 +120,20 @@ hl.animation({ leaf = "borderangle", enabled = true, speed = 100, bezier = "line
-- }, -- },
-- }) -- })
-- https://wiki.hypr.land/Configuring/Layouts/Scrolling-Layout/ -- Scrolling layout, matched to niri's layout block
-- hl.config({ -- (~/.config/niri/config.d/20-layout-and-overview.kdl). Wins over Omarchy's
-- scrolling = { -- column_width = 0.49.
-- -- See only one column per screen instead of two. hl.config({
-- column_width = 0.97, scrolling = {
-- }, -- default-column-width { proportion 0.5; }
-- }) column_width = 0.5,
-- preset-column-widths; SUPER + R / SUPER + SHIFT + R cycle these
-- (colresize +conf / -conf via omarchy-cycle-window-size).
explicit_column_widths = "0.333, 0.5, 0.667",
-- center-focused-column "never": scroll only as far as needed to fit the
-- focused column. SUPER + C centers on demand.
focus_fit_method = 1,
-- niri keeps a lone column at its own width instead of filling the screen.
fullscreen_on_one_column = false,
},
})