
세 가지 쉬운 단계로 MacOS에 사용자 정의 메뉴 표시 줄 프로그램을 추가하십시오.
Get Plugins... 메뉴 항목을 사용하여 Awesome Bitbar Repository 또는 Swiftbar 자체에서 플러그인을 얻을 수 있습니다.
Github 릴리스에서 다운로드하십시오
또는 홈브류로 설치하십시오
brew install swiftbar
MacOS Catalina (10.15) 이상에서 실행됩니다.
SwiftBar/SwiftBar.xcodeproj 를 엽니 다Swiftbar는 플러그인 저장소와 함께 번들로 제공됩니다. Swiftbar → Get 플러그인에서 액세스 할 수 있습니다 ...

플러그인을 제거하거나 리포지토리 컨텐츠에 대한 다른 질문을 추가하려면이 문제를 참조하십시오.
Swiftbar에 새 플러그인을 추가하려면 필요한 형식 (아래 참조)에 따라 실행 가능한 스크립트를 작성하고 Plugin Folder 에 넣어야합니다.
첫 번째 출시로 SwiftBar는 Plugin Folder 설정하도록 요청합니다. SwiftBar는이 폴더의 모든 파일을 플러그인으로 가져 오려고합니다.
중요한 :
.swiftbarignore 파일이 지원되며이를 사용하여 파일이 플러그인으로 가져 오는 것을 제외 할 수 있습니다. 선불로 폴더를 숨길 수 있습니다 . 또는이 명령을 사용하여 chflags hidden <folder name> .
플러그인 파일은 다음 형식을 채택해야합니다.
{name}.{time}.{ext}
기간 수정 자 :
예제 filename : date.1m.sh
플러그인 저장소에서 플러그인을 사용하든 자신의 플러그인을 만들 든 플러그인은 처음에 미리 결정된 순서없이 메뉴 표시 줄에 나타납니다. 그러나 CMD를 누르고 드래그하여 어떻게 나타나는지 재정렬 할 수 있습니다 (이 프로세스는 때때로 메뉴 표시 줄의 다른 비 스위프트 바 아이콘에도 사용할 수도 있습니다). 플러그인 파일의 이름을 변경하지 않는 한 플러그인 위치는 기억됩니다.이 경우 다시 재배치해야합니다.
플러그인은 선택한 언어로 실행 가능한 스크립트입니다. 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 색상 또는 육각형, light_color,dark_color | 항목 텍스트 색상을 설정합니다. 하나의 색 만 제공되면 밝은 외관과 어두운 모양에 사용됩니다. |
sfcolor | CSS 색상 또는 육각형, light_color,dark_color | SF 기호 색상을 설정합니다. 하나의 색 만 제공되면 밝은 외관과 어두운 모양에 사용됩니다. 여러 SF 기호를 명성하면이 sfcolor2 와 같이 인덱스를 추가하여 다른 색상을 제공 할 수 있습니다. |
font | 마코스 글꼴 이름 | 항목 텍스트에서 사용할 글꼴 이름을 설정합니다 |
size | 숫자 | 항목 텍스트 크기를 설정합니다 |
md | 진실 | **bold** 및 *italic* 의 메뉴 제목에서 Markdown 지원을 활성화합니다. |
sfsize | 숫자 | 텍스트에 포함 된 SF 심볼 이미지의 크기를 세트합니다 |
length | 숫자 | 제공된 수의 문자로 항목 텍스트를 트림합니다. 전체 제목은 툴팁에 표시됩니다. |
trim | 진실 | 공백 문자를 다듬습니다 |
ansi | 진실 | ANSI 컬러 코드를 지원할 수 있습니다. 충돌 : symbolize |
emojize | 거짓 | Github 스타일의 이모티콘 (예 :mushroom: into?)의 구문 분석을 비활성화합니다. 요구 사항 : true로 설정할 때 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 기호에서 항목에 대한 이미지를 설정합니다. Big Sur 이상에서만 사용할 수 있습니다. |
sfconfig | sfsymbol 구성 | sfimage 의 렌더링 모드를 구성합니다. base64, 예제 json {"renderingMode":"Palette", "colors":["red","blue"], "scale": "large", "weight": "bold"} 로 인코딩 된 JSON을 허용합니다. 원래 이슈 #354 |
checked | 진실 | 항목 앞에 확인 표시를 설정합니다. |
tooltip | 텍스트 | 항목의 툴팁을 설정합니다. |
webview | 진실 | 표준 메뉴 바 메뉴 대신 href를 웹 뷰로 제공했습니다. |
webvieww | 숫자 | 픽셀에서 웹 뷰 너비를 설정합니다 |
webviewh | 숫자 | 픽셀로 웹 뷰 높이를 설정합니다 |
행동 :
| 매개 변수 | 값 | 설명 |
|---|---|---|
refresh | 진실 | 플러그인 스크립트는 항목 클릭에서 실행됩니다 |
href | 절대 URL | 항목을 클릭하면 URL을 열도록 설정합니다 |
bash | 절대 파일 경로 | 쉘에서 실행할 실행 가능한 스크립트 |
terminal | 거짓 | bash 스크립트는 터미널을 시작하는 대신 백그라운드에서 실행됩니다. |
params | param0= , param1= , param10= ... | bash 스크립트의 매개 변수 |
shortcut | CMD+옵션+t | 항목에 할당 된 핫키. 항목이 헤더에 있으면 Hotkey는 메뉴를 표시합니다. 그렇지 않으면 Hotkey는 관련 액션을 시작합니다. |
플러그인을 실행할 때 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 버전의 첫 번째 부분 (예 : MacOS 11.0.1의 경우 11 ) |
OS_VERSION_MINOR | MacOS 버전의 두 번째 부분 (예 : MacOS 11.0.1의 경우 0 ) |
OS_VERSION_PATCH | MacOS 버전의 세 번째 부분 (예 : MacOS 11.0.1의 경우 1 ) |
OS_LAST_SLEEP_TIME | 마지막 OS 수면 날짜 및 시간, ISO8601. Swiftbar 출시 이후 OS가 잠들지 않은 경우 비워집니다. |
OS_LAST_WAKE_TIME | 마지막 OS는 수면 날짜와 시간, ISO8601에서 깨어납니다. Swiftbar 출시 이후 OS가 잠들지 않은 경우 비워집니다. |
플러그인 스크립트에 메타 데이터를 포함하는 것이 좋습니다. 메타 데이터는 Swiftbar의 Aff Plugin 화면에 사용됩니다. 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> - 마크 플러그인을 스트리밍 가능한 것으로 표시하십시오<swiftbar.environment>[var1=default value, var2=default value, ... ]</swiftbar.environment> -이 변수는 플러그인의 환경에서 전달됩니다. 나중에 릴리스에서 SwiftBar는 이러한 변수의 값을 변경할 수있는 UI를 제공합니다.<swiftbar.persistentWebView>true</swiftbar.persistentWebView> - 웹 뷰를 지속적으로 만들어 각 메뉴 표시 줄에서 다시로드하지 않습니다. 바이너리 플러그인의 경우 메타 데이터는 확장 파일 속성으로 추가 할 수 있습니다.
xattr -w "com.ameba.SwiftBar" "$(cat metadata.txt | base64)" <plugin_file>
표준 유형의 플러그인의 경우 Swiftbar는 플러그인 실행이 유한 할 것으로 예상합니다. 즉, 플러그인은 STDOUT 로의 출력으로 플러그인이 실행되고 종료 될 것으로 예상합니다.
선택적으로 표준 플러그인은 플러그인의 파일 이름 또는 schedule 메타 데이터 속성으로 구성된 반복 가능한 일정으로 실행할 수 있습니다.
이 플러그인 유형은 바로 가기 앱을 사용하여 메뉴 막대 항목을 만드는 사람들을 대상으로합니다. 플러그인 API는 표준과 거의 동일합니다. 필요한 형식으로 텍스트를 출력하는 바로 가기를 만들고 Swiftbar 설정의 바로 가기 플러그인 섹션 에서이 바로 가기를 선택하면 이동하는 것이 좋습니다.
바로 가기 플러그인의 경우 SwiftBar는 새로 고침 일정을 구성하는 편리한 UI를 제공합니다.
예제 바로 가기 :
Ephemeral 플러그인 Swiftbar의 바로 가기 조치를 실행하거나 URL 구성표를 호출하여 요청시 메뉴 바 항목을 만듭니다. 플러그인 API는 표준과 거의 동일합니다.
URL 체계의 매개 변수는 다음과 같습니다.
바로 가기 액션은 매우 설명 적입니다.
이 플러그인 유형은 알림 또는 기타 임시 메뉴 막대 항목에 가장 잘 사용됩니다.
SwiftBar는 각 스트리밍 가능한 플러그인에 대해 별도의 프로세스를 시작합니다. 각 스트리밍 가능한 플러그인은 Swiftbar가 닫히거나 고장 될 때까지 무기한으로 실행됩니다. 들어오는 이벤트 스트림을 다룰 때만 스트리밍 가능한 플러그인을 사용해야합니다. 예를 들어 원격 컴퓨터에 대한 WebSocket 또는 CPU로드 정보에서 읽은 금융 시장 정보가 있습니다.
SwiftBar가 메뉴 표시 줄 항목을 업데이트 할시기를 알리려면 스트리밍 가능한 플러그인은 특수 라인 분리기 ~~~ 사용해야합니다. Swiftbar는이 분리기의 발생마다 메뉴 항목을 재설정합니다.
아래의 예에서 SwiftBar는 메뉴 표시 줄에 3 초 동안 "테스트 1"을, 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 이고 ID myplugin.1m.sh 입니다.open(1) 사용하여 체계 URL을 트리거하여 -g 사용하여 명령이 활성 앱에서 초점을 훔치는 것을 방지하십시오.| 엔드 포인트 | 매개 변수 | 설명 | 예 |
|---|---|---|---|
| RefreshAllPlugins | 없음 | 로드 된 모든 플러그인을 강제로 새로 고치십시오 | swiftbar://refreshallplugins |
| refreshplugin | name 또는 plugin 플러그인 이름 | 이름으로 새로 고침 플러그인을 강제로합니다. 제공된 경우 추가 URL 매개 변수는 플러그인에 ENV 변수로 노출됩니다. | swiftbar://refreshplugin?name=myplugin |
| refreshplugin | 0 부터 시작하는 Menubar의 index 플러그인 색인 | Menubar의 위치에 따라 새로 고침 플러그인을 강제로합니다 | swiftbar://refreshplugin?index=1 |
| enableplugin | name 또는 plugin 플러그인 이름 | 이름으로 플러그인을 활성화합니다 | swiftbar://enableplugin?name=myplugin |
| disableplugin | name 또는 plugin 플러그인 이름 | 이름으로 플러그인을 비활성화합니다 | swiftbar://disableplugin?name=myplugin |
| 토글 플루인 | name 또는 plugin 플러그인 이름 | 이름별로 플러그인을 토글 (enable disable) | swiftbar://toggleplugin?name=myplugin |
| AddPlugin | 플러그인 파일에 대한 src 소스 URL | URL에서 Swiftbar에 플러그인을 추가하십시오 | 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 선택적으로 메뉴 바의 수명을 몇 초 만에 설정 | 임시 플러그인을 만듭니다. 기존의 임시 플러그인을 제거하려면 컨텐츠가 빈 문자열로 컨텐츠입니다 "" | swiftbar://setephemeralplugin?name=ephemeral&content=hi |
Swiftbar UI에 노출되지 않은 선호도 목록 :
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 플러그인 디렉토리의 모든 파일을 비활성화합니다 chmod +xdefaults 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를 즐기면 이것도 좋아할 수도 있습니다.