Featured image of post MacBook を閉じても音楽・動画の再生を続けるスリープ防止の設定

MacBook を閉じても音楽・動画の再生を続けるスリープ防止の設定

MacBook を閉じても音楽や動画の再生を続けたい場合のスリープ防止方法を解説します。ターミナルの pmset コマンドで即時無効化する手順と、特定アプリ起動中のみ防止できる Fermata(Apple Silicon 向けビルド手順付き)の 2 通りを紹介します。

MacBook を閉じても、スリープされたくない時があります。
音楽を再生しているとき、動画を再生(音だけ聴きたい)しているときなどですね。
その方法になります。

環境

Apple Silicon Mac(M1 以降) macOS Tahoe 26.4.1

Mac mini (M4) (Amazon) MacBook Pro M5 (Amazon) MacBook Air M5 (Amazon)

スリープしないようにコマンドで設定する

ターミナルから以下のコマンドを実行するとスリープの機能を無効にできます。
管理者パスワードの入力が必要です。
ただ、全くスリープ無しだとバッテリーが勿体ないので、後述のユーティリティの方が便利です。

sudo pmset -a disablesleep 1

実行すると、アップルメニューの「スリープ」が使えなくなりますし、MacBook を閉じてもスリープしません。

戻すには、最後のパラメータを 1 → 0 にしてコマンドを実行します。

sudo pmset -a disablesleep 0

pmset は macOS の電源管理ツール(Power Management Settings)です。
-a はすべての電源モード(AC 電源・バッテリー両方)に適用し、-b はバッテリーモードのみを対象とします。バッテリー消費を抑えたい場合は pmset -b disablesleep 1 でバッテリーモード時のみ無効化できます。

Fermata ユーティリティを使う

ただ、公開されているものは Intel 向けなので macOS のバージョンアップ後は、今後 Apple Silicon Mac では実行できなくなる旨の警告が出ます。 自分の場合はローカル環境でビルドしてみました。(後述)

Fermata を使うと、

  • 手動でスリープを無効化
  • 指定したアプリが起動している時はスリープを無効化
  • 指定したアプリがアイドルスリープを防いでいる時はスリープを無効化
    (具体的なアプリは不明ですが、音楽再生アプリに多いらしい?)

することができて便利です。
使うには、

  1. リリースのページから最新版をダウンロード
    現時点では2019/12/12リリースの 1.2 、Fermata-136.zip が最新版でした。
  2. zip を解凍してできる Fermata.app をアプリケーションフォルダに移動
  3. Fermata を起動

します。
メニューバーの右側に Fermata のアイコンが現れるので、設定などはここから行います。

手動でスリープを無効化

Fermata のアイコンをクリックして、メニューの「Postpone Lid Close Sleep」を選択します。
選択すると、メニューにチェックマークが付きます。

指定したアプリが起動している時はスリープを無効化

Fermata のアイコンをクリックして、メニューの「Preferences…」を選択します。
自分の場合は、以下のように「Music」と「QuickTime Player」を設定しています。

「Add Application…」でアプリを追加
「Remove Application」でアプリを削除
すれば OK です。デフォルトは「Embrace」が設定されていましたが、使っていないので削除しました。特にそのままでも問題ないと思います。

広告

Fermata をビルドする

Apple Silicon 版がリリースされるか不明ですが、ソースコードが公開されているのでビルドしてみました。

前提条件

  • Apple Silicon Mac(M1 以降)
  • Xcode(Mac App Store から無料入手)
  • 無料の Apple ID(自分のマシンで動けば良いので有料の Developer Program は不要)

Xcode をインストールすると Git も自動的に入ります。

ステップ1:ソースを取得

ターミナルを開き、Clone 先ディレクトリを決めて実行します。以下は ~/Developer/Fermata を例にします。
別のパスにする場合は、以降のコマンドのパスも同じに読み替えてください。

mkdir -p ~/Developer
git clone https://github.com/iccir/Fermata.git ~/Developer/Fermata

ステップ2:project.pbxproj を修正する

複数のターゲットに Ad Hoc 署名を強制するハードコードが含まれており、このままではビルドが失敗します。
以下のコマンドを実行して削除してください。<Clone先> は手順 1 で選んだパスに置き換えてください。

sed -i '' '/"CODE_SIGN_IDENTITY\[sdk=macosx\*\]" = "-";/d' \
  <Clone先>/Fermata.xcodeproj/project.pbxproj

削除できたことを確認します。何も出力されなければ成功です。

grep 'CODE_SIGN_IDENTITY\[sdk=macosx' \
  <Clone先>/Fermata.xcodeproj/project.pbxproj

コマンドが苦手な場合は、Finder で右クリック → パッケージの内容を表示 → Fermata.xcodeproj/project.pbxproj を TextEdit や VS Code で開き、ファイル内で CODE_SIGN_IDENTITY[sdk=macosx*] を検索して、= "-"; となっている行をすべて行ごと削除し、保存します。

ステップ3:Local.xcconfig を作成する

プロジェクトは署名のチーム ID を Local.xcconfig(git 管理対象外)で管理するようにします。
以下の内容で <Clone先>/Local.xcconfig を作成してください。チーム ID については、Xcode の Signing & Capabilities で確認できます(後ほど確認する機会もあります)。

DEVELOPMENT_TEAM = <チームID>

ステップ4:Xcode でプロジェクトを開く

<Clone先> はステップ 1 で選んだパスに置き換えてください。

open <Clone先>/Fermata.xcodeproj

Finder からの場合は、メニュー Go → Go to Folder…(⌘⇧G)でパスを入力し、Fermata.xcodeproj をダブルクリックします。

ステップ5:Apple ID を Xcode に登録する

すでに Xcode に Apple ID を登録済みなら、この手順をスキップしてステップ 6 へ進んでください。

Xcode → Settings → Accounts を開きます。
左下の +Apple ID を選択し、Apple ID とパスワードでサインインします。

ステップ6:開発証明書を作成する

すでに Apple Development 証明書が存在する場合はスキップして、ステップ 7 へ進んでください。

Accounts 画面で追加した Apple ID を選択 → Manage Certificates… → 左下の + → Apple Development を選択します。

ステップ7:3ターゲットすべての署名設定を変更する

Fermata は 3つのターゲット(Fermata、Launch Fermata、com.iccir.Fermata.Helper)で構成されています。
3つすべてに対して、以下の操作を行う必要があります。1つでも漏れるとビルドが失敗します。

各ターゲットへの操作:

  1. プロジェクトナビゲータ左上の青い Fermata アイコンをクリック
  2. 画面左の TARGETS リストから対象ターゲットを選択
  3. Signing & Capabilities タブを開く
  4. Automatically manage signing のチェックボックスをオン
  5. Team のドロップダウンで自分の Apple ID に対応する 〇〇 (Personal Team) を選択

以下の順番で 3つすべてに設定してください。

順番ターゲット名
1Fermata
2Launch Fermata
3com.iccir.Fermata.Helper

ステップ8:ビルドする

Release ビルドに切り替えてからビルドします。

  1. Product → Scheme → Edit Scheme…(または ⌘<)を開く
  2. 左の Run を選択 → Build Configuration を Release に変更 → Close
  3. ⌘B (Product → Build)でビルド

Build Succeeded と表示されれば成功です。警告(warnings)は無視しました。
エラーが出た場合は「トラブルシューティング」を参照してください。

ステップ9:arm64 バイナリであることを確認する

ターミナルで以下を実行して、arm64 であることを確認します。

lipo -archs ~/Library/Developer/Xcode/DerivedData/Fermata-*/Build/Products/Release/Fermata.app/Contents/MacOS/Fermata

arm64 と表示されれば正しくビルドされています。

広告

ステップ10:古い Fermata を削除する(インストール済みの場合のみ)

以前に Fermata をインストールしたことがある場合のみ実行してください。初めてインストールする場合はこの手順をスキップして、ステップ 11 へ進んでください。

以下のコマンドは管理者パスワードの入力を求められます。
実行中の Fermata は事前に終了しておいてください。

# 古いアプリを削除
sudo rm -rf /Applications/Fermata.app

# 古い Helper を削除
sudo rm -f /Library/PrivilegedHelperTools/com.iccir.Fermata.Helper
sudo rm -f /Library/LaunchDaemons/com.iccir.Fermata.Helper.plist

# Helper バージョン情報をリセット
defaults delete com.iccir.Fermata HelperVersion

ステップ11:/Applications にインストールする

以下のコマンドでビルドしたバイナリを /Applications にコピーします。

cp -R ~/Library/Developer/Xcode/DerivedData/Fermata-*/Build/Products/Release/Fermata.app /Applications/

ステップ12:Fermata を起動して Helper をインストールする

Finder または Spotlight(⌘Space) → Fermata で /Applications/Fermata.app を起動します。

起動直後に Privileged Helper のインストール確認ダイアログが表示されるので、管理者パスワードを入力して許可しましょう。

Helper が正しくインストールされたことを確認します。

file /Library/PrivilegedHelperTools/com.iccir.Fermata.Helper

Mach-O 64-bit executable arm64 と表示されれば成功です。

ステップ13:動作確認

メニューバーに Fermata のアイコン(音符マーク)が表示されていることを確認します。

アイコンをクリックしてメニューを開き、スリープ防止の設定をオンにしましょう。Mac の蓋を閉じてもスリープしなければ動作成功です。

トラブルシューティング

署名証明書が見つからない

No signing certificate "Mac Development" found

→ ステップ 5・6 の Apple ID 登録と証明書作成を行ってください。

Launch Fermata の署名が親アプリと一致しない

Embedded binary is not signed with the same certificate as the parent app.

→ ステップ 2 の project.pbxproj 修正が漏れています。
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-" の行をすべて削除してください。

署名エラーが解消しない

→ ステップ 7 の署名設定が 3ターゲット(Fermata・Launch Fermata・com.iccir.Fermata.Helper)すべてに行われているか確認してください。1つでも漏れているとエラーが出ます。

ビルドは成功したが arm64 になっていない

lipo -archs ~/Library/Developer/Xcode/DerivedData/Fermata-*/Build/Products/Release/Fermata.app/Contents/MacOS/Fermata
# → x86_64  ← 間違い

→ Build Settings で VALID_ARCHSx86_64 に固定されていないか確認し、固定されていれば行ごと削除してください。メインターゲットと Helper ターゲットの両方を確認しましょう。

Helper インストールのダイアログが表示されない

以前に Fermata をインストールしたことがある場合、アプリの設定ファイルに古い Helper バージョン情報が残っており、インストール処理がスキップされることがあります。

  1. メニューバーの Fermata アイコンをクリック → Quit Fermata で終了
  2. ターミナルで以下を実行
sudo rm -f /Library/PrivilegedHelperTools/com.iccir.Fermata.Helper
sudo rm -f /Library/LaunchDaemons/com.iccir.Fermata.Helper.plist
defaults delete com.iccir.Fermata HelperVersion
  1. Fermata を再起動するとダイアログが表示されます

Helper インストール後も機能しない

file /Library/PrivilegedHelperTools/com.iccir.Fermata.Helper
# → Mach-O 64-bit executable x86_64  ← 古いバイナリが残っている

→ 古い x86_64 バイナリが残っています。ステップ 10 の削除を行ってから、ステップ 11 以降をやり直してください。

コメントを送る
広告
Hugo で構築されています。  /  Theme Stack designed by Jimmy
本サイトに記載されている会社名・製品名などは、各社の商標または登録商標です。