Thaw(thaw-app/Thaw)は、macOS のメニューバーに並ぶアイコンを隠す・出す・並べ替える「メニューバー管理」の OSS で、有料の Bartender の代替として定着している。もとは jordanbaird/Ice から派生したプロジェクトだが、2026年9月時点では安定版 2.0.1(macOS 26)・beta の 2.1 系・macOS 27 専用に作り直された 3.0 alpha の3系統が同時に動いており、どれを入れるかで挙動が変わる。本記事は公式リポジトリ(★10.9k・GPL-3.0)の一次情報だけを使い、機能の整理よりリリース系統の見分け方・thaw:// による自動化・配布物の検証手順に重心を置く。なお、AI 関連の機能は無い。
- ・正体:Swift 製の macOS メニューバー管理アプリ。Ice のフォークで、thaw-app 組織(オーナー3名)が開発。★10.9k・fork 259・コミット 2,673
- ・入れるべき版:macOS 26 → 安定版 2.0.1(
brew install thaw)。試したい人 → 2.1.0-beta.3(brew install thaw@beta)。macOS 27 → 3.0.0-alpha.5(Nightly のみ・未移植機能あり) - ・権限:アクセシビリティは必須、画面収録は任意。macOS 27 では「メニューバーレイアウトへのアクセス」の許可が追加で要る
- ・開発者向け:
thaw://の7アクション、設定の読み書き URI(アプリ単位のホワイトリスト認可)、プロファイル適用時のスクリプトフック、Shortcuts、Raycast 公式拡張 - ・配布物の検証:Developer ID 署名+公証、SLSA provenance、Cosign の keyless 署名、CycloneDX SBOM、GPG 署名タグの5経路。SLSA レベルは README バッジが L3、文書が L2 で表記が割れている
Thaw は AI 機能を持たない純粋な macOS ユーティリティで、当サイトの主軸からは外れる。同じく macOS の画面端に常駐して開発者向けの情報を出す道具としてはCodenotchとは|Claude Code・Cursor・Codexの利用上限を画面端に常時表示するmacOSアプリを扱っており、Thaw の Thaw Bar(ノッチ対応の別バー)と画面上の居場所が重なる。
Thawとは——Iceから派生したメニューバー管理OSS
公式の docs/ARCHITECTURE.md は冒頭で Thaw の起源を Ice と明記している。README のキャッチコピーは「The open source menu bar manager」で、機能は次の5群にまとめられる。
・隠す:不要なアイコンを Hidden セクションへ。さらに「常に隠す(Always-hidden)」セクションを持ち、Option+クリックや空き領域のダブルクリックで一時的に開ける
・出す:ホバー・クリック・スクロール・スワイプ・ホットキーで隠した項目を表示。キーボードから項目を検索してジャンプする Search パネルもある
・条件で切り替える:バッテリー残量・最前面アプリ・Wi-Fi・Focus・スクリプトの終了コードなどを条件に項目を出し入れする Triggers。プロファイルをディスプレイ・Space・Focus フィルタに紐付けて切り替える
・見た目:ティント(単色・グラデーション・壁紙から抽出)、影、枠、角丸や分割などの形状を、ライト/ダークと Space ごとに設定。ノッチのある MacBook 向けに、隠した項目を別のバー(Thaw Bar)へ出せる
・運用:設定をプロファイルとして保存・書き出し、Simple Mode で設定画面を1ページに畳む、Zen mode で全セクションを一括で隠してジェスチャも封じる(画面共有中に自動で入る設定あり)
権限まわりは README が明確だ。アクセシビリティは項目を動かすために必須で、初回起動時に要求される。画面収録は任意で、拒否しても隠す・出す・並べ替えは動き、取得できない項目は所属アプリのアイコンで代替描画される。許可すると項目のライブプレビューと壁紙由来のティントが有効になる。3.0(macOS 27)ではこれに加えて、~/Library/Preferences/com.apple.menubarstate.plist へのファイルアクセス許可(メニューバーレイアウトへのアクセス)が1回だけ求められる。
透明性については README の「Transparency」節がそのまま採用判断の材料になる。無料で購入・サブスクリプション・OS 更新時のアップグレード料金がないこと、GPL-3.0、アカウント不要、解析・テレメトリなし、Apple による署名と公証、OpenSSF Best Practices の Gold バッジ、OpenSSF Scorecard による評価が列挙されている。言語は20か国語で、日本語も含まれる(翻訳は Crowdin で管理され、リポジトリ内に .lproj は無い)。
3系統のリリースをどう見分けるか
Thaw の分かりにくさは、alpha・beta・stable が同じ週に更新されている点にある。2026-09-15 時点の状態を表にする。
| 系統 | 版 | 日付 | 対応 macOS | 入手経路 | 位置づけ |
|---|---|---|---|---|---|
| stable | 2.0.1 | 2026-09-02 | 26(Tahoe) | brew install thaw/Releases の Latest |
Homebrew cask の version "2.0.1"・depends_on macos: :tahoe・auto_updates true |
| beta | 2.1.0-beta.3 | 2026-09-14 | 26 | brew install thaw@beta/Releases の Pre-release |
項目グループ・トリガー・Zen mode・Simple Mode など 2.1 の新機能を先行提供。既定ブランチ development の Xcode 設定も MARKETING_VERSION = 2.1.0-beta.3 |
| alpha | 3.0.0-alpha.5(Build 105) | 2026-09-15 | 27 のみ(Beta 8 以降) | Nightly チャンネル(アプリ内で切替) | macOS 27 向けにエンジンと設定画面を作り直し。Swift 6.4。2.x との互換層なし |
| legacy | 1.3.0-beta.1 | 2026年4月 | 14/15 | Releases | macOS 14/15 で動く最終版。2.0 以降は macOS 26 が必須 |
3.0 alpha は「macOS 27 で動く Thaw」であって「全機能を備えた次期版」ではまだない。CHANGELOG の 3.0.0-alpha.1(2026-09-09)は未移植の項目を明示している。
・Scripts:スクリプト駆動のバーモジュールは 2.1.0 beta で macOS 26 ユーザーが検証中で、後の 3.0 ビルドで追加予定。Scripts ペインは置き場所だけ先行
・Widgets:ペインはプレースホルダで設定なし
・Item triggers:2.1 の条件エンジン(バッテリー・最前面アプリ・ネットワーク・Focus 等)は未移植。「アイコンの変化で表示」のルールだけ入っている
・ローテーションする診断ログ:未実装
さらに alpha.5 の冒頭には macOS 27 側の制約が「Thaw のバグではない」と断って書かれている。一部のネイティブ項目や Control Center の項目・Shortcuts がメニューバーに出ないこと、同一アプリの複数項目を個別に隠せないこと(Issue #1125)、間隔設定を反映するためにメニューバーアプリを再起動することがある点だ。3.0 では「Thaw は項目を動かさない。ユーザーが ⌘ドラッグで並べ、Thaw はそれを記録して隠すことに徹する」という方針転換もあり、2.x の「Thaw が並べ替える」挙動に慣れていると戸惑う。
Iceからの移行と、2.x→3.0のアップグレード注意
CHANGELOG のアップグレード注記は版ごとに違う。2.0.0 は「1.x からの更新には macOS 26 が必要で、macOS 14/15 では 1.3.0-beta.1 に留まる」「更新フィードは新規インストールで thaw-app/updates に移り、旧 stonerl フィードの利用者にもミラーが配信される」「ディスプレイごとの間隔設定はスキーマが変わったが、旧プロファイルは現在のディスプレイ値へフォールバックする」と書く。Ice 時代(V1)の外観データは 2.x では取り込み時に変換される一方、3.0 では「Ice 時代の設定移行は新しい defaults ドメインでは実行され得ないため削除した」と明記されており、Ice から直接 3.0 へ移る経路は無い。Ice 利用者は一度 2.x を経由して設定を取り込んでから 3.0 へ進むのが、CHANGELOG の記述から読める安全な順序になる。
導入と権限設定(macOS 26・安定版)
インストールは Homebrew か、Releases の .dmg をドラッグするかの2択で、README にそのまま書かれている。
# 安定版(Homebrew cask "thaw"、2026-09-15 時点で 2.0.1)
brew install thaw
# 新機能を先行して試す場合(安定版の方が新しければ安定版が入る)
brew install thaw@beta
初回起動でアクセシビリティ権限を求められ、画面収録は任意で1回だけ確認される。3.0 alpha の場合は Nightly チャンネルをアプリ内で選ぶ必要があり、Homebrew からは入らない。
当サイトの検証環境は Linux のみで macOS 実機が無いため、上記コマンドと以降の操作は公式ドキュメントの転記であり、当サイトでは実行していない(未検証)。導入後に多いつまずきは FREQUENT_ISSUES.md に集約されており、代表的なものを挙げる。
| 症状 | 原因(公式の説明) | 対処 |
|---|---|---|
| 新しい項目が勝手に Hidden に入る | macOS は新規ステータス項目を左端に挿入し、Thaw はそこを Hidden(または Always-hidden)として扱う | Settings → Menu Bar Layout でドラッグ、または ⌘ドラッグ。New Items バッジの既定セクションを変える |
| 「自動的に隠すメニューバーでは項目を並べ替えられない」エラー | メニューバーの自動非表示中は macOS がレイアウト情報を十分に公開しない | システム設定 → コントロールセンターで自動非表示を「しない」にしてから並べ替え、あとで戻す |
| メニューバーに見えるのに Layout 設定に出ない | ステータス項目 API の外で描画するアプリや、com.apple.controlcenter 配下で安定した識別子を持たない項目 |
Little Snitch・CodexBar は既知の上流要因として個別に記載 |
| 表示が「踊る」・レイアウトが勝手に変わる | ホストアプリが項目の位置を保存しない、ディスプレイ構成の変化、間隔変更に伴うアプリ再起動 | Settings → Displays の「再起動前に確認」を有効にする |
開発者向け:thaw://スキームとスクリプトフックで自動化する
Thaw が開発者にとって面白いのは、コア操作がすべて thaw:// のディープリンクになっている点だ。README の「Integrations」節は「使い慣れたランチャーに差し込める」と書き、Raycast の公式拡張、Droppy との組み合わせ、Alfred/Shortcuts/Keyboard Maestro/BetterTouchTool/シェルスクリプトを挙げている。
# 隠した項目の表示切替・検索パネル・設定画面(docs/URI_SCHEMES.md より)
open "thaw://toggle-hidden"
open "thaw://search"
open "thaw://open-settings"
docs/URI_SCHEMES.md によれば、URI は2層に分かれている。
・アクション(7種):toggle-hidden・toggle-always-hidden・search・toggle-thawbar・toggle-application-menus・open-settings・authorize。認可不要で、ランチャーからそのまま叩ける
・設定の読み書き:thaw://set?key=autoRehide&value=true のように設定キーを直接書き換えられる。こちらは呼び出し元アプリのホワイトリストで保護され、初回はアプリ名と署名 ID を示す確認ダイアログが出る。未認可の呼び出しは黙って失敗する。グローバル設定(自動再非表示、ホバー表示など)と、ディスプレイ UUID で絞る per-display 設定(Thaw Bar の有無・位置・レイアウト等)がある
・スクリプトフック:プロファイル適用の前後にシェルスクリプトを実行できる(グローバルまたはプロファイル単位)。THAW_PROFILE_NAME などの環境変数とタイムアウトが用意され、失敗しても適用はブロックされない
・Shortcuts/Spotlight:3.0 では App Intents として「項目のメニューを開く」「隠した項目を出す」「Zen mode 切替」「プロファイル適用」が公開される
・ThawCtl:リポジトリ同梱の SwiftPM 製コマンドラインクライアント。thaw:// を叩いて thawctl:// のコールバックを受ける検証用ユーティリティ
UI に出ない診断フラグも docs/HIDDEN_FLAGS.md に公開されている。並べ替え時にカーソルを「奪われる」現象が出るハードウェア向けの逃げ道で、通常は触らない。
# 並べ替え前に要求する入力停止時間を 50ms → 150ms に広げる(docs/HIDDEN_FLAGS.md より)
defaults write com.stonerl.Thaw inputPauseThresholdMs -int 150
# 既定に戻す
defaults delete com.stonerl.Thaw inputPauseThresholdMs
ホワイトリストにあるか"} D -- "はい" --> E["設定を書き換え・JSONで応答"] D -- "いいえ" --> F["確認ダイアログ→拒否なら無視"] B --> G["Thaw 本体"] E --> G G --> H["プロファイル適用フック
(前後にスクリプト実行)"]
配布物を自分で検証する——SLSA・Cosign・SBOM
セキュリティを柱にする当サイトとして注目したいのは、Thaw が配布物の検証手段を文書化していることだ。docs/VERIFYING_RELEASES.md に、.dmg・.zip・SBOM の真正性を確かめる5つの経路が並ぶ。macOS 実機での実行は当サイトでは未検証で、コマンドは同文書の転記である。
# 1) Apple の署名と公証(Gatekeeper 相当の確認)
spctl --assess -v /Applications/Thaw.app
xcrun stapler validate /Applications/Thaw.app
# 2) SLSA ビルド来歴(GitHub Artifact Attestations。署名ワークフローを固定して検証)
gh attestation verify Thaw.dmg --repo thaw-app/Thaw \
--signer-workflow thaw-app/Thaw/.github/workflows/attest-build-provenance.yml
# 3) Cosign の keyless 署名(Releases 同梱の *.sigstore.json)
cosign verify-blob --bundle Thaw.dmg.sigstore.json \
--certificate-identity-regexp '^https://github\.com/thaw-app/Thaw/\.github/workflows/release\.yml@refs/' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com Thaw.dmg
| 手段 | 何を保証するか | 出所 |
|---|---|---|
| Developer ID 署名+公証 | Apple が署名と公証を検査した配布物であること | spctl/stapler |
| SLSA ビルド来歴 | このリポジトリのリリースパイプラインが生成したこと。来歴は専用の再利用ワークフローで署名され、署名者を固定して検証できる | actions/attest・GitHub Attestation Store・*.intoto.jsonl |
| Cosign(keyless) | .dmg と SBOM が release.yml ワークフローの OIDC 身元で署名されたこと |
Releases の *.sigstore.json |
| CycloneDX SBOM | SwiftPM 依存の機械可読な一覧(Syft で生成、ダイジェスト固定) | Thaw_<tag>.cdx.json |
| GPG 署名タグ | リリースタグが保守者の鍵で署名されていること | git verify-tag <tag> |
| Sparkle EdDSA | アプリ内更新の zip/差分が公開鍵で検証されること。appcast は HTTPS 配信 | SUPublicEDKey・thaw-app.github.io/updates/appcast.xml |
1点、表記の食い違いがある。README のバッジは「SLSA Build L3」を掲げるが、docs/VERIFYING_RELEASES.md は同じ来歴を「SLSA v1.0 Build L2」と2箇所で説明している。L3 はビルド環境の隔離とプラットフォームによる来歴生成を要求するため、どちらが正確かで意味が変わる。当サイトは文書側(L2)を採り、バッジは要確認として扱う。
CI 側の防御も .github/SECURITY.md に書かれている。OSV-Scanner が Package.resolved の依存に未抑制の CVE があるとマージを止め、抑制する場合は osv-scanner.toml に理由と期限(ignoreUntil)が必須になる。3.0 の Privacy ペインには「アプリが行う全ネットワーク通信」が一覧され、一覧に無いネットワーククライアントがコードに現れるとビルドが失敗するテストがある。アプリ自体は App Sandbox ではない(entitlements に com.apple.security.app-sandbox が無い。アクセシビリティ API で他アプリの項目を動かす性質上、サンドボックス化は難しい)。
類似ツールとの比較と、Thawを選ぶ基準
メニューバー管理は有料の Bartender が長く定番で、無料側は Ice と、その後継である Thaw が担っている。公式資料で裏の取れる範囲で比べる。
| 観点 | Thaw | Ice(派生元) | 有料の商用ツール(Bartender 等) |
|---|---|---|---|
| ライセンス・価格 | GPL-3.0・無料・サブスク無し | MIT 系 OSS・無料 | 有償(各社の価格は当サイトでは未確認) |
| 対応 macOS | 2.x は 26 以上、3.x は 27 のみ、14/15 は 1.3.0-beta.1 | Thaw の派生時点の対応 | 各社の公表値に依存 |
| 自動化 | thaw:// アクション・設定 URI・スクリプトフック・Shortcuts・Raycast 公式拡張 |
— | 製品ごとに異なる |
| 配布物の検証 | 公証・SLSA・Cosign・SBOM・GPG タグを文書化 | — | 公証は一般的、来歴・SBOM は稀 |
| テレメトリ | なし(README 明記・3.0 で通信一覧を UI 化) | — | 製品ごとに異なる |
| 画面収録権限 | 任意(無くても管理機能は動く) | — | 製品ごとに異なる |
Ice と商用ツールの列は当サイトで一次資料に当たっていない項目を「—」にしている。Thaw を選ぶ基準は次の3つに絞れる。
・macOS 26 以降を使っている:2.0 以降は 26 必須。14/15 の Mac は 1.3.0-beta.1 で止まるため、他の選択肢を検討した方がよい
・ランチャーやスクリプトから操作したい:thaw:// と設定 URI、フックの3点は無料ツールとしては珍しく、Raycast 利用者には公式拡張がある
・配布物の来歴を確認したい組織:SLSA・Cosign・SBOM・OSV-Scanner の運用が文書化されており、社内配布の審査材料になる
まとめ
Thaw は「メニューバーを片付ける」道具として十分に成熟しつつ、開発者が自動化に組み込める入口と、配布物を検証する経路を公式に用意している点で他と違う。一方で 2026年9月は alpha・beta・stable が同時に動く過渡期で、macOS 27 向けの 3.0 はまだトリガーやスクリプトが移植されていない。
参照ソース
・thaw-app/Thaw(公式リポジトリ) — README・CHANGELOG.md・FREQUENT_ISSUES.md・docs/ARCHITECTURE.md・docs/URI_SCHEMES.md・docs/HIDDEN_FLAGS.md・docs/VERIFYING_RELEASES.md・.github/SECURITY.md(2026-09-15 時点、既定ブランチ development・コミット dacd656)
・Thaw Releases(GitHub) — 2.0.1(Latest・2026-09-02)、2.1.0-beta.3(2026-09-14)、3.0.0-alpha.5(2026-09-15)
・Homebrew Cask: thaw — version "2.0.1"・depends_on macos: :tahoe・auto_updates true
・jordanbaird/Ice — 派生元