OmniWM

OmniNullGPL-2.0活跃维护

面向 Apple Silicon Mac 的免费开源平铺窗口管理器,融合 Niri 式滚动容器与 Hyprland 式 Dwindle BSP 布局,让窗口自动排列、提升多任务效率。

Free, open-source tiling window manager for Apple Silicon Macs, with Niri-style scrolling containers and Hyprland-style Dwindle BSP.

v0.8.0发布于 2026-11-07 18:19 UTC3,583star +22 / 7 天179fork同步于 2026-11-10 23:41 UTC

怎么上手

由 README 提炼,执行前请确认
brew install --cask omniwm
硬件要求按 README 说明

仅支持 Apple Silicon Mac,需 macOS 26(Tahoe)或更高版本,且 SIP 保持开启;README 未提及显存或 GPU 型号要求。

支持 Apple Silicon
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

面向 Apple Silicon Mac 的开源平铺窗口管理器,融合 Niri 滚动容器与 Hyprland Dwindle BSP 布局

面向 Apple Silicon Mac 的免费开源平铺窗口管理器,融合 Niri 式滚动容器与 Hyprland 式 Dwindle BSP 布局,让窗口自动排列、提升多任务效率。

核心能力

  • 按工作区切换 Niri 滚动容器与 Dwindle BSP 布局
  • 支持多显示器窗口路由与工作区分配
  • 提供本地 IPC 与 omniwmctl 命令行自动化
  • 内置窗口切换器、命令面板与 Overview 总览
  • Ghostty 驱动的 quake 终端与 scratchpad 暂存窗口

容易踩的坑

需在系统设置中开启「显示器具有单独的空间」并重新登录;首次启动须授予辅助功能与输入监控权限,屏幕录制为可选;IPC 默认关闭,需手动启用后才能用 omniwmctl。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.8.0
  1. canary-20261109-0655-42575760350-1Canary 20261109-0655 (28c312b4)pre-release2026-11-09 · 2026-11-09 07:06 UTC
    查看更新说明

    Automated canary build of main. It is signed and notarized like a release but skips the owner review, so treat it as unstable.

    See the canary guide to install, update, or return to stable. For everyday use, download the latest stable release.

    • Commit: 28c312b45928
    • Base tag: canary-20261108-0414-42445690643-1

    Changes since canary-20261108-0414-42445690643-1

    • 28c312b4 Keep CI's pinned GitHub release downloads in the Actions cache
    • ffd84270 Add Apple's Developer ID intermediate when importing signing credentials
    • de58645e Count Wi-Fi as connected while the interface is joined
    • 5accdf13 Check out the approval checker at the event's default commit
    • f3b21eef Merge pull request #1140 from hezhizhen/codex/fix-native-resize-mouse-down
    • 6a218b70 fix(input): capture native resize before forwarding mouse-down
    • 0b29d5f2 Restore the main-volume test on Blacksmith's macOS runners
    • ce8f723c Install a virtual audio output on Blacksmith's macOS test runners
    • 7fff38cc Require owner or maintainer approval before CI
    • 593a3c4b Run the release and canary macOS jobs on Blacksmith runners
    • a7ad4c8f Run CI's macOS jobs on Blacksmith runners
    • 932f2c71 Remove the tests that need an unlocked console or an audio output
    • 1c31e16e Revert the Blacksmith macOS move and its console unlock
    • f9262197 ci: run the macos jobs on blacksmith runners (#1135)
    • df584611 Run the release and canary Linux jobs on Blacksmith runners
    • fb064bd6 Run CI's macOS jobs on GitHub's runners again
    • fb357462 Run CI's macOS jobs on Blacksmith runners
    • a1df5e58 Run the small Linux jobs on Blacksmith runners
    • dc749ad9 Rebuild every file changed since CI's cached build
    • 44227905 Derive the park ordering tests' titles, frames and parked position
    • b009a0de Merge pull request #1130 from hezhizhen/codex/fix-title-change-frame-writes
    • c1571fee Date CI sources by main's first-parent history
    • b80ddab3 Drop the palette modifier setting and find layout keys in one scan
    • 55ed7f89 Merge pull request #1127 from rickythefox/palette-shortcut-precedence
    • 28bc902f Keep the settings search index within the type length limit
    • adcfb1b1 Read the controller once in the Niri selection reveal check
    • cb18d5f6 Show the OmniWM icon until the layout is known and reuse layout images
    • 787ceca7 Merge pull request #1101 from aaqib-ahmed-nazir/feat/status-bar-layout-indicator
    • 24e960ee Derive the click-focus test's wheel tick and visible span
    • 98b7e78b Merge pull request #1092 from ylorn/click-focus-without-scrolling
    • 2f8841b1 Raise the window off the main thread after an OmniWM fullscreen toggle
    • 0a5372b9 Drop the fullscreen toggle's focus when focus moved before its layout
    • 82bfaf3f Merge pull request #1109 from hanswug/fix/fullscreen-toggle-raise
    • 6dab5ad1 fix(workspaces): preserve queued frame writes on title changes
    • b0f7fa37 Keep a re-tiled lone column's tab mode and check where it lands
    • 6f5187ef Merge pull request #1119 from t1dotdev/fix/niri-float-retile-stacking
    • 11e39ff3 Derive the bar clearance test rectangles from their inputs
    • 291c59eb Merge pull request #1114 from hezhizhen/OmniWM
    • 4b747ec8 Assert remapped preview and reveal keys for every palette modifier
    • 7511d43a fix(layout): keep window borders clear of workspace bars
    • 6e8d7533 Check that current(modifier:) uses the layout lookup's key codes
    • 929ae11c Test that palette letter reservations ignore Command
    • 767f2967 Derive the spring and pulse test bounds from their inputs
    • f185fddb Reserve palette letters as the palette reads them
    • 8fb46b14 Address CodeRabbit review on palette shortcuts
    • 3d5c1b2c Refresh reserved palette letter chords on keyboard layout change
    • d6231a71 Let palette shortcuts win while the command palette is open
    • 2a2efa4b Let a lone Niri window join a tabbed neighbor with stacking moves off
    • 0ee36ef8 Give a re-tiled lone Niri window its own column again
    • b5dc063f Fron
  2. canary-20261108-0414-42445690643-1Canary 20261108-0414 (ce363612)pre-release2026-11-08 · 2026-11-08 04:44 UTC
    查看更新说明

    Automated canary build of main. It is signed and notarized like a release but skips the owner review, so treat it as unstable.

    See the canary guide to install, update, or return to stable. For everyday use, download the latest stable release.

    • Commit: ce363612eac6
    • Base tag: v0.8.0

    Changes since v0.8.0

    • a3ce7414 Build the shader warning test's error from Metal's error code
    • ec067e63 Merge pull request #1123 from dappermint/fix/shader-error-message
    • 1202a7da Run every test group when a test-only change reaches a live-only file
    • 54a2a137 fix(shell): show the shader compile error when a warning comes first
    • 6501095a ci: fail a test group that runs no tests (#1117)
    • 05ebe3b7 Show the Blacksmith logo much larger in the README
    • d29617c6 Key CI's Swift build cache to the Ghostty pin
  3. v0.8.0OmniWM v0.8.0最新正式版2026-11-07 · 2026-11-07 18:19 UTC

    What's New Since 0.7.6

    OmniShell replaces the fixed workspace bar with an editable desktop shell: install styles from a gallery, arrange them in a visual editor, run Luau apps in windows OmniWM tiles, and decide which servers each widget or app may contact. OmniWM 0.8.0 also adds a workspace-aware window switcher, keyboard modes for shortcut clashes, drop zones and drags across displays, vertical Niri columns that scroll past the screen edges, and updates you can install from the update popup. Main-thread stalls measured during focus navigation drop too, with the figures and their limits under Performance.

    OmniShell styles and widgets

    • Restyle or replace your desktop shell. The workspace bar, Hidden Bar panels, popouts, edge drawers and Dynamic Islands are now drawn by editable, sandboxed widgets written in Luau, a small scripting language. In Settings > Styles & Widgets you can drag widgets between lanes and recolor a style to follow macOS or your wallpaper.
    • Start from a full-width Default bar. Default, the only style inside the app, runs across the top of the screen, and when it covers the native menus, its Apple and app menu widgets open them from their buttons.
    • Install styles from the gallery or from any public GitHub repository. Settings > Styles & Widgets > Get Styles downloads Celestial, Lake, Matrix, Nocturne, Sakura, Wayline and Vitreus, each with preview pictures. Add from GitHub… warns before install that a style runs code in OmniWM.
    • Try Vitreus, a liquid-glass style. Vitreus, a port of natepayn3's Vitreus (MIT), adds glass Island and Frame layouts and panels you can pull out, stick to a screen edge or store on a top shelf. It also names every workspace on its marks and shows app icons beside them, which preview their windows on hover and move a window when you drag one to another workspace, plus a scratchpads list, a System Stats button and fuller notification rows.
    • Get the same features in the shared styles. Default, Celestial, Lake, Matrix, Nocturne, Sakura and Wayline draw their widgets from one shared set, including a calendar popout, synced lyrics and per-app volume.
    • Browse and act on macOS notifications from the bar. With Full Disk Access to read the list and Accessibility for actions, you can dismiss a notification, clear them all or reply where the notification supports it.

    OmniShell apps in windows OmniWM owns

    • Build Luau apps that open in their own tiled windows. OmniWM tiles, focuses and closes these windows like any other, and you can open an app from the palette, a shortcut or the command line. Utility windows such as Preferences drag without the lag macOS adds to child windows. Windows don't come back after a restart.

    Network permissions

    • Choose which servers each widget or OmniShell app may contact, and which programs it may run. Each can reach only the servers it declares, and the first time it contacts one you have not decided on, OmniWM shows one prompt with its name and its own stated reason. A native program asks for your trust before it first runs and again whenever it changes.
    • Review it all on one page, or set it for an organization. Settings > Network & Permissions lists the servers and native programs of every installed widget and OmniShell app. Managed preferences can preapprove or block servers and stop native programs, but these controls don't cover update checks, style downloads, terminals or links opened in a browser.

    Workspace Bar and menu bar

    • Use Hidden Bar again on macOS 27.2. Hidden items work again there and also under a full-width bar, and right-clicking the OmniWM icon opens the Hidden Bar right under it, though items that need the native menu bar revealed can still flash.
    • Choose what the status menu shows. A new Status Menu tab under Settings > Menu Bar can hide its controls and rows, while Quit always stays.

    Window management

    • **Switch windows with thumbnail
  4. canary-20261107-0413-42337233733-1Canary 20261107-0413 (98ba24e3)pre-release2026-11-07 · 2026-11-07 04:37 UTC
    查看更新说明

    Automated canary build of main. It is signed and notarized like a release but skips the owner review, so treat it as unstable.

    See the canary guide to install, update, or return to stable. For everyday use, download the latest stable release.

    • Commit: 98ba24e3c78d
    • Base tag: canary-20261106-0415-42160958024-1

    Changes since canary-20261106-0415-42160958024-1

    • 67a3af15 Stop reading parked windows' positions on every relayout during a slide
    • a9adb564 Replace the remaining test tolerances with proofs and accepted limits
    • 8ac023c5 Share the override status so every settings row avoids the crash
    • dc1f7930 Merge pull request #1111 from nblopes/fix-overridable-global-crash
    • 891f61d1 Base the icon preview test on the real display
    • 518fa284 Give Vitreus window icons previews and drag to workspaces
    • d0c62704 Name the test time allowance
    • 97c2257f Keep the Global label of overridable settings from crashing accessibility
    • 767f7a75 Derive the tolerances hidden in test helpers and add a rule guard
    • 0d9486fe Replace test tolerances with bounds derived from each check
    • c56bc432 Bound rounding in checks whose inputs move with the clock
    • 1ba4efb1 Drop test tolerances that were never needed
    • 44f68cfa Compile live test tools only behind one flag
    • 1cb067f5 fix(shell): keep the shell path when listing widget folders (#1108)
    • 138bd943 Bound test waits with one limit and fail on missing prerequisites
    • 4124bb8a Order and move tab rails and edge pictures without AppKit
  5. canary-20261106-0415-42160958024-1Canary 20261106-0415 (b389ed5e)pre-release2026-11-06 · 2026-11-06 04:46 UTC
    查看更新说明

    Automated canary build of main. It is signed and notarized like a release but skips the owner review, so treat it as unstable.

    See the canary guide to install, update, or return to stable. For everyday use, download the latest stable release.

    • Commit: b389ed5e0610
    • Base tag: canary-20261105-0906-41998776786-1

    Changes since canary-20261105-0906-41998776786-1

    • b389ed5e Move the Swift pin to the November 1 snapshot
    • f463ebd9 Run the ARC audit in CI's Verify job
    • 453ae948 Open the Hidden Bar under the icon that was clicked
    • 0623fd68 Cut retain and release traffic on the main thread during slides
    • 7f222be2 Stop dropping frames to the bar's size fight and hidden window reads
    • db3a2546 Wait on captured frames in the surface presentation tests
    • a09a94a0 Place, draw and order the focus ring without going through AppKit
    • 03fdeaeb Name the failure bound in tests that wait on events
    • 83daea0d Stop polling WindowServer in the hidden bar cover test

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    OmniWM

    OmniWM is a free, open-source, Developer ID-signed and Apple-notarized tiling window manager for Apple Silicon Macs running macOS 26 or later. It combines Niri-style orientation-aware scrolling containers and Hyprland-style Dwindle BSP layouts, selectable per workspace, with multi-monitor routing and optional local CLI/IPC automation.

    Website · Documentation · Install · Compatibility · Fluxer

    Demo Video

    Watch the demo

    Highlights

    • Optional window switcher with previews and separate Command-Tab / Option-Tab workspace scopes
    • Ghostty-powered quake/sticky terminal
    • Native macOS window-tab support
    • Local IPC and omniwmctl automation
    • Scratchpads and sticky windows for any app
    • Overview
    • Unified command palette for windows, app menus, clipboard history, OmniWM commands, applications, and files
    • Menu Anywhere
    • Niri-style tabbed containers and Dwindle tile groups
    • Niri-style scrolling and Hyprland-style Dwindle BSP layouts
    • Status-bar icon concealment (similar to Ice)
    • Keep Awake (similar to Caffeine)
    • Interactive workspace and app-icon bar

    Requirements

    • macOS 26+ (Tahoe) on Apple Silicon, SIP stays on
    • Accessibility and Input Monitoring
    • Displays have separate Spaces turned on in System Settings > Desktop & Dock > Mission Control
    • Optional: Screen Recording (Overview thumbnails, drag previews) and Full Disk Access (Hidden Bar, Notifications widget)

    Details and known limitations: Compatibility, Requirements & Limitations.

    Installation

    brew install --cask omniwm
    

    This installs OmniWM.app and puts omniwmctl on your PATH. OmniWM is also in nixpkgs with a Home Manager programs.omniwm module, and on GitHub Releases. Nix setup, canary builds, upgrading, and moving off the retired BarutSRB/tap are in the install guide.

    OmniWM checks for new releases once a day and never installs anything on its own. Turn it off in Settings > General > Updates.

    Quick Start

    1. Turn on Displays have separate Spaces and log out and back in if it was off
    2. Launch OmniWM, grant Accessibility and Input Monitoring (Screen Recording is optional), then click Start OmniWM
    3. Windows tile into Niri scrolling containers; switch a workspace to Dwindle BSP with Toggle Workspace Layout
    4. Option + 1-9 switches workspaces and Option + Shift + 1-9 moves the focused window; the rest is in Keyboard Shortcuts

    Settings live in ~/.config/omniwm/settings.toml and reload when you save it. More in the full quick start.

    Documentation

    Everything lives at omniwm.app and follows current main.

    Community

    Questions, setup help and config sharing happen on the OmniWM Fluxer and OmniWM Discord. Integrations (omacosy, OmniWM Computer Use, OmniCast) and related forks (Nehir, choru-k/OmniWM) are listed on Community & Support.

    Reporting Bugs

    Use Report a Bug… in OmniWM's status-bar menu: it prepares a diagnostic log and opens a pre-filled GitHub issue. The GitHub issue form works too; include your OmniWM and macOS versions.

    Contributing

    Issues and pull requests are welcome. Start with CONTRIBUTING.md; the docs sources live in website/src/content/docs.

    Building from Source

    Follow the contributor quick start for Xcode requirements, automatic dependency setup with Lix and the repository's flake.nix, and a separate OmniWM Dev app with independent settings. The guide covers rebuilding, switching back to your normal app, and verifying a pull request.

    Support

    If you find OmniWM useful, consider supporting development:

    License

    OmniWM is licensed under the GNU General Public License v2.0-only. Copyright (C) 2026 OmniNull — https://github.com/OmniNull/OmniWM.

    Every OmniWM source file carries an SPDX license header. App-bundled third-party notices stay in Resources/Licenses and ship in Contents/Resources/Licenses. They cover the vendored Luau and Lua runtimes (MIT), generic colour palettes adapted through Noctalia and Wayle (MIT), and Google's Material Color Utilities (Apache 2.0).

    Optional styles keep their own notices in their folders. Vitreus retains its upstream MIT notice and the Space Grotesk font's OFL notice; Celestial retains the notices of Rubik, Google Sans Flex and Material Symbols Rounded. Each style README lists its credits and licences. Forks and redistributions must retain the applicable notices and the LICENSE file, and remain GPL-2.0-only with source available.

    Contributors


    🤝 Company Sponsors

    🛠️ Maintainers

    🏢 By Employer

    🎓 By Education

    ✨ All Contributors

    🐞 Bug Reporters