2019-05-08 追記
macOS Sierra からのロック画面のキーボードショートカットは次の通り。
Command - Ctrl - Q Command - Shift - EJECT Command - Shift - Power
これだけ。Windowsみたいに離席する前にCommand-Ctrl-Q
Macで画面オフのショートカットが欲しい。
Windowsと違って、Macで困るのは、 Win-L
のキーボードショートカットが無い所
ちょっと離席するときにMacを弄くられてデスクトップの背景をアニメ絵に変えられたり、妙なTweetを投稿されないようにしたい。
本当はTouchID があればいいんだけどね。
Macをロックする方法
画面をロック(ログイン画面にする)方法は大きくわけて3つ在る。
- 画面オフ・スクリーンセーバー起動時に画面ロック設定を環境設定でチェックする
- ユーザー切替を使ってログインスクリーンを表示
- Keychains.app を使って画面をロックする
手軽なのは1でしょうかね。ただプレゼン中にスクリーンセーバーになって画面ロックされるのは割と面倒くさいので、わたしは2/3の方法を取りたいと思ってた。
どの方法を選んでも画面ロックをしてパスワード入力が必要にすることが出来るので、これらを起動するコマンドをしっておけば、あとはキーボードショートカットを割当てたりロックコマンドを作ったりAppをつくってSpotlightから呼び出せるよね。
これらのそれぞれの方法を見ていきましょう。
1. 画面オフ・スクリーンセーバーを使った画面オフ
画面オフ・スクリーンセーバーが起動したら、ロックを掛ける。
この設定を行った上で、コマンドラインから、スクリーンセーバーを起動するか、画面をオフにする。
1.1 スクリーンセーバーを起動する
コマンドラインでターミナルから、スクリーンセーバーを起動するには、 ScreenSaver のフレームワークの中にあるバイナリを実行する。
/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine
または open
で ScreenSaverEngine.app を起動する。
open /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app
1.2 画面をオフにする
ディスプレイの電源OFFを起動する方法は、次の通り pmset は power management settgins の略だと思う。
pmset displaysleepnow
またはFinderにスリープを実行させる。
osascript -e 'tell application "Finder" to sleep'
2. ユーザー切替を使ってログインスクリーンを表示
ユーザーの切替を使う方法。
メニューバーの右上にある、「ログインウィンドウ」を使って、ロックをする。 この場合のデメリットは、ユーザー名を再度入力が必要になる点だ。
→コマンドラインからは次のようにする。
/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend
長いので alias でもしとけばいいかと。
環境設定 と併せて使う必要がある(スクリーンセーバー・画面オフ)
これらスクリーンセーバーと画面オフと使った場合、画面ロックを使うには環境設定で設定が必要
スクリーンセーバーの解除時に画面ロックをするのオプションを使わないといけないのが少しめんどくさい。 冒頭にも書きましたが、ログイン関連でロックするには、環境設定が必要になる。
3. Keychains.app を使って画面をロックする
キーチェーンには、画面ロックするメニューが用意されているので、コレを使えばロックを掛けることが出来る。
このメニューバーのメニューを起動してあげればいい。 起動する方法はいくつか在るが、Foundation を使ってパパっとPerformSelectorを実行すればいい。
キーチェーンを使う方法。
キーチェーンの機能を使うと、ダイレクトに画面ロックを起動できるから便利。
キーチェインでロックすることができる。キーチェインのボタンを押せば良いんだから、 キーチェーンの参照を取ってきて、performSelector して押すだけ。
キーチェインに該当メニューがないときは、keychains.appの設定でメニューバーに表示するように設定しておけばいい。
事前設定
performSelector する場合
lockscreen のコマンドをつくった
lockscreen を起動する。
lockscreen-macos/main.m at master · takuya/lockscreen-macos · GitHub
#import <Foundation/Foundation.h> int main() { @autoreleasepool { NSBundle *bnd = [NSBundle bundleWithPath:@"/Applications/Utilities/Keychain Access.app/Contents/Resources/Keychain.menu"]; Class pc = [bnd principalClass]; id k = [[pc alloc]init]; [k performSelector:@selector(_lockScreenMenuHit:) withObject:NULL]; } return 0; }
lockscreen-macos/main.m at master · takuya/lockscreen-macos · GitHub
コンパイルしておけばSpotLightから呼び出せる。
作ってコンパイルした実行ファイルを適当なところに置いてSpotlightで起動すれば、手軽に画面のロックが出来るので楽。本当に楽。これで捗る
この方法が不便なのは事前に、キーチェーン設定でメニューバーに表示しておく必要が在る点だけ。
組み合わせて離席用に
画面ロックとディスプレイをオフを組み合わせてコマンドにしてもいいよね。
画面をスリープさせるだけのコマンド sleep display をコマンドにして
#!/bin/sh exec pmset displaysleepnow
画面ロックするだけのコマンド lock screeenとを組み合わせておけば、使い分けも簡単。SpotLightでできる。
#!/usr/bin/env bash sleep_display_power_off lockscreen
まとめ
- スクリーンセーバー
- 環境設定が必要 - 事前設定が必要 - プレゼン中にスクリーンセーバーが起動すると面倒くさい.
- 画面オフ - 事前設定が必要 - プレゼン中や作業中に画面オフになったりすると面倒くさい。
- ユーザーの切替
- 環境設定が必要
- 再ログイン時にユーザー名入力(選択)からになるのが面倒くさい。
- キーチェーン
- キーチェーンをメニューバーに表示する必要がある。
スクリーンセーバーと画面オフの使用頻度にも依るのですが、いくつか選択肢があって好きな方法を選べるのが嬉しい。
あとはどの方法でも好きなものをキーボードショートカットに割り当ててしまえばWin-Lのような使い方が出来る
画面オフは「パワーボタン押す」なので、強い意味のパワーオフでCtrl-Shift-パワーとかでしょうかね。
次に調べること
ユーザー切替のログインスクリーンを表示するをCLIで起動する方法。 pmset はオモシロそうなので全部のコマンドを試したい。
2018-08-12追加
lockscreen で検索にマッチしなかったのでキーワード追加。最近のGoogleはほんとに。。。
参考資料
https://apple.stackexchange.com/questions/80058/lock-screen-command-one-liner