
เพิ่มโปรแกรมแถบเมนูที่กำหนดเองบน MacOS ในสามขั้นตอนง่ายๆ:
คุณสามารถรับปลั๊กอินจากที่เก็บ bitbar ที่ยอดเยี่ยมหรือใน Swiftbar เองโดยใช้รายการ Get Plugins...
ดาวน์โหลดจาก GitHub เผยแพร่
หรือติดตั้งด้วย homebrew
brew install swiftbar
ทำงานบน MacOS Catalina (10.15) ขึ้นไป
SwiftBar/SwiftBar.xcodeprojSwiftbar มาพร้อมกับที่เก็บปลั๊กอิน คุณสามารถเข้าถึงได้ที่ SwiftBar →รับปลั๊กอิน ...

หากคุณต้องการเพิ่ม ลบปลั๊กอินหรือมีคำถามอื่น ๆ เกี่ยวกับเนื้อหาที่เก็บโปรดดูที่ปัญหานี้
ในการเพิ่มปลั๊กอินใหม่ไปยัง SwiftBar คุณต้องสร้างสคริปต์ที่เรียกใช้งานได้ตามรูปแบบที่ต้องการ (ดูด้านล่าง) และใส่ลงใน Plugin Folder
ด้วยการเปิดตัวครั้งแรก SwiftBar จะขอให้คุณตั้งค่า Plugin Folder SwiftBar จะพยายามนำเข้าทุกไฟล์ในโฟลเดอร์นี้เป็นปลั๊กอิน
สำคัญ :
.swiftbarignore คุณสามารถใช้ไฟล์เพื่อแยกไฟล์จากการนำเข้าเป็นปลั๊กอิน คุณสามารถซ่อนโฟลเดอร์ได้โดยการเตรียม . หรือใช้คำสั่งนี้ chflags hidden <folder name>
ไฟล์ปลั๊กอินต้องใช้รูปแบบต่อไปนี้:
{name}.{time}.{ext}
ตัวดัดแปลงระยะเวลา:
ตัวอย่างชื่อไฟล์: date.1m.sh
ไม่ว่าคุณจะใช้ปลั๊กอินจากที่เก็บปลั๊กอินหรือการสร้างของคุณเองปลั๊กอินจะปรากฏขึ้นในแถบเมนูในตอนแรกโดยไม่มีลำดับที่กำหนดไว้ล่วงหน้า อย่างไรก็ตามคุณสามารถสั่งซื้อใหม่ได้อย่างไรโดยการกด CMD และลากพวกเขา (บางครั้งกระบวนการนี้สามารถใช้กับไอคอนที่ไม่ใช่ swiffbar อื่น ๆ ในแถบเมนูด้วย) ตำแหน่งปลั๊กอินจะถูกจดจำเว้นแต่คุณจะเปลี่ยนชื่อของไฟล์ปลั๊กอินซึ่งในกรณีนี้พวกเขาจะต้องอยู่ในตำแหน่งใหม่อีกครั้ง
ปลั๊กอินเป็นสคริปต์ที่ใช้งานได้ในภาษาที่คุณเลือก เมื่อ 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 หรือ hex, light_color,dark_color | ตั้งค่าสีข้อความ หากมีเพียงสีเดียวเท่านั้นมันจะใช้สำหรับทั้งแสงและสีเข้ม |
sfcolor | สี css หรือ 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 เสมอใน Catalina |
ภาพ :
| พารามิเตอร์ | ค่า | คำอธิบาย |
|---|---|---|
dropdown | เท็จ | ใช้ได้เฉพาะกับรายการใน Header เมื่อตั้งค่าเป็นเท็จรายการจะไม่ปรากฏในเมนูแบบเลื่อนลง แต่จะถูกปั่นจักรยานในแถบเมนู |
alternate | จริง | ทำเครื่องหมายบรรทัดเป็นทางเลือกสำหรับอันก่อนหน้าสำหรับเมื่อกดปุ่มตัวเลือก ( ⌥ ) ในแบบเลื่อนลง |
image | รูปภาพที่เข้ารหัสใน base64, light_image,dark_image | ตั้งค่ารูปภาพสำหรับรายการ หากมีเพียงภาพเดียวเท่านั้นมันจะถูกใช้สำหรับทั้งแสงและความมืด |
templateImage | ภาพเข้ารหัสใน base64 | เหมือนกับ image แต่ภาพเป็นภาพเทมเพลต ภาพเทมเพลตประกอบด้วยสีดำและสีใส (และช่องอัลฟ่า) ภาพเทมเพลตไม่ได้มีวัตถุประสงค์เพื่อใช้เป็นภาพสแตนด์อโลนและมักจะผสมกับเนื้อหาอื่น ๆ เพื่อสร้างลักษณะสุดท้ายที่ต้องการ |
sfimage | ชื่อ sfsymbol | ตั้งค่ารูปภาพสำหรับรายการจากสัญลักษณ์ SF มีเฉพาะใน Big Sur และสูงกว่า |
sfconfig | การกำหนดค่า sfsymbol | กำหนดค่าโหมดการแสดงผลสำหรับ sfimage ยอมรับ JSON ที่เข้ารหัสเป็น base64 ตัวอย่าง JSON {"renderingMode":"Palette", "colors":["red","blue"], "scale": "large", "weight": "bold"} ฉบับดั้งเดิม #354 |
checked | จริง | ตั้งค่าเครื่องหมายถูกที่ด้านหน้าของรายการ |
tooltip | ข้อความ | ตั้งค่าคำแนะนำเครื่องมือสำหรับรายการ |
webview | จริง | นำเสนอ href ที่ให้ไว้เป็นเว็บวิวแทนเมนูเมนูเมนูมาตรฐาน |
webvieww | ตัวเลข | ตั้งค่าความกว้างของ WebView เป็นพิกเซล |
webviewh | ตัวเลข | ตั้งค่าความสูง webview เป็นพิกเซล |
การดำเนินการ :
| พารามิเตอร์ | ค่า | คำอธิบาย |
|---|---|---|
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 | หมายเลข 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>
ตัวเลือก+คลิกจะแสดงรายการทั้งหมด: 
แท็กพิเศษสามารถใช้เป็นทางเลือกในการรีเฟรชช่วง
<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 ปลั๊กอินเป็น streamable<swiftbar.environment>[var1=default value, var2=default value, ... ]</swiftbar.environment> - ตัวแปรนี้จะถูกส่งผ่านในสภาพแวดล้อมของปลั๊กอินในภายหลัง SwiftBar จะให้ UI เพื่อเปลี่ยนค่าสำหรับตัวแปรเหล่านี้<swiftbar.persistentWebView>true</swiftbar.persistentWebView> - ทำให้ WebView ถาวรดังนั้นจึงไม่โหลดในแต่ละเมนูบาร์คลิก สำหรับ Metadata ปลั๊กอินไบนารีสามารถเพิ่มเป็นแอตทริบิวต์ไฟล์ขยาย:
xattr -w "com.ameba.SwiftBar" "$(cat metadata.txt | base64)" <plugin_file>
สำหรับประเภทของปลั๊กอินมาตรฐาน SwiftBar คาดว่าการดำเนินการปลั๊กอินนั้นมี จำกัด เช่นปลั๊กอินรันและออกพร้อมเอาต์พุตไปยัง stdout:
เป็นทางเลือกปลั๊กอินมาตรฐานสามารถเรียกใช้ตามกำหนดเวลาที่ทำซ้ำได้ซึ่งกำหนดค่าไว้ในชื่อไฟล์ปลั๊กอินหรือคุณสมบัติ schedule เมตา
ประเภทปลั๊กอินนี้มีวัตถุประสงค์เพื่อผู้ที่ต้องการใช้แอพทางลัดเพื่อสร้างรายการแถบเมนู ปลั๊กอิน API ค่อนข้างเหมือนกับมาตรฐาน สร้างทางลัดที่ส่งข้อความในรูปแบบที่ต้องการเลือกทางลัดนี้ในส่วนปลั๊กอินทางลัดของการตั้งค่าของ SwiftBar และคุณก็พร้อมที่จะไป
สำหรับปลั๊กอินทางลัด SwiftBar ให้ UI ที่มีประโยชน์เพื่อกำหนดค่าตารางการรีเฟรช
ตัวอย่างทางลัด:
ปลั๊กอินชั่วคราวสร้างรายการแถบเมนูตามความต้องการโดยใช้การกระทำทางลัดของ SwiftBar หรือเรียกใช้รูปแบบ URL ปลั๊กอิน API ค่อนข้างเหมือนกับมาตรฐาน
นี่คือพารามิเตอร์สำหรับโครงการ URL:
การกระทำทางลัดเป็นการอธิบายตนเอง
ประเภทปลั๊กอินนี้ใช้ดีที่สุดสำหรับการแจ้งเตือนหรือรายการแถบเมนูชั่วคราวอื่น ๆ
Swiftbar เปิดตัวกระบวนการแยกต่างหากสำหรับปลั๊กอินที่มีการสตรีมแต่ละตัวซึ่งทำงานอย่างไม่มีกำหนดจนกระทั่ง Swiftbar ถูกปิดหรือล้มเหลว คุณควรใช้ปลั๊กอินที่สตรีมได้เมื่อจัดการกับกระแสของเหตุการณ์ที่เข้ามาเท่านั้น ตัวอย่างอาจเป็นข้อมูลการตลาดทางการเงินที่อ่านจาก WebSocket หรือ 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 สามารถเหมือนกันระหว่างปลั๊กอินหลายตัว หากปลั๊กอินของคุณเป็น ~/Documents/SwiftBar/myplugin.1m.sh ชื่อคือ myplugin และ id myplugin.1m.shopen(1) เพื่อทริกเกอร์ URL ให้ใช้ -g เพื่อป้องกันไม่ให้คำสั่งจากการขโมยโฟกัสจากแอพที่ใช้งานของคุณ| จุดสิ้นสุด | พารามิเตอร์ | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
| Refreshallplugins | ไม่มี | บังคับปลั๊กอินที่โหลดทั้งหมด | swiftbar://refreshallplugins |
| Refreshplugin | name หรือ plugin ปลั๊กอินชื่อ | บังคับปลั๊กอินรีเฟรชตามชื่อ หากมีให้พารามิเตอร์ URL เพิ่มเติมจะถูกเปิดเผยเป็นตัวแปร Env กับปลั๊กอิน | swiftbar://refreshplugin?name=myplugin |
| Refreshplugin | index ดัชนีดัชนีใน Menubar เริ่มตั้งแต่ 0 | บังคับปลั๊กอินรีเฟรชโดยตำแหน่งใน Menubar | swiftbar://refreshplugin?index=1 |
| เปิดใช้งาน | name หรือ plugin ปลั๊กอินชื่อ | เปิดใช้งานปลั๊กอินตามชื่อ | swiftbar://enableplugin?name=myplugin |
| disableplugin | name หรือ plugin ปลั๊กอินชื่อ | ปิดการใช้งานปลั๊กอินตามชื่อ | swiftbar://disableplugin?name=myplugin |
| Toggleplugin | name หรือ plugin ปลั๊กอินชื่อ | สลับ (เปิดใช้งานปลั๊กอิน disable) ตามชื่อ | swiftbar://toggleplugin?name=myplugin |
| addplugin | src Source URL ไปยังปลั๊กอินไฟล์ | เพิ่มปลั๊กอินลงใน 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 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 - ปิดใช้งาน 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 คุณอาจชอบสิ่งเหล่านี้เช่นกัน: