AppleScript, чтобы выйти из системы Mac пользователя после закрытия приложения?
Я настроил локальную учетную запись пользователя в iMac (Lion) для немедленного запуска Firefox на определенной странице после входа в систему - страница содержит опрос, который должен выполнить пользователь. Это отлично работает.
Что я хочу сделать дальше, но не могу понять, как автоматически отключить пользователя после завершения опроса и выхода из Firefox.
Я не хочу, чтобы им приходилось щелкать значок Apple вверху, а затем выходить из системы - когда они завершат опрос и выйдут из Firefox, я бы хотел, чтобы выполнялся скрипт, который выводит их из системы и возвращает Mac обратно на экран входа в систему. для следующего пользователя.
Можно ли связать сценарий и выполнить его при выходе из приложения?
2 ответа
Клавиатура Maestro может быть настроена на выполнение сценариев при закрытии приложения.
Сохранить список свойств как это ~/Library/LaunchAgents/com.superuser.457047.plist
(или любой другой, на который вы меняете ярлык) и загружаете его launchctl load ~/Library/LaunchAgents/com.superuser.457047.plist
или выйдя и вернувшись.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.superuser.457047</string>
<key>ProgramArguments</key>
<array>
<string>osascript</string>
<string>-e</string>
<string>tell application "System Events" to if (not (exists process "firefox")) or number of windows of process "firefox" is 0 then tell process "Finder" to click last menu item of menu 1 of menu bar 1</string>
</array>
<key>StartInterval</key>
<integer>5</integer> <!-- run every 5 seconds -->
</dict>
</plist>
Вероятно, в некоторых случаях нажатие на последний пункт меню не сработает. keystroke "q" using {option down, shift down, command down}
не будет работать, если пользователь держит контроль
tell application "System Events" to log out
покажет диалоговое окно подтверждения.
/System/Library/CoreServices/Menu\ Extras/user.menu/Contents/Resources/CGSession -suspend
не показывает диалоговое окно подтверждения, но держит пользователя вошедшим в систему и показывает экран быстрого переключения пользователя.