SwiftBar - Powerful macOS menu bar customization tool

Overview

SwiftBar Logo

SwiftBar

Add custom menu bar programs on macOS in three easy steps:

  • Write a shell script
  • Add it to SwiftBar
  • ... there is no 3rd step!

You can get plugins from awesome BitBar repository, or in SwiftBar itself using the Get Plugins... menu item.

How to get SwiftBar

Download from GitHub Releases

or Install with Homebrew

brew install swiftbar

Runs on macOS Catalina (10.15) and up.

...or build it from source

  • Clone or download a copy of this repository
  • Open SwiftBar/SwiftBar.xcodeproj
  • Press play

Plugin Repository

SwiftBar is bundled with a Plugin Repository. You can access it at Swiftbar → Get Plugins...

A screenshot of SwiftBar’s Plugin Repository

If you want to add\remove plugin or have other questions about repository content please refer to this issue.

Creating Plugins

To add a new plugin to SwiftBar, you need to create an executable script following the required format (see below) and put it into Plugin Folder.

Plugin Folder

With the first launch, Swiftbar will ask you to set the Plugin Folder. SwiftBar will try to import every file in this folder as a plugin.

Important:

  • hidden folders are ignored
  • nested folders are traversed by SwiftBar, including symlinks

Plugin Naming

Plugin files must adopt the following format:

{name}.{time}.{ext}
  • name - Anything you want.
  • time - Refresh interval (optional). Should be a number + duration modifier (see below)
  • ext - File extension.

Duration modifiers:

  • ms - milliseconds, e.g. 1ms - refresh every millisecond
  • s - seconds, e.g. 1s - refresh every second
  • m - minute, e.g. 10m - refresh every ten minutes
  • h - hour, e.g. 3h - refresh every three hours
  • d - day, e.g. 1d - refresh every day

Example filename: date.1m.sh

Plugin API

Plugin is an executable script in the language of your choice. When SwiftBar detects a new file in Plugin Folder it makes this file executable if needed and runs it.

Script should produce output (STDOUT) in the required format (see next chapter). Script errors should be redirected to STDERR.

Plugin API is adopted from the BitBar, which means that SwiftBar can run any existing BitBar plugin.

Script Output

When parsing plugin output SwiftBar recognizes the following blocks:

  • Header: responsible for what you see in the menu bar
  • Body: responsible for dropdown menu contents

Header is everything before first ---. Each --- after the first one will be interpreted as a menu separator. You have one or more lines in the header.

The simplest plugin looks like this:

echo "This is Menu Title"

If you provide multiple titles, the provided titles will be cycled in the menu bar and shown in the dropdown menu:

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 showed in the drop-down menu only"

Script output for both header and body is split by line (\n). Each line must follow this format:


   
     | [param = ...] 

   

Where:

  • "Item Title" can be any string, this will be used as a menu item title.
  • [param = ...] is an optional set of parameters\modificators. Each parameter is a key-value separated by =. Use | to separate parameters from the title.

Two-lines Title

Title line in Header section supports multiline, use \\n to separate lines, i.e.:

echo "Line 1 \\n Line2 | size=8"

Parameters

Text Formatting:

Parameter Value Description
color CSS color or HEX, light_color,dark_color Sets item text color. If only one color is provided, it is used for both light and dark appearance.
sfcolor CSS color or HEX, light_color,dark_color Sets SF Symbol color. If only one color is provided, it is used for both light and dark appearance.
font macOS font name Sets font name to use in item text
size Number Sets item text size
length Number Trims item text to a provided number of characters. The full title will be displayed in a tooltip.
trim True Trims whitespace characters
ansi True Enables support of ANSI color codes. Conflicts with: symbolize
emojize False Disables parsing of GitHub style Emojis (e.g., :mushroom: into 🍄 ). Requires: symbolize=false.
symbolize False Disables parsing of SF Symbols (e.g., "SF Symbols Test :sun.max: :cloud.fill: :gamecontroller.fill: :bookmark: :sun.dust:"Screenshot of SF Symbols). Always False on Catalina.

Visuals:

Parameter Value Description
dropdown False Only applicable to items in Header. When set to False, item will not be displayed in dropdown menu, but will be cycled in the menu bar.
alternate True Marks a line as an alternative to the previous one for when the Option key () is pressed in the dropdown.
image Image encoded in Base64 Sets an image for item.
templateImage Image encoded in Base64 Same as image, but the image is a template image. Template images consist of black and clear colors (and an alpha channel). Template images are not intended to be used as standalone images and are usually mixed with other content to create the desired final appearance.
sfimage SFSymbol name Sets an image for item from SF Symbol. Only available on Big Sur and above.
checked True Sets a checkmark in front of the item.
tooltip Text Sets a tooltip for the item.

Actions:

Parameter Value Description
refresh True Plugin Script will be executed on item click
href Absolute URL Sets an URL to open when item clicked
bash Absolute file path Executable script to run in Shell
terminal False bash script will be run in the background, instead of launching the Terminal
params param0=,param1=,param10=... Parameters for bash script
shortcut CMD+OPTION+T Hotkey assigned to item. If item is in header, hotkey will show the menu; otherwise, hotkey will launch associated action.

Environment Variables

When running a plugin, SwiftBar sets the following environment variables:

Variable Value
SWIFTBAR 1
SWIFTBAR_VERSION The running SwiftBar version number (in x.y.z format)
SWIFTBAR_BUILD The running SwiftBar build number (CFBundleVersion)
SWIFTBAR_PLUGINS_PATH The path to the Plugin Folder
SWIFTBAR_PLUGIN_PATH The path to the running plugin
OS_APPEARANCE Current macOS appearance (Light or Dark)
OS_VERSION_MAJOR The first part of the macOS version (e.g., 11 for macOS 11.0.1).
OS_VERSION_MINOR The second part of the macOS version (e.g., 0 for macOS 11.0.1).
OS_VERSION_PATCH The third part of the macOS version (e.g., 1 for macOS 11.0.1).

Script Metadata

It is recommended to include metadata in plugin script. Metadata is used in the About Plugin screen in SwiftBar. SwiftBar adopts metadata format suggested by BitBar:

# 
   
    Title goes here
   
# 
   
    v1.0
   
# 
   
    Your Name
   
# 
   
    your-github-username
   
# 
   
    Short description of what your plugin does.
   
# 
   
    http://www.hosted-somewhere/pluginimage
   
# 
   
    python,ruby,node
   
# 
   
    http://url-to-about.com/
   
# 
   
    Supported UTI's for dropping things on menu bar
   

Hiding default items

SwiftBar supports these optional metadata flags to hide default menu items:

# 
   
    true
   
# 
   
    true
   
# 
   
    true
   
# 
   
    true
   
# 
   
    true
   

Option+Click will show all items: SwiftBar

Refresh schedule

A special tag can be used as an alternative to refresh interval defined in plugin's name, value adopts Cron syntax:


   
    01,16,31,46 * * * *
   

Other Parameters

  • false - doesn't wrap plugins in Bash when running
  • streamable - mark plugin as Streamable
  • [var1:default value, var2:default value, ... ] - this variables will be passed in plugin's environment, in later release SwiftBar will provide a UI to change values for these variables.

Metadata for Binary Plugins

For binary plugins metadata can be added as an extended file attribute:

xattr -w "com.ameba.SwiftBar" "$(cat metadata.txt | base64)"

Plugin Types

Standard (default)

For Standard type of plugins, SwidtBar expects that plugin execution is finite, i.e., plugin runs and exits with output to stdout:

  • exit with code 0 and non-empty stdout - menu bar is built from the output
  • exit with code 0 and empty stdout - nothing in the menu bar
  • exit with code 1 - error shown in the menu bar

Optionally, a standard plugin can be run on a repeatable schedule, configured in the plugin's file name or schedule metadata property.

Streamable

Swiftbar launches a separate process for each Streamable plugin, which runs indefinitely until SwiftBar is closed or a failure. You should use Stremable plugins only when dealing with a stream of incoming events; an example could be financial market info read from a websocket or CPU load information for a remote computer.

To let SwiftBar know when to update the menu bar item, Streamable plugins must use a special line separator ~~~. SwiftBar will reset the menu item on each occurrence of this separator.

In the example below, SwiftBar will show "Test 1" in the menu bar for 3 seconds, then nothing for 5 seconds, and "Test 2" indefinitely.

#!/bin/bash
#
   
    streamable
   

echo "Test 1"
echo "---"
echo "Test 2"
echo "Test 3"
sleep 3
echo "~~~"
sleep 5
echo "~~~"
echo "Test 2"

You can mark a plugin as streamable with a special metadata property streamable

URL Scheme

Endpoint Parameter Description Example
refreshallplugins none Force refresh all loaded plugins swiftbar://refreshallplugins
refreshplugin name plugin name Force refresh plugin by name swiftbar://refreshplugin?name=myplugin
refreshplugin index plugin index in menubar, starting from 0 Force refresh plugin by its position in menubar swiftbar://refreshplugin?index=1
addplugin src source URL to plugin file Add plugin to Swiftbar from URL swiftbar://addplugin?src=https://coolplugin
notify plugin plugin name. Notification fields: title, subtitle, body. href to open an URL on click (including custom URL schemes). silent=true to disable sound Show notification swiftbar://notify?plugin=MyPlugin&title=title&subtitle=subtitle&body=body&silent=true

Preferences aka 'defaults'

List of preferences that are not exposed in SwiftBar UI:

  • defaults write com.ameba.SwiftBar DisableBashWrapper -bool YES - doesn't wrap plugins in Bash when running
  • defaults write com.ameba.SwiftBar MakePluginExecutable -bool NO - disables auto chmod +x all files in Plugin Directory
  • defaults write com.ameba.SwiftBar PluginDeveloperMode -bool YES - enables editing in Preferences -> Plugins
  • defaults write com.ameba.SwiftBar StreamablePluginDebugOutput -bool YES - enables debug output for Streamable plugins, Swiftbar will expose the stream data in Console.App

Logs and Error

If plugin fails to run SwiftBar will show ⚠️ in the menu bar, you can see details by clicking on Error in dropdown menu. Use macOS Console.app to view SwiftBar logs.

Acknowledgements

SwiftBar uses these open source libraries:

To freeze and secure dependencies these libraries are forked to SwiftBar organization.

Translation/Localization

SwiftBar can be translated here.

More Apps

If you enjoy SwiftBar you may like these as well:

  • TRex - Easy to use text extraction tool for macOS
  • Esse - Swiss army knife of text transformation for iOS and macOS
Comments
  • High CPU usage on streaming plugin

    High CPU usage on streaming plugin

    I'm facing issues with %CPU when running my streaming plugin. After some tests I came to the conclusion that the CPU usage can increase a lot if I print more than a single-line output in SwiftBar.

    This is my original print function in the Python script:

    print(
        '~~~',
        f'{coin}: {roi_fmt} ({roe_fmt}%) | color={color}',
        '---',
        f'Side: {side}',
        f'Entry Price: {entry_price}',
        f'Last Price: {last_price}',
        f'Quantity: {qty}',
        '---',
        f'Take Profit: {take_profit}',
        f'Stop Loss: {stop_loss}',
        sep='\n',
        flush=True
    )
    

    With the above multi-line output I had a lot of issues with high CPU usage which can get 100% sometimes apart of the app hanging, so I changed to this one-line output in order to avoid issues:

    print(
        '~~~',
        f'{coin}: {roi_fmt} ({roe_fmt}%) | color={color}',
        sep='\n',
        flush=True
    )
    

    Another issue I have been facing is that the output in SwiftBar constantly disappear for a second or two during the stream as you can see in the following gif:

    main_large

    opened by xilopaint 42
  • Proposal: SwiftBar + BitBar joining forces

    Proposal: SwiftBar + BitBar joining forces

    SwiftBar is everything I dreamed BitBar could become. It isn't written in Objective-C for a start; what's not to like? Over the years, the BitBar codebase became stale, difficult to maintain, impossible to build in some cases, and a frustration to many.

    I would like to propose that we take the best of both projects, and join forces.

    SwiftBar brings:

    • A fresh codebase written in a modern language 🎉
    • This makes it much easier to contribute to, bug fix, and maintain
    • Swift is accessible to many more developers too, including more junior devs who would be able to get involved (a point well made by @melonamin)
    • A built-in plugin browser, which is a massive boost in UX, and opens the project up to non-techy users

    BitBar has:

    • History and reputation (it's used by lots of people, and has been featured in a few places, like TechRadar and Mac Format magazine)
    • Momentum (more and more people are still discovering BitBar every day)

    How?

    This is how I think we should do it:

    • Use the BitBar name
    • PR the SwiftBar code into the BitBar repo (Ideally we would keep the history of all contributors)
    • Find a neutral org on GitHub and move the BitBar repo there (unfortunately bitbar is taken, but I'm sure we can find something that works). Moving the repo is important so we get the GitHub redirection from the current repo
    • Agree some product ownership and decision making processes to ensure the project is able to continue to develop into the future (and more importantly, doesn't go stale!)

    Whatever we decide, I'd like to thank @melonamin and everyone who contributed to SwiftBar for building it.

    opened by matryer 37
  • Add support for

    Add support for "streaming" plugins

    I'm trying to display data retrieved from a websocket. It works if I run my script in the Terminal but SwiftBar doesn't show anything and I can't understand why (does anyone could explain?). My script is similar to this: https://github.com/Binance-docs/Binance_Futures_python/blob/master/example/websocket/subscribeaggregatetrade.py

    Maybe it's the same issue once reported in BitBar repo: https://github.com/matryer/bitbar/issues/121. If it's the case, someone seems to have found a fix in this PR: https://github.com/matryer/bitbar/pull/317.

    Btw, congratulations for the excellent work on this exciting project.

    enhancement 
    opened by xilopaint 32
  • ]697;DoneSourcing proceeds plug-in output

    ]697;DoneSourcing proceeds plug-in output

    Running SwiftBar 1.4.2 and notice in the menubar the text ]697;DoneSourcing next to the output of the running plugin. I've checked the plugin I'm running and see nothing in the script to suggest 'sourcing'.

    For kicks i installed and enabled a random plugin and it too had the text proceeding the script output in the menubar.

    I've deleted the application and reinstalled the latest with no change in behavior.

    • the plugin(s) run from a terminal session do not print that text, only the expected output for each script.
    • the plugin i'm running is in python, the one i enabled for testing was a shell script, so it doesn't seem to be something language related.
    • i've enabled Plugin debug mode and in the Plugin debug window see the text with each content update.
    • i'm running macOS 12.1 on a M1.

    screenshots:

    2 enabled plug-ins in menu:

    Screen Shot 2022-01-26 at 1 32 08 PM

    content update in debug window: Screen Shot 2022-01-26 at 1 47 53 PM

    opened by craigz 26
  • Support SF Symbols in the same way as emojize

    Support SF Symbols in the same way as emojize

    I really like the look of SF Symbols compared to emoji. I would like to add them to my plugin the same way you do using the emojize feature. It's possible to paste the SF Symbol into your output script, but this only works if you have the SF Symbols app installed and not all editors can display them.

    Proposal: Add support for SF Symbols using a similar mechanism to emojize=true

    Possible solution: Add an SF symbol to plugin output by using its system name as a token, eg. :square.and.arrow.up:. App would replace occurrences of these tokens with an SF Symbol if symbolize=true

    enhancement 
    opened by jmjordan 21
  • webview popover

    webview popover

    This is an enhancement request. The data from swiftbar could be output to HTML file, that is visualized in a popover webview such as on main menubar display mouseover and/or item clicks. Ideally this would also give the author webview size controls. This open source project (no affiliation) gives you a good idea: Menubar Popup Browser

    enhancement 
    opened by cycle4passion 20
  • Stops refreshing on wake.

    Stops refreshing on wake.

    I've noticed that SwiftBar will stop updating on wake and needs to be restarted for it to function again. Latest version of macOS Big Sur and SwiftBar 1.2.3. Installed from homebrew.

    opened by carumusan 18
  • Memory corruption crashes every few days

    Memory corruption crashes every few days

    Describe the bug I have been seeing SwiftBar crashes (either SIGSEGV or SIGABRT) due to memory corruption.

    I haven't been able to detect a consistent pattern with the crashes. They seem to happen every couple of days, typically after I've put my machine to sleep. They seem to happen when my machine does a macOS "power nap" wakeup, though I am not certain on that.

    I'm attaching 3 crash reports to the bug. Two are segfaults (SIGSEGV) and one is a SIGABRT triggered by malloc() detecting heap corruption.

    Environment:

    • macOS version: 12.3.1 on Intel
    • SwiftBar version: 1.4.3, installed from the homebrew cask

    Additional Context:

    I have 3 scripts running:

    • A bash script that runs every 5 seconds
    • A Go program that runs every 5 seconds
    • A Go program that runs every 30 seconds

    I do run Bartender. I have not (yet) tried running without it, though I previously ran earlier 1.4.x versions under it without issue.

    I've attached the crash reports generated my macOS below. GitHub did not like the original ips extension, so I appended .txt to them. They are JSON files, however, but can be rendered more prettily by Console.app.

    SwiftBar-2022-05-05-191332.ips.txt SwiftBar-2022-05-06-165801.ips.txt SwiftBar-2022-05-11-205124.ips.txt

    bug 
    opened by joeshaw 16
  • No plugin updates

    No plugin updates

    Since updating to SwiftBar 1.4.2, my plugins are no longer updating automatically. For example, one of them says “last updated 39 seconds ago” (resetting to 0 every minute as specified) but the actual content is several hours old. Manually refreshing all plugins does nothing.

    opened by fenhl 16
  • Swiftbar not updating

    Swiftbar not updating

    Sometimes (I think after opening my Macbook again after a night e.g.) SwiftBar doesn't update. It seems completely stuck as also "Refresh all" doesn't work. Only thing that seems to work is to quit and relaunch Swiftbar. Any ideas how to diagnose this?

    bug 
    opened by mdbraber 16
  • Abnormal output (1.1.0 Beta 1)

    Abnormal output (1.1.0 Beta 1)

    Plugin code below:

    #!/usr/bin/env bash
    
    # <bitbar.title>Yabai Stats</bitbar.title>
    # <bitbar.version>v1.0</bitbar.version>
    # <bitbar.author>Rocky Zhang</bitbar.author>
    # <bitbar.author.github>yanzhang0219</bitbar.author.github>
    # <bitbar.desc>Show yabai status (workspace id, workspace layout) on the menubar.</bitbar.desc>
    # <bitbar.dependencies>yabai, skhd</bitbar.dependencies>
    
    export PATH="/usr/local/bin:$PATH"
    
    spaces=$(yabai -m query --displays | jq 'sort_by(.frame.x) | map(.spaces | join(" ")) | join(" │ ")' | sed "s/\"//g")
    cur_space_type=$(yabai -m query --spaces | jq '.[] | select(.focused == 1) | .type | if . == "bsp" then "B" elif . == "float" then "F" elif . == "stack" then "S" else . end' | sed "s/\"//g")
    
    echo "${spaces} - ${cur_space_type}"
    

    My plugin shows the current total desktops (i.e., workspaces) on the menu bar, cooperating with the macOS tiling window manager yabai.

    On 1.0.2, it shows like this: image

    4 | 1 2 | 3 means I am using three monitors, and desktop 4 is on the left monitor, desktop 1 and 2 are on the middle monitor, desktop 3 is on the right monitor. B means the current desktop type is "bsp" which is used by yabai to denote that the current desktop is managed.

    However, on 1.1.0 Beta 1, it becomes abnormal. image

    It only shows the hyphen.

    Thank you!

    opened by rockyzhang24 16
  • using sfimage pallette rendering

    using sfimage pallette rendering

    Describe the bug Is there anyway to use sfimage pallette or hierarchical rendering to change the color of the image? For example, with the sfsymbols app I can set an image to a specific color

    opened by mlcampbe 3
  • Add custom plugin repository support

    Add custom plugin repository support

    As discussed in #342

    Set custom plugin repository url with: defaults write com.ameba.SwiftBar PluginRepositoryURL http://localhost:8000/

    Use this archive as an example:

    unzip "sb plugin repo.zip"
    cd "sb plugin repo.zip"
    python3 -m http.server
    
    enhancement 
    opened by melonamin 5
  • Swiftbar does not remember menubar position after restart in MacOS Ventura

    Swiftbar does not remember menubar position after restart in MacOS Ventura

    Hi,

    Swiftbar seems to forget its position on the menubar after every restart in MacOS Ventura, and ends up on the left most position on the menubar. Other apps (e.g. Tunnelblick) are ok.

    Swiftbar: Version 1.4.4 stable and also 1.5.0(469). MacOS Ventura 13.0.1

    To reproduce: Move switftbar icon on menubar to position in middle, restart Mac, swiftbar comes back on the left most position on the menubar

    Expected behaviour: Swiftbar should remain on the middle position it was moved to

    Thanks

    opened by kidym 2
  • Inconsistent title cycle duration

    Inconsistent title cycle duration

    Describe the bug When more than one title is output to the header:

    • Previously: SwiftBar cycles through displaying the titles one at a time for 5 seconds each
    • On v1.4.4: The first title seems to dominate, with subsequent titles appearing briefly and intermittently. Eg. first title might be shown for 12 seconds, then second title is flashed for <1 second before first title is displayed again, this time for a different duration.

    To Reproduce Steps to reproduce the behavior:

    1. Create a plugin which outputs at least 2 titles to the header ( before the first ---)
    2. Enable the plugin and monitor the display duration for each title

    Expected behavior

    • Each title should be displayed for a standard duration (eg. 5s)
    • Titles should cycle on a loop, giving equal display time to each

    Screenshots https://cdn.zappy.app/va6dcd69c28fedf440a101c61a04693f9.mp4 See 00:27, Menu Item 2 flashes at ~00:28

    Environment:

    • macOS version: 12.5.1 (also observed on 13.0)
    • SwiftBar version: 1.4.4 (see note in Additional Context)
    • node version: 16.8.0 (also observed on 12.22.3)

    Plugin Example:

    #!/usr/bin/env node
    console.log("Menu Title 1");
    console.log("Menu Title 2");
    console.log("---");
    console.log("Body content");
    

    Additional Context:

    • [x] I don't run Bartender/Dozer/etc. or tested the issue without it running (observed both with & without Bartender)
    • [x] This was reported to me by a colleague running v1.4.4 and I couldn't reproduce it on the older version I was running (sorry, I'm not sure which). While comparing environment versions between our machines, I noticed my SwiftBar was outdated. Once I updated to v1.4.4, I saw the issue.
    bug 
    opened by cwernert 5
  • Lock/Unlcok event notification

    Lock/Unlcok event notification

    Program want to get notification about system status, like lock/unlocked, like below:

    https://stackoverflow.com/questions/35932501/check-device-is-locked-or-unlocked

    I have a script running related to screen unlocked, and stop running when screen locked, need this type of notification.

    Can swiftbar add this support?

    opened by futurist 3
Releases(v1.5.0-beta-3)
  • v1.5.0-beta-3(Nov 19, 2022)

  • v1.5.0-beta-2(Nov 18, 2022)

  • v1.5.0-beta-1(Nov 8, 2022)

  • v1.4.4(Oct 23, 2022)

    Changelog:

    • New: Manual refresh indicator #321
    • New: Multiple Cron schedules support #336
    • New: Added :england: emoji 🏴󠁧󠁢󠁥󠁮󠁧󠁿 : #335
    • New: Spanish Localization #296
    • New: Chinese Localization #309
    • New: Opt-in crash reporting #319
    • New: Updated <swiftbar.environment> syntax, use = instead of : as key\value separator #322
    • New: Less offensive error icon in menu bar #315
    • New: Improved Plugins screen usability #301
    • Fix: Improved refresh interval detection in plugin name
    • Fix: Crashing with extremely large plugin #313 #294
    • Fix: Add percent encoding for local file URLs #261
    • Fix: Fixed support for dropping items on the menu bar item #104
    • Fix: Better handling of URL scheme for Notifications #324
    • Fix: Unnecessary excessive logging #333
    • Fix: Calendar permission (for icalbuddy) stopped working after update to Ventura #328
    • Fix: Improper unescaping of notification body #324
    • Fix: Memory corruption in long-running binary plugins #319

    Full Changelog: https://github.com/swiftbar/SwiftBar/compare/v1.4.3...v1.4.4

    Source code(tar.gz)
    Source code(zip)
    SwiftBar.v1.4.4.b461.zip(3.35 MB)
    SwiftBar.zip(3.35 MB)
  • v1.4.4-beta-4(Sep 19, 2022)

  • v1.4.4-beta-3(Aug 10, 2022)

  • v1.4.4-beta-2(May 1, 2022)

    Changelog:

    • New: Create Localizable.strings for Chinese by @xfangfang in https://github.com/swiftbar/SwiftBar/pull/309
    • Fix: Plugin crashing with large output #313 #294
    • Fix: Spanish localization by @xilopaint in https://github.com/swiftbar/SwiftBar/pull/310

    Full Changelog: https://github.com/swiftbar/SwiftBar/compare/v1.4.4-beta-1...v1.4.4-beta-2

    Source code(tar.gz)
    Source code(zip)
    SwiftBar.v1.4.4.b435.zip(2.79 MB)
  • v1.4.4-beta-1(Apr 16, 2022)

  • v1.4.3(Mar 11, 2022)

    Changelog:

    • New: WebView popover #261
    • New: Option to switch streaming plugin to trailing separator useTrailingStreamSeparator #273
    • New: Enabled Refrresh for streamable plugins #281
    • New: Run command on notification click #274
    • New: Add new environment variables #284
    • New: Make Bool parameters case insensitive #278
    • New: Add preference to update to beta versions #250
    • New: Capture plugin’s STDERR to log and debug view #257
    • Fixed: Changed menu bar item color handling on selection #156 #272
    • Fixed: Plugin errors being ignored #287
    • Fixed: Update lifestyle category icon to match Plugin Repository aesthetic standard #288
    • Fixed: URL Scheme parameters inconsistency #280
    • Fixed: Binary plugins not updating #259
    • Fixed: Improving refreshOnOpen #272
    • Fixed: Fixed menubar color when using right click #260

    Contributors: @sejmann @fenhl @matopeto @cycle4passion @nicoster @xilopaint

    Source code(tar.gz)
    Source code(zip)
    SwiftBar.v1.4.3.b422.zip(2.79 MB)
    SwiftBar.zip(2.79 MB)
  • v1.4.3-beta-8(Feb 21, 2022)

    Changelog:

    • New: Capture plugin’s STDERR to log and debug view #257
    • Fix: Plugin errors being ignored #287
    • Fix: Update lifestyle category icon to match Plugin Repository aesthetic standard #288

    Testing update to official Sparkle package, request update from preferences may not work

    Source code(tar.gz)
    Source code(zip)
    SwiftBar.v1.4.3.b420.zip(2.79 MB)
  • v1.4.3-beta-7(Feb 18, 2022)

  • v1.4.3-beta-6(Feb 12, 2022)

  • v1.4.3-beta-5(Feb 6, 2022)

  • v1.4.3-beta-4(Feb 4, 2022)

  • v1.4.3-beta-3(Feb 3, 2022)

  • v1.4.3-beta-2(Feb 1, 2022)

  • v1.4.3-beta-1(Feb 1, 2022)

  • v1.4.2(Dec 23, 2021)

  • v1.4.1(Dec 19, 2021)

    Changelog:

    • New: Update menu on open #241
    • New: Support for bold and italic text in menu title #168
    • New: Plugins list in Preferences live update with Plugin Folder changes #235
    • New: New URL scheme endpoints to enable, disable and toggle plugins #239
    • New: Improved multi-screen support #249
    • New: App icon #224
    • Fixed: Right click on menu bar item should always show menu #244
    • Fixed: SFImage honors width and height parameters #245
    • Fixed: trim parameter not working in some cases #237
    • Fixed: Menu bar item may move on click when using SF Symbols #224
    • Fixed: Streaming plugins are not started after sleep #179

    Full Changelog: https://github.com/swiftbar/SwiftBar/compare/v1.4.1..v1.4.0

    New App Icon

    SwiftBar Logo

    Italic and Bold

    #!/bin/bash
    echo "*Italic* and **Bold**"
    
    CleanShot 2021-12-19 at 11 30 58@2x

    Refresh on click

    <swiftbar.refreshOnOpen>true</swiftbar.refreshOnOpen>

    New URL Scheme Endpoints

    | Endpoint | Parameter | Description | Example | | ------------- | ------------- |------------- | ------------- | | enableplugin | name plugin name | Enable plugin by name | swiftbar://enableplugin?name=myplugin | | disableplugin | name plugin name | Disable plugin by name | swiftbar://disableplugin?name=myplugin | | toggleplugin | name plugin name | Toggle(enable\disable) plugin by name | swiftbar://toggleplugin?name=myplugin |

    Call it like this open -g "swiftbar://toggle?name=cal"

    Contributors: @fabiospampinato, @mlcampbe, @fenhl, @es183923, @astrowonk, @bilal-fazlani, @earslap

    Source code(tar.gz)
    Source code(zip)
    SwiftBar.zip(3.93 MB)
  • v1.4.1-beta-3(Dec 11, 2021)

  • v1.4.1-beta-2(Dec 10, 2021)

  • v1.4.1-beta-1(Nov 19, 2021)

    Changelog:

    • New: Refresh on click #241
    • New: Plugins list in Preferences live update with Plugin Folder changes #235
    • New: New URL scheme endpoints to enable, disable and toggle plugins #239
    • Fixed: Right click on menu bar item should always show menu #244
    • Fixed: SFImage honors width and height parameters #245

    Refresh on click

    <swiftbar.refreshOnOpen>true</swiftbar.refreshOnOpen>

    New URL Scheme Endpoints

    | Endpoint | Parameter | Description | Example | | ------------- | ------------- |------------- | ------------- | | enableplugin | name plugin name | Enable plugin by name | swiftbar://enableplugin?name=myplugin | | disableplugin | name plugin name | Disable plugin by name | swiftbar://disableplugin?name=myplugin | | toggleplugin | name plugin name | Toggle(enable\disable) plugin by name | swiftbar://toggleplugin?name=myplugin |

    Call it like this open -g "swiftbar://toggle?name=cal"

    Source code(tar.gz)
    Source code(zip)
    SwiftBar.zip(3.89 MB)
  • v1.4.0(Oct 28, 2021)

    Changelog:

    • New: Added support for macOS Monterey #210
    • New: Automate SwiftBar with Shortcuts
    • New: Plugin specific Cache and Data directories #200
    • New: Russian Localization #200
    • New: Support for unlimited shell parameters #219
    • New: Plugin Repository Categories are now localized #207
    • New: Support for shell parameter alongside with bash #204
    • New: Option to set shell of choice to bash or zsh #227
    • New: sfsize parameter to customize SF Symbol size within text independently of font size #230
    • Fixed: Narrower minimum width for Repository Browser window #195
    • Fixed: SF Symbol should honor the font size parameter #230
    • Fixed: Menubar opens on MouseDown event #217
    • Fixed: author.github not parsed in plugin metadata #215
    • Fixed: swiftbar.environment not available as environment variable #214
    • Fixed: Menu bar item with image and text missing padding #228

    Contributors: @gingerbeardman, @xilopaint, @Scartiloffista, @milotype, @JeroenVdb, @astrowonk, @shassard, @darmen, @jyxijij, @rarango9, @moshed

    Full Changelog: https://github.com/swiftbar/SwiftBar/compare/v1.4.0..v1.3.0

    Source code(tar.gz)
    Source code(zip)
    SwiftBar.zip(3.91 MB)
  • v1.3.1-3(Oct 5, 2021)

  • v1.3.1-2(Jul 31, 2021)

    Changelog:

    • New: Russian Localization #200
    • New: Support for unlimited shell parameters #219
    • New: Plugin Repository Categories are now localized #207
    • New: Support for shell parameter alongside with bash #204
    • Fixed: Menubar opens on MouseDown event #217
    • Fixed: author.github not parsed in plugin metadata #215
    • Fixed: swiftbar.environment not available as environment variable #214
    Source code(tar.gz)
    Source code(zip)
    SwiftBar.zip(3.86 MB)
  • v1.3.1(Jun 6, 2021)

  • v1.3.0(May 30, 2021)

    Changelog:

    • New: Plugin Debug View #182
    • New: Multiple SF Symbols with different colors #180
    • New: Added support for xbar-plugins repository #183
    • New: Preferences UI #181
    • Fixed: Correct handling of a sleep\wake cycle #179
    • Fixed: Color names work in lowercase but not in mixed case #197
    • Fixed: Image tint in menu bar should match text color when selected #196
    • Fixed: Manual refresh leads to excessive scheduled refreshes #194
    • Fixed: Plugin menu items don't align with SwiftBar menu items #186

    Contributors: @disappearinjon @nacho @shepazon @xilopaint @MaxGiting @carumusan @bilal-fazlani

    Source code(tar.gz)
    Source code(zip)
    SwiftBar.zip(3.84 MB)
  • v1.3.0-beta-1(Apr 1, 2021)

  • v1.2.3(Mar 9, 2021)

    Changelog:

    • New: Improved Plugin Repository, including search #130
    • New: Improved Preferences, including an ability to change some of plugin's parameters
    • New: Option to not run plugins in bash #163
    • New: Custom shortcuts appear on menu items #154
    • New: Support for milliseconds in refresh interval #166
    • New: Plugins should remember position in the menu bar and work nicely with Bartender/Dozer/etc. #2
    • ** New**: User friendly alert for an unsupported folder for Plugins (i.e. /Applications or /Library) #165
    • Fixed: Preferences and Plugin Repository can be opened in more than one window #164
    • Fixed: Inconsistent menu title color when using 'reduce transparency' on Big Sur #156
    • Fixed: SwiftBar should handle the sleep-wake cycle correctly #147
    • Fixed: Proper dismiss for About Plugin pop-up #169

    User interface updates are mostly Big Sur only, Catalina get's all the features, but UI is different.

    Known issues:

    • Plugin search is dumb
    • Plugin Browser UI is a little wonky
    • Preferences is not "mac like" and rough on the edges
    • No localization for new UI

    CleanShot 2021-03-09 at 13 39 01@2x

    Contributors: @bilal-fazlani, @Cygnusfear, @xilopaint, @fenhl, @samnunn

    Source code(tar.gz)
    Source code(zip)
    SwiftBar.zip(3.71 MB)
  • v1.2.3-beta-1(Feb 12, 2021)

    Changelog:

    • New: Option to not run plugins in bash #163
    • New: Custom shortcuts appear on menu items #154
    • Fixed: Preferences and Plugin Repository can be opened in more than one window #164
    • Fixed: Inconsistent menu title color when using 'reduce transparency' on Big Sur #156
    • Fixed: Improvements related to "Swiftbar not updating" #147 (needs testing)

    Known issues:

    • Redesigned Settings screen is a bit wonky
    Source code(tar.gz)
    Source code(zip)
    SwiftBar.zip(3.65 MB)
Simple side/slide menu control for iOS, no code necessary! Lots of customization. Add it to your project in 5 minutes or less.

▤ SideMenu If you like SideMenu, give it a ★ at the top right of this page. SideMenu needs your help! If you're a skilled iOS developer and want to he

Jon Kent 5.4k Dec 29, 2022
Mac menu bar tool to view the architecture of the running application

Silicon Info About Silicon Info is a tiny menu bar application allows the user to quickly view the architecture of the currently running application.

William Castelli (Billy) 260 Dec 29, 2022
a simple macOS menu bar application that shows you the lyrics of current playing spotify track.

lyricsify a simple macOS menu bar application that shows you the lyrics of current playing spotify track.

Krisna Pranav 4 Sep 16, 2021
A menu bar app to change input source swiftly using shortcuts on macOS Big Sur or later.

Source Switcher A menu bar app to change input sources swiftly using shortcuts on macOS Big Sur and later. View screenshots Introduction This app uses

null 34 Nov 9, 2022
macOS (>11.0) Menu Bar App for WLED

wledQuickControl functions Left click on the Menubar icon will toggle the WLED device On/Off Right click on the Menubar icon: will update the icon/sli

satrik 15 Nov 8, 2022
adb-tools-mac is a macOS menu bar app written in SwiftUI for common adb tools.

adb-tools-mac is a macOS menu bar app written in SwiftUI for common adb tools.

Naman Dwivedi 930 Jan 2, 2023
Ambar is a macOS Menu Bar app built with SwiftUI.

Ambar Ambar is a macOS Menu Bar app built with SwiftUI. It is a template project which means that it can be used as a starting point for a new Menu Ba

null 16 Nov 14, 2022
Barber lives in your macOS menu bar and keeps track of what needs to be updated.

Barber Barber is a macOS application to keep track of application updates easily. It lives in your menu bar, and uses homebrew to determine what's out

Max Ainatchi 1 Nov 30, 2021
Control your display's brightness from the macOS menu bar. Simple and easy to use.

MonitorControl Lite Control your display's brightness from the macOS menu bar. Simple and easy to use. About MonitorControl Lite is a simplified versi

null 62 Dec 11, 2022
macOS menu bar app that displays the current status of SIP (System Integrity Protection)

MenuBarSIPDetector This is a DEMO app for my Swift library TINURecovery and it is a macOS menu bar app that displays the current status of SIP (System

null 19 Dec 18, 2022
Let's put notification Messages icon on menu bar of your macOS

DockBar DockBar is just a simple app that show messages icon on your status bar when you have unread messages. This app is very useful for people who

Bastard.y 5 Aug 16, 2022
Paimon's now in your macOS menu bar

PaimonMenuBar Paimon's now in your menu bar! Demo What's this? Genshin Impact has got a complicated daily system, consisting of: 4 Daily commisions. 5

Spencer Woo 138 Dec 30, 2022
Weather Dock is a MacOS headless application that shows popover view under the menu bar with weather info.

Weather Dock Weather forecast in MacOS menu bar Weather Dock is a MacOS headless application that shows popover view under the menu bar with weather i

Alexander Stepanischev 8 Dec 15, 2022
SwiftySideMenu is a lightweight and easy to use side menu controller to add left menu and center view controllers with scale animation based on Pop framework.

SwiftySideMenu SwiftySideMenu is a lightweight, fully customizable, and easy to use controller to add left menu and center view controllers with scale

Hossam Ghareeb 84 Feb 4, 2022
A Slide Menu, written in Swift, inspired by Slide Menu Material Design

Swift-Slide-Menu (Material Design Inspired) A Slide Menu, written in Swift 2, inspired by Navigation Drawer on Material Design (inspired by Google Mat

Boisney Philippe 90 Oct 17, 2020
Slide-Menu - A Simple Slide Menu With Swift

Slide Menu!! Весь интерфейс создан через код

Kirill 0 Jan 8, 2022
EasyMenu - SwiftUI Menu but not only button (similar to the native Menu)

EasyMenu SwiftUI Menu but not only button (similar to the native Menu) You can c

null 10 Oct 7, 2022
Swift-sidebar-menu-example - Create amazing sidebar menu with animation using swift

 SWIFT SIDEBAR MENU EXAMPLE In this project I create a awesome side bar menu fo

Paolo Prodossimo Lopes 4 Jul 25, 2022
The elegant yet functional dropdown menu, written in Swift, appears underneath the navigation bar to display a list of defined items when a user clicks on the navigation title.

Introduction The elegant yet functional dropdown menu, written in Swift, appears underneath the navigation bar to display a list of defined items when

Tho Pham 2.7k Dec 28, 2022