Однострочная команда блокировки экрана

Я пытаюсь выяснить, существует ли какая-либо эквивалентная однострочная командная строка, которая точно воспроизводит идентичную функциональность пункта меню «Блокировка экрана», доступного через приложение «Связка ключей» в OS X 10.6.

Я знаю обо всех «обычных» решениях (предпочтения сна/экранной заставки для запроса пароля при повторной активации), но они мне не подходят.

Я также знаю этот вариант:

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

что мне тоже не подходит.

Идеальная функциональность — это опция «Блокировка экрана», однако я еще не нашел элегантного способа назвать ее.

На данный момент я звоню через Automator, что не элегантно!

Я много читал об этой проблеме, и я понимаю, что никто еще не нашел «святой Грааль», но мне было интересно, могло ли это измениться.

Что вы называете с Automator?
Извините, я должен был быть более ясным ... Я записал «Watch Me Do» в Automator (привязанный к системному сочетанию клавиш), который буквально перемещает мышь к пункту меню и выбирает его. Это работает, но медленно и совсем не элегантно!
Что не так с настройкой настроек безопасности на запрос пароля при активной заставке, а затем с использованием горячего угла для активации заставки? Это быстро и элегантно, но вы сказали, что вам не нравится это решение.
Это прагматичное предложение, которое я пробовал в течение многих лет использования, но характер моей работы означает, что это мешает> 80% времени. Мне нужна возможность реагировать (физически) на инженерные запросы и чрезвычайные ситуации и немедленно блокировать экран, но в равной степени иметь удаленный доступ к ящику, в то время как он также поддерживает все свои существующие подключения и фоновые задачи.
На ваш вопрос, вероятно, было бы намного легче ответить, если бы он содержал более конкретные детали. Где находится пункт меню «Экран блокировки» в приложении «Связка ключей»? Что именно он делает? Почему текущие решения не подходят? Мы все понимаем «элегантный», но кажется, что ваши требования более специфичны. Редактирование вашего вопроса должно помочь.
Re: "где находится меню блокировки экрана в связке ключей" Открыть связку ключей... настройки... показать в строке меню! Re: "Что он делает?" Он блокирует экран! Кроме того, я думаю, что объяснил свои требования (и свое отвращение к «решениям», которые, по мнению некоторых людей, соответствуют моим требованиям, но не соответствуют) достаточно подробно.
Просто любопытно, пригодятся ли здесь варианты быстрого переключения пользователей? Вполне уверен, что вы можете быстро добраться до экрана блокировки оттуда.
Я тоже хочу решить это. В настоящее время у меня есть горячий угол, чтобы запустить заставку без блокировки экрана и использовать символ блокировки в строке меню, чтобы заблокировать ее. Я использую каждый примерно 50/50. Мне нужно сочетание клавиш или даже другой жестко запрограммированный горячий угол для блокировки экрана. Это было бы менее громоздко, быстрее и удобнее.

Ответы (20)

В OS X 10.9 и более поздних версиях:

pmset displaysleepnow

Сама по себе эта команда только переводит дисплей в спящий режим, что приводит к черному экрану. Настроив компьютер на запрос пароля сразу после сна, эта однострочная команда работает как команда «заблокировать компьютер». Предпочтение доступно в Системных настройках > Безопасность и конфиденциальность > Общие .

Источник: Как заблокировать экран на MacBook Air?

просто для полноты, это работает, только если параметр безопасности «Требовать пароль после сна или начала заставки» включен в системных настройках.
Это кажется наиболее эквивалентным CTRL+SHIFT+Eject.
Это не эквивалентно элементу строки меню «Связка ключей». Не блокирует экран; это только переводит компьютер в спящий режим.
@RadonRosborough Нет, это не переводит компьютер в спящий режим. Он переводит дисплей в спящий режим. Если вы получаете удаленный доступ к заблокированному Mac, все работает. Это может быть самый короткий и быстрый ответ, поскольку он не проходит через весь медленный графический интерфейс Keychain или медленный графический интерфейс Finder.
Это гораздо лучшее решение, чем старый и плохо расположенный пункт меню «Связка ключей» 👏🏻.
@danielAzuelos Хорошо, но моя точка зрения остается в силе: «Он не блокирует экран, а только переводит дисплей в спящий режим». Перевод дисплея в спящий режим — это не то же самое, что его блокировка, потому что для доступа к компьютеру не требуется пароль — таким образом, теряется вся цель, по крайней мере, для людей, которые ищут что-то эквивалентное функциональности Keychain «Блокировка экрана» (как просили в вопросе).
@RadonRosborough, вероятно, это потому, что вы выключили Screen Lock( System Preferences > Security & Privacy > Require password...). И, конечно же, вы не можете добраться до Screen Lockсостояния, если вы его выключили. В остальном он работает отлично и намного быстрее, чем глупо размещенный пункт меню «Связка ключей».
@danielAzuelos Весь смысл функции Keychain «Блокировка экрана» заключается в том, чтобы позволить вам немедленно заблокировать экран, даже если он обычно не блокируется, когда дисплей находится в спящем режиме. Да, изменение ваших настроек так, чтобы экран блокировался всякий раз, когда дисплей спит, — это обходной путь, но только это, обходной путь.
Я использую пароль и блокировку экрана, чтобы контролировать доступ моего ребенка к компьютеру, и удаленный доступ по ssh'd pmset displaysleepnow— гораздо лучшее решение, чем борьба за выход из системы.

Примечание. Это решение уникально тем, что оно использует функцию состояния строки меню Keychain Access, но не требует включения этого 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? В нынешнем виде трудно что-то сделать с вашим ответом.
Это простая программа на языке Objective-C. Скопируйте его в файл с именем main.m. Затем запустите clang -framework Foundation main.m -o lockscreen, чтобы скомпилировать программу. «./lockscreen» запускает программу и блокирует ваш экран.
Попробовал, работает как описано. Компиляция выдает одно предупреждение instance method '-_lockScreenMenuHit:' not found, но тем не менее приложение блокировки экрана работает. Однако при двойном щелчке открывается окно терминала до блокировки экрана. После разблокировки вы должны закрыть окно вручную. Есть ли способ закрыть это окно автоматически?
Я знаю о предупреждении. Программа больше похожа на доказательство концепции, чем на хорошо продуманную программу. из этого исполняемого файла можно было бы сделать полноценное приложение для Mac OS, что предотвратило бы открытие терминала. но с другой стороны, если вы хотите нажать на что-то, чтобы заблокировать экран, почему бы не использовать сам плагин меню связки ключей? я предполагал, что эта программа будет вызываться другим процессом (например, панелью запуска). таким образом терминал не создается.
Я собрал приложение OS X: Lock Screen.app на основе этого ответа и чьей-то работы, подробно описанной в ссылке, он просто оборачивает этот код и добавляет красивый значок, чтобы мы могли запустить его напрямую, спасибо.
Большое спасибо за публикацию кода выше! Я работаю в компьютерном классе и блокирую экран каждый раз, когда отхожу от компьютера. Я создал вышеуказанный скрипт. Затем я использовал appify, чтобы превратить его в приложение для OS X, mathiasbynens.be/notes/shell-script-mac-apps . Затем я использовал Quicksilver, чтобы назначить собственное сочетание клавиш (cmd+L). Теперь я просто использую это вместо того, чтобы блокировать экран, используя мышь, чтобы щелкнуть значок связки ключей на верхней панели. Еще раз, я очень ценю это. Терминал не открывается / остается открытым с тем, как я его настроил, потому что вместо этого я запускаю приложение OS X.
Это больше не работает в 10.13, потому что MenuExtra был удален. Вместо этого это работает: stackoverflow.com/a/26492632/368409
Apple теперь удалила пункт меню «Связка ключей», и в меню Apple был добавлен новый пункт меню «Блокировка экрана». Подробности смотрите в моем ответе.

Я использую Альфреда →

введите описание изображения здесь

Универсальная горячая клавиша позволяет мне активировать ее с помощью клавиатуры.

Потрясающий! Является ли универсальная горячая клавиша встроенной или частью блока питания?
Он встроен...
К сожалению, это не так — он также отключает интернет-соединение, а блокировка меню «Связка ключей» — нет.
В Launchbar тоже есть эквивалент: «Экран блокировки».
Это не эквивалентно пункту меню «Связка ключей». Он не усыпляет компьютер, а также воспроизводит надоедливую анимацию.

ОБНОВЛЕНИЕ: 2019.

Экран блокировки для связки ключей больше не доступен в текущей версии MacOS Mojave & High Sierra.

Apple теперь добавила пункт меню блокировки экрана в меню Apple. Это сочетание клавиш по умолчанию crtl + cmd + Q

введите описание изображения здесь


------------- Старый ответ для предыдущей ОС ниже --------------

Ответ @Bart Arondson заключается в использовании некоторых кодов клавиш для навигации по меню экрана блокировки связки ключей.

Все коды клавиш можно обойти с помощью сценариев графического интерфейса пользователя, чтобы напрямую попасть в пункты меню.

Использование кодов клавиш для навигации по меню может быть случайным. И как бы мне не нравились GUI-скрипты, потому что они тоже могут попасться и промахнуться, имхо, в этом случае меньше попаданий и промахов.

Этот код applescript: (обновлено 18.05.2016, получено из Использование AppleScript для блокировки экрана , подтверждено, что работает в El Capitan)

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 «Запустить Applescript» в рабочем процессе службы Automator.

введите описание изображения здесь

Затем вы даете службе сочетание клавиш. Как обычно в «Сочетаниях клавиш».

введите описание изображения здесь

Обслуживание:

введите описание изображения здесь

Это отлично сработало для того, для чего мне это было нужно, спасибо!
вы также можете запустить команду терминала из автомата, поэтому я использовал это. это выглядело более "элегантно" :). хотя очень красивое решение!
Я использовал это решение в течение длительного времени, но с osX El Captain оно больше не работает :(.
Все еще смотрю на это. Но похоже, что меню не сообщает о себе для следующего элемента, который нужно щелкнуть. Запуск этих двух строк работает, но медленно.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")

Легкий псевдоним. Добавьте это в свой bashrc

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

введите afkсвой терминал для выполнения.

Это сработало и для меня

Установите настройки для блокировки экрана, когда активна заставка.

Панель настроек безопасности и конфиденциальности

Затем вы можете использовать эту команду терминала для запуска хранителя экрана.

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

Насколько я могу судить, это именно то, что делает пункт меню «Связка ключей».

Спасибо за ваш комментарий, но это то, с чем я слишком долго боролся и пытаюсь найти альтернативу.
Просто для ясности и полноты я должен сказать, что приведенное выше действительно запускает заставку, но не делает того, что предлагает функция меню «Блокировка экрана».
Тогда вам нужно быть более конкретным в отношении того, что именно вы ищете.
Хммм... не уверен, что смогу быть более конкретным или кратким, чем первый абзац моего первоначального вопроса!
Еще раз... Я пытаюсь выяснить, существует ли какая-либо эквивалентная однострочная командная строка, которая точно воспроизводит идентичную функциональность пункта меню «Блокировка экрана», доступного через приложение «Связка ключей» в OS X 10.6.
Этот ответ делает это. Я больше не могу тестировать на 10.6, но на 10.8 запуск механизма заставки - это все, что делает опция «Блокировка экрана».
Тогда есть разница в функциональных возможностях системы между 10.6 и 10.8. Поскольку я использую 10.6 (как упоминалось в моем первоначальном вопросе), ваш ответ (насколько ценны ваши усилия по оказанию помощи) не отвечает на мой вопрос. Спасибо, в любом случае.
Довелось протестировать на 10.6.8. В этой ОС монитор выключен, а сеанс заблокирован. Я нашел программный способ сделать это, но он не встроен.
Звучит интересно... не могли бы вы рассказать о своем последнем комментарии (особенно о вашем программном методе) и выводах?
К сожалению, для некоторых из нас с безумно заблокированными рабочими компьютерами мы не можем контролировать этот флажок :|

Я думаю, что ответ на ваш вопрос: «Нет, для этого нет командной строки».

Поскольку это элемент строки меню, к нему нельзя легко получить доступ с помощью Keyboard Maestro или другого подобного инструмента.

Однако, если вы не против решения с использованием стороннего приложения, QuickLock позволит вам это сделать.

Это бесплатное (принимаются пожертвования) приложение, которое позволит вам назначить сочетание клавиш для блокировки экрана. Также есть пункт в строке меню, щелкнув который, можно заблокировать экран.

Приложение позволит вам установить пароль (отдельно от пароля вашей учетной записи).

Он не требует использования пароля с заставкой, это все совершенно отдельно.

Вы можете посмотреть видео в действии по адресу http://www.youtube.com/watch?v=SBHwykPB19o .

PS когда экран заблокирован, введите свой пароль, чтобы разблокировать его. Я был сбит с толку, потому что ожидал увидеть поле пароля. Здесь ничего нет. Вы просто вводите пароль.

pps Я использовал это всего несколько минут, поэтому могут быть какие-то другие проблемы с ним, о которых я не знаю, но, похоже, он отвечает всем требованиям.

Спасибо за ваш вклад ... хотя это не то, что я искал (я люблю методы с открытым исходным кодом и DIY!), Это выглядит очень интересно и, кажется, предлагает функциональность, которая мне нужна, хотя и в стороннем приложении. Я рассмотрю это более внимательно. Спасибо!
Я бы тоже хотел найти способ сделать это, но я не думаю, что он есть.
кажется мертвым...

Mac не предназначен для предоставления вам такой возможности. Однако в этой статье объясняется обходной путь с помощью QuickSilver. Хотя я не могу понять, почему вам не нравится решение, которое Apple предоставляет изначально, я желаю вам удачи в поиске решения.

Быстрый способ перевести компьютер в спящий режим через командную строку с помощью AppleScript:

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

Это не блокирует ваш экран, если вы не настроили его на немедленный запрос пароля, что мне не нравится делать. Я просто отмечаю это для потомков.

Я использовал код, опубликованный выше jnk. Затем я использовал appify, чтобы превратить его в приложение для OS X, mathiasbynens.be/notes/shell-script-mac-apps . Затем я использовал Quicksilver, чтобы назначить собственное сочетание клавиш (я выбрал cmd+L). Терминал не открывается/не остается открытым (как некоторые беспокоились) из-за того, как я его настроил, потому что вместо этого я запускаю приложение OS X.

  1. Следуйте приведенному выше ответу jnk, команда блокировки экрана One-Liner
  2. Используйте appify, чтобы превратить его в приложение OS X, перейдя по ссылке выше в моем резюме.
  3. Установите Ртуть.
  4. Используйте Quicksilver, чтобы назначить сочетание клавиш для запуска нового приложения. Он находится в разделе «Триггеры». Мне нравится Quicksilver, потому что мне нравятся сочетания клавиш/горячие клавиши для запуска приложений и веб-сайтов в OS X.

Я также столкнулся с этой проблемой. /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 эти значения больше не устанавливаются пользовательским интерфейсом. Однако, если вы установите их вручную, пользовательский интерфейс будет учитывать их. defaults write com.apple.screensaver askForPassword -bool TRUEи defaults write com.apple.screensaver askForPasswordDelay -int 10это мои значения по умолчанию. Теперь приведенный выше скрипт будет вести себя так, как описано.

В 10.14.6 Мохаве я запускаю механизм заставки с помощью этой команды:

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

Редактировать: убедитесь, что вы установили настройки для блокировки экрана, когда заставка активна в системных настройках и требует немедленного ввода пароля.

Но не заблокировал. Я нажал ключ, и он снова открылся. Не возражаете, если вы прочитаете комментарии других ответов о «требовать пароль сразу после ..» в системных настройках и соответственно обновите свои?
@ankii спасибо, что указали на это.

Я использую BetterTouchTool для этой цели и назначил сочетание клавиш для «Переключиться на экран входа в систему» ​​(который является экраном блокировки): не выполняет требования командной строки, но в любом случае может быть вам полезен.

сочетание клавиш в BetterTouchTool для блокировки экрана

Спасибо за вашу помощь и предложение. Наряду с QuickLock , упомянутым выше @TJLuoma, BetterTouchTool (хотя и не тот метод, который я намеревался найти), похоже, очень близко подходит к моим функциональным целям. Я посмотрю на это более внимательно... спасибо.

Я не совсем уверен, что понимаю вашу проблему здесь. Если вам требуется пароль на заставке, он не остановит запуск процессов и не заблокирует удаленный доступ к вашему Mac. У меня установлен этот параметр (используя ControlPlane, чтобы активировать его на работе и деактивировать дома), и у меня ни разу не было, чтобы система отказывалась отвечать на подключение к удаленному рабочему столу, VNC или SSH. Во всех случаях, когда требуется доступ к графическому интерфейсу, мне просто нужно ввести пароль; SSH использует пару ключей, поэтому пароль не запрашивается. Если вы не хотите, чтобы приложения переходили в спящий режим, убедитесь, что настройки питания системы таковы, что они не перейдут в спящий режим до вашего возвращения. Просто установите тайм-аут сна на большую задержку. Если вы просто не хотите заморачиваться вводом пароля, когда сидите перед компьютером и работаете,

Я использую ctrl-shift-eject для блокировки экрана. Это быстро, просто и работает. Это встроенный способ блокировки экрана. Никто, скорее всего, не предложит альтернативу просто потому, что копирование функций, уже встроенных в ОС, слишком избыточно, чтобы тратить на это много времени.

Насколько я могу судить, в связке ключей в 10.8 в любом случае нет опции «экран блокировки», поэтому предпочитаемое вами решение не будет существовать, если вы когда-либо обновитесь. Изменить: не заметил этого в настройках Keychain; да, он все еще есть в 10.8.

Если вы используете для этого Automator, не можете ли вы просто упаковать скрипт как приложение и назначить комбинацию горячих клавиш или оставить его в доке для быстрого доступа?

Ctrl-shift-eject действительно просто входит в режим «быстрого переключения пользователя». По крайней мере одному VPN-решению (тому, которое мне нужно использовать для работы) это не нравится, и когда я это делаю, оно отключает VPN, завершая все базовые сеансы, к которым я мог подключиться. Хотя я могу просто повторно подключиться к своему VPN-сеансу, когда разблокирую компьютер, это может занять больше минуты, и поэтому «быстрый» вариант не работает. Поэтому, ИМО, это не точное решение вопроса.

Как и автор вопроса, я искал способ быстро использовать экран блокировки связки ключей.

Объединив знания из старой подсказки Mac OS X и немного Applescript, я пришел к следующему:

Сначала выполните шаги из связанной подсказки 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 могут случайно активировать горячий угол, что приведет к блокировке экрана. Я также иногда случайно попадал в горячую точку, что значительно тормозило мой рабочий процесс.


  • Сторонние приложения Все это хорошо, но зачем запускать стороннее приложение, если оно изначально доступно в ОС?

По состоянию на 2021 год я считаю следующее решение «наиболее близким к правильному»:

Как указано в ответе markhunte, в меню Apple есть запись для запуска «Экран блокировки» с помощью сочетания клавиш:controlcommandQ

Поэтому я имитирую нажатие этой комбинации клавиш:

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

Плюсы:

  • Будет работать в будущем, пока поддерживается это сочетание клавиш.
  • Также работает, если параметр безопасности «Требовать пароль после перехода в спящий режим или заставки» отключен (в отличие от решений, которые используют спящий режим или отключение дисплея).
  • Дисплей остается включенным (по крайней мере, изначально; кажется, что сам экран блокировки вызывает отключение дисплея вскоре после запуска)

Изменить: я только что увидел, что ответ Аритро Пола уже содержит эту команду (в виде псевдонима). Надеюсь, моя разработка окажется полезной.

Я использую настройку пароля заставки с помощью нажатия клавиши (Ctrl + Shift + Eject) в 10.6.8, и, насколько я вижу, она делает то же самое, что и элемент «Блокировка экрана» на значке панели задач «Связка ключей».

Я знаю, что это похоже на некоторые другие ответы, но вместо «горячего угла» используется нажатие клавиши, что мне удобнее.

Более подробно это решение описано здесь, вот откуда я его взял: http://osxdaily.com/2011/01/17/lock-screen-mac/

Пользуемся этим уже несколько лет без проблем.

Спасибо, но, к сожалению, для этого требуется , чтобы опция «требовать заставки при выходе из спящего режима или заставки» была проверена, и, как упоминалось ранее, это не то, чем я хотел бы заниматься.

Ну, просто объедините два из приведенных выше ответов. Запустите эту команду:

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

После настройки параметров безопасности и конфиденциальности немедленно запрашивать пароль. Создайте псевдоним для своей оболочки, если хотите упростить выполнение команды.

Да, но, как упоминалось выше, я не хочу, чтобы в настройках «Безопасность и конфиденциальность» всегда требовался пароль немедленно. Вот почему функциональность команды блокировки экрана (в частности) так крута — она обеспечивает уровень безопасности, который мне требуется на совершенно специальной основе.

FWIW, я понимаю вашу ситуацию и сам искал хорошее решение. Я наткнулся на эту тему, потому что искал несколько более быстрый метод, чем тот, который я в конце концов придумал. Я придумал то, что, хотя и не совсем то, на что я надеялся, работает и является приемлемым компромиссом. Я использую тот же тип команд сценариев графического интерфейса, что и @markhunte (немного другая структура, но та же идея), но вместо того, чтобы просто поместить все это в рабочий процесс службы Automator, я разделил его на пакет .app, созданный с Platypus. Я сделал это, потому что в своих путешествиях и тестировании я обнаружил, что службы Automator работают очень медленно при определенных условиях. Если ваш Mac подвергается какой-либо нагрузке, например, выполняется сканирование диска, какие-либо действия программного обеспечения для аудио/видео, Mail загружает электронную почту и т. д., ОС, похоже, отодвигает службы на задний план. Это приводит к тому, что до запуска рабочего процесса требуется несколько секунд (иногда), а иногда даже несколько секунд до запуска команд графического интерфейса в службе. Довольно раздражает, если вы пытаетесь «быстро» заблокировать экран, и это занимает 10 секунд!

Наличие автономного «приложения» также имеет то преимущество, что вы можете использовать буквально десятки различных сторонних приложений для его запуска или просто использовать Spotlight или службу Automator для запуска приложения. Любой из них работает. Самое быстрое, что я нашел, это старая утилита под названием Spark, которая чудесным образом все еще работает даже в 10.8.4. Не спрашивайте меня, как, поскольку последний раз он был разработан для версии 10.4! Spark можно найти здесь - Spark

В дополнение ко всему этому, я боролся с проблемой того, что команды графического интерфейса иногда работают медленно, связывая его сcocoDialog и вызывая его первым, когда приложение запускается, чтобы показать небольшой плавающий пузырь в середине экрана, указывающий, что происходит блокировка экрана. Обычно блокировка происходит сразу после, но если есть задержка, то это хотя бы дает некую визуальную «отдачу» о том, что вы нажали правильные клавиши. Я также сделал его самовосстанавливающимся — если «Включить доступ к вспомогательным устройствам» не включено, он предупреждает вас в диалоговом окне и позволяет сразу же включить его. Это также гарантирует, что меню доступа к цепочке ключей отображается в строке меню, так как это требование или сценарий графического интерфейса пользователя полностью терпит неудачу.

Ctrl- Shift- ⏏ Eject(на старых компьютерах Mac),
Ctrl- Shift- ⌽ Power(на новых компьютерах Mac)