| categories:Tips mac

画面のグレー/カラーのスイッチ

最近、ディスプレイを白黒(グレースケール)の表示にしています。そのためグラフィックの作業をする時や、ウェブサイトをカラーで見たい時等はカラーでとシステム環境に出たり入ったりする機会が増えました。

ただ一連の作業がちょっと面倒なので、アップルスクリプト+Alfredを使って作業を簡略化しました。

まずはアップルスクリプトエディタでスクリプトを書きます。色々と調べて割と大変だったのですが仕上がってみるとすごくシンプルです。

MountainLionにて動かしてます。SnowLeopardではシステム環境のレイアウトが違ったはずなのでちょっと修正が必要だと思います。


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

tell application "System Events"
    tell first window of process "System Preferences"
        
        tell table 1 of scroll area 1
            set selected of row 2 to true
        end tell
        tell group 1
            click checkbox "Use grayscale"
        end tell
        
    end tell
end tell

do shell script "terminal-notifier -message \"Color mode has been changed.\" -title \"Diplay\""

tell application "System Preferences" to quit

画面上のパーツをどういう風に書いてよいのか分からず四苦八苦しましたが(9行〜14行目)、下記のコードを走らせる事でGUIのパーツをリスト化してくれます。

tell application "System Preferences"
    activate
    set current pane to pane "com.apple.preference.universalaccess"
    --  set current pane to pane "com.apple.preference.sound"
end tell


tell application "System Events"
    if UI elements enabled then
        tell process "System Preferences"
            get every UI element
            --tell tab group 1 of window "Sound" of application process "System Preferences" of application "System Events"
            tell window 1 of application process "System Preferences" of application "System Events"
                --  tell table 1 of scroll area 1 of window 1 of application process "System Preferences" of application "System Events" これで左にあるテーブルの情報が見れます
                get every UI element
                get every UI element of every UI element
            end tell
        end tell
    else
        tell application "System Preferences"
            activate
            set current pane to pane "com.apple.preference.universalaccess"
            display dialog "UI element scripting is not enabled."
        end tell
    end if
end tell

UIElement

checkbox "Use grayscale" of group 1 of window "Accessibility" of application process "System Preferences" of application "System Events"でこのgroup 1の”Use grayscale”をクリックすれば良い事が分かります。表記の仕方がいくつかあるようで、click checkbox “Use grayscale”はclick checkbox 2、window “Accessibility”はwindow 1, first windowでも動きます。

後はそのパーツに値を入れてあげれば良し。

そして、スクリプトエディターからプログラムとして保存します。私は~/Library/Scriptsに保存してます。そして、お勧めランチャーのアルフレッドに~/Library/Scriptsを登録します。私の環境では以前やって登録したような、、、問題なく動いてます。

スクリプトで登録して、スクリプトメニューバーから操作も可能です。スクリプトエディターの環境設定にメニューバー登録の設定の箇所があります。

アップルスクリプトでいろんな事が出来るのにちょっと驚きです。

ただ、、別にコンピューターの処理速度が遅い訳ではないでしょうが、バシッとは変わらず

、、、トッ(環境設定が立ち上がり)、、、、、(ちょっと心配になる)、、パッ 。

と変わります。この間は一体??動きの遅いおじいちゃんのようです。しかもアプリケーションで保存したもののほうがなぜか遅いです。ちょっと気が抜けます。

おまけ

ドックにアップルスクリプトのアイコンが出てくるのがちょっと、と思う方は、アプリケーションのパッケージ内にあるInfo.plist

    <key>LSUIElement</key>
    <true/>

を追加すると、ドックにアプリケーションのアイコンは表示されません。

そしてついでにノーティフィケーションセンターに登録。terminal-notifierというソフトをつかいます。アップルスクリプトに

do shell script "terminal-notifier -message \"Color mode has been changed.\" -title \"Diplay\""

を追加して、ノーティフィケーションセンターに告知します。インストールと簡単な使い方の説明はマイナビニュースのこちらの記事を参照してください。

お次ぎはUSBオーディオの選択/解除かな。。

comments powered by Disqus