SIPを切らずにmacOSをomarchy風タイリング環境にするOmacosy──要求する権限を1つずつ確認する
OmacosyはmacOS 26(Tahoe)向けの非公式タイリングウィンドウマネージャ環境で、実Superキー・Hyprland風dwindleレイアウト・ワークスペーススワイプを、SIP(システム整合性保護)を無効化せずに実現する。README本文が公開する権限一覧・メモリ使用量・『何をしないか』の宣言を、書かれている範囲でそのまま確認する。

目次
Linux向けの人気デスクトップ環境「omarchy」に着想を得た、macOS向けの非公式タイリングウィンドウマネージャ構成「Omacosy」がGitHubで公開されている。README本文で確認できる限り、SIP(System Integrity Protection:システム整合性保護)を無効化せずに、実Superキー・Hyprlandのdwindleレイアウト・トラックパッドでのワークスペーススワイプなどを再現するという。着想元のomarchy自体は、Ruby on Railsの作者として知られるDavid Heinemeier Hansson(DHH)氏が公開しているLinuxディストリビューションで、公式サイトのキャッチコピーは「Beautiful, Modern & Opinionated Linux by DHH」だった。
GitHubで実際にリポジトリを確認したところ、本記事執筆時点でスター548・フォーク8・ウォッチャー3、ライセンスはMIT。リリース・タグはまだ0件で、リポジトリの説明文にも「Pre-1.0」と明記されている通り、正式リリース前の段階だ。
3行まとめ
- OmacosyはmacOS 26(Tahoe)向けの非公式タイリング環境。SIPを切らずに実Superキー・dwindleレイアウト・ワークスペーススワイプを実現
- README本文はAccessibility・Input Monitoring・Screen Recording等7種の権限要求を、どのバイナリが何のために使うか・拒否すると何が壊れるかまで表で公開している
- 環境全体のアイドル時メモリ使用量は約157MB。ネットワーク通信は天気表示のための1回のみとREADMEは明記している
何を再現しているか
README冒頭の説明はこうだ。
omakase + macOS + cosy. An omarchy-style setup for macOS: tiling window management with a real Super key and Hyprland's dwindle layout, a status bar built for it […], focus follows mouse, trackpad workspace swipes, a Mission-Control-style workspace overview with live previews, focused-window border rings, and one theme switch that covers everything down to the wallpaper.
(omakase+macOS+居心地の良さ(cosy)。macOS向けのomarchy風構成:実Superキーを使ったタイリングウィンドウ管理とHyprlandのdwindleレイアウト、専用に作られたステータスバー〔中略〕、フォーカスがマウスに追従する挙動、トラックパッドでのワークスペーススワイプ、ライブプレビュー付きのMission-Control風ワークスペース概観、フォーカス中ウィンドウの縁取りリング、そして壁紙まで含めて一括で切り替わるテーマ)
対応環境は明確に限定されている。
Built for macOS 26 (Tahoe) on one desk: a MacBook Pro plus one external display. It tries to generalize […] but so far it has only run on this machine.
(macOS 26(Tahoe)上、1つのデスク――MacBook Pro+外部ディスプレイ1台――向けに作られている。一般化を試みてはいるが、これまでのところこのマシンでしか動かしていない)
環境全体のアイドル時メモリ使用量は約157MBとREADMEに明記されている。実装の大半は、既存ツールがmacOS 26で動かなくなっているためインストーラーがビルドする、README本文の言葉では「5つの小さな署名済みSwiftバイナリ」だという。ただし、GitHubリポジトリ自体の説明文(リポジトリ一覧やOGP用のメタデータに使われる短い説明)には「six self-built Swift binaries(6つの自作Swiftバイナリ)」と書かれており、README本文の「5つ」という表記と数が一致していない。どちらが正確な現状の数なのか、この記事の範囲では判別できなかった。
README「Memory use」節には、プロセスごとのメモリ内訳を示す実測表がある(外部ディスプレイに接続した状態での計測、footprintは「Activity Monitorが表示するMemory」、RSSは共有フレームワーク分を重複カウントするため単純比較には向かないとREADMEは注記している)。
| プロセス | footprint | RSS |
|---|---|---|
omacosy-overview(ワークスペース概観) |
36MB | 46MB |
omacosy-bar(ステータスバー) |
32MB | 55MB |
| AeroSpace(タイリング本体) | 24MB | 85MB |
| Karabiner(4プロセス合計) | 24MB | 61MB |
omacosy-borders(フォーカス枠) |
19MB | 29MB |
omacosy-gesture(スワイプ検出) |
13MB | 22MB |
omacosy-ffm(focus-follows-mouse) |
10MB | 24MB |
READMEはこの表について、omacosy-overviewはウィンドウのサムネイルキャッシュを持つため起動直後は約9MBから始まり37MB前後まで増えてそこで頭打ちになること、逆にAeroSpaceは稼働時間が長くなるほどメモリ使用量が増える傾向にあることも補足している。単一ディスプレイでの計測では合計約155MBだったという。
権限一覧——何が・誰に・なぜ必要か
README中で最も情報量が多いのが権限の説明表だ。冒頭にこう書かれている。
A window manager needs broad permissions, so here is the whole list: every grant, which binary asks, what it is used for, and what you lose by refusing it. Everything is refusable; the parts that depend on a grant hide themselves rather than half-work.
(ウィンドウマネージャは広範な権限を必要とするため、ここに全リストを示す。どの許可が、どのバイナリによって要求され、何に使われ、拒否すると何を失うか。すべて拒否可能であり、その権限に依存する部分は中途半端に動くのではなく、姿を消す)
表の一部を挙げると、Accessibility(AeroSpace等がタイリングそのものに使用、「実質必須」)、Input Monitoring(Karabiner-ElementsによるCaps LockのSuperキー化、AerospaceSwipeによる生のトラックパッド接触データ取得)、Screen Recording(ワークスペース概観のサムネイル生成)、Location(Wi-FiのSSID名だけを読むために必要——座標は一切要求しないとREADMEは強調している)などがある。Locationについては特に補足がある。
More on Location, because it sounds worse than it is: it buys exactly one string. The bar requests authorisation and then reads ssid(). It never asks for a position, holds no coordinate and starts no location updates.
(Locationについて補足する。聞こえほど悪いものではないからだ。これが買うのは正確に1つの文字列だけだ。バーは認可を要求した後ssid()を読むだけで、位置情報を求めることも、座標を保持することも、位置情報の更新を開始することも一切ない)
「やらないこと」の明示的なリスト
READMEは、権限の説明に続けて「What it does not do」という節を設け、次のように宣言している。
No telemetry, no analytics, no crash reporting. Nothing is sent anywhere about you or this machine. One network call, ever: https://wttr.in/?format=j1 on a long timer, for the weather pill. […] Delete the weather pill and nothing leaves the machine. omacosy's own binaries never run as root. install.sh uses no sudo, installs no LaunchDaemon, and every helper it builds runs as you, in your login session.
(テレメトリなし、アナリティクスなし、クラッシュレポートなし。あなたやこのマシンについて何も送信されない。ネットワーク通信は生涯でただ1回、天気ピル表示のためのhttps://wttr.in/?format=j1への長い間隔でのアクセスのみ。〔中略〕天気ピルを削除すれば、このマシンから何も出ていかなくなる。omacosy自身のバイナリはrootとして動かない。install.shはsudoを使わず、LaunchDaemonもインストールせず、ビルドされるすべてのヘルパーはログインセッション内でユーザー権限のまま動く)
ただし、唯一の例外として、Homebrew経由で依存関係に含まれるKarabiner-Elementsについては正直に注意を促している。
Karabiner-Elements does run as root, and you should know that before installing. […] It is the most privileged thing this repo puts on your Mac, and it is third-party.
(Karabiner-Elementsはrootとして動作する。インストール前にこれを知っておくべきだ。〔中略〕これはこのリポジトリがMacに置くものの中で最も高い権限を持ち、サードパーティ製だ)
キーストロークの読み取りについても「Nothing here reads your keystrokes. No omacosy binary opens a keyboard event tap(omacosyの中でキーストロークを読むものは何もない。omacosyのバイナリでキーボードイベントタップを開くものは無い)」と明言し、唯一キーを見るKarabinerはリマップという性質上不可避であること、AerospaceSwipeのイベントタップはジェスチャー専用・listen-onlyでキーストロークを見ることも変更することもできない仕様であることまで技術的根拠付きで説明している。
install.shの中身を実際に読んで確認したこと
README本文の「install.shはsudoを使わず、LaunchDaemonもインストールしない」という主張について、実際にinstall.sh(502行)を取得して読んだところ、次のことが確認できた。
- スクリプト内で
launchctl load/launchctl unloadされているのは、いずれも~/Library/LaunchAgents/配下のplist(com.omacosy.dwindle.plist、com.omacosy.bar.plistなど)だった。LaunchAgentはユーザーのログインセッション内で動くしくみで、root権限で常駐するLaunchDaemon(/Library/LaunchDaemons/)とは別物であり、README本文の主張と整合する - スクリプト中に
sudoという文字列は1箇所だけ現れるが、これはomacosy自身がsudoを実行するコードではなく、「Homebrewの一部のcaskが、既存アプリを上書きインストールする際にsudoを要求することがあり、その失敗でスクリプト全体を止めないようにする」という趣旨のコメント内の言及だった
これらは、README本文の「rootとして動くのはKarabiner-Elementsだけ」という主張と矛盾しない実装になっていることが、スクリプトを読む限りでは確認できた。
インストールと更新の仕組み
インストールはgit cloneとinstall.shの実行のみ。macOSのプライバシー保護(TCC)がlaunchdサービスから~/Documents・~/Desktop・~/Downloadsの読み取りをブロックするため、クローン先は~/.local/share/omacosyが推奨されている。インストーラーは冪等(何度実行しても同じ結果になる)に作られており、Homebrewのインストール、brew bundleの実行、ヘルパーバイナリのコンパイル、設定のシンボリックリンク化、デフォルトテーマの適用までを行う。更新はomacosy-update(プル+再インストール)で行い、バックグラウンドでの自動更新チェックは意図的に実装していないとREADMEは述べている。
動作確認済みなのは開発者のMac1台だけ
この記事はGitHubリポジトリのREADME本文・install.shの実ファイル・GitHub上のリポジトリメタデータを一次ソースとしている。install.shの中身は実際に読んで「LaunchDaemonではなくLaunchAgent」「sudo呼び出しはomacosy自身のコードにはない」ことをテキストレベルで確認したが、macOSの実機でこのスクリプトを実際に走らせ、記載された権限ダイアログや動作がその通りになるかまでは検証していない。開発者自身が「これまでのところこのマシンでしか動かしていない」と明記している通り、動作確認済みの環境はMacBook Pro+外部ディスプレイ1台という単一構成に限られており、他のMac構成での再現性についてはREADME本文からは分からない。「5つ」対「6つ」というSwiftバイナリの数の食い違いも、どちらが正しいか実機で数えて確かめたわけではない。
Zenn・Qiitaともに言及は見当たらなかった(実質0件)。この記事を書いている自分自身はmacOS 26環境でOmacosyを試したことがなく、README記載の権限説明・メモリ使用量・「何もしない」という宣言の正確性を独自に検証したものではない。
関連記事: AIコーディングアシスタント比較
感想・指摘はコメント欄へ。
出典・参照資料
AIニュースの解説を動画でも
YouTubeでは注目ニュースの背景を解説し、Xでは新着記事をお知らせしています。
コメント
まだコメントはありません。最初のコメントを書いてみませんか?
AIについて聞きたいことはありますか?
質問箱で無料で受け付けています。回答は公開され、他の方の参考にもなります。
質問箱を見る →新しい記事をメールで受け取る
AIの新しい発表を、出典付きで整理して届けます。