Workflow + AppleScriptでMac(Book Pro)の明るさ(輝度)を調整してバッテリライフを伸ばそうと


皆さんがそうではないと思いますが、わたくし移動が多く、新幹線や飛行機にて、バッテリでMacBook Proを使うことが多いのです。いかにバッテリを保たせるかは死活問題。
調べた結果「ディスプレイの輝度」の影響はかなり大。75%ぐらいからバッテリ消費量が有意に減る。
手動でコツコツ75%に調整する日々でしたが、AppleScriptと(あの全く注目されない)Automatorでお気楽に輝度調整ができるように。

オーバービュー

  • Automatorでworkflowを作る
  • Automator内でAppleScriptを使う
  • アプリとして書き出し
  • システム環境設定で制御を許可

手順

Automatorで新規書類作成、ワークフロー形式を選択

ライブラリ > ユーティリティ > AppleScriptを実行をダブルクリック(あるいはウィンドウにドラッグ&ドロップ)

AppleScriptにコードを書く(コピーペーストする)

コードは下記の通り(シンタックスハイライトされない悲しいAppleScript……)

on run {input, parameters}

    tell application "System Preferences"
        set current pane to pane "com.apple.preference.displays"
    end tell

    tell application "System Events"
        if UI elements enabled then

            tell process "System Preferences"
                tell radio button "ディスプレイ" of tab group 1 of window 1 to if value is 0 then
                    repeat until value is 1
                        click
                    end repeat
                end if
            end tell

            tell slider 1 of group 1 of tab group 1 of window 1 of application process "System Preferences"
                if value > 0.75 then
                    set value to 0.75
                end if
            end tell
            quit application "System Preferences"

        else
            tell application "System Preferences"
                activate
                set current pane to pane "com.apple.preference.security"
                display dialog "UI element スクリプティングが有効になっていません。 「プライバシー」タブの「下のアプリケーションにコンピュータの制御を許可」にチェックを入れて下さい。"
            end tell
        end if
    end tell


    return input
end run

メニューから ファイル > 変換 を選択、「アプリケーション」を選ぶ。

メニューから ファイル > 保存 を選択、フォーマットを「アプリケーション」にする。ファイル名は例えば「kido75%.app」。

起動は、spotlightからがオススメ。

初めて起動するときには、システム環境設定 > セキュリティとプライバシー > プライバシー で「kido75%.app」のチェックボックスをオンにしてあげなければならない。

難所解説

システム環境設定がすでに開いているとエラーが起きる

システム環境設定が起動していると、エラーが起きてしまっていて、下記のコードで、「きちんと狙った通りのところを開く」のが手間取った。

            tell process "System Preferences"
                tell radio button "ディスプレイ" of tab group 1 of window 1 to if value is 0 then
                    repeat until value is 1
                        click
                    end repeat
                end if
            end tell

AppleScriptしかないのにAutomatorが必要

AppleScriptでコードを書いてアプリを生成すると、毎回 システム環境設定 > セキュリティとプライバシー でチェックボックスをオンにしなければ。
Automatorでアプリを生成すると、1回チェックボックスをオンにすればOK。AppleScriptを実行したいだけなのに、いったんAutomatorを噛ませないのが面倒。
GUIスクリプティングとセキュリティの戦いのせいらしい。

残念なAppleScript、残念なAutomator。

パズルを解く側としては面白いんだけど。

参考リンク

「macOS Sierra 10.12.3 beta 4」には、バッテリー持ちを長くするためにディスプレイ輝度を下げてくれる機能が搭載されていることが判明

AppleScriptでモニタの明るさを調整したい

OSX10.9におけるGUIスクリプティングとセキュリティとの戦い

深謝。