
Добавьте пользовательские программы меню на MacOS в трех простых шагах:
Вы можете получить плагины от Awesome Bitbar Repository или в самом Swiftbar, используя Get Plugins... пункт меню.
Скачать с релизов GitHub
или установить с домашним
brew install swiftbar
Бежит на Macos Catalina (10.15) и вверх.
SwiftBar/SwiftBar.xcodeprojSwiftbar в комплекте с помощью репозитория плагина. Вы можете получить доступ к нему по адресу Swiftbar → Get Plugins ...

Если вы хотите добавить удалить плагин или у вас есть другие вопросы о контенте репозитория, обратитесь к этой проблеме.
Чтобы добавить новый плагин в Swiftbar, вам необходимо создать исполняемый сценарий после необходимого формата (см. Ниже) и поместить его в Plugin Folder .
С первым запуском Swiftbar попросит вас установить Plugin Folder . Swiftbar попытается импортировать каждый файл в этой папке в качестве плагина.
Важный :
.swiftbarignore поддерживается, вы можете использовать его для исключения файлов из импорта в качестве плагинов. Вы можете спрятать папку, приготовясь . или используя эту команду chflags hidden <folder name> .
Файлы плагина должны принять следующий формат:
{name}.{time}.{ext}
Модификаторы продолжительности:
Пример имени файла: date.1m.sh
Независимо от того, используете ли вы плагин из репозитория плагина или создаете свой собственный, плагины изначально появятся в строке меню в без определенного определенного порядка. Тем не менее, вы можете изменить порядок, как они появляются, удерживая CMD и перетаскивая их (этот процесс иногда также может использоваться на некоторых других иконах, не относящихся к Swiftbar, в панели меню). Позиция плагина будет запомнится, если вы не измените имя файла плагина, и в этом случае их нужно будет снова поставить.
Плагин - это исполняемый сценарий в языке по вашему выбору. Когда Swiftbar обнаруживает новый файл в Plugin Folder он делает этот файл исполняемым, если это необходимо, и запускает его.
Скрипт должен создавать выход ( STDOUT ) в требуемом формате (см. Следующую главу). Ошибки сценариев должны быть перенаправлены на STDERR .
API плагина принят из Bitbar xbar, что означает, что Swiftbar может запустить любой существующий плагин Bitbar xbar.
Когда вывод плагина парирования Swiftbar распознает следующие блоки:
Header -это все до первого --- . Каждый --- после того, как первый будет интерпретироваться как сепаратор меню. У вас есть одна или несколько линий в заголовке.
Самый простой плагин выглядит так:
echo " This is Menu Title "Если вы предоставите несколько названий, предоставленные названия будут ездить на велосипеде в строке меню и показаны в раскрывающемся меню:
echo " This is a primary Menu Title "
echo " This is a secondary Menu Title "
echo " This is a n-th Menu Title "
echo " --- "
echo " This is not a Menu Title, this will be shown in the drop-down menu only " Вывод скрипта как для заголовка, так и для тела разделен по линии ( n ). Каждая строка должна следовать этому формату:
<Item Title> | [param = ...]
Где:
= . Используйте | отделить параметры от заголовка. Форматирование текста :
| Параметр | Ценить | Описание |
|---|---|---|
color | CSS Color или Hex, light_color,dark_color | Устанавливает цвет текста. Если предоставляется только один цвет, он используется как для света, так и для темного появления. |
sfcolor | CSS Color или Hex, light_color,dark_color | Устанавливает цвет символа SF. Если предоставляется только один цвет, он используется как для света, так и для темного появления. Если вы славы несколько символов SF, вы можете предоставить разные цвета, добавив индекс, например, sfcolor2 |
font | Имя шрифта MacOS | Устанавливает имя шрифта для использования в тексте элемента |
size | Число | Устанавливает размер текста. |
md | Истинный | Включает поддержку Markdown в заголовке меню для **bold** и *italic* |
sfsize | Число | Устанавливает размер для изображения символа SF, встроенного в текст |
length | Число | Текст элемента с приготовлением на предоставленное количество символов. Полный заголовок будет отображаться в всплеске инструментов. |
trim | Истинный | Одиночные персонажи пробелов |
ansi | Истинный | Обеспечивает поддержку цветных кодов ANSI. Конфликт с: symbolize |
emojize | ЛОЖЬ | Отключает разбор эмодзи в стиле Github (например :mushroom: в?). Требуется: symbolize=false при настройке на истину. |
symbolize | ЛОЖЬ | Отключает анализ символов SF (например, "SF Symbols Test :sun.max: :cloud.fill: :gamecontroller.fill: :bookmark: :sun.dust:" → ) Всегда False на Каталине. |
Визуальные эффекты :
| Параметр | Ценить | Описание |
|---|---|---|
dropdown | ЛОЖЬ | Применимо только к предметам в Header . При установке на False элемент не будет отображаться в раскрывающемся меню, но будет ездить на велосипеде в панели меню. |
alternate | Истинный | Оценка строки в качестве альтернативы предыдущей, когда клавиша опции ( ⌥ ) нажимается в раскрывающемся списке. |
image | Изображение, кодируемое в BASE64, light_image,dark_image | Устанавливает изображение для элемента. Если предоставлено только одно изображение, оно используется как для света, так и для темного появления. |
templateImage | Изображение кодируется в BASE64 | То же, что и image , но изображение - это изображение шаблона. Изображения шаблонов состоят из черных и прозрачных цветов (и альфа -канала). Изображения шаблонов не предназначены для использования в качестве автономных изображений и обычно смешиваются с другим контентом для создания желаемого окончательного внешнего вида. |
sfimage | Название Sfsymbol | Устанавливает изображение для элемента из SF Symbol. Доступно только на Big Sur и выше. |
sfconfig | Конфигурация SFSymbol | Конфигурирует режим рендеринга для sfimage . Принимает JSON, закодированный как BASE64, пример JSON {"renderingMode":"Palette", "colors":["red","blue"], "scale": "large", "weight": "bold"} . Оригинальный выпуск № 354 |
checked | Истинный | Устанавливает галочку перед предметом. |
tooltip | Текст | Устанавливает всплывающую подсказку для элемента. |
webview | Истинный | Присутствует предоставленная href как веб -просмотр вместо стандартного меню меню меню |
webvieww | Число | Устанавливает ширину веб -просмотра в пикселях |
webviewh | Число | Устанавливает высоту веб -просмотра в пикселях |
Действия :
| Параметр | Ценить | Описание |
|---|---|---|
refresh | Истинный | Скрипт плагина будет выполнен на щелчке на элементе |
href | Абсолютный URL | Устанавливает URL, чтобы открыть, когда нажимает элемент |
bash | Абсолютный путь файла | Исполняемый сценарий для запуска в Shell |
terminal | ЛОЖЬ | bash Script будет запущен в фоновом режиме, вместо того, чтобы запустить терминал |
params | param0= , param1= , param10= ... | Параметры для сценария bash |
shortcut | CMD+опция+T. | Горячая клавиша назначена на элемент. Если предмет находится в заголовке, Hotkey покажет меню; В противном случае Hotkey запустит Associated Action. |
При запуске плагина Swiftbar устанавливает следующие переменные среды:
| Переменная | Ценить |
|---|---|
SWIFTBAR | 1 |
SWIFTBAR_VERSION | Номер версии Swiftbar (в формате xyz ) |
SWIFTBAR_BUILD | Заводной номер сборки Swiftbar ( CFBundleVersion ) |
SWIFTBAR_PLUGINS_PATH | Путь к Plugin Folder |
SWIFTBAR_PLUGIN_PATH | Путь к запущению плагина |
SWIFTBAR_PLUGIN_CACHE_PATH | Кэш для папки данных, индивидуальный плагин |
SWIFTBAR_PLUGIN_DATA_PATH | Путь к папке данных, индивидуальный плагин |
SWIFTBAR_PLUGIN_REFRESH_REASON | Плагин обновления разум Триггер |
SWIFTBAR_LAUNCH_TIME | Дата и время запуска Swiftbar, ISO8601 |
OS_APPEARANCE | Текущий вид macOS ( Light или Dark ) |
OS_VERSION_MAJOR | Первая часть версии macOS (например, 11 для macOS 11.0.1) |
OS_VERSION_MINOR | Вторая часть версии macOS (например, 0 для macOS 11.0.1) |
OS_VERSION_PATCH | Третья часть версии macOS (например, 1 для macOS 11.0.1) |
OS_LAST_SLEEP_TIME | Последняя ОС дата и время сна, ISO8601. Пусто, если ОС не спала после запуска Swiftbar. |
OS_LAST_WAKE_TIME | Последняя ОС просыпается от даты и времени сна, ISO8601. Пусто, если ОС не спала после запуска Swiftbar. |
Рекомендуется включить метаданные в сценарий плагина. Метаданные используются на экране плагина в Swiftbar. Swiftbar принимает формат метаданных, предложенный Bitbar xbar:
# <xbar.title>Title goes here</xbar.title>
# <xbar.version>v1.0</xbar.version>
# <xbar.author>Your Name</xbar.author>
# <xbar.author.github>your-github-username</xbar.author.github>
# <xbar.desc>Short description of what your plugin does.</xbar.desc>
# <xbar.image>http://www.hosted-somewhere/pluginimage</xbar.image>
# <xbar.dependencies>python,ruby,node</xbar.dependencies>
# <xbar.abouturl>http://url-to-about.com/</xbar.abouturl>
# <xbar.droptypes>Supported UTI's for dropping things on menu bar</xbar.droptypes>
Swiftbar поддерживает эти дополнительные флаги метаданных, чтобы скрыть пункты меню по умолчанию:
# <swiftbar.hideAbout>true</swiftbar.hideAbout>
# <swiftbar.hideRunInTerminal>true</swiftbar.hideRunInTerminal>
# <swiftbar.hideLastUpdated>true</swiftbar.hideLastUpdated>
# <swiftbar.hideDisablePlugin>true</swiftbar.hideDisablePlugin>
# <swiftbar.hideSwiftBar>true</swiftbar.hideSwiftBar>
Вариант+КЛЮЧАТЬ ВСЕМАЯ ИЗОБРАЖЕНИЯ: 
Специальный тег может быть использован в качестве альтернативы, чтобы обновить интервал, определенный в имени плагина, значение принимает синтаксис Cron:
<swiftbar.schedule>01,16,31,46 * * * *</swiftbar.schedule>
Вы можете настроить несколько графиков, используя Sepparator | :
<swiftbar.schedule>1 * * * *|2 * * * *</swiftbar.schedule>
<swiftbar.refreshOnOpen>true</swiftbar.refreshOnOpen> - Обновление плагина на щелчке, прежде чем представить меню<swiftbar.runInBash>false</swiftbar.runInBash> - не обертывает плагины в Bash при запуске<swiftbar.type>streamable</swiftbar.type> - Плагин Mark как потоковой<swiftbar.environment>[var1=default value, var2=default value, ... ]</swiftbar.environment> - эти переменные будут переданы в среде плагина, в последующем выпуске Swiftbar предоставит пользовательский интерфейс для изменения значений для этих переменных.<swiftbar.persistentWebView>true</swiftbar.persistentWebView> - делает WebView настойчивым, поэтому он не перезагружает каждую строку меню. Для бинарных плагинов можно добавить в виде атрибута расширенного файла:
xattr -w "com.ameba.SwiftBar" "$(cat metadata.txt | base64)" <plugin_file>
Для стандартного типа плагинов Swiftbar ожидает, что выполнение плагина является конечным, т.е. плагин работает и выходит с выходом в STDOUT:
Необязательно, стандартный плагин может быть запущен по повторяемому графику, настроенный в имени файла плагина или свойство метаданных schedule .
Этот тип плагина предназначен для людей, которые хотят использовать приложение для сочетания для создания элементов панели меню. API плагина в значительной степени такой же, как и стандарт. Создайте ярлык, который выводит текст в требуемом формате, выберите этот ярлык в разделе плагина ярлыков в настройках Swiftbar, и вы готовы к работе.
Для плагинов ярлыков Swiftbar предоставляет удобный пользовательский интерфейс для настройки расписания обновления.
Пример ярлыков:
Эфемерные плагины создают элементы строки меню по требованию, выполнив ярлык Swiftbar или вызывая схему URL. API плагина в значительной степени такой же, как и стандарт.
Вот параметры для схемы URL:
Действие ярлыков довольно эксплуатационно.
Этот тип плагина лучше всего используется для уведомлений или других временных элементов меню.
Swiftbar запускает отдельный процесс для каждого потокового плагина, который работает на неопределенный срок до тех пор, пока Swiftbar не будет закрыт или не будет сбой. Вы должны использовать потоковые плагины только при работе с потоком входящих событий; Примером может быть информация о финансовом рынке, прочитанная из WebSocketcocket или CPU, загруженной информации для удаленного компьютера.
Чтобы сообщить Swiftbar, когда обновить элемент панели меню, плагины потока должны использовать отдельный сепаратор специальной линии ~~~ . Swiftbar сбросит пункт меню в каждом случае этого сепаратора.
В приведенном ниже примере Swiftbar покажет «тест 1» в панели меню в течение 3 секунд, затем ничего в течение 5 секунд и «тест 2» на неопределенный срок.
#!/bin/bash
#<swiftbar.type>streamable</swiftbar.type>
echo "Test 1"
echo "---"
echo "Test 2"
echo "Test 3"
sleep 3
echo "~~~"
sleep 5
echo "~~~"
echo "Test 2"
Вы можете отметить плагин как потоковой с специальным свойством <swiftbar.type>streamable</swiftbar.type>
Некоторые примечания:
name может быть одинаковым между несколькими плагинами. Если FilePath вашего плагина - ~/Documents/SwiftBar/myplugin.1m.sh , то название myplugin и идентификатор myplugin.1m.shopen(1) для запуска URL -адресов схемы используйте -g , чтобы предотвратить кражу команды из вашего активного приложения.| Конечная точка | Параметр | Описание | Пример |
|---|---|---|---|
| Окружающие жильцы | никто | Подскажите все загруженные плагины | swiftbar://refreshallplugins |
| Обновление .plugin | name или plugin имя плагина | Нарисуйте плагин обновить по имени. Если предоставлены, дополнительные параметры URL -адреса выставлены в виде переменных ENV в плагин | swiftbar://refreshplugin?name=myplugin |
| Обновление .plugin | index плагинов индекса в Menubar, начиная с 0 | Нарисуйте плагин обновления в Menubar | swiftbar://refreshplugin?index=1 |
| Включить плугин | name или plugin имя плагина | Включить плагин по имени | swiftbar://enableplugin?name=myplugin |
| Отключить плугин | name или plugin имя плагина | Отключить плагин по имени | swiftbar://disableplugin?name=myplugin |
| Toggleplugin | name или plugin имя плагина | Плагин включить (включить отключить) по имени | swiftbar://toggleplugin?name=myplugin |
| Добавить | URL -адрес источника src для файла плагина | Добавить плагин в Swiftbar от URL | swiftbar://addplugin?src=https://coolplugin |
| уведомлять | name или plugin имя плагина. Поля уведомления: title , subtitle , body . href , чтобы открыть URL на клике (включая пользовательские схемы URL). silent=true отключить звук | Показать уведомление | swiftbar://notify?plugin=MyPlugin&title=title&subtitle=subtitle&body=body&silent=true |
| Setephemeralplugin | name Плагин Имя, должно быть уникальным. content - Содержание плагина, exitafter - необязательно установить срок службы Menubar в секундах | Создает эфемерный плагин. Чтобы удалить существующий эфемерный плагин, установите его содержание на пустую строку "" | swiftbar://setephemeralplugin?name=ephemeral&content=hi |
Список предпочтений, которые не раскрываются в пользовательском интерфейсе Swiftbar:
defaults write com.ameba.SwiftBar StealthMode -bool YES - скрывает пункт меню Swiftbar, когда все плагины отключеныdefaults write com.ameba.SwiftBar DisableBashWrapper -bool YES - не обертывает плагины в Bash при запускеdefaults write com.ameba.SwiftBar MakePluginExecutable -bool NO - Отключает Auto chmod +x Все файлы в каталоге плагиновdefaults write com.ameba.SwiftBar PluginDeveloperMode -bool YES -включает редактирование в предпочтениях -> Плагиныdefaults write com.ameba.Swiftbar PluginDebugMode -bool YES - включает просмотр отладки плагиновdefaults write com.ameba.SwiftBar StreamablePluginDebugOutput -bool YES - включает вывод отладки для потоковых плагинов, Swiftbar выявит потоковые данные в console.app Если плагин не сможет запустить Swiftbar, покажетConsole.app для просмотра журналов Swiftbar.
Swiftbar использует эти библиотеки с открытым исходным кодом:
Чтобы заморозить и обеспечить зависимости, эти библиотеки раздвоены организацией Swiftbar.
Swiftbar может быть переведен здесь.
Если вам нравится Swiftbar, вам также могут понравиться: