Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Neruna

macOS のメニューバーに常駐し、caffeinate で Mac のスリープを防止する小さなアプリ。

スクリーンショット

機能

スリープ防止

  • ディスプレイのスリープとシステムのアイドルスリープをまとめて防止(caffeinate -di)
  • 無期限にオン、または 15 分 / 30 分 / 1 時間 / 2 時間の時間指定(caffeinate -t)
  • 時間指定は caffeinate 側で自動終了するので、切り忘れても勝手に元へ戻る
  • メニュー先頭に現在の状態と残り時間を表示(「スリープ防止: オン(残り 29 分)」)

常駐まわり

  • メニューバーアイコンで状態がひと目で分かる
    • オン: 塗りつぶし(cup.and.saucer.fill) / オフ: グレーアウト
  • ログイン時に自動起動のトグル(.app バンドルで起動しているときのみ)
  • アプリを終了すると caffeinate も道連れで終了するので、プロセスが残らない

必要なもの

  • macOS 13 (Ventura)+
  • caffeinate は macOS 標準のため、追加の依存はなし

インストール

brew install --cask nemooon/tap/neruna
xattr -dr com.apple.quarantine /Applications/Neruna.app

Apple Developer ID 署名なしのため、macOS が quarantine 属性を付けて起動を ブロックします。上の xattr で属性を外してから起動してください。 または、一度起動を試したあと「システム設定 → プライバシーとセキュリティ」の セキュリティ欄で「このまま開く」を選びます。

ソースから実行

swift run

.app としてビルド

./scripts/bundle.sh
open dist   # "Neruna.app" をアプリケーションフォルダへ

ログイン時の自動起動は、メニューの「ログイン時に起動」から設定できます。

アイコン

  • Resources/Neruna.icon — Icon Composer 用のデザイン原本(Liquid Glass 対応)。 open Resources/Neruna.icon で編集できます
  • Resources/icon-flat.svg.icns 生成用の合成版
  • ./scripts/icon-to-icns.shResources/Neruna.icns を再生成。Icon Composer で調整した場合は 1024x1024 の PNG に書き出して ./scripts/icon-to-icns.sh <書き出したPNG> で反映

.icon を直接アプリに組み込むにはフル Xcode(actool)が必要なため、 Command Line Tools のみの環境では .icnsscripts/bundle.sh がバンドルに同梱します。

リリース

  1. scripts/bundle.shVERSION を上げてコミット・push
  2. ./scripts/release.sh <リリースノートのファイル> — ビルド → zip → GitHub リリースを作成 (ファイルを省略すると gh がエディタを開きます)
  3. リリース公開をトリガーに .github/workflows/bump-cask.yml が動き、 nemooon/homebrew-tapCasks/neruna.rb の version と sha256 を自動更新します

ワークフローには tap へ push できる PAT を TAP_GITHUB_TOKEN として リポジトリシークレットに登録しておく必要があります。

補足

  • 中身は /usr/bin/caffeinate -di(時間指定時は -t <秒> を追加)をサブプロセスとして 起動・停止するだけの薄いラッパーです。依存ライブラリなし、AppKit のみ
    • Sources/Neruna/CaffeinateController.swift — caffeinate プロセスの管理
    • Sources/Neruna/AppDelegate.swift — NSStatusItem とメニュー
  • ログイン項目は「いま起動している .app のパス」で登録されます。dist/ から起動した まま有効にすると、あとで移動したときに古いパスを指したままになるので注意
  • 蓋を閉じてもスリープさせない用途には使えません。caffeinate -di が防ぐのは アイドルスリープだけで、蓋閉じによる強制スリープは対象外です (caffeinate -s で防げますが AC 電源接続時のみ有効)

ライセンス

MIT

クレジット

このアプリは Claude Code(Claude Fable 5)とのペアプログラミングで作られました。

About

メニューバーに常駐する macOS の caffeinate ラッパーアプリ

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages