FWIW, я понимаю вашу ситуацию и сам искал хорошее решение. Я наткнулся на эту тему, потому что я искал более быстрый метод, чем тот, который я в итоге придумал. Я придумал что-то, что, хотя и не совсем то, на что я надеялся, работает и является приемлемым компромиссом. Я использую те же команды сценариев GUI, что и @markhunte, показывает (немного другая структура, но та же идея), но вместо того, чтобы просто поместить их в рабочий процесс службы Automator, я разделил их на пакет .app, созданный с помощью Platypus. Я сделал это, потому что в своих путешествиях и тестировании я обнаружил, что службы Automator работают очень медленно при определенных условиях. Если ваш Mac находится под каким-либо стрессом, например, выполняется сканирование диска, что-то делает программное обеспечение A / V, Mail сносит электронную почту и т. Д., ОС, кажется, выдвигает сервисы на задний план. Это приводит к тому, что требуется несколько секунд, прежде чем рабочий процесс запускается (иногда), а иногда даже несколько секунд, прежде чем команды GUI в службе запускаются. Весьма раздражает, если вы пытаетесь «быстро» заблокировать экран, и на это уходит 10 секунд!
Наличие автономного «приложения» также имеет то преимущество, что вы можете использовать буквально десятки различных сторонних приложений для его запуска или просто использовать Spotlight или службу Automator для запуска приложения. Любой из них работает. Быстрее всего я нашел старую утилиту под названием Spark, которая чудесным образом работает даже в 10.8.4. Не спрашивайте меня, как с тех пор, как в последний раз разрабатывался враг 10.4! Spark можно найти здесь - Spark
В дополнение ко всему этому, я боролся с проблемой команд GUI, которые иногда работают медленно, связывая в cocoaDialog и вызывая его первым, когда приложение запускается, чтобы показать небольшой плавающий пузырь в середине экрана, указывающий на происходящий экран блокировки. Обычно блокировка происходит сразу после этого, но если есть задержка, это по крайней мере дает некоторую визуальную «обратную связь» о том, что вы нажали правые клавиши. Я также сделал его самовосстанавливающимся - если «Включить доступ к вспомогательным устройствам» не включен, он предупреждает вас с помощью диалогового окна и позволяет сразу же включить его. Он также будет следить за тем, чтобы в строке меню отображалось меню доступа брелка, так как это является обязательным требованием, или не удается выполнить разбор сценариев GUI.