Как починить сломавшееся меню сервисов

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

Починить это очень просто. Выполните в терминале команду:

/System/Library/CoreServices/pbs

Всё!

Блокирование экрана с помощью клавиатуры

Если вы заботитесь о безопасности своих данных, то знаете, что совсем не хорошо отходить надолго от незаблокированного компьютера. Заблокировать экран можно многими средствами и сейчас я покажу ещё один.

Запустите Automator и выберите шаблон Service:

Найдите в коллекции действий одно под названием Run Shell Script. Оно находится в категории Utilities. Перетащите его в правую панель и впишите в поле для выполнения следующую строку:

'/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession' -suspend

Выставьте вверху окна параметр Service receives в положение no input.

Сохраните сервис под именем Lock Screen.

Теперь запустите System Preferences и откройте панель Keyboard → Keyboard Shortcuts. В категории Services в самом низу будет ваш сервис. Щёлкните справа от его названия и задайте удобное вам клавиатурное сочетание. Я сделал ^⌘L.

На этом всё. После нажатия заданных клавиш экран красиво перевернётся и вам будет предложено ввести пароль для продолжения работы.

Замечу, что при таком блокировании доступа выключается музыка и клиенты мгновенных сообщений (iChat точно, остальные не проверял).

Как запускать терминальную программу при старте системы

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

  • Придумайте имя для «сервиса». Что-нибудь позаковыристее. У меня было com.bm.t2j. (Демон занимается кросспостингом моих сообщений из твиттера в juick)
  • Создайте файл ~/Library/LaunchAgents/com.bm.t2j.plist примерно следующего содержания:
    < ?xml version="1.0" encoding="UTF-8"?>
    < !DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    	<key>Label</key>
         <string>com.bm.t2j</string>
         <key>Program</key>
         <string>/Users/bm/bin/twitter2juick/t2j.command</string>
         <key>RunAtLoad</key>
         <true />
    </dict>
    </plist>
    

    Здесь нужно заменить строки с названием имени сервиса и полного пути к исполняемому файлу.

  • Теперь можно либо перезагрузить компьютер, либо стартовать демон вручную с помощью следующих команд в терминале:
    launchctl load ~/Library/LaunchAgents
    launchctl start com.bm.t2j
    

Никаких отладочных сообщений в терминале вы не увидите, пользуйтесь программой Console (system.log).