ロック画面コマンドワンライナー


62

私は、OS X 10.6のキーチェーンアプリを介して利用可能な「ロック画面」メニューオプションとまったく同じ機能を複製する同等のコマンドラインワンライナーがあるかどうかを調べようとしています

私はすべての「通常の」解決策(再起動時にパスワードを要求するスリープ/スクリーンセーバー設定)を知っていますが、これらは私には適していません。

私もこのオプションを知っています:

/System/Library/CoreServices/Menu\ Extras/user.menu/Contents/Resources/CGSession -suspend

これも私には適していません。

完璧な機能は「ロック画面」オプションですが、それを呼び出すエレガントな方法はまだ見つかりません。

現時点では、Automator経由で呼び出していますが、エレガントではありません!

私はこの問題について多くを読みましたが、私の理解では、誰もまだ「聖杯」を見つけていませんが、それが変わったのではないかと思っていました。


Automatorで何を呼びますか?
マチューリーグラー

3
スクリーンセーバーがアクティブなときにパスワードを要求するようにセキュリティ設定を設定し、ホットコーナーを使用してスクリーンセーバーをアクティブにすることの何が問題になっていますか?それは高速でエレガントですが、あなたはそのソリューションが気に入らないと言いました。
ⱮarkƬ

3
これは実用的な提案であり、長年の使用で試行錯誤を繰り返してきましたが、私の作業パターンの性質上、これは80%以上の時間の妨げになります。エンジニアリングリクエストと緊急事態に(物理的に)応答し、すぐに画面をロックする機能が必要ですが、既存の接続とバックグラウンドタスクもすべて維持しながら、ボックスにリモートアクセスできます。
user40433

1
日時:「キーチェーンのロック画面メニューはどこにありますか?」キーチェーンを開く...設定...メニューバーに表示!再:「それは何をしますか?」画面をロックします!それ以上に、私は自分の要件(および一部の人々が私の要件を満たしていると信じているが、そうではない「解決策」に対する嫌悪感)を非常に徹底的に説明したと思います。
user40433

回答:


50

OS X 10.9以降の場合:

pmset displaysleepnow

このコマンド自体では、ディスプレイがスリープ状態になるだけで、画面が黒くなります。スリープ直後にパスワードを要求するようにコンピューターを構成することにより、このワンライナーは「コンピューターのロック」コマンドとして機能します。この設定は、[ システム設定]> [セキュリティとプライバシー]> [全般]で利用できます。

出典:MacBook Airで画面をロックする方法


9
ただ完全を期すため、これは「スリープやスクリーンセーバー後Rerquireパスワードを始める」セキュリティオプションが設定されているシステム環境設定でオンになっている場合にのみ動作します
Hofi

1
これは、Ctrl + Shift +イジェクトに最も相当すると思われます。
月きゅうPeblik

これは、キーチェーンメニューバー項目と同等ではありません。画面をロックしません。コンピューターをスリープ状態にするだけです。
ラドンロズバラ

1
@RadonRosboroughいいえ、コンピューターをスリープ状態にしません。それは入れないディスプレイを使用すると、ロックされたMacがリモートですべてが動作しているアクセスすると、スリープ状態に。これは、キーチェーンの遅いGUIまたはFinderの遅いGUIをすべて通過するわけではないため、最短かつ最速の回答になる可能性があります。
ダン

これは、古くて不適切なキーチェーンメニューエントリthanよりもはるかに優れたソリューションです。
ダン

41

注:このソリューションは、キーチェーンアクセスメニューバーのステータス機能を使用するという点で独特ですShow keychain status in menu bar、AppleScriptメソッドのようにオプションを有効にする必要はありません

私はこれに対する解決策も探していました。今日は少し時間をかけて、キーチェーンメニュープラグインから機能をプログラムで実際に呼び出す方法を見つけました。Appleがキーチェーンメニュープラグインの関連部分を変更しない限り、このソリューションは完全に機能します。これを端末に貼り付けることで、画面をロックするための小さなバイナリを作成できます...

# Do our work in the temporary directory that gets cleaned on boot
cd /tmp

# Create the source file
cat > main.m <<END_OF_FILE

#import <objc/runtime.h>
#import <Foundation/Foundation.h>

int main () {
    NSBundle *bundle = [NSBundle bundleWithPath:@"/Applications/Utilities/Keychain Access.app/Contents/Resources/Keychain.menu"];

    Class principalClass = [bundle principalClass];

    id instance = [[principalClass alloc] init];

    [instance performSelector:@selector(_lockScreenMenuHit:) withObject:nil];

    return 0;
}

END_OF_FILE

# Compile the source file
clang -framework Foundation main.m -o lockscreen

次を入力してプログラムを実行します。

./lockscreen

これの使用方法について詳しく教えてください。これをコピーしてAutomatorワークフローに貼り付けますか?または、それからApplescriptを作成しますか?今のところ、あなたの答えで何かをするのは難しいです。
SaaruLindestøkke

1
これは単純なObjective-Cプログラムです。main.mというファイルにコピーします。次に、「clang -framework Foundation main.m -o lockscreen」を実行してプログラムをコンパイルします。'./lockscreen'はプログラムを実行し、画面をロックします。
mrArkwright 14年

説明したとおりに動作します。コンパイルは1つの警告を生成しinstance method '-_lockScreenMenuHit:' not foundますが、それでもロック画面アプリケーションは動作します。ただし、ダブルクリックすると、画面をロックする前にターミナルウィンドウが開きます。ロックを解除した後、ウィンドウを手動で閉じる必要があります。そのウィンドウを自動的に閉じる方法はありますか?
SaaruLindestøkke

6
この回答とリンクで詳述されている誰かの作業に基づいてOS Xアプリをロックスクリーン。アプリを収集しました。このコードをラップして美しいアイコンを追加するだけなので、直接実行できます、ありがとうございます。
Mengdi Gao 14

1
MenuExtraが削除されたため、これは10.13ではもう機能しません。これは、代わりに動作します:stackoverflow.com/a/26492632/368409
Lloeki

15

アルフレッドを使用

ここに画像の説明を入力してください

ユニバーサルホットキーを使用すると、キーボードを使用してアクティブ化できます。


驚くばかり!ユニバーサルホットキーはパワーパックに組み込まれていますか、それとも一部ですか?
ダンローゼンスターク14年

1
ビルトイン...
Vaibhav Bajpai 14年

2
悲しいことに、これはそうではありません-キーチェーンのメニューロックを使用すると、インターネット接続もシャットダウンしません。
マーチンボボウスキ

起動バーにも同等の機能があります:「ロック画面」
ウィリアムタレル

これは、キーチェーンメニュー項目と同等ではありません。コンピューターをスリープ状態にせず、迷惑なアニメーションも再生します。
ラドンロズバラ

15

更新:2019

キーチェーンのロック画面は、MacOS Mojave&High Sierraの現在のバージョンでは使用できなくなりました。

AppleはAppleメニューにLock Screen Menuアイテムを追加しました。デフォルトのキーボードショートカットはcrtl + cmd +です。 Q

ここに画像の説明を入力してください


------------- 以下の以前のOSに対する古い回答 --------------

@Bart Arondsonの答えは、キーコードを使用してキーチェーンロック画面メニューをナビゲートすることです。

GUIスクリプトを使用してすべてのキーコードをバイパスし、実際にメニュー項目を直接ヒットすることができます。

キーコードを使用してメニューをナビゲートすると、失敗する場合があります。また、GUIスクリプティングも好きではありませんが、ヒットすることも見逃すこともあるため、この場合はヒットとミスが少なくなります。

このAppleScriptコード:(2016年5月18日に更新、AppleScriptを使用して画面をロックすることから取得、エルキャピタンでの動作を確認)

tell application "System Events" to tell process "SystemUIServer"
    tell (menu bar item 1 of menu bar 1 where description is "Keychain menu extra")
        click
        click menu item "Lock Screen" of menu 1
    end tell
end tell

AutomatorサービスワークフローのAutomator 'Run Applescript'アクションで使用できます。

ここに画像の説明を入力してください

次に、サービスにキーボードショートカットを与えます。キーボードショートカットの通常の方法。

ここに画像の説明を入力してください

サービス:

ここに画像の説明を入力してください


これは、私がそれを必要としていたのにうまくいきました、ありがとう!
nictrix 14

オートマトラから端末コマンドを実行することもできるので、それを使用しました。それはより「エレガント」に縫い合わせた:)。非常に素晴らしい解決策!
ソリンブトゥルゲイヌ

3
私は長い時間のために、このソリューションを使用しますが、OSXエルキャプテンので、それはもう:(動作しません。
マルチンBobowski

まだこれを見ています。しかし、メニューがクリックされる次の項目については、メニュー自体でレポートを返さないようです。これらの2行を実行しても動作しますが、時間がかかります。tell application "System Events" to tell process "SystemUIServer" to click (first menu bar item of menu bar 1 whose description is "Keychain menu extra") tell application "System Events" to click (menu item "Lock Screen" of menu 1 of menu bar item 1 of menu bar 1 of application process "SystemUIServer")
マークハンテ

8

スクリーンセーバーがアクティブなときに画面をロックするように設定します。

セキュリティとプライバシーの設定ペイン

次に、この端末コマンドを使用してスクリーンセーバーを起動できます。

/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine

私が知る限り、これはまさにキーチェーンメニュー項目の機能です。


コメントありがとうございます。しかし、これは私が長年戦い続けてきたものであり、代替案を見つけようとしています。
user40433

1
明確さと完全さのために、上記はスクリーンセーバーを実際に起動しますが、「画面のロック」メニュー機能が提供することは行いません。
user40433

1
次に、正確に何を探しているかについて、より具体的にする必要があります。
ⱮarkƬ

うーん...元の質問の最初の段落より具体的または簡潔にできるかどうかはわかりません!
user40433

1
10.6.8でテストする機会がありました。そのOSでは、モニターがオフになり、セッションがロックされます。これを行うためのプログラム的な方法を見つけましたが、組み込まれていません。
Ɱark13

3

あなたの質問への答えは、「いいえ、これを行うコマンドラインの方法はありません」と思います。

これはメニューバー項目であるため、Keyboard Maestroまたは他の同様のツールを使用して簡単にアクセスできるものではありません。

ただし、サードパーティのアプリを使用したソリューションを嫌う場合は、QuickLockを使用 してこれを行うことができます。

これは、画面をロックするためのキーボードショートカットを割り当てることができる無料の(寄付を受け付けています)アプリです。画面をロックするためにクリックできるメニューバー項目もあります。

アプリでは、パスワードを設定できます(アカウントのパスワードとは別に)。

スクリーンセーバーでパスワードを使用する必要はありません。すべて完全に独立しています。

http://www.youtube.com/watch?v=SBHwykPB19oで実際の動作のビデオを見ることができます

ps画面がロックされたら、パスワードを入力してロックを解除します。パスワードフィールドが表示されると思っていたため、混乱しました。なにもない。パスワードを入力するだけです。

pps私はこれを数分しか使っていないので、気付いていない他の問題があるかもしれませんが、それは法案に合うようです。


あなたの貢献に感謝します...私が探していたものではありませんが(私はオープンソースとDIYの方法が大好きです!)、それは非常に興味深いように見え、サードパーティのアプリではありますが、必要な機能を提供するようです。もっと詳しく見ていきます。ありがとう!
user40433

私もそれを行う方法を見つけたいと思っていますが、それがあるとは思いません。
TJルオマ

表示された死んだ...
rogerdpack

3

Macは、このようなオプションを提供するようには設計されていません。ただし、この記事では、QuickSilverを使用した回避策について説明します。Appleがネイティブに提供するソリューションが気に入らない理由を私は理解することはできませんが、ソリューションを見つけられることを願っています。


3

AppleScriptの助けを借りて、コマンドライン経由でマシンをスリープさせる簡単な方法は

osascript -e 'tell application "Finder" to sleep'

すぐにパスワードを要求するように設定していない限り、画面がロックされることはありません。後世のためだけに注目している。


3

簡単なエイリアス。これをbashrcに追加します

alias afk="osascript -e 'tell application \"System Events\" to keystroke \"q\" using {command down,control down}'"

afk実行する端末に入力します。


2

上記でjnkが投稿したコードを使用しました。次に、appifyを使用してOS Xアプリmathiasbynens.be/notes/shell-script-mac-appsに変換しました。次に、Quicksilverを使用して独自のキーボードショートカットを割り当てました(cmd + Lを選択しました)。代わりにOS Xアプリを起動しているため、ターミナルの設定方法に(一部の人が懸念しているように)ターミナルが開いていません。

  1. 上記の答え、jnk、Lock Screen Command One-Linerに従ってください
  2. 上記の要約のリンクをたどって、appifyを使用してOS Xアプリに変換します。
  3. Quicksilverをインストールします。
  4. Quicksilverを使用して、新しいアプリケーションを起動するキーボードショートカットを割り当てます。「トリガー」の下にあります。Quicksilverを楽しんでいるのは、OS XでアプリケーションやWebサイトを起動するためのキーボードショートカット/ホットキーが大好きだからです。

1

私もこの問題に遭遇しました。/System/Library/CoreServices/Menu\ Extras/user.menu/Contents/Resources/CGSession -suspend画面をロックするのではなく、システムにすべてのタスクを中断させます。

JordanBtuckerは正しい軌道に乗っていました。ここに私が使用するすべての機能があります。

lockscr() {
  if [ "$(defaults read com.apple.screensaver askForPasswordDelay 2>/dev/null)" ]; then
    local Olddelay="$(defaults read com.apple.screensaver askForPasswordDelay)"
    defaults write com.apple.screensaver askForPasswordDelay -int 0 && \
        pmset displaysleepnow
    defaults write com.apple.screensaver askForPasswordDelay -int "${Olddelay}"
  else
    defaults write com.apple.screensaver askForPasswordDelay -int 0 && \
        pmset displaysleepnow
    defaults delete com.apple.screensaver askForPasswordDelay
  fi;
}

これにより、ユーザー自身の設定は保持されますが、画面は安全にロックされます:)


High Sierraでは、これらの値はUIによって設定されなくなりました。ただし、それらを手動で設定すると、UIはそれらを受け入れます。 defaults write com.apple.screensaver askForPassword -bool TRUEそして、 defaults write com.apple.screensaver askForPasswordDelay -int 10 これらは私のデフォルト値です。これで、上記のスクリプトは説明どおりに動作します。
ショーンペリー

0

そのためにBetterTouchToolを使用し、「ログイン画面に切り替える」(ロック画面)へのキーボードショートカットを割り当てました。コマンドラインの要件を満たしていませんが、とにかく役立つかもしれません。

画面をロックするためのBetterTouchToolのキーボードショートカット


あなたの助けと提案をありがとう。クイックロックが @TJLuomaによって上記BetterTouchTool(私が見つけるために着手した方法はありませんが)非常に近い私の機能目的に来るように見えるん。これをもっと詳しく見ていきます...ありがとう。
user40433

0

ここであなたの問題を理解しているとは確信が持てません。スクリーンセーバーでパスワードが必要な場合、プロセスの実行を停止したり、Macへのリモートアクセスをブロックしたりしません。このオプションを設定して(ControlPlaneを使用して職場でアクティブにし、自宅で非アクティブにします)、システムがリモートデスクトップ、VNC、またはSSH接続への応答を拒否したことがありません。GUIアクセスが必要な場合はすべて、パスワードを入力するだけです。SSHはキーペアを使用するため、パスワードは要求されません。アプリをスリープさせたくない場合は、戻る前にシステムの電源設定がシステムスリープに入らないようにしてください。スリープタイムアウトを長い遅延に設定するだけです。コンピューターの前に座って仕事をしているときに、パスワードの入力に煩わされたくない場合は、

ctrl-shift-ejectを使用して画面をロックします。それは高速でシンプルで、動作します。これは、画面をロックする組み込みの方法です。すでにOSに組み込まれている機能を複製することは、誰もが追求に多くの時間を費やすには余りにも冗長であるため、誰も代替案を思い付かないでしょう。

私が知る限り、10.8のキーチェーンには「ロック画面」オプションはありません。したがって、アップグレードしたとしても、お好みのソリューションは存在しません。編集:キーチェーンの設定でこれに気付かなかった。はい、それはまだ10.8にあります。

これにAutomatorを使用している場合、スクリプトをアプリとしてパッケージ化し、ホットキーコンボを割り当てるか、すぐにアクセスできるようにDockに残すことはできませんか?


ctrl-shift-ejectは実際には「高速ユーザー切り替え」モードに入ります。少なくとも1つのVPNソリューション(仕事の目的で使用する必要があるもの)はこれが気に入らず、それを行うとVPNを切断し、接続した可能性のある基になるセッションを終了します。コンピューターのロックを解除すると、VPNセッションに簡単に再接続できますが、1分以上かかることがあるため、「クイック」オプションが失敗します。したがって、これはIMOの質問に対する正確な解決策ではありません。
ジョンV

0

質問者のように、キーチェーンロック画面を高速で使用する方法を探していました。

古いMac OS Xヒントからの知識といくつかのApplescriptingを組み合わせて、私は次のことを思いつきました。

まず、リンクされたMac OS Xヒントの手順に従って、キーチェーンロック画面機能のキーボードショートカットを追加します。

私(10.8.4)では、ctrl+ を押しF8てステータスバーにフォーカスを移動しdown、キーを押してキーチェーンメニューバーを開き、ctrl+ F9を押して画面をロックする必要があるため、これは問題を解決しませんでした。次のApplescriptを使用して、このプロセスを自動化しました。

# Press ^F8
tell application "System Events"
    key code 100 using control down
end tell

# Press "down"
tell application "System Events"
    key code 125
end tell

# Press ^F9
tell application "System Events"
    key code 101 using control down
end tell

Automatorを開き、新しいサービスを作成し、Run Applescriptモジュールを追加し、上記のコードをコピーして貼り付け、希望する名前でAutomatorサービスを保存します。ここで、システム環境設定のキーボードショートカットに移動し、新しく作成したAutomatorサービスのキーボードショートカットを追加します。私はctrl+ cmd+ に設定しLます。

アプリでキーボードショートカットを押すと、画面がすぐにロックされます。

なぜ他の方法を使うだけではいけないのか疑問に思う人のために、それらについての私の意見を以下に示します。

  • ユーザーの高速切り替え/画面のロック
    この方法では、企業のWPA2ネットワークからログアウトします。再接続には時々時間がかかるため、これは良くありません。

  • スクリーンセーバー+パスワード
    機能をレプリケートしますが、これは、隣のペーパーを読んでいる間にラップトップがしばらく非アクティブになっている場合、再度使用するときに画面がロックされることを意味します。これは望ましくありません。この方法とホットコーナーを組み合わせると、未経験のMacユーザーが誤って画面ロックにつながるホットコーナーをトリガーするという副作用があります。また、偶然にホットコーナーにぶつかり、ワークフローが大幅に停止することもあります。

  • サードパーティアプリ
    これらはすべて問題ありませんが、OSでネイティブに利用可能なサードパーティアプリを実行するのはなぜですか?


0

10.14.6 Mojaveでは、代わりに次のコマンドを使用してスクリーンセーバーエンジンを起動します。

/System/Library/CoreServices/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine


しかし、ロックしませんでした。キーを押すと、開き直しました。システム設定で「直後にパスワードを要求する」について他の回答のコメントを読んで、それに応じて自分のコメントを更新する場合は注意してください。
ankii

-1

10.6.8でキーストローク(Ctrl + Shift + Eject)を使用してスクリーンセーバーのパスワード設定を使用しますが、これを見ると、キーチェーンアクセスタスクバーアイコンの[画面のロック]アイテムと同じことができます。

これは他の回答のいくつかに似ていることは知っていますが、「ホットコーナー」の代わりにキーストロークを使用します。これは私にとってより便利です。

このソリューションの詳細については、こちらをご覧ください。http//osxdaily.com/2011/01/17/lock-screen-mac/

これを何年も問題なく使用しています。


1
ありがたいことに、残念ながらこれに「スリープまたはスクリーンセーバーから戻るときにスクリーンセーバーを要求する」オプションがチェックされている必要があります。
user40433

-1

さて、上記の2つの答えを組み合わせてください。次のコマンドを実行します:

open -a /System/Library/Frameworks/ScreenSaver.framework//Versions/A/Resources/ScreenSaverEngine.app

セキュリティとプライバシーの設定を設定した後、すぐにパスワードを要求します。コマンドを実行しやすくする場合は、シェルのエイリアスを作成します。


3
はい。ただし、上記のように、常にパスワードをすぐに要求するためのセキュリティとプライバシーの設定を希望しません。これが、ロック画面コマンドの機能(特に)がとてもクールな理由です-完全にその場限りで必要なレベルのセキュリティを提供します。
user40433

-1

FWIW、私はあなたの状況を理解しており、これに対する良い解決策を自分で探しています。最終的に思いついたものよりもやや速い方法を探していたので、このスレッドに出くわしました。私は、私が望んでいたものとはまったく異なりますが、機能し、許容できる妥協となるものを思い付きました。私は@markhunteが示すのと同じ種類のGUIスクリプトコマンドを使用しています(わずかに異なる構造ですが、同じ考えです)が、すべてをAutomatorサービスワークフローに配置する代わりに、Platypusで構築された.appバンドルに分離しました。旅行やテストで、特定の条件下でAutomatorサービスの実行が非常に遅いことがわかったため、これを行いました。Macに何らかのストレスがかかっている場合(ディスクスキャンの実行中、A / Vソフトウェアが何かをしている場合、Mailがメールをプルダウンしている場合など)OSがサービスを後押ししているようです。これは、ワークフローが実行される前に(場合によって)数秒かかり、場合によってはサービスのGUIコマンドが実行される前に数秒かかることもあります。画面を「すばやく」ロックしようとすると、10秒かかります。

スタンドアロンの「アプリ」を使用すると、文字通り数十種類のサードパーティアプリを使用して実行したり、SpotlightまたはAutomatorサービスを使用してアプリを起動したりできるという利点もあります。それらのいずれかが動作します。私が見つけた最速のものはSparkと呼ばれる古いユーティリティで、10.8.4でも奇跡的に機能します。それが最後に10.4で開発されて以来、どのように私に聞かないでください!Sparkはここにあります-Spark

これに加えて、私はcocoaDialogにバンドルし、アプリの実行時に最初に呼び出すことで、ロック画面が発生していることを示す画面の中央に小さなフローティングバブルを表示することにより、GUIコマンドの実行が遅くなる問題に対処しました。通常、ロックは直後に行われますが、遅延がある場合、少なくとも正しいキーを押したという視覚的な「フィードバック」が得られます。また、自己修復を行いました-「支援デバイスへのアクセスを有効にする」がオンになっていない場合、ダイアログで警告が表示され、すぐに有効にできます。また、キーチェーンアクセスメニューがメニューバーに表示されていることも確認します。これは必須であるか、GUIスクリプティングが完全に失敗するためです。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.