Скриптование меню в статус-баре
В «Маке» очень нехватает одной вещи — лёгкого создания собственных меню в статус-баре. Учить ради этого «Обжектив-Си» или «Свифт» (и ставить «ЭксКод») мне совершенно не хочется, поэтому я поискал готовое. Нашёл ровно одно полусырое решение.
Если кому интересно, то последовательность его прикручивания к системе примерно такова (bolk — моё имя пользователя и требуется установленный brew):
mkdir -p /usr/local/Cellar/ScriptableStatusBar/0.1/bin/
mv ~/Downloads/ScriptableStatusBar-release/usr/local/bin/sbar !:2
mv ~/Downloads/ScriptableStatusBar-release/Applications/
/usr/local/Cellar/ScriptableStatusBar/0.1
brew link ScriptableStatusBar
open /usr/local/Cellar/ScriptableStatusBar/0.1/Applications/
# Тут надо утянуть открывшееся приложение в «Объекты входа»
# и ещё запустить его в открывшемся окне, разрешив ему в принципе запускаться
Очень неудобно и несколько недоделано. Хотелось бы, чтобы из шелла можно было добавить/удалить пункт меню и сменить иконку. Сейчас это тоже можно, но полной переинициализацией и, кроме того, убъёшься всё экранировать.
Вооружившись несложной инструкцией, делаем несколько магических пассов:
cat>~/lockkeyboard.sh<<LOCK
#!/bin/ksh
kext=/System/Library/Extensions/AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyboard.kext/
case "$1" in
unlock )
/sbin/kextload "$kext"
;;
lock )
/sbin/kextunload "$kext"
;;
esac
LOCK
sudo chown root:staff ~/lockkeyboard.sh
sudo chmod 750 ~/lockkeyboard.sh
sudo cp /dev/stdin /private/etc/sudoers.d/lockkeyboard<<SUDO
bolk ALL= NOPASSWD: /Users/bolk/lockkeyboard.sh
SUDO
sbar set locker ?\
'Lock:/usr/bin/sudo /Users/bolk/lockkeyboard.sh lock'\
'Unlock:/usr/bin/sudo /Users/bolk/lockkeyboard.sh unlock'\
'Quit:/usr/local/bin/sbar remove locker'
И получаем малофункциональную такую менюшечку для блокировки клавиатуры (кстати и увы, если компьютер с заблокированной клавиатурой, у вас уйдёт в блокировку по какой-то причине, то пароль ввести не получится, придётся перезагрузиться):
В принципе можно даже сэмулировать защёлкивание замка и смену пунктов меню «Lock» на «Unlock» и обратно (для этого нужно просто пересоздавать меню после каждой из этих команд с другими пунктами и другим замочком), но это ещё полэкрана костылей, которые мне совсем не хочется на вас вываливать.
Кстати, пункты в меню добавляются в произвольном порядке — программе совершенно плевать в каком порядке вы их задали в параметрах.
Для lock/unlock можно поставить BetterTouchTools, если еще не стоит. С помощью ее создать shortcut (например cmd+ctrl+L) и присвоить ему действие Execute Terminal Command:
Просмотрел, что разговор шел о блокировки клавиатуры, а не компьютера. Интересно, какая именно проблема решается блокировкой клавиатуры.
Комментарий для Alexei:
Дочка, проявляющая живейший интерес к тому что же папа делает за ноутбуком :)
А что за СССР программа в меню?
Есть же хоткей, зачем так усложнять? https://discussions.apple.com/thread/5044946?tstart=0
Спасибо, поправил.
http://ilyabirman.ru/projects/typography-layout/
Вы пробовали? У вас заработало?
BitBar популярный вариант. Могу посоветовать так же Hammerspoon: позволяет автоматизировать много всего в macOS на Lua, в том числе добавлять свои меню. Hammerspoon заменяет множество приложений.