A polished fork of Omari - Niri-inspired window management for Omarchy. Same scrolling layout, gestures, overview, and switcher, refined into a cleaner popup with individually toggleable settings, the official Niri icon, and a hideable bar widget.
- Redesigned Alt-Tab switcher with smoother behavior and bug fixes (elected scope stays active while switching between windows.)
- Shift-Tab support in the overview, with smooth animated transitions for backward window switching and and and updated the bar widget with the official Niri icon for a cleaner Niri-inspired look.
- Hide/show toggle for removing the Switcher widget from the bar without disabling the plugin.
- Redesigned overview with a backdrop, improved visual hierarchy, and refined aesthetics.
| Feature | Preview |
|---|---|
| Workspace Overview (Super + Tab) | ![]() |
| Windows overview (Alt + Tab) | ![]() |
| Switcher controls | ![]() |
- Omarchy with the Quattro shell and
omarchy plugincommands. - Hyprland with Lua configuration, the scrolling layout, gesture callbacks,
hl.timer, andhl.is_key_downsupport. - Omarchy's default Hyprland toggle loader (
default.hypr.toggles). - Quickshell with QtQuick, QtQuick.Controls, QtQuick.Effects, Quickshell.Io,
Quickshell.Wayland, and Quickshell.Hyprland, plus Omarchy's
qs.Commonsandqs.Uimodules. - Bash, coreutils, and
hyprctl. A multitouch trackpad is needed for gestures; keyboard controls also work.
Older Hyprland installations using only hyprland.conf are not supported.
There is no Niri dependency, remote build, package installer, extra service,
network request, or privileged command. The plugin runs inside the existing
Omarchy shell process with your user permissions.
omarchy plugin add https://github.com/paudelsamir/switcher.git --enable
omarchy bar move paudelsamir.switcher --section rightClick the bar icon and turn on Switcher. The three settings - Overview, Alt-Tab, and Workspace - appear below it, each independently toggleable. Right-clicking the icon toggles the mode directly.
Enabling mode copies the bundled hypr/switcher-*.lua files into
${XDG_STATE_HOME:-$HOME/.local/state}/omarchy/toggles/hypr/ and reloads
Hyprland. These files persist across login. Existing configuration files are
not edited. Review hypr/ for the full configuration; custom bindings may
conflict.
SUPER is the Windows/Command key. Enable the corresponding Switcher
feature in the bar popup to use its shortcuts.
Desktop navigation
| Shortcut | Action |
|---|---|
| SUPER+Left / Right | Focus the previous / next window column |
| SUPER+Up / Down | Focus the window above / below within a column |
| SUPER+PageDown | Go to the next workspace |
| SUPER+PageUp | Go to the previous workspace |
| SUPER+ALT+O | Open the overview |
| SUPER+TAB | Switch workspaces through the overview |
| SUPER+SHIFT+TAB | Switch workspaces backwards through the overview |
| ALT+TAB | Open the window switcher and select the next window |
| ALT+SHIFT+TAB | Open the window switcher and select the previous window |
While the overview is open
| Shortcut | Action |
|---|---|
| Up / Down | Select the previous / next workspace row |
| Left / Right | Select the previous / next window in the row |
| Enter or Space | Activate the selected window or empty workspace |
| SUPER+ALT+O | Activate the selection and close the overview |
| Escape | Cancel and return to the original desktop |
While using SUPER+TAB
Hold SUPER, press TAB, and keep holding SUPER while navigating. The arrow
keys temporarily belong to the overview instead of the normal desktop
navigation bindings. Release SUPER after activating or cancelling the
selection.
| Shortcut | Action |
|---|---|
| SUPER+TAB | Open the overview at the next workspace |
| SUPER+SHIFT+TAB | Open the overview at the previous workspace |
| SUPER+Up / Down | Select the previous / next workspace row |
| SUPER+Left / Right | Select the previous / next window in the row |
| SUPER+Enter or SUPER+Space | Activate the selection |
| Escape | Cancel and return to the original desktop |
While the window switcher is open
Keep ALT held while browsing or changing the scope.
| Shortcut | Action |
|---|---|
| Tab / SHIFT+Tab | Select the next / previous window |
| Left / Right | Select the previous / next window |
| A | Show windows from all workspaces |
| W | Show windows from the current workspace |
| O | Show windows from the current display |
| Release ALT | Activate the selected window |
| Enter or Space | Activate the selected window immediately |
| Escape | Cancel without switching windows |
| Control | Action |
|---|---|
| Three-finger horizontal swipe | Scroll along window columns |
| Three-finger vertical swipe | Change workspace |
| Four-finger swipe up | Open the overview |
| Four-finger swipe down in the overview | Activate the selection and close the overview |
| Two-finger scrolling in the overview | Browse workspaces vertically or windows horizontally |
| Click a window preview | Activate that window |
| Click the empty workspace in the overview | Switch to that workspace |
Turn off Switcher before disabling or removing the plugin. For explicit cleanup, including when the shell is not running:
bash "$HOME/.config/omarchy/plugins/paudelsamir.switcher/bin/switcher-toggle" all off
omarchy plugin remove paudelsamir.switcherCleanup deletes only the generated toggle files and reloads Hyprland, restoring the underlying configuration. If Hyprland is stopped, the next session loads without those toggles.
Keep the permanent plugin ID paudelsamir.switcher. The root manifest declares
Panel.qml as the bar widget and SwitcherOverview.qml as the overlay; the
latter loads SwitcherAltTab.qml internally.
omarchy plugin validate .
qmllint -I "$OMARCHY_PATH/shell" ./*.qml
bash -n bin/switcher-toggle
for source in hypr/*.lua; do luac -p "$source"; doneOn Arch, qmllint may be at /usr/lib/qt6/bin/qmllint. Inspect runtime
errors with qs log -p "$OMARCHY_PATH/shell" --tail 100.
Before release, test a fresh install, all toggles and controls, light and
dark themes, multiple displays, shell reload, and removal. Confirm that
removal leaves no switcher-*.lua toggle files.
MIT - see LICENSE.
Note
This project adds the refinements listed above while preserving compatibility with the original Lua configuration and Hyprland integration.


