はじめに
CodexBarを使うと、CodexやAntigravityの使用量をmacOSのメニューバーから確認できます。
ただ、Antigravityでは、
- Gemini 5-hour
- Gemini weekly
- Claude/GPT 5-hour
- Claude/GPT weekly
の複数のquotaがあり、CodexBarのメニューバーに必ずしもGeminiの残量が表示されるわけではありません。
私の場合、AntigravityでClaudeを使ったところ、メニューバーの表示がGeminiではなくClaude/GPT側の残量になりました。
CodexBarのポップアップを開けば両方確認できますが、欲しかったのは、
G 97% · W 83%
のようなGeminiだけの常時表示です。
そこで、
- CodexBar CLIでAntigravityのquotaをJSON取得
- PythonでGeminiのquotaだけ抽出
- SwiftBarでmacOSのメニューバーに表示
という方法を試したところ、うまくいきました。
同様の要望が、CodexBarのGitHubでFeature Requestとして2026年9月3日に出ています。まだOpenです。
https://github.com/steipete/CodexBar/issues/3394
この記事は2026年9月時点のCodexBar / SwiftBarで確認しています。
完成形
最終的には、macOSのメニューバーに次のように表示できます。
G 97% · W 83%
-
G 97%:Gemini 5-hourの残量 -
W 83%:Gemini weeklyの残量
私は隣にCodexBar本体のCodex使用量も表示しています。
G 97% · W 83% Codex 4% ... · W 62% ...
これで、CodexとGeminiの残量を常時確認できるようになりました。
なぜClaude/GPTの残量が表示されたのか
これはCodexBarの不具合ではなく、Antigravity providerの表示仕様です。
Antigravityでは次の4つのquotaが取得されています。
- Gemini 5-hour
- Gemini weekly
- Claude/GPT 5-hour
- Claude/GPT weekly
CodexBarのコンパクトなメニューバー表示では、この中から
最も制約の厳しいquota(残量が最も少ないもの)
が代表値として選ばれます。
私の環境では、ある時点で次のようになっていました。
| quota | 残量 |
|---|---|
| Gemini 5-hour | 97% |
| Gemini weekly | 83% |
| Claude/GPT 5-hour | 100% |
| Claude/GPT weekly | 77% |
この場合、最も残量が少ないのは Claude/GPT weekly の77%なので、CodexBarのメニューバーにも77%が表示されます。
つまり「一度Claudeを使ったのでClaude表示に固定された」のではなく、Claude/GPT weeklyのquotaがGeminiより少なくなったため、代表表示が自動的にClaude/GPT側へ切り替わった、ということでした。
これは全体として「今いちばん危ないquota」を知るには便利ですが、「Geminiの残量だけを常時見たい」という用途には合いません。
そこでこの記事では、CodexBar CLIのJSONからGeminiのquotaだけを抽出し、SwiftBarで別途表示しています。
1. CodexBar CLIでAntigravityの使用量を確認する
まず、CodexBarでAntigravity providerを有効にしておきます。
CodexBar CLIが使える状態で、Terminalから次を実行します。
codexbar usage \
--provider antigravity \
--format json \
--json-only \
--pretty
私の環境では、次のようなJSONが取得できました。
{
"id": "antigravity-quota-summary-gemini-weekly",
"title": "Gemini weekly",
"window": {
"resetsAt": "2026-09-23T21:24:38Z",
"usedPercent": 17.07005500793457,
"windowMinutes": 10080
}
}
Geminiについては、次のIDが使われていました。
antigravity-quota-summary-gemini-5h
antigravity-quota-summary-gemini-weekly
usedPercent は「使用済み」の割合なので、残量は、
100 - usedPercent
で求められます。
例えば、
usedPercent = 17.07
なら、
100 - 17.07 = 82.93%
なので、表示上は約83%残りです。
2. SwiftBarをインストールする
SwiftBarは、スクリプトの標準出力をmacOSのメニューバーに表示できるアプリです。
Homebrewを使う場合は、
brew install swiftbar
でインストールします。
SwiftBarを起動するとPlugin Folderを指定するよう求められるので、今回は、
~/SwiftBarPlugins
を使用します。
フォルダがなければ作成します。
mkdir -p ~/SwiftBarPlugins
3. SwiftBarが動くかテストする
まず簡単なテスト用スクリプトを作ります。
cat > ~/SwiftBarPlugins/test.1m.sh <<'EOF'
#!/bin/bash
echo "TEST 123"
EOF
chmod +x ~/SwiftBarPlugins/test.1m.sh
SwiftBarが正しく設定されていれば、macOSのメニューバーに、
TEST 123
と表示されます。
確認できたら削除します。
rm ~/SwiftBarPlugins/test.1m.sh
4. Geminiの使用量だけ取得するスクリプトを作る
次のPythonスクリプトを作成します。
cat > ~/SwiftBarPlugins/gemini-usage.1m.py <<'PY'
#!/usr/bin/env python3
import json
import subprocess
from datetime import datetime, timezone
def remaining(window):
return round(100 - window["usedPercent"])
def time_left(iso):
reset = datetime.fromisoformat(iso.replace("Z", "+00:00"))
now = datetime.now(timezone.utc)
seconds = max(0, int((reset - now).total_seconds()))
days, seconds = divmod(seconds, 86400)
hours, seconds = divmod(seconds, 3600)
minutes = seconds // 60
if days:
return f"{days}d{hours}h"
if hours:
return f"{hours}h{minutes}m"
return f"{minutes}m"
try:
result = subprocess.run(
[
"/bin/zsh",
"-lc",
"codexbar usage --provider antigravity "
"--format json --json-only"
],
capture_output=True,
text=True,
timeout=30
)
data = json.loads(result.stdout)
windows = data[0]["usage"]["extraRateWindows"]
gemini_5h = next(
x["window"] for x in windows
if x["id"] == "antigravity-quota-summary-gemini-5h"
)
gemini_weekly = next(
x["window"] for x in windows
if x["id"] == "antigravity-quota-summary-gemini-weekly"
)
p5 = remaining(gemini_5h)
pw = remaining(gemini_weekly)
t5 = time_left(gemini_5h["resetsAt"])
tw = time_left(gemini_weekly["resetsAt"])
# メニューバーに常時表示する文字列
print(f"G {p5}% · W {pw}%")
# クリックしたときに表示する詳細
print("---")
print(f"Gemini 5-hour: {p5}% left · reset in {t5}")
print(f"Gemini weekly: {pw}% left · reset in {tw}")
print("---")
print("Refresh | refresh=true")
except Exception as e:
print("G ?")
print("---")
print(f"Error: {e}")
PY
実行権限を付けます。
chmod +x ~/SwiftBarPlugins/gemini-usage.1m.py
しばらく待つか、SwiftBarをRefreshします。
するとメニューバーに、
G 97% · W 83%
のように表示されます。
.1m.py の 1m は何?
SwiftBarではファイル名によって更新間隔を指定できます。
今回の、
gemini-usage.1m.py
の、
1m
は、
1分ごとにスクリプトを実行する
という意味です。
そのため、Geminiの使用量も1分ごとに更新されます。
クリックすると詳細も確認できる
メニューバーの、
G 97% · W 83%
をクリックすると、例えば次のように表示されます。
Gemini 5-hour: 97% left · reset in 3h34m
Gemini weekly: 83% left · reset in 4d12h
常時表示は短くして、
G 97% · W 83%
だけにし、詳しい情報はクリックしたときだけ表示するようにしています。
仕組み
全体としては次のようになっています。
Antigravity
↓
CodexBar
↓
codexbar CLI
↓
JSON
↓
PythonでGeminiだけ抽出
↓
SwiftBar
↓
macOSメニューバー
CodexBar自体がAntigravityのquotaを取得してくれているので、新たにGoogleへログインしたり、APIを直接叩いたりする必要はありません。
CodexBarと並べると便利
私はCodexBar本体ではCodexの使用量を常時表示しています。
その隣に今回のGemini表示を置くと、
G 97% · W 83% Codex 4% ... · W 62% ...
のようになります。
これなら開発中にメニューバーを見るだけで、
- Codex 5-hour
- Codex weekly
- Gemini 5-hour
- Gemini weekly
の残量を把握できます。
特にAIコーディングを長時間使っていると、「今どのくらいquotaを消費しているか」を確認しながらモデルを使い分けられるので便利です。
SwiftBar 2.1.2では、Macを長時間スリープさせて復帰すると、実際にはプラグインが正常でも ⚠️ が出るという2026年8月の未解決Issueがあります。私の環境でも同じ現象がありましたが、すぐに消えました。
まとめ
CodexBarはAntigravityの使用量を取得できますが、GeminiとClaude/GPTを両方使っている場合、メニューバーに自分が見たいquotaが表示されるとは限りません。
しかしCodexBar CLIのJSONには、
Gemini 5-hour
Gemini weekly
Claude/GPT 5-hour
Claude/GPT weekly
が個別に入っています。
そこで、
CodexBar CLI
+
Python
+
SwiftBar
を組み合わせることで、
G 97% · W 83%
というGemini専用の使用量表示を作れました。
CodexとGeminiを頻繁に使う人には、かなり便利だと思います。
関連リンク
-
CodexBar
https://github.com/steipete/CodexBar -
SwiftBar
https://github.com/swiftbar/SwiftBar

