ちょっとした離席に便利なスクリーンロックをする様々な方法

2013年4月21日

能動的にスクリーンをロックしよう!

スクリーンロック時のスクリーンショットを撮影する方法が分からないので、画像はOS X Dailyより拝借。

Macのデフォルト機能だけで、素早くスクリーンをロックするための方法をまとめてみました。

スリープやスクリーンセーバが始まるまで待つ受動的な方法ではないので、開始するまでの隙を狙って操作されることはありませんし、画面を隠す緊急回避の手段としても使うこともできます。

またロック中もアプリやプロセスは動作し続けるので、作業を中断させることなくパスワードを入力後すぐに復帰できます。

キーチェーンからスクリーンロック

キーチェーンアクセスからスクリーンをロックする方法です。

スクリーンをロックするとスクリーンセーバが起動し、パスワードを入力するまで復帰できません。

通常の方法

メニューバーにキーチェーンアクセスのアイコン(南京錠)を表示させ、そこからスクリーンをロックします。

screen_lock_keychain1

メニューバーにキーチェーンアクセスのアイコンを表示させるには、キーチェーンアクセスを起動して

screen_lock_keychain2

「環境設定」 > 「メニューバーにキーチェーンの状況を表示」にチェックを入れる必要があります。

AppleScriptから利用するためのコード

キーチェーンアクセスのスクリーンロック機能をAppleScriptから呼び出すコードがメモ書き倉庫さんで掲載されていましたので以下に転載します。

mylockScreen()

 

onlockScreen()
settheRubyScriptto “require 'osx/cocoa’;
bundle = OSX::NSBundle.bundleWithPath('/Applications/Utilities/Keychain Access.app/Contents/Resources/Keychain.menu/’);
bundle.load();
theClass = bundle.classNamed('AppleKeychainExtra’);
keyChain = theClass.alloc().initWithBundle(nil);
keyChain._lockScreenMenuHit(nil);
returndo shell script “/usr/bin/ruby -e " & quoted formoftheRubyScript
endlockScreen

「AppleScript エディタ」で開き、アプリケーションとして保存してDockに追加すればワンクリックでスクリーンロックできますし、Automatorでサービスとして保存すれば、ホットキーからスクリーンロックできるようになります。

screen_lock_keychain3

ディスプレイスリープからスクリーンロック

ホットコーナーやホットキーからディスプレイスリープを起動させ、その解除にパスワードを要求させる方法です。

通常の方法

まずディスプレイスリープの解除にパスワードを要求させる設定。

screen_lock_displaysleep1

「システム環境設定」 > 「セキュリティとプライバシー」の「スリープ解除/スクリーンセーバ解除にパスワードを要求」にチェックを入れます。

ディスプレイスリープを起動するホットキーは以下の通り。

ディスプレイスリープ
ControlShift + ⏏(eject)

ホットコーナーからディスプレイスリープを起動させるには、「システム環境設定」 > 「Mission Control」 > 「ホットコーナー」で設定します。

screen_lock_displaysleep2

AppleScriptから利用するためのコード

色々検索しましたが、どうやらAppleScriptのみでディスプレイスリープをする方法はないらしく、以下は「SleepDisplay」というアプリを利用したコードになります。

tellapplication “SleepDisplay" tolaunch

ファストユーザスイッチを利用してスクリーンロック

screen_lock_fastuser1

ファストユーザスイッチのログインウィンドウを表示させる機能によりスクリーンをロックする方法です。

通常の方法

screen_lock_fastuser2

「システム環境設定」 > 「ユーザとグループ」 > 「ログインオプション」の「ファストユーザスイッチメニューを表示」にチェックを入れます。

AppleScriptから利用するためのコード

do shell script “/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend"