Скриптование меню в статус-баре

В «Маке» очень нехватает одной вещи — лёгкого создания собственных меню в статус-баре. Учить ради этого «Обжектив-Си» или «Свифт» (и ставить «ЭксКод») мне совершенно не хочется, поэтому я поискал готовое. Нашёл ровно одно полусырое решение.

Если кому интересно, то последовательность его прикручивания к системе примерно такова (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'
И получаем малофункциональную такую менюшечку для блокировки клавиатуры (кстати и увы, если компьютер с заблокированной клавиатурой, у вас уйдёт в блокировку по какой-то причине, то пароль ввести не получится, придётся перезагрузиться): Меню блокировки клавиатуры (22.19КиБ)
Простое меню для блокировки клавиатуры

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

Кстати, пункты в меню добавляются в произвольном порядке — программе совершенно плевать в каком порядке вы их задали в параметрах.

Дополнение: нашёл ещё две программы: «БитБар» и «ЭниБар».
8 марта 2017 20:30

Alexei (инкогнито)
9 марта 2017, 01:23

Для lock/unlock можно поставить BetterTouchTools, если еще не стоит. С помощью ее создать shortcut (например cmd+ctrl+L) и присвоить ему действие Execute Terminal Command:
open -a /System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.app

Alexei (инкогнито)
9 марта 2017, 01:34

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

bolknote.ru (bolknote.ru)
9 марта 2017, 07:08, ответ предназначен Alexei

Интересно, какая именно проблема решается блокировкой клавиатуры.
Дочка, проявляющая живейший интерес к тому что же папа делает за ноутбуком :)

SiMM (инкогнито)
9 марта 2017, 10:16

Очень неудобно и несколько нед*а*делано.

Alexei (инкогнито)
9 марта 2017, 10:31

А что за СССР программа в меню?

Александр (инкогнито)
9 марта 2017, 11:17

Есть же хоткей, зачем так усложнять? https://discussions.apple.com/thread/5044946?tstart=0

bolknote.ru (bolknote.ru)
9 марта 2017, 11:45

Очень неудобно и несколько недаделано…
Спасибо, поправил.
А что за СССР программа в меню?
http://ilyabirman.ru/projects/typography-layout/
Есть же хоткей, зачем так усложнять?
Вы пробовали? У вас заработало?

http://paul.elms.pro (инкогнито)
9 марта 2017, 13:29

BitBar популярный вариант. Могу посоветовать так же Hammerspoon: позволяет автоматизировать много всего в macOS на Lua, в том числе добавлять свои меню. Hammerspoon заменяет множество приложений.

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)