
Tambahkan program bilah menu khusus pada macOS dalam tiga langkah mudah:
Anda bisa mendapatkan plugin dari repositori bitbar yang luar biasa, atau di Swiftbar sendiri menggunakan item menu Get Plugins...
Unduh dari Rilis GitHub
Atau pasang dengan homebrew
brew install swiftbar
Berjalan di MacOS Catalina (10.15) dan UP.
SwiftBar/SwiftBar.xcodeprojSwiftbar dibundel dengan repositori plugin. Anda dapat mengaksesnya di Swiftbar → Dapatkan plugin ...

Jika Anda ingin menambahkan hapus plugin atau memiliki pertanyaan lain tentang konten repositori, silakan merujuk ke masalah ini.
Untuk menambahkan plugin baru ke Swiftbar, Anda perlu membuat skrip yang dapat dieksekusi mengikuti format yang diperlukan (lihat di bawah) dan masukkan ke Plugin Folder .
Dengan peluncuran pertama, SwiftBar akan meminta Anda untuk mengatur Plugin Folder . Swiftbar akan mencoba mengimpor setiap file di folder ini sebagai plugin.
Penting :
.swiftbarignore didukung, Anda dapat menggunakannya untuk mengecualikan file agar tidak diimpor sebagai plugin. Anda dapat menyembunyikan folder dengan prepending . atau menggunakan perintah ini chflags hidden <folder name> .
File plugin harus mengadopsi format berikut:
{name}.{time}.{ext}
Pengubah Durasi:
Contoh nama file: date.1m.sh
Apakah Anda menggunakan plugin dari repositori plugin, atau membuat sendiri, plugin awalnya akan muncul di bilah menu tanpa urutan yang telah ditentukan sebelumnya. Namun, Anda dapat memesan ulang bagaimana mereka muncul dengan menahan CMD dan menyeretnya (proses ini kadang-kadang juga dapat digunakan pada beberapa ikon non-swiftbar lainnya di bilah menu juga). Posisi plugin akan diingat kecuali Anda mengubah nama file plugin, dalam hal ini mereka harus diposisikan kembali lagi.
Plugin adalah skrip yang dapat dieksekusi dalam bahasa pilihan Anda. Ketika Swiftbar mendeteksi file baru di Plugin Folder itu membuat file ini dapat dieksekusi jika diperlukan dan menjalankannya.
Script harus menghasilkan output ( STDOUT ) dalam format yang diperlukan (lihat bab berikutnya). Kesalahan skrip harus dialihkan ke STDERR .
Plugin API diadopsi dari bitbar xbar, yang berarti bahwa Swiftbar dapat menjalankan plugin bitbar xbar yang ada.
Saat parsing output plugin Swiftbar mengenali blok berikut:
Header adalah segalanya sebelum pertama --- . Masing-masing --- setelah yang pertama akan ditafsirkan sebagai pemisah menu. Anda memiliki satu atau lebih garis di header.
Plugin paling sederhana terlihat seperti ini:
echo " This is Menu Title "Jika Anda memberikan banyak judul, judul yang disediakan akan bersepeda di bilah menu dan ditampilkan di menu dropdown:
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 " Output skrip untuk header dan body dibagi berdasarkan baris ( n ). Setiap baris harus mengikuti format ini:
<Item Title> | [param = ...]
Di mana:
= . Gunakan | untuk memisahkan parameter dari judul. Format Teks :
| Parameter | Nilai | Keterangan |
|---|---|---|
color | CSS Color atau Hex, light_color,dark_color | Mengatur warna teks item. Jika hanya satu warna yang disediakan, itu digunakan untuk penampilan terang dan gelap. |
sfcolor | CSS Color atau Hex, light_color,dark_color | Mengatur warna simbol SF. Jika hanya satu warna yang disediakan, itu digunakan untuk penampilan terang dan gelap. Jika Anda sedang mencari beberapa simbol SF, Anda dapat memberikan warna yang berbeda dengan menambahkan indeks, seperti ini sfcolor2 |
font | Nama Font MacOS | Mengatur nama font untuk digunakan dalam teks item |
size | Nomor | Menyetel ukuran teks item |
md | BENAR | Mengaktifkan Dukungan Markdown Dalam Judul Menu untuk **bold** dan *italic* |
sfsize | Nomor | Mengatur ukuran untuk gambar simbol SF yang tertanam dalam teks |
length | Nomor | Teks item trims ke jumlah karakter yang disediakan. Judul lengkap akan ditampilkan di tooltip. |
trim | BENAR | Trims karakter whitespace |
ansi | BENAR | Memungkinkan dukungan kode warna ANSI. Konflik dengan: symbolize |
emojize | PALSU | Menonaktifkan penguraian emoji gaya gitub (misalnya , :mushroom: ke?). Membutuhkan: symbolize=false saat pengaturan ke true. |
symbolize | PALSU | Menonaktifkan penguraian simbol SF (misalnya, "SF Symbols Test :sun.max: :cloud.fill: :gamecontroller.fill: :bookmark: :sun.dust:" → ). Selalu False di Catalina. |
Visual :
| Parameter | Nilai | Keterangan |
|---|---|---|
dropdown | PALSU | Hanya berlaku untuk item di Header . Saat diatur ke False, item tidak akan ditampilkan di menu dropdown, tetapi akan bersepeda di bilah menu. |
alternate | BENAR | Menandai garis sebagai alternatif dari yang sebelumnya untuk ketika tombol opsi ( ⌥ ) ditekan di dropdown. |
image | Gambar dikodekan dalam base64, light_image,dark_image | Mengatur gambar untuk item. Jika hanya satu gambar yang disediakan, itu digunakan untuk penampilan terang dan gelap. |
templateImage | Gambar yang dikodekan di base64 | Sama seperti image , tetapi gambar adalah gambar template. Gambar templat terdiri dari warna hitam dan jernih (dan saluran alpha). Gambar template tidak dimaksudkan untuk digunakan sebagai gambar mandiri dan biasanya dicampur dengan konten lain untuk membuat penampilan akhir yang diinginkan. |
sfimage | Nama Sfsymbol | Mengatur gambar untuk item dari simbol SF. Hanya tersedia di Big Sur dan di atas. |
sfconfig | Konfigurasi SFSYMBOL | Mengkonfigurasi Mode Rendering untuk sfimage . Menerima JSON yang dikodekan sebagai base64, contoh json {"renderingMode":"Palette", "colors":["red","blue"], "scale": "large", "weight": "bold"} . Edisi Asli #354 |
checked | BENAR | Mengatur tanda centang di depan item. |
tooltip | Teks | Mengatur tooltip untuk item. |
webview | BENAR | Sajikan HREF yang disediakan sebagai Webview, bukan menu menu standar |
webvieww | Nomor | Mengatur lebar webview dalam piksel |
webviewh | Nomor | Menetapkan Tinggi Webview di Pixels |
Tindakan :
| Parameter | Nilai | Keterangan |
|---|---|---|
refresh | BENAR | Skrip plugin akan dieksekusi pada item klik |
href | URL absolut | Menetapkan URL untuk dibuka saat item diklik |
bash | Jalur file absolut | Skrip yang dapat dieksekusi untuk dijalankan di shell |
terminal | PALSU | skrip bash akan dijalankan di latar belakang, alih -alih meluncurkan terminal |
params | param0= , param1= , param10= ... | Parameter untuk skrip bash |
shortcut | Opsi CMD++t | Hotkey ditugaskan ke item. Jika item ada di header, hotkey akan menampilkan menu; Kalau tidak, hotkey akan meluncurkan aksi terkait. |
Saat menjalankan plugin, SwiftBar menetapkan variabel lingkungan berikut:
| Variabel | Nilai |
|---|---|
SWIFTBAR | 1 |
SWIFTBAR_VERSION | Nomor versi SwiftBar yang berjalan (dalam format xyz ) |
SWIFTBAR_BUILD | Nomor pembuatan Swiftbar yang berjalan ( CFBundleVersion ) |
SWIFTBAR_PLUGINS_PATH | Jalur ke Plugin Folder |
SWIFTBAR_PLUGIN_PATH | Jalur ke plugin yang sedang berjalan |
SWIFTBAR_PLUGIN_CACHE_PATH | Folder cache ke data, individu per plugin |
SWIFTBAR_PLUGIN_DATA_PATH | Path to Data Folder, Individual Per Plugin |
SWIFTBAR_PLUGIN_REFRESH_REASON | Plugin Refresh Reason Trigger |
SWIFTBAR_LAUNCH_TIME | Tanggal dan Waktu Peluncuran SwiftBar, ISO8601 |
OS_APPEARANCE | Penampilan macOS saat ini ( Light atau Dark ) |
OS_VERSION_MAJOR | Bagian pertama dari versi MacOS (mis. 11 untuk MacOS 11.0.1) |
OS_VERSION_MINOR | Bagian kedua dari versi MacOS (misalnya, 0 untuk MacOS 11.0.1) |
OS_VERSION_PATCH | Bagian ketiga dari versi macOS (mis. 1 untuk macOS 11.0.1) |
OS_LAST_SLEEP_TIME | Tanggal dan waktu tidur OS terakhir, ISO8601. Kosong jika OS tidak tidur sejak peluncuran Swiftbar. |
OS_LAST_WAKE_TIME | Wake OS terakhir dari tanggal dan waktu tidur, ISO8601. Kosong jika OS tidak tidur sejak peluncuran Swiftbar. |
Disarankan untuk memasukkan metadata dalam skrip plugin. Metadata digunakan di layar plugin di Swiftbar. Swiftbar mengadopsi format metadata yang disarankan oleh 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 mendukung bendera metadata opsional ini untuk menyembunyikan item menu default:
# <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>
Opsi+klik akan menampilkan semua item: 
Tag khusus dapat digunakan sebagai alternatif untuk menyegarkan interval yang ditentukan dalam nama plugin, nilai mengadopsi sintaks cron:
<swiftbar.schedule>01,16,31,46 * * * *</swiftbar.schedule>
Anda dapat mengonfigurasi beberapa jadwal, menggunakan Sepparator | :
<swiftbar.schedule>1 * * * *|2 * * * *</swiftbar.schedule>
<swiftbar.refreshOnOpen>true</swiftbar.refreshOnOpen> - menyegarkan plugin pada klik, sebelum menyajikan menu<swiftbar.runInBash>false</swiftbar.runInBash> - tidak membungkus plugin dalam bash saat berjalan<swiftbar.type>streamable</swiftbar.type> - tanda plugin sebagai streaming<swiftbar.environment>[var1=default value, var2=default value, ... ]</swiftbar.environment> - variabel ini akan diteruskan di lingkungan plugin, dalam rilis selanjutnya Swiftbar akan menyediakan UI untuk mengubah nilai untuk variabel ini.<swiftbar.persistentWebView>true</swiftbar.persistentWebView> - membuat WebView persisten, jadi tidak memuat ulang pada setiap bilah menu klik Untuk plugin biner, metadata dapat ditambahkan sebagai atribut file yang diperluas:
xattr -w "com.ameba.SwiftBar" "$(cat metadata.txt | base64)" <plugin_file>
Untuk jenis plugin standar, Swiftbar berharap bahwa eksekusi plugin terbatas, yaitu, plugin berjalan dan keluar dengan output ke stdout:
Secara opsional, plugin standar dapat dijalankan pada jadwal yang dapat diulang, dikonfigurasi dalam nama file plugin atau properti schedule metadata.
Jenis plugin ini ditujukan untuk orang -orang yang ingin menggunakan aplikasi pintasan untuk membuat item bilah menu. API plugin hampir sama dengan standar. Buat jalan pintas yang mengeluarkan teks dalam format yang diperlukan, pilih pintasan ini di bagian Plugin Pintasan pada pengaturan Swiftbar, dan Anda baik untuk pergi.
Untuk plugin pintasan, SwiftBar menyediakan UI praktis untuk mengonfigurasi jadwal refresh.
Contoh Pintasan:
Plugin fana membuat item bilah menu sesuai permintaan dengan menjalankan tindakan pintasan Swiftbar atau memanggil skema URL. API plugin hampir sama dengan standar.
Berikut adalah parameter untuk skema URL:
Aksi jalan pintas cukup jelas.
Jenis plugin ini paling baik digunakan untuk pemberitahuan atau item bilah menu sementara lainnya.
Swiftbar meluncurkan proses terpisah untuk setiap plugin yang dapat dirampingkan, yang berjalan tanpa batas waktu sampai Swiftbar ditutup atau gagal. Anda harus menggunakan plugin yang dapat streaming hanya saat berhadapan dengan aliran peristiwa yang masuk; Contohnya dapat berupa info pasar keuangan yang dibaca dari WebSocket atau informasi pemuatan CPU untuk komputer jarak jauh.
Agar SwiftBar tahu kapan harus memperbarui item bilah menu, plugin yang dapat streaming harus menggunakan pemisah garis khusus ~~~ . Swiftbar akan mengatur ulang item menu pada setiap kemunculan pemisah ini.
Dalam contoh di bawah ini, Swiftbar akan menampilkan "Tes 1" di bilah menu selama 3 detik, maka tidak ada selama 5 detik, dan "tes 2" tanpa batas.
#!/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"
Anda dapat menandai plugin sebagai streaming dengan properti metadata khusus <swiftbar.type>streamable</swiftbar.type>
Beberapa catatan:
name dapat sama antara beberapa plugin. Jika filepath plugin Anda adalah ~/Documents/SwiftBar/myplugin.1m.sh , maka namanya myplugin dan id myplugin.1m.shopen(1) untuk memicu URL skema, gunakan -g untuk mencegah perintah mencuri fokus dari aplikasi aktif Anda.| Titik akhir | Parameter | Keterangan | Contoh |
|---|---|---|---|
| Refreshallplugins | tidak ada | Paksa menyegarkan semua plugin yang dimuat | swiftbar://refreshallplugins |
| Penyegaran | name atau nama plugin plugin | Plugin Refresh Force dengan nama. Jika disediakan, parameter URL tambahan diekspos sebagai variabel Env ke plugin | swiftbar://refreshplugin?name=myplugin |
| Penyegaran | index Indeks Plugin di Menubar, Mulai dari 0 | Force Refresh Plugin dengan posisinya di Menubar | swiftbar://refreshplugin?index=1 |
| enablePlugin | name atau nama plugin plugin | Aktifkan plugin dengan nama | swiftbar://enableplugin?name=myplugin |
| DisablePlugin | name atau nama plugin plugin | Nonaktifkan plugin berdasarkan nama | swiftbar://disableplugin?name=myplugin |
| togglplugin | name atau nama plugin plugin | Toggle (aktifkan nonaktif) plugin dengan nama | swiftbar://toggleplugin?name=myplugin |
| addplugin | URL sumber src ke file plugin | Tambahkan plugin ke Swiftbar dari URL | swiftbar://addplugin?src=https://coolplugin |
| memberitahu | name atau nama plugin plugin . Bidang Pemberitahuan: title , subtitle , body . href untuk membuka URL pada klik (termasuk skema URL khusus). silent=true untuk menonaktifkan suara | Tampilkan pemberitahuan | swiftbar://notify?plugin=MyPlugin&title=title&subtitle=subtitle&body=body&silent=true |
| setephemeralplugin | name plugin nama, harus unik. content - Konten Plugin, exitafter - Secara opsional atur seumur hidup Menubar dalam hitungan detik | Membuat plugin fana. Untuk menghapus plugin fana yang ada, atur kontennya ke string kosong "" | swiftbar://setephemeralplugin?name=ephemeral&content=hi |
Daftar preferensi yang tidak terpapar di Swiftbar UI:
defaults write com.ameba.SwiftBar StealthMode -bool YES - menyembunyikan item menu swiftbar saat semua plugin dinonaktifkandefaults write com.ameba.SwiftBar DisableBashWrapper -bool YES - tidak membungkus plugin dalam bash saat berjalandefaults write com.ameba.SwiftBar MakePluginExecutable -bool NO - nonaktifkan auto chmod +x semua file dalam direktori plugindefaults write com.ameba.SwiftBar PluginDeveloperMode -bool YES -Mengaktifkan pengeditan di preferensi -> plugindefaults write com.ameba.Swiftbar PluginDebugMode -bool YES - Mengaktifkan tampilan debug plugindefaults write com.ameba.SwiftBar StreamablePluginDebugOutput -bool YES - Mengaktifkan output debug untuk plugin yang dapat streaming, SwiftBar akan mengekspos data stream di Console.app Jika plugin gagal menjalankan Swiftbar akan ditampilkanConsole.app untuk melihat log Swiftbar.
Swiftbar menggunakan pustaka open source ini:
Untuk membekukan dan mengamankan dependensi perpustakaan ini bercabang ke organisasi Swiftbar.
Swiftbar dapat diterjemahkan di sini.
Jika Anda menikmati Swiftbar, Anda mungkin juga suka ini: