趙健の技術ノート

Macをスリープさせない方法は?無料・オープンソースの Tokimori でワンクリックでスリープ防止、スケジュールでAppの起動・終了も

技術 約6447文字 · 17分で読める - 回閲覧

Tokimori は、macOS 用の無料・オープンソースのメニューバーAppです。Mac がスリープしないように保ちます。今すぐ、毎週のスケジュールで、あるいは特定のAppやコマンドが動いている間に。さらに、設定した時刻にAppを開いたり終了したりします。Dock にアイコンは表示されません。

大きなファイルのダウンロード、ビルド、動画の書き出し、AI エージェントの実行、リモート接続、プレゼンテーションの間に Mac がスリープしないようにできます。仕組みは macOS 標準の caffeinate コマンドと同じで、メニュー、スケジュール、Appタイマーを加えています。マウスを動かすことはありません。

Tokimori のメニューバーメニュー:スリープ防止のスイッチ、時間のボタン、ディスプレイをオンのままにする、次のAppタイマー

機能

  • ワンクリックでスリープを防止。 無期限、30 分、1・2・4 時間、または指定した時刻まで有効にできます。システムはスリープしませんが、ディスプレイは通常の設定どおりにオフになります。
  • ディスプレイをオンのままにする、または今すぐオフにする。 必要ならディスプレイもオンのままにできます。ディスプレイをオフにする を使うと、Mac は動作したまま画面だけを暗くします。
  • スケジュール。 たとえば平日の 09:00〜18:00 は Mac をスリープさせない、といった設定ができます。期間は午前 0 時をまたいでもよく、その場合は開始した日に属します。
  • 実行中。 Appが開いている間、またはコマンドラインのプロセスが動いている間、Mac をスリープさせません。プロセスは名前(ffmpeg)か、コマンドラインに含まれるテキスト(node や python の中で動くツールなら claude)で照合します。
  • Appタイマー。 選んだ曜日の決まった時刻にAppを開いたり終了したりします。同じAppに複数のタイマーを設定できます。30 秒たってもAppが終了しない場合(保存を確認しているときなど)、Tokimori は通知するか強制終了します。どちらにするかはタイマーごとに選べます。
  • バッテリー保護。 バッテリー駆動中に残量が指定したレベル(デフォルトは 20%)を下回ると、Tokimori はスリープ防止をやめます。電源をつなぐと、スケジュールと実行中ルールは再開します。
  • ショートカットのアクション。 Macのスリープを防止、Macのスリープ防止を停止、Macのスリープを防止中か確認 をショートカット App で使えます。たとえば集中モードや Wi-Fi のオートメーションに組み込めます。
  • 15 言語。 英語、簡体字中国語、繁体字中国語、日本語、韓国語、ドイツ語、フランス語、スペイン語、ポルトガル語、インドネシア語、タイ語、ベトナム語、アラビア語、ロシア語、ヒンディー語に対応し、App内で切り替えられます。

インストール

macOS 14 Sonoma 以降が必要です。

  1. Releases ページを開き、最新リリースの Assets から Tokimori-<version>.dmg をダウンロードします。
  2. ダウンロードした DMG をダブルクリックして開きます。
  3. Tokimori を、同じウインドウに表示されている アプリケーション フォルダにドラッグします。
  4. DMG を取り出し、アプリケーションフォルダから Tokimori を開きます。初回は macOS が許可を求めます。下の「初回起動」を参照してください。

インストーラはなく、管理者パスワードも不要です。

アップデート: 新しい DMG をダウンロードし、Tokimori をもう一度アプリケーションフォルダにドラッグして古いものと置き換えます。ルールはそのまま残ります。新しいバージョンがあるかどうかは、設定 › 一般 の アップデートを確認… をクリックして確認できます。

アンインストール: Tokimori のメニューから終了し、ゴミ箱に入れます。ルールと設定も削除するには、~/Library/Application Support/net.zhaojian.tokimori と ~/Library/Preferences/net.zhaojian.tokimori.plist を削除します。ログイン時に開く をオンにしていた場合は、先にオフにするか、システム設定 › 一般 › ログイン項目で Tokimori を削除してください。

初回起動

Tokimori はまだ Apple の公証を受けていないため、初めて開くときに macOS がブロックします。一度だけ次の手順で許可してください。

  1. Tokimori をダブルクリックします。macOS が Tokimori を検証できないと表示したら、完了 をクリックします。青い ゴミ箱に入れる ボタンはクリックしないでください。

    macOS が Tokimori を検証できないと表示するダイアログ。完了ボタンをクリック

  2. システム設定 › プライバシーとセキュリティ を開き、セキュリティ までスクロールして、Tokimori の横にある このまま開く をクリックします。このボタンは手順 1 のあと約 1 時間表示されます。

    システム設定のプライバシーとセキュリティ画面。セキュリティ欄に Tokimori がブロックされたことが表示され、横にこのまま開くボタンがある

  3. ログインパスワードを入力するか Touch ID を使います。続いて表示されるダイアログで、もう一度 このまま開く をクリックします。

    確認ダイアログ。このまま開くをクリックして Tokimori を実行

これ以降、Tokimori は普通に開けます。この手順は DMG 内の First Launch.txt にも書かれています。

使い方

メニューバーの砂時計をクリックします。何かが Mac のスリープを防止している間は砂が落ち続け、砂時計は 30 分ごとにひっくり返ります。Mac が通常どおりスリープできるときは、砂がすべて上に残ったまま止まっています。

  • スリープ防止 でスリープ防止をオン・オフします。その下に、いま何が Mac をスリープさせずにいるのか、いつまでなのかが表示されます。
  • 時間のボタンを押すと、その時間だけスリープを防止します。終了時刻を指定… では時刻を選べます。今日すでに過ぎた時刻は明日を意味します。
  • ディスプレイをオンのままにする は、自分でオンにしたスリープ防止に適用されます。スケジュールと実行中ルールにはそれぞれ独自の設定があります。有効なソースのどれか一つでも求めていれば、ディスプレイはオンのままです。
  • 最後の行には次のAppタイマーが表示されます。

スケジュールが有効な間にスリープ防止をオフにすると、Tokimori はどうしたいかを尋ねます。

  • 18:00まで停止 — この期間の残りはオフのままにし、次回スケジュールで再びオンになります。
  • このスケジュールをオフにする — 設定で再びオンにするまで、このスケジュールをオフにします。
  • スリープさせない — 何も変更しません。

オフにすると、有効になっている実行中ルールも、そのAppやプロセスが終了するまで一時停止します。

ルールを管理するには 設定… を開きます。各ルールはその場で編集できるカードです。変更はすぐに反映され、カードのスイッチでオン・オフし、ゴミ箱ボタンで削除します。

一般: ログイン時に開く、メニューバーアイコンの横に残り時間を表示、バッテリー保護、言語、アップデート。

Tokimori の一般設定:ログイン時に開く、バッテリー残量が 20% を下回ったらスリープ防止を停止、言語、アップデートを確認

スケジュール: スケジュールを追加 で平日 09:00〜18:00 のスケジュールが追加されます。名前、曜日、時刻はカード上で変更します。

Tokimori のスケジュール設定:金曜・土曜の 23:00 から翌日 3:00 までスリープを防止

実行中: 追加 を押すと、いま開いているAppが一覧表示されます。その中から選ぶか、その他のApp… を選ぶか、コマンドラインプロセス… を選んでプロセス名かコマンドラインの一部を入力します。

Tokimori の実行中設定:コマンドラインに claude を含むルール

Appタイマー: タイマーを追加 を押すと、いま開いているAppが一覧表示されます。新しいタイマーは平日 09:00 にAppを開きます。そのAppにすでに開くタイマーがある場合は、18:00 に終了するタイマーになります。終了の場合は、30 秒たってもAppが終了しないときの動作を選びます。同じAppを別のタイマーと同じ分に開いて終了することになるタイマーはオンにできません。

Tokimori のAppタイマー設定:平日 9:00 に Safari を開く

最初のルールを追加すると、Tokimori はログイン時に開くかどうかを尋ねます。ルールは Tokimori が開いている間しか動かないからです。ルールが有効な状態で Tokimori を終了すると、一度だけ確認を求めます(この確認はオフにできます)。

仕組み

  • スリープ防止には、タイプ PreventUserIdleSystemSleep の IOKit 電源アサーションを使います。caffeinate -i と同じ仕組みです。ディスプレイをオンのままにする は PreventUserIdleDisplaySleep を追加します。ターミナルで pmset -g assertions を実行すると確認できます。Tokimori はマウスを動かしたり caffeinate を実行したりはしません。
  • アサーションは Tokimori のプロセスに属するため、Tokimori が終了またはクラッシュすると macOS が自動的に解放します。残ったアサーションのせいで Mac がスリープしなくなることはありません。
  • Tokimori は、期間の開始・終了時、Mac のスリープ解除時、時刻やタイムゾーンの変更時、Appの起動・終了時に再計算し、プロセスとバッテリー残量については 30 秒ごとに再計算します。
  • Mac がスリープ中や Tokimori が動いていない間に予定されていたAppタイマーは、Tokimori が 10 分以内に気づけば実行されます。それより古いものはスキップされるので、朝ふたを開けたときに古い起動や終了がまとめて実行されることはありません。
  • 起動には NSWorkspace を使います。終了はAppに通常どおり終了するよう求め、強制終了には NSRunningApplication.forceTerminate() を使います。macOS はサンドボックス化されたAppがほかのAppを終了することを許可しないため、Tokimori はサンドボックス化されておらず、Mac App Store にもありません。
  • ルールは ~/Library/Application Support/net.zhaojian.tokimori/configuration.json に保存されます。ネットワーク通信はアップデートの確認だけで、それもクリックしたときにだけ行われます。

よくある質問

ふたを閉じた状態でも MacBook をスリープさせずにおけますか? いいえ。Tokimori が防げるのはアイドル状態によるスリープだけです。外部ディスプレイ、キーボード、電源が接続されている場合(クラムシェルモード)を除き、ふたを閉じると MacBook はすぐにスリープします。

Appタイマーを実行するために Mac をスリープから復帰させられますか? いいえ。スリープ中の Mac を決まった時刻に復帰させるには管理者権限(pmset schedule)が必要です。タイマーは Mac が起きている間に実行され、上で説明した 10 分の猶予があります。

なぜディスプレイはオフになるのですか? デフォルトではシステムスリープだけを防ぎます。ダウンロード、ビルド、リモートセッションには通常これで十分です。プレゼンテーションや監視には ディスプレイをオンのままにする をオンにしてください。

macOS 26 のショートカットのオートメーションで使えますか? はい。「Wi-Fi に接続したとき … Macのスリープを防止」のように、個人用オートメーションで Tokimori のアクションを使ってください。

既知の制限

  • システム設定 › ロック画面で、ディスプレイがオフになったあとにパスワードを要求するよう設定している場合、ディスプレイをオフにする で Mac がロックされることもあります。
  • コマンドラインでの照合では、自分のユーザアカウントで起動したプロセスしか見えません。
  • Appタイマーの精度は分単位で、Tokimori が動いている必要があります。

スクリーンショットは英語表示ですが、日本語表示でのボタン名は本文に書いたとおりです。

GitHub リポジトリ: https://github.com/zhaojiannet/tokimori

共有:

コメント