[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-10919":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":9,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":21,"createdAt":9,"pushedAt":9,"updatedAt":37,"readmeContent":38,"aiSummary":39,"trendingCount":16,"starSnapshotCount":16,"syncStatus":40,"lastSyncTime":41,"discoverSource":42},10919,"OmniWM","BarutSRB\u002FOmniWM","BarutSRB","MacOS Niri and Hyprland inspired tiling window manager that's developer signed and notorized (safe for managed enterprise environments). Aiming for parity and extra innovation.",null,"https:\u002F\u002Fgithub.com\u002FBarutSRB\u002FOmniWM","Swift",1873,58,13,26,0,113,18.31,false,"main",[22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],"aerospace","desktop-environment","hyprland","mac","macos","productivity","swift","tiling","tiling-window-manager","window-management","window-manager","workspace-manager","dwindle-layout","niri","paperwm","2026-06-12 02:02:28","## Demo Video\n\n[![Watch the demo](https:\u002F\u002Fimg.youtube.com\u002Fvi\u002FWcHjGkuD2Fc\u002Fmaxresdefault.jpg)](https:\u002F\u002Fyoutu.be\u002FWcHjGkuD2Fc)\n\n## Contributors\n\n\u003Cp align=\"center\">\n  Thank you to everyone who contributed to OmniWM. Your ideas and code made a real difference.\n\u003C\u002Fp>\n\n\u003Ctable align=\"center\">\n  \u003Ctr>\n    \u003Ctd align=\"center\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fadelin-b\" title=\"Adelin Berard\">\n        \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fadelin-b.png?size=96\" width=\"96\" alt=\"Adelin Berard\">\n      \u003C\u002Fa>\n      \u003Cbr>\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fadelin-b\">\u003Cstrong>Adelin Berard\u003C\u002Fstrong>\u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbalazshevesi\" title=\"Balazs Hevesi\">\n        \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fbalazshevesi.png?size=96\" width=\"96\" alt=\"Balazs Hevesi\">\n      \u003C\u002Fa>\n      \u003Cbr>\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbalazshevesi\">\u003Cstrong>Balazs Hevesi\u003C\u002Fstrong>\u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjanhesters\" title=\"Jan Hesters\">\n        \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fjanhesters.png?size=96\" width=\"96\" alt=\"Jan Hesters\">\n      \u003C\u002Fa>\n      \u003Cbr>\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjanhesters\">\u003Cstrong>Jan Hesters\u003C\u002Fstrong>\u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjcardama\" title=\"Jose Cardama\">\n        \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fjcardama.png?size=96\" width=\"96\" alt=\"Jose Cardama\">\n      \u003C\u002Fa>\n      \u003Cbr>\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjcardama\">\u003Cstrong>Jose Cardama\u003C\u002Fstrong>\u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flgerlinski\" title=\"Lukas Gerlinski\">\n        \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Flgerlinski.png?size=96\" width=\"96\" alt=\"Lukas Gerlinski\">\n      \u003C\u002Fa>\n      \u003Cbr>\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flgerlinski\">\u003Cstrong>Lukas Gerlinski\u003C\u002Fstrong>\u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fzucram\" title=\"Marcus Harlid Davin\">\n        \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fzucram.png?size=96\" width=\"96\" alt=\"Marcus Harlid Davin\">\n      \u003C\u002Fa>\n      \u003Cbr>\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fzucram\">\u003Cstrong>Marcus Harlid Davin\u003C\u002Fstrong>\u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fzwo-bot\" title=\"mm\">\n        \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fzwo-bot.png?size=96\" width=\"96\" alt=\"mm\">\n      \u003C\u002Fa>\n      \u003Cbr>\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fzwo-bot\">\u003Cstrong>mm\u003C\u002Fstrong>\u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgeorgebastille\" title=\"Rich Hanes\">\n        \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fgeorgebastille.png?size=96\" width=\"96\" alt=\"Rich Hanes\">\n      \u003C\u002Fa>\n      \u003Cbr>\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgeorgebastille\">\u003Cstrong>Rich Hanes\u003C\u002Fstrong>\u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fchenhaozhenss\" title=\"Williamufo\">\n        \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fchenhaozhenss.png?size=96\" width=\"96\" alt=\"Williamufo\">\n      \u003C\u002Fa>\n      \u003Cbr>\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fchenhaozhenss\">\u003Cstrong>Williamufo\u003C\u002Fstrong>\u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FYang-Yiming\" title=\"Yang-Yiming\">\n        \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002FYang-Yiming.png?size=96\" width=\"96\" alt=\"Yang-Yiming\">\n      \u003C\u002Fa>\n      \u003Cbr>\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FYang-Yiming\">\u003Cstrong>Yang-Yiming\u003C\u002Fstrong>\u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fzicochaos\" title=\"Zicochaos\">\n        \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002FZicochaos.png?size=96\" width=\"96\" alt=\"Zicochaos\">\n      \u003C\u002Fa>\n      \u003Cbr>\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fzicochaos\">\u003Cstrong>Zicochaos\u003C\u002Fstrong>\u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmkdir700\" title=\"mkdir700\">\n        \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fmkdir700.png?size=96\" width=\"96\" alt=\"mkdir700\">\n      \u003C\u002Fa>\n      \u003Cbr>\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmkdir700\">\u003Cstrong>mkdir700\u003C\u002Fstrong>\u003C\u002Fa>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FmacOS-15.0%2B-green?logo=apple&logoColor=white\" alt=\"macOS\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FApple%20Silicon-supported-green?logo=apple&logoColor=white\" alt=\"Apple Silicon\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FX86\u002FX64-supported-green?logo=intel&logoColor=white\" alt=\"Intel\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FClaude%20Code-Assisted-green?logo=claude&logoColor=white\" alt=\"Claude Code\">\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Ftrendshift.io\u002Frepositories\u002F16758\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Ftrendshift.io\u002Fapi\u002Fbadge\u002Frepositories\u002F16758\" alt=\"BarutSRB%2FOmniWM | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"\u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n\nSome of the features:\n- Real quake\u002Fsticky terminal using ghostty's libghostty\n- Best-effort macOS native-tab replacement support\n- IPC\u002FCLI\n- Scratchpad\u002FSticky windows of any app\n- Niri Overview\n- Unified command palette for windows and app menus\n- App menu anywhere\n- Niri tabs\n- Niri and Dwindle layout\n- Hide\u002Funhide status bar icons (Simialr to Ice Bar)\n- Keep awake (Similar to Caffeine)\n- Interactive workspace\u002Fapp icon bar\n- A lot more features not show in the video.\n\n## Performance & Trust\n\nOmniWM is built for high responsiveness and smooth, crisp animations.\n\n- **Private APIs** - OmniWM leverages Apple's private APIs where ever technically possible in order to reduce latency and improve window management responsiveness.\n- **Refresh rate aware animations** - OmniWM targets true display refresh pacing (for example 60\u002F120\u002F144Hz) for animations.\n- **No SIP disable required** - OmniWM does not require System Integrity Protection (SIP) to be disabled and never will.\n- **Always notarized official releases** - Official OmniWM release builds are developer signed and notarized by Apple and will stay that way.\n- **Forever free, no limitations** - OmniWM is and will remain free to use forever, with no subscriptions, feature paywalls, trial limits, or usage caps.\n\n## Requirements\n\n- macOS 15+ (Sequoia)\n- Accessibility permissions (prompted on launch)\n- Displays have separate spaces **OFF**\n\n## Installation\n\n### Homebrew\n\n```bash\nbrew tap BarutSRB\u002Ftap\nbrew install omniwm\n```\n\n### GitHub Releases\n\n1. Download the latest `OmniWM.zip` from [Releases](https:\u002F\u002Fgithub.com\u002FBarutSRB\u002FOmniWM\u002Freleases)\n2. Extract and move `OmniWM.app` to `\u002FApplications`\n3. In System Settings > Desktop & Dock > Mission Control, turn **OFF** `Displays have separate Spaces`\n4. Log out of macOS and log back in for that change to take effect unless you had it off already\n5. Launch OmniWM and grant Accessibility permissions when prompted\n\n## Updates\n\nOmniWM checks for updates by default.\n\n- On launch, OmniWM polls the latest GitHub release at most once per day.\n- Updates stay manual. OmniWM does not auto-download or auto-install a new release.\n- When a newer release is available, OmniWM shows a centered popup with release notes and actions for `Open Release Page`, `Copy brew upgrade omniwm`, `Skip This Version`, and `Not Now`.\n- You can control this from `Settings > General > Updates` or trigger a manual check from the status bar menu with `Check for Updates...`.\n\n## Documentation\n\nThe documentation hub lives in [`docs\u002Findex.md`](docs\u002Findex.md).\n\n- [Documentation Home](docs\u002Findex.md)\n- [Architecture Guide](docs\u002FARCHITECTURE.md)\n- [IPC & CLI Reference](docs\u002FIPC-CLI.md)\n- [Contribution Docs](docs\u002FCONTRIBUTING.md)\n- [Canonical Contributing Guide](CONTRIBUTING.md)\n\n## IPC and CLI\n\nOmniWM ships with a bundled CLI, `omniwmctl`, for automation and scripting.\n\nIPC is disabled by default. Enable `Enable IPC` from the menu bar before using the CLI or any automation.\n\nFor setup, installation options, commands, queries, rules, subscriptions, and security details, see [docs\u002FIPC-CLI.md](docs\u002FIPC-CLI.md).\n\n## Quick Start\n\n1. Launch OmniWM from your Applications folder\n2. In System Settings > Desktop & Dock > Mission Control, turn **OFF** `Displays have separate Spaces`\n3. Log out of macOS and log back in for that change to take effect unless you had it off already\n4. Grant Accessibility permissions in System Settings > Privacy & Security > Accessibility\n5. Windows will automatically tile in columns\n6. Use the default shortcuts in `Keyboard Shortcuts` to navigate between windows\n7. Click the menu bar icon to access Settings, including `Settings > General > Updates`\n8. Use `Check for Updates...` from the status bar menu whenever you want to run a manual update check\n9. If other status bar icons are hidden, right-click OmniWM's menu bar icon to reveal Hidden Bar, then hold Command and drag icons to the left of the separator.\n\n\n## User Guide\n\n### Layout Modes\n\nOmniWM offers two layout engines that you can switch between per workspace:\n\n**Niri (Scrolling Columns)** - Windows arranged in vertical columns that scroll horizontally. Each column can have multiple stacked windows or be \"tabbed\" (multiple windows, one visible at a time). Best for wide monitors with many windows.\n\n**Hyprland Dwindle (BSP)** - Binary space partition layout that recursively divides screen space. Each new window splits the space in half. Best for traditional tiling with predictable layouts.\n\nUse the `Toggle Workspace Layout` shortcut below to switch layouts per workspace or configure them in GUI settings.\n\n### Keyboard Shortcuts\n\nAll shortcuts are customizable in Settings > Hotkeys. The tables below list all the hotkeys:\n\nLayout legend:\n- `Shared` works in any active layout.\n- `Niri` works only when the active workspace uses the Niri layout.\n- `Dwindle` works only when the active workspace uses the Dwindle layout.\n\n#### Workspace\n\n| Action | Default Shortcut | Layout |\n|--------|------------------|--------|\n| Switch to Workspace 1-9 | `Option + 1-9` | `Shared` |\n| Move Window to Workspace 1-9 | `Option + Shift + 1-9` | `Shared` |\n| Switch to Previous Workspace (Back and Forth) | `Control + Option + Tab` | `Shared` |\n| Switch to Next Workspace | `Unassigned` | `Shared` |\n| Switch to Previous Workspace (Sequential) | `Unassigned` | `Shared` |\n| Move Window to Workspace Up | `Control + Option + Shift + Up Arrow` | `Shared` |\n| Move Window to Workspace Down | `Control + Option + Shift + Down Arrow` | `Shared` |\n| Move Column to Workspace 1-9 | `Unassigned` | `Niri` |\n| Move Column to Workspace Up | `Control + Option + Shift + Page Up` | `Niri` |\n| Move Column to Workspace Down | `Control + Option + Shift + Page Down` | `Niri` |\n\n#### Focus\n\n| Action | Default Shortcut | Layout |\n|--------|------------------|--------|\n| Focus Left \u002F Right \u002F Up \u002F Down | `Option + Arrow Keys` | `Shared` |\n| Focus Previous Window | `Option + Tab` | `Niri` |\n| Traverse Backward | `Unassigned` | `Niri` |\n| Traverse Forward | `Unassigned` | `Niri` |\n| Focus First Column | `Option + Home` | `Niri` |\n| Focus Last Column | `Option + End` | `Niri` |\n| Focus Column 1-9 | `Control + Option + 1-9` | `Niri` |\n| Toggle Command Palette | `Control + Option + Space` | `Shared` |\n| Open Menu Anywhere | `Control + Option + M` | `Shared` |\n| Toggle Workspace Bar | `Unassigned` | `Shared` |\n| Toggle Hidden Bar | `Unassigned` | `Shared` |\n| Toggle Quake Terminal | `` Option + ` `` | `Shared` |\n| Toggle Overview | `Option + Shift + O` | `Shared` |\n\n#### Move Window\n\n| Action | Default Shortcut | Layout |\n|--------|------------------|--------|\n| Move Left \u002F Right \u002F Up \u002F Down | `Option + Shift + Arrow Keys` | `Shared` |\n\n#### Monitor\n\n| Action | Default Shortcut | Layout |\n|--------|------------------|--------|\n| Focus Next Monitor | `Control + Command + Tab` | `Shared` |\n| Focus Previous Monitor | `Unassigned` | `Shared` |\n| Focus Last Monitor | `` Control + Command + ` `` | `Shared` |\n\n#### Layout\n\n| Action | Default Shortcut | Layout |\n|--------|------------------|--------|\n| Toggle Fullscreen | `Option + Return` | `Shared` |\n| Toggle Native Fullscreen | `Unassigned` | `Shared` |\n| Balance Sizes | `Option + Shift + B` | `Shared` |\n| Move to Root | `Unassigned` | `Dwindle` |\n| Toggle Split | `Unassigned` | `Dwindle` |\n| Swap Split | `Unassigned` | `Dwindle` |\n| Grow Left \u002F Right \u002F Up \u002F Down | `Unassigned` | `Dwindle` |\n| Shrink Left \u002F Right \u002F Up \u002F Down | `Unassigned` | `Dwindle` |\n| Preselect Left \u002F Right \u002F Up \u002F Down | `Unassigned` | `Dwindle` |\n| Clear Preselection | `Unassigned` | `Dwindle` |\n| Raise All Floating Windows | `Option + Shift + R` | `Shared` |\n| Rescue Off-Screen Floating Windows | `Unassigned` | `Shared` |\n| Toggle Focused Window Floating | `Unassigned` | `Shared` |\n| Assign Focused Window to Scratchpad | `Unassigned` | `Shared` |\n| Toggle Scratchpad Window | `Unassigned` | `Shared` |\n| Toggle Workspace Layout | `Option + Shift + L` | `Shared` |\n\n#### Column\n\n| Action | Default Shortcut | Layout |\n|--------|------------------|--------|\n| Move Column Left \u002F Right | `Control + Option + Shift + Left \u002F Right Arrow` | `Niri` |\n| Toggle Column Tabbed | `Option + T` | `Niri` |\n| Cycle Column Width Forward | `Option + .` | `Shared` |\n| Cycle Column Width Backward | `Option + ,` | `Shared` |\n| Toggle Column Full Width | `Option + Shift + F` | `Niri` |\n\nIn Niri, `Move Left \u002F Right` expels the focused window out of multi-window columns or consumes a single-window column into the adjacent column. `Move Up \u002F Down` keeps the current in-column reorder behavior.\n\n#### Quake Terminal (Inside Terminal)\n\n| Action | Shortcut |\n|--------|----------|\n| New Tab | `Cmd + T` |\n| Close Tab | `Cmd + W` |\n| Next Tab | `Cmd + Shift + ]` |\n| Previous Tab | `Cmd + Shift + [` |\n| Next Tab (Alt) | `Ctrl + Tab` |\n| Previous Tab (Alt) | `Ctrl + Shift + Tab` |\n| Select Tab 1-9 | `Cmd + 1-9` |\n| Split Pane (Horizontal) | `Cmd + D` |\n| Split Pane (Vertical) | `Cmd + Shift + D` |\n| Close Pane | `Cmd + Shift + W` |\n| Equalize Splits | `Cmd + Shift + =` |\n| Navigate Pane | `Cmd + Option + Arrow Keys` |\n\n### Features\n\n#### Quake Terminal\n\nA true quake\u002Fsticky terminal (powered by Ghostty's libghostty) that slides in from the screen edge and:\n- Toggle it from the global shortcut shown in `Keyboard Shortcuts`\n- Supports multiple tabs and splits within tabs\n- Tab and pane shortcuts are listed in **Quake Terminal (Inside Terminal)**\n- Mouse resize by dragging edges; `Option + drag` to move (remembers size\u002Fposition per monitor)\n- Configure position (top\u002Fbottom\u002Fleft\u002Fright\u002Fcenter), size, and opacity in Settings\n- Auto-hides on focus loss (optional)\n\n#### Command Palette\n\nQuickly search windows or app menus from one shared palette:\n- Open it from the global shortcut shown in `Keyboard Shortcuts`\n- Use `Cmd + 1` for `Windows` and `Cmd + 2` for `Menu` when menu search is available\n- Type to fuzzy-search by window title, app name, or menu item\n- Menu results always show keyboard shortcuts when available\n- `Up` \u002F `Down` move the selection\n- `Enter` activates the selected result\n- `Shift + Enter` summons the selected window to the right when available\n- `Escape` dismisses the palette\n\n#### Menu Anywhere\n\nAccess any application's menu from your keyboard:\n- Shows the native menu at the cursor from a global shortcut\n\n#### Overview Mode\n\nSee all windows at once with thumbnails:\n- Open it from the global shortcut shown in `Keyboard Shortcuts`\n- Click a window to focus it\n- Type to filter\u002Fsearch windows; `Backspace` deletes search text\n- Alt + Shift + Mouse Scroll to zoom in\u002Fout\n- `Arrow Keys` navigate the selection; `Tab` \u002F `Shift + Tab` move horizontally\n- `Enter` activates the selected window\n- `Escape` clears the search first, then dismisses the overview when the search is empty\n\n#### Workspace Bar\n\nA visual indicator showing your workspaces:\n- Displays open apps per workspace\n- Click to switch workspaces or jump to that app\n- If dedupe option is on click the app icon to get a popup with list of all its windows to jump to\n- Configure position, height, and appearance in Settings\n\n#### Hidden Bar\n\nHide or reveal status bar icons using a separator item:\n- Right-click the OmniWM menu bar icon to toggle\n- An optional global hotkey is available and starts unassigned\n\n#### Menu Bar Icon Recovery\n\nOmniWM repairs its owned menu bar icon and Hidden Bar separator on launch when AppKit restores them as hidden or off screen. If you are recovering from an older build where OmniWM's own icon is already gone, quit OmniWM and remove only the AppKit status-item restore keys:\n\n```sh\nfor key in \\\n  \"NSStatusItem Preferred Position omniwm_main\" \\\n  \"NSStatusItem Preferred Position omniwm_hiddenbar_separator\" \\\n  \"NSStatusItem Visible omniwm_main\" \\\n  \"NSStatusItem Visible omniwm_hiddenbar_separator\" \\\n  \"NSStatusItem Visible Preference omniwm_main\" \\\n  \"NSStatusItem Visible Preference omniwm_hiddenbar_separator\" \\\n  \"NSStatusItem Visibility omniwm_main\" \\\n  \"NSStatusItem Visibility omniwm_hiddenbar_separator\"\ndo\n  defaults delete com.barut.OmniWM \"$key\" 2>\u002Fdev\u002Fnull || true\ndone\n```\n\nRelaunch OmniWM after that targeted cleanup. This does not edit `~\u002F.config\u002Fomniwm\u002Fsettings.toml`; it only clears private AppKit\u002FUserDefaults restore state for OmniWM's two status items. Use a broader `defaults delete com.barut.OmniWM` only when you intentionally want to reset all private runtime defaults, and remove or edit `settings.toml` separately only when you want to reset exported user settings.\n\n### Tips\n\n- **Workspaces** - Create named workspaces in Settings to organize by project or context (You can use emojis 🥳)\n- **App Rules** - Exclude problematic apps from tiling or assign them to specific workspaces\n- **Mouse** - `Option + drag` swaps tiled windows; `Option + Shift + drag` inserts windows to a column (Niri)\n- **Mouse Resize** - Hover window edges and drag to resize (Niri)\n- **Scroll Gestures (Mouse)** - Hold `Option + Shift + Mouse Scroll Wheel` (default, configurable) and scroll through columns horizontally\n- **Trackpad Gestures** - Use horizontal gestures with 2\u002F3\u002F4 fingers (configurable); direction can be inverted (not tested lacking hardware)\n\n## Configuration\n\nAccess settings by clicking OmniWM's status bar icon and selecting **Settings** or **App Rules**.\nMouse and gesture settings are available in Settings.\n\nOmniWM stores its editable config at `~\u002F.config\u002Fomniwm\u002Fsettings.toml`, while private runtime state lives in `UserDefaults`.\n\n- **Editable Config** writes the full canonical settings file, including hotkeys and monitor overrides, so it can be edited directly.\n- **Compact Backup** writes only values that differ from defaults. Import still merges that backup back into the full canonical settings model.\n- **Create Config File**, **Reveal Settings File**, and **Open Settings File** create `settings.toml` on first use if it does not exist yet.\n- `updateChecksEnabled` is part of the persisted settings model, so it round-trips through full export, compact backup, and import.\n- Fetched release notes, release URLs, last-check timestamps, and skipped-release state stay out of `settings.toml` and remain local runtime or private `UserDefaults` state only.\n- The persisted window restore catalog also stays in private `UserDefaults`. It stores local restore metadata such as workspace target, preferred monitor, floating geometry, and matching window identity fields so managed floating windows can be restored or rescued across relaunches without being exported to `settings.toml`.\n\n## App Rules\n\nConfigure per-application behavior in Settings > App Rules:\n\n- **Always Float** - Force specific apps to always float (e.g., calculators, preferences windows)\n- **Assign to Workspace** - Open first matching app windows on a specific workspace; later windows follow the app's current workspace unless rules are explicitly applied\n- **Minimum Size** - Prevent the layout engine from sizing windows below a threshold\n\n## Building from Source\n\nRequirements:\n- SwiftPM with Swift 6.2+\n- macOS 15.0+\n- Zig `0.15.2`\n- Ghostty's universal `libghostty.a` at `Frameworks\u002FGhosttyKit.xcframework\u002Fmacos-arm64_x86_64\u002Flibghostty.a`\n\nBuild Commands:\n\n```bash\nmake build         # Run build preflight checks, build Zig kernels, then build OmniWM\nmake test          # Run build preflight checks, build Zig kernels, then run the Swift test suite\nmake kernels-test  # Run the Zig kernel test suite\nmake verify        # Run lint + build + tests\nmake release-check # Run release-oriented preflight and universal build checks\n```\n\n`make build` and `make test` are the supported entry points for contributors. They run the current preflight checks and Zig kernel build automatically before invoking SwiftPM, so you should not rely on calling `swift build` or `swift test` directly on a fresh checkout.\n\n## Support\n\nIf you find OmniWM useful, consider supporting development:\n\n- [GitHub Sponsors](https:\u002F\u002Fgithub.com\u002Fsponsors\u002FBarutSRB)\n- [PayPal](https:\u002F\u002Fpaypal.me\u002Fbeacon2024)\n\n## Contributing\n\nIssues and pull requests are welcome on [GitHub](https:\u002F\u002Fgithub.com\u002FBarutSRB\u002FOmniWM).\n\nStart with [CONTRIBUTING.md](CONTRIBUTING.md) for the actual project guidelines, expectations, and preferred direction.\n\nFor deeper technical context, the docs pages that back the documentation site are here:\n\n- [Architecture Guide](docs\u002FARCHITECTURE.md)\n- [IPC & CLI Reference](docs\u002FIPC-CLI.md)\n- [Contribution Docs](docs\u002FCONTRIBUTING.md)\n","OmniWM 是一款受 MacOS Niri 和 Hyprland 启发的平铺窗口管理器，旨在为企业环境提供安全可靠的解决方案。该项目采用 Swift 语言开发，并经过开发者签名和公证，确保其在托管企业环境中也能安全运行。核心功能包括高效的窗口布局管理、支持多种平铺模式（如 Dwindle 布局）以及对生产力工具的集成。此外，OmniWM 还引入了一些创新特性，以提升用户体验。此项目适用于需要高度定制化桌面环境的开发者及企业用户，特别是在那些对软件安全性有严格要求的场景中。",2,"2026-05-29 03:38:15","trending"]