
أضف برامج شريط قائمة مخصصة على MacOS في ثلاث خطوات سهلة:
يمكنك الحصول على ملحقات إضافية من مستودع Bitbar Awesome ، أو في Swiftbar نفسه باستخدام Get Plugins... عنصر القائمة.
تنزيل من إصدارات Github
أو التثبيت مع homebrew
brew install swiftbar
يعمل على ماكوس كاتالينا (10.15) وما فوق.
SwiftBar/SwiftBar.xcodeprojيتم تجميع Swiftbar مع مستودع إضافي. يمكنك الوصول إليه في 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 أو Hex ، light_color,dark_color | يعين لون نص العنصر. إذا تم توفير لون واحد فقط ، يتم استخدامه في كل من الضوء والظلام. |
sfcolor | لون CSS أو Hex ، light_color,dark_color | يضبط لون رمز SF. إذا تم توفير لون واحد فقط ، يتم استخدامه في كل من الضوء والظلام. إذا قمت بشهرة رموز SF متعددة ، فيمكنك توفير ألوان مختلفة عن طريق إضافة الفهرس ، مثل sfcolor2 هذا |
font | اسم خط macos | يعين اسم الخط لاستخدامه في نص العنصر |
size | رقم | يعين حجم نص العنصر |
md | حقيقي | يمكّن الدعم المتدفق في عنوان القائمة لـ **bold** و *italic* |
sfsize | رقم | يحدد الحجم لصورة رمز SF مضمنة في النص |
length | رقم | نصوص نص العنصر إلى عدد متوفر من الأحرف. سيتم عرض العنوان الكامل في تلميح الأدوات. |
trim | حقيقي | تقليم أحرف المسافة البيضاء |
ansi | حقيقي | يتيح دعم رموز الألوان ANSI. تعارض مع: symbolize |
emojize | خطأ شنيع | يعطل تحليل الرموز التعبيرية على غرار جيثب (على سبيل المثال ، :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 | رقم | يضبط عرض WebView بالبكسل |
webviewh | رقم | يضبط ارتفاع WebView بالبكسل |
الإجراءات :
| المعلمة | قيمة | وصف |
|---|---|---|
refresh | حقيقي | سيتم تنفيذ البرنامج النصي المكون الإضافي على العنصر انقر فوق |
href | عنوان URL المطلق | يعين عنوان URL لفتحه عند النقر فوق العنصر |
bash | مسار الملف المطلق | البرنامج النصي القابل للتنفيذ لتشغيله في شل |
terminal | خطأ شنيع | سيتم تشغيل نص bash في الخلفية ، بدلاً من إطلاق المحطة |
params | param0= ، param1= ، param10= ... | معلمات نص bash |
shortcut | CMD+الخيار+ر | Hotkey مخصص للعنصر. إذا كان العنصر في الرأس ، فسوف يعرض 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 | refresh trigger trigger |
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> - لا يلف الإضافات في باش عند التشغيل<swiftbar.type>streamable</swiftbar.type> - مارك مكون إضافي على أنه قابل للباقي<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:
اختياريا ، يمكن تشغيل المكون الإضافي القياسي على جدول قابل للتكرار ، تم تكوينه في اسم ملف البرنامج المساعد أو خاصية METADATA schedule .
يهدف هذا النوع المكون الإضافي للأشخاص الذين يرغبون في استخدام تطبيق الاختصارات لإنشاء عناصر شريط القائمة. API المكون الإضافي هو نفس المعيار. قم بإنشاء اختصار يخرج النص بالتنسيق المطلوب ، حدد هذا الاختصار في قسم "اختصارات المكون الإضافي" في إعدادات Swiftbar ، وأنت على ما يرام.
بالنسبة إلى الإضافات المختصرة ، يوفر Swiftbar واجهة مستخدم مفيدة لتكوين جدول التحديث.
اختصارات مثال:
ephemeral plugins إنشاء عناصر شريط القائمة عند الطلب عن طريق تشغيل إجراء اختصار Swiftbar أو استدعاء مخطط URL. API المكون الإضافي هو نفس المعيار.
فيما يلي المعلمات لمخطط عنوان URL:
اختصارات العمل هو رائع الذات.
من الأفضل استخدام نوع البرنامج المساعد للإشعارات أو عناصر شريط القائمة المؤقتة الأخرى.
تقوم Swiftbar بإطلاق عملية منفصلة لكل مكون إضافي قابل للباقي ، والذي يتم تشغيله إلى أجل غير مسمى حتى يتم إغلاق Swiftbar أو فشل. يجب عليك استخدام المكونات الإضافية القابلة للبث فقط عند التعامل مع دفق من الأحداث الواردة ؛ مثال على ذلك ، يمكن أن تكون معلومات السوق المالية قراءة من معلومات تحميل WebSocket أو CPU لجهاز كمبيوتر بعيد.
للسماح لـ SwiftBar بمعرفة متى يتم تحديث عنصر شريط القائمة ، يجب أن تستخدم المكونات الإضافية القابلة للبشر فاصل خط خاص ~~~ . سيقوم Swiftbar بإعادة ضبط عنصر القائمة على كل حدوث من هذا الفاصل.
في المثال أدناه ، سيعرض Swiftbar "اختبار 1" في شريط القائمة لمدة 3 ثوان ، ثم لا شيء لمدة 5 ثوان ، و "Test 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.shopen(1) لإعداد عناوين URL ، استخدم -g لمنع الأمر من سرقة التركيز من تطبيقك النشط.| نقطة النهاية | المعلمة | وصف | مثال |
|---|---|---|---|
| refreshallplugins | لا أحد | إجبار تحديث جميع الإضافات المحملة | swiftbar://refreshallplugins |
| RefreshPlugin | name أو plugin الإضافي اسم | قوة تحديث القوة بالمساعد بالاسم. إذا تم توفير | swiftbar://refreshplugin?name=myplugin |
| RefreshPlugin | index مؤشر البرنامج المساعد في مينوبار ، بدءا من 0 | PORRIPTION Refresh Plugin من خلال وضعه في Menubar | swiftbar://refreshplugin?index=1 |
| Enableplugin | name أو plugin الإضافي اسم | تمكين البرنامج المساعد بالاسم | swiftbar://enableplugin?name=myplugin |
| DisablePlugin | name أو plugin الإضافي اسم | تعطيل البرنامج المساعد بالاسم | swiftbar://disableplugin?name=myplugin |
| تبديل | name أو plugin الإضافي اسم | Toggle (تمكين Disable) المكون الإضافي بالاسم | swiftbar://toggleplugin?name=myplugin |
| AddPlugin | عنوان 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 |
| setepheralplugin | 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 - لا يلف المكونات الإضافية عند التشغيل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 ، فقد يعجبك هذه أيضًا: