Ultrawide Focus Layout for Omarchy
Ultrawide Focus Layout turns an ultrawide display into a centered 16:9
workspace. It reserves the unused sides as pure-black gutters, hides Omarchy's
bar, removes window gaps, and temporarily switches the active workspace to
Hyprland's monocle layout. Every tiled window fills the centered focus area;
changing focus selects which window is visible. Turning Ultrawide Focus Layout
off restores the workspace's previous layout and only the other states the
layout changed. When enabled, Ultrawide Focus Layout applies monocle to every
existing normal workspace on the focused output and remembers each workspace's
original layout. The local
SUPER+TAB bindings call next-workspace / previous-workspace, which also
apply monocle synchronously after changing workspaces. Ultrawide Focus Layout
persists its temporary rules across Hyprland configuration reloads and removes
them on exit.
Hyprland's normal window-cycle dispatcher does not cycle monocle windows. The recommended bindings use monocle's layout messages while retaining Omarchy's normal behavior outside Ultrawide Focus Layout:
hl.unbind("ALT + TAB")
hl.unbind("ALT + SHIFT + TAB")
local function cycle_window(next_window)
return function()
local workspace = hl.get_active_special_workspace() or hl.get_active_workspace()
if workspace and workspace.tiled_layout == "monocle" then
hl.dispatch(hl.dsp.layout(next_window and "cyclenext" or "cycleprev"))
else
hl.dispatch(hl.dsp.window.cycle_next({ next = next_window }))
hl.dispatch(hl.dsp.window.bring_to_top())
end
end
end
o.bind("ALT + TAB", "Focus on next window", cycle_window(true))
o.bind("ALT + SHIFT + TAB", "Focus on previous window", cycle_window(false))
By default, Ultrawide Focus Layout targets the output containing the active workspace and derives the center width from that output's height. A 5120x1440 display becomes a centered 2560x1440 canvas; a 3440x1440 display does the same with narrower gutters.
Install
Install and enable it with:
omarchy plugin add https://github.com/rossvz/omarchy-focus-mode.git --enable
Toggle or inspect it through the service's IPC API:
omarchy-shell rossvz.focus-mode toggle
omarchy-shell rossvz.focus-mode status
Omarchy plugins cannot install keybindings or menu extensions. To add the
original SUPER + F11 binding, put this in ~/.config/hypr/bindings.lua:
o.bind("SUPER + F11", "Ultrawide Focus Layout", "omarchy-shell rossvz.focus-mode toggle")
To add Trigger -> Toggle -> Ultrawide Focus Layout to the Omarchy menu, merge this row
into ~/.config/omarchy/extensions/omarchy-menu.jsonc:
"trigger.toggle.ultrawide-focus-layout": {
"icon": "\uf2d0",
"label": "Ultrawide Focus Layout",
"description": "Centered 16:9 monocle workspace for ultrawide displays",
"checked": "omarchy-shell rossvz.focus-mode status >/dev/null 2>&1",
"action": "omarchy-shell rossvz.focus-mode toggle"
}
Configure
The defaults require no configuration. To override them, copy
focus-mode.example.json to
~/.config/omarchy/focus-mode.json and edit the values:
{
"output": "DP-1",
"contentWidth": 2560,
"color": "#000000",
"hideBar": true,
"removeGaps": true,
"workspaceLayout": "monocle"
}
An empty output follows the active workspace. A contentWidth of 0
calculates a 16:9 width from the monitor height. workspaceLayout accepts
monocle, scrolling, master, or dwindle; monocle is the layout's
default because it makes the focused tiled window fill the entire canvas.
Requirements
Ultrawide Focus Layout targets Omarchy Quattro and uses tools included with a
standard Omarchy installation: Quickshell, Hyprland (hyprctl), Bash, jq,
notify-send, omarchy-shell, and omarchy-hyprland-toggle. It does not
download code, require root privileges, or use network access at runtime.
Remove
Because Omarchy intentionally does not run plugin install or uninstall hooks, turn Ultrawide Focus Layout off before disabling or removing it:
omarchy-shell rossvz.focus-mode disable
omarchy plugin remove rossvz.focus-mode
Compatibility identifiers
The plugin keeps its original internal ID, rossvz.focus-mode, along with the
existing IPC route, install directory, state paths, configuration filename, and
GitHub repository URL. These are compatibility identifiers rather than the
user-facing product name; retaining them avoids breaking existing installs.
True fullscreen windows may intentionally cover layer-shell exclusion zones. Leave windows tiled in monocle mode when you want them constrained to the centered canvas.