A custom macOS statusbar with shell plugin, interaction and graph support

Overview

SketchyBar

This is a rewrite of the spacebar project, which itself is a rewrite of the statusbar code from yabai.

Features:

  • As many widgets as you like at any of the three positions: left, center, right
  • The order of the widgets in the sketchybarrc file will be the order in which they show in the bar
  • Associate widgets to certain displays or spaces, to show specific information on the relevant screens/displays
  • The widgets are highly customizable with settings for different fonts, colors, icon paddings, label paddings, etc. for each individual element
  • Draw arbitrary graphs in the bar with external data provider scripts that push the data into the graph
  • Overlay as many graphs as wanted, like system cpu usage and user cpu usage in one figure
  • Individual refresh frequencies for each widget
  • Let items subscribe to system events (e.g. space changed, etc.) for their refresh action
  • Create custom events and trigger them externaly
  • "click" events for the widgets, where a script can be specified to run on a mouse click
  • Cache the scripts in RAM to reduce I/O operations
  • Performance friendly

Description

This bar project aims to create a highly flexible, customizable and fast statusbar for users that like playing around with shell scripts and want to make their statusbar show exactly the information they need for their workflow.

The configuration of the bar takes place in a confiuration file where almost everything can be configured. Bascially, the bar itself is a rectangle that can hold arbitrarily many items and components, which can be configured to do awesome stuff. An item will occupy a space in the bar and can be equipped to show an icon and a label. The icon and label can be changed through scripts that can be attached to the item. It is also possible to subscribe and item to certain events for their script execution action, which makes very powerful items possible. Additionally, an item can be assigned a click_script, which executes on a mouse click. Furthermore, an item can be assigned to mission control spaces or displays, such that they only show on a certain space or display, which makes multi-desktop configuration of the bar possible and opens the possibility to create individualized bar configuration on a per display and per space level. These simple ingredients make items almost endlessly customizable and can be used to display arbitrary information and perform useful actions. For some examples see my sketchybarrc and the plugins folder.

Some special features can not be accomplished with a simple item, this is where the components come into play. They basically are items with extra steps. They contain all the properties a regular item does, but they can do specialized tasks a simple item can not. For example, there is a graph component, which can be used to display graphs in the bar.

For more details on how the configuration works, see the Configuration section below.

This is my setup: where I have my screens and a vim mode indicator on the left. Not shown is the high memory warning which shows the process that is using high system memory on demand. In the center I have a spotify indicator (only when music is playing) and on the right I have (not shown) a high cpu process indicator, as well as a cpu graph, a github contribution counter, a new mail counter and the current date.

The cpu and memory indicators are only shown on the "code" screen and are not visible on the other screens.

Installation

Clone the repo and in it run

make install

This installs the app with my configuration preinstalled.

You can customize the configuration inside of $HOME/.config/sketchybar/sketchybarrc and run the bar via

sketchybar

If you want to use your own plugins, make sure that they are referenced in the rc with the correct path and that they are made executable via

chmod +x name/of/plugin.sh

You should of course vet the code from all plugins before granting them the executable bit to make sure they are not harming your computer.

If you have problems with missing fonts you might need to install the Hack Nerd Font:

brew tap homebrew/cask-fonts
brew install --cask font-hack-nerd-font

Updating

Since this is a work-in-progress project, there might be big and radical changes along the way. You can update by pulling from master and in the up to date repo folder run:

make update

This will not touch your configuration and the plugins, so if there is a radical change to the source code you might need to update those files too.

Configuration

Below is a list of all possible commands you can currently use in the configuration file located in ~/.config/sketchybar/sketchybarrc:

Global configuration of the bar

sketchybar -m config <setting> <value>

where the settings currently are:

  • position: top or bottom
  • height: the height of the bar in pixels
  • padding_left: padding on the left before first item
  • padding_right: just as padding_right
  • bar_color: the color of the bar itself
  • display: on which display to show bar (main or all)

Adding a simple menubar item (items will appear in the bar in the order they are added)

sketchybar -m add item <name> <position>

where the name should not contain whitespaces, it can be used to further configure the item, which is covered later. The position is the placement in the bar and can be either left, right or center.

Adding a component

sketchybar -m add component <type> <name> <position>

Components are essentially items, but with special properties. Currently there are the component types:

  • title: Showing the current window title,
  • graph: showing a graph,
  • space: representing a mission control space

Changing the properties of an item

sketchybar -m set <name> <property> <value>

where the name is used to target the item with this name. A list of properties is listed below:

  • associated_space: on which space to show this item (can be multiple, not specifying anything will show item on all screens)

  • associated_display: on which displays to show this item (can be multiple, not specifying anything will show item on all displays)

  • label: the label of the item

  • label_font: the font for the label

  • label_color: the color of the label

  • label_padding_left: left padding of label (default: 0)

  • label_padding_right: right padding of label (default: 0)

  • icon: the icon of the item

  • icon_font: the font for the icon

  • icon_color: the color of the icon

  • icon_highlight_color: the highlight color of the icon (e.g. for active space icon)

  • icon_padding_left: left padding of icon (default: 0)

  • icon_padding_right: right padding of icon (default: 0)

  • graph_color: color of the associated graph

  • script: a script to run every update_freq seconds

  • update_freq: time in seconds between script executions

  • click_script: script to run when left clicking on item

  • cache_scripts: If the scripts should be cached in RAM or read from disc every time (values: on, off, default: off)

  • enabled: Set to off deactivates script updated and drawing, reactivate with on (values: on, off, default: on)

  • hidden: Only deactivates drawing and keeps scripts running (values: on, off, default:off)

Changing the default values for all further items

sketchybar -m default <property> <value>

this currently works for the properties:

  • label_font

  • label_color

  • label_padding_left

  • label_padding_right

  • icon_font

  • icon_color

  • icon_padding_left

  • icon_padding_right

  • update_freq

  • cache_scripts

It is also possible to reset the defaults via the command

sketchybar -m default reset

Subscribing items to system events for their script execution

sketchybar -m subscribe <name> <event>

where the events are:

  • front_app_switched: when frontmost application changes (not triggered if a different app of the same window is focused)
  • window_focus: when a window is focused (DEPRECATED, see custom event section)
  • space_change: when the space is changed
  • display_change: when the display is changed
  • title_change: when the title of the window changes (DEPRECATED, see custom event section)
  • system_woke: when the system has awaken from sleep

Creating custom events

This allows to define events which are triggered by a different application (see Trigger custom events). Items can also subscribe to these events for their script execution.

sketchybar -m add event <name>

Triggering custom events

This triggers a custom event that has been added before

sketchybar -m trigger <event>

This could be used to link the powerful event system of yabai to sketchybar by triggering the custom action via a yabai event.

Supplying data for graphs

sketchybar -m push <name> <data>

This pushes the data point into the graph with name name.

Forcing all shell scripts to run and the bar to refresh

sketchybar -m update

Credits

yabai, spacebar, reddit, many more for the great code base and inspiration

Comments
  • Window Tags Broken on Monterey

    Window Tags Broken on Monterey

    According to https://github.com/NUIKit/CGSInternal/blob/master/CGSWindow.h#L69,

    • kCGSStickyTagBit and kCGSIgnoreForExposeTagBit are hi bits
    • kCGSModalWindowTagBit, kCGSDisableShadowTagBit, and kCGSHighQualityResamplingTagBit are lo bits

    I've tested on Monterey, it works. Have no lower versions macOS to test, so I'm not sure if it still works on 'em.

    opened by cxa 22
  • Sketchybar sometimes stops updating when system wakes from sleep

    Sketchybar sometimes stops updating when system wakes from sleep

    I have a clock plugin that updates once per second and sometimes when the machine is awakened from sleep, the clock module no longer updates. This is not unique to the clock plugin but it is the most noticeable example.

    Manually running sketchybar -m —refresh in a terminal does not fix the issue either.

    I have managed to find a work around by adding yabai -m signal --add event=system_woke action="brew services restart sketchybar" to the end of my .yabairc file.

    bug help wanted 
    opened by SxC97 21
  • Can't see unicode characters

    Can't see unicode characters

    Here's the output from my scripts and on the bottom my tmux status bar showing correct characters: image However on SketchyBar i see the '_' character instead for the same script: image

    Is there a setting to enable utf-8? Right now i'm using the default fonts for icons and labels.

    Also thank you for making this awesome bar!

    bug 
    opened by cagdassalur 20
  • Support sending batch messages in a single `sketchybar -m` call

    Support sending batch messages in a single `sketchybar -m` call

    The current method to config SketchyBar is quite slow. It take 2.4 second for the following simple sketchybarrc to finish.

    ~/.config/sketchybar/sketchybarrc
    ############## BAR ##################
    sketchybar -m config height               25
    sketchybar -m config position             top
    sketchybar -m config padding_left         10
    sketchybar -m config padding_right        10
    sketchybar -m config bar_color            0x44000000 #0xaf202020
    
    ############## SCRIPT CACHING ############
    sketchybar -m default cache_scripts on
    
    ############## SPACES ###############
    sketchybar -m default icon_font "Hack Nerd Font:Bold:17.0"
    sketchybar -m default icon_color 0xffffffff
    sketchybar -m default label_font "Hack Nerd Font:Bold:14.0"
    sketchybar -m default label_color 0xffffffff
    sketchybar -m default label_padding_left 4
    sketchybar -m default icon_padding_left 16
    
    sketchybar -m add component space code left
    sketchybar -m set code associated_display 1
    sketchybar -m set code associated_space 1
    sketchybar -m set code icon_font "Hack Nerd Font:Bold:20.0"
    sketchybar -m set code icon 
    sketchybar -m set code icon_highlight_color 0xff48aa2a
    sketchybar -m set code icon_padding_left 0
    sketchybar -m set code label code
    sketchybar -m set code click_script "yabai -m space --focus 1"
    
    sketchybar -m add component space writing left
    sketchybar -m set writing associated_display 1
    sketchybar -m set writing associated_space 2
    sketchybar -m set writing icon_highlight_color 0xfffab402
    sketchybar -m set writing icon 
    sketchybar -m set writing label tex
    sketchybar -m set writing click_script "yabai -m space --focus 2"
    
    sketchybar -m add component space reading left
    sketchybar -m set reading associated_display 1
    sketchybar -m set reading associated_space 3
    sketchybar -m set reading icon_highlight_color 0xff7fe5f0
    sketchybar -m set reading icon 
    sketchybar -m set reading label web
    sketchybar -m set reading click_script "yabai -m space --focus 3"
    
    sketchybar -m add component space entertainment left
    sketchybar -m set entertainment associated_display 1
    sketchybar -m set entertainment associated_space 4
    sketchybar -m set entertainment icon_font "Hack Nerd Font:Bold:19.0"
    sketchybar -m set entertainment icon_highlight_color 0xfffff68f
    sketchybar -m set entertainment icon 
    sketchybar -m set entertainment label idle
    sketchybar -m set entertainment click_script "yabai -m space --focus 4"
    
    sketchybar -m add component space zoom left
    sketchybar -m set zoom associated_display 2
    sketchybar -m set zoom associated_space 5
    sketchybar -m set zoom icon V
    sketchybar -m set zoom icon_padding_left 0
    
    $ bash -c 'time ~/.config/sketchybar/sketchybarrc'
    real	0m2.393s
    user	0m0.632s
    sys	0m1.107s
    

    Simply run sketchybar -m 48 times (same as the sketchybarrc above) takes about the same time:

    $ bash -c 'time (for i in {1..48}; do sketchybar -m >&/dev/null; done)'
    real	0m2.083s
    user	0m0.628s
    sys	0m1.092s
    

    I suggest add a new batch message to send all messages in a single fork:

    #!/bin/sh
    sketchybar -m batch <<EOF
    config height               25
    config position             top
    config padding_left         10
    config padding_right        10
    config bar_color            0x44000000 #0xaf202020
    EOF
    
    opened by azuwis 17
  • shadows are restricted to inside the box of the item

    shadows are restricted to inside the box of the item

    Configured with background shadow enabled, angle as 30, distance as 10, and color as all white.

    Observe that the shadow does not go outside of the box of the item, even though it should. Otherwise, the shadow won't work properly.

    CleanShot 2022-06-14 at 15 56 25

    opened by es183923 10
  • Blinking animation

    Blinking animation

    Hi, I notice an active application display blinking on SketchyBar when switching work space. Btw, I used base on your experimental dotfile branch.

    https://user-images.githubusercontent.com/26241915/193386563-1297565c-56d9-409f-ae72-94f2ca3a1e7f.mov

    bug available on master 
    opened by AjayShanker-geek 9
  • Switching Spaces is significantly slower when Sketchybar is running

    Switching Spaces is significantly slower when Sketchybar is running

    Heya,

    happening on both my Mac Laptops. M1 Pro / M2. Whenever I have sketchybar running switching between spaces is significantly slower (like up to 2-3s delay with the default config in the repo).

    If I remove spaces / calendar... all the default widgets - it does speed up but still slower than without running sketchybar :/

    any ideas?

    OS: macOS 12.5 21G72 arm64 Host: Mac14,2 Kernel: 21.6.0 Uptime: 1 day, 1 hour, 16 mins Packages: 171 (brew) Shell: zsh 5.8.1 Resolution: 2048x1332@2x DE: Aqua WM: yabai Terminal: tmux CPU: Apple M2 GPU: Apple M2 Memory: 2974MiB / 16384MiB

    bug available on master 
    opened by AlecSchneider 9
  • Aliases on Catalina: No screen recording prompt shown

    Aliases on Catalina: No screen recording prompt shown

    I can't seem to get sketchybar to request screen recording permissions. I tried using the example setup from https://github.com/FelixKratz/SketchyBar/discussions/47#discussion-3587958 but the "Control Center, *" items do not appear on the bar and sketchybar keeps telling "could not retrieve window details." when run from terminal. System language is Finnish if this might have something to do with the problem.

    bug 
    opened by Verneri 9
  • Top-level menus (File, Edit, View, etc.)

    Top-level menus (File, Edit, View, etc.)

    Is it possible for SketchyBar to draw functioning top-level menus? I've seen apps like menuwhere recreate them successfully, but unfortunately menuwhere only allows you to access them via a right-click menu as opposed to a docked/floating bar.

    enhancement 
    opened by sealevelcain 8
  • Native ARM Binary

    Native ARM Binary

    I want to move to a universal binary with both x86_64 and arm64 instructions, but have no ARM CPU at hand, I have implemented this on the branch arm64 can someone test it?

    opened by FelixKratz 8
  • Feature Requset: Enable / Disable Plugins without Restarting

    Feature Requset: Enable / Disable Plugins without Restarting

    I know you are refactoring somethings currently, but I thought I would mention that a way to remove or add plugins on the fly would be great. I could write conditional logic into the the config and plugin scripts, but for some tasks it gets a little messy.

    Example 1. Turn on/off X plugin at 1600 every day. Example 2. Turn on/off Y plugin with SKHD hotkey. Example 3. Some program opens, remove xyz plugins and add abc plugins. Example 4. Reminders plugin count is 0 remove itself from the bar. Example 5. Additional Space is created add a new default space icon and label.

    These are just some ideas, the bar is great as is though. Thanks for you work on this!

    opened by typkrft 8
  • Add slider component

    Add slider component

    This feature should make https://github.com/FelixKratz/SketchyBar/discussions/12?sort=new#discussioncomment-3833532 less sketchy, but would look fairly similar with some more customization options.

    How I imagine the slider component to work is the following:

    • The slider would be a new component just as the alias, graph, bracket or space and would take an additional <length> parameter at creation
    • Just as the other components the slider would get its own subdomain for slider specific settings
    • The slider would be composed from some basic building blocks:
      • A percentage property which would be a number between 0 and 100 and sets the progress of the slider
      • A knob, which would be a simple element with all <text_property>s just as the icon and label, such that it can hold a symbol with font information, a background etc. And would automatically be placed centered at the current slider percentage position
      • A background to style the slider backdrop with all <background_property>s
      • A color to style the progression of the slider
      • Just as for the alias and graph components the slider would be sandwiched between the regular icon and label (which are deactivated by default)

    Optionally the slider could be drawn vertically, by setting slider.horizontal=off and it would be possible to make the slider send a corresponding percentage for a mouse.clicked event to its script, such that it would be possible to modify the slider value via mouse interaction. It would also be possible to include a new mouse event for mouse dragging to allow dragging the slider...

    enhancement available on master 
    opened by FelixKratz 1
Releases(v2.12.3)
  • v2.12.3(Dec 30, 2022)

    Fixes

    • Exclude SketchyBar windows from being managed by the macOS Ventura WindowManager process
    • Pass error responses (all [!] responses) to stderr instead of stdout
    • Activate Transactional Window System for all macOS versions
    • Fix various potential underflow/overflow problems

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.12.2...v2.12.3

    Source code(tar.gz)
    Source code(zip)
  • v2.12.2(Dec 22, 2022)

    This release switches the window system to a fully async transactional system, i.e. less communication overhead between SketchyBar and the WindowServer should be the result.

    Improvements

    • Transactional Windowing (macOS 13+ only)

    Fixes

    • The bar is now hidden when entering expose

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.12.0...v2.12.2

    Source code(tar.gz)
    Source code(zip)
  • v2.12.0(Dec 15, 2022)

    This release focuses on improving the ancient bracket system. Brackets are now very flexible and can be used to bracket together arbitrary items in the bar, even across different bar positions and automatically decide their bounds based on the member list. See the updated bracket documentation for more info.

    Improvements

    • Brackets are now fully flexible and work across all positions
    • Bracket member order does not matter anymore
    • Brackets now support regexes as members
    • The command-loop is no longer stopped when an invalid item name is found, i.e. following commands are still executed

    Fixes

    • Fix center items not actually being centered when a bar margin is set

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.11.2...v2.12.0

    Source code(tar.gz)
    Source code(zip)
  • v2.11.2(Nov 30, 2022)

  • v2.11.1(Nov 13, 2022)

    Fixes

    • Fixes a bug where the bar could be blank after returning from a fullscreen app (#285 #266)
    • Fixes an animation bug on Ventura

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.11.0...v2.11.1

    Source code(tar.gz)
    Source code(zip)
  • v2.11.0(Nov 2, 2022)

    Fixes

    • Fix compatibility with macOS Ventura (#272, #255)
    • Fixes memory corruption on client in rare cases
    • space_change $INFO formatting fix for multiple displays (#275, #273)

    Additions

    • background.clip property to clip the bar with an item background (#276)

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.10.1...v2.11.0

    Source code(tar.gz)
    Source code(zip)
  • v2.10.1(Oct 14, 2022)

    Fixes

    • Fixes a memory leak occuring in the volume_change event
    • Fixes compilation on macOS Big Sur (#262)

    Additions

    • brightness_change event that fires on screen brightness changes

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.10.0...v2.10.1

    Source code(tar.gz)
    Source code(zip)
  • v2.10.0(Oct 11, 2022)

    Changes

    • Pending animations are cancelled if a non-animated --set command is received
    • Animations can only be chained in the same call, new animation requests of the same property will now cancel the animation queue and immediately begin the new animation from the last animation state.

    Fixes

    • Properly respect the bounds of macOS menu bar on arm macs
    • notch_offset is not added to bottom bars

    Additions

    • allow chaining dynamic width animations for texts
    • add volume_change event
    • allow negating all <boolean> arguments, e.g. off = !on

    Experimental

    • left and right bar layouts (#240)

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.9.1...v2.10.0

    Source code(tar.gz)
    Source code(zip)
  • v2.9.1(Sep 30, 2022)

    Fixes

    • Exit codes have been fixed (#254)

    Additions

    • Allow animating popup properties (#252)
    • Allow animating to/from a dynamic width, e.g.
    sketchybar --animate tanh 30 --set <name> width=0 width=dynamic
    

    will animate the width of item <name> to zero and then back to dynamic width.

    • Allow triggering space_change and display_change events, to force an update for the space components, e.g.:
    yabai -m space 1 --swap 3 && sketchybar --trigger space_change
    

    will now update the space layout correctly.

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.9.0...v2.9.1

    Source code(tar.gz)
    Source code(zip)
  • v2.9.0(Sep 20, 2022)

    Fixes

    • Space Components would not (de)select properly when a display was (removed) connected.
    • Smoother tanh animation function

    Additions

    • Proper exit codes when an error occurs in a command
    • mach_helper property to register a helper program for mach messages from sketchybar (super low latency) when an event occurs (example see https://github.com/FelixKratz/SketchyBarHelper).
    Source code(tar.gz)
    Source code(zip)
  • v2.8.6(Aug 26, 2022)

    Additions

    • New option active for the associated_display setting. This attaches an item to the active display.

    Fixes

    • Overhaul of the redraw detection logic, leading to lower CPU utilization in certain cases and improves reactiveness of associated items

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.8.5...v2.8.6

    Source code(tar.gz)
    Source code(zip)
  • v2.8.5(Aug 24, 2022)

    Additions

    • The push domain now accepts multiple values, e.g.
    sketchybar --push <name> <value> ... <value>
    
    • Added a proper error message when screen recording permissions are not given while querying default menu items.

    Fixes

    • Fixes a critical bug regarding associated items with the bar not being sticky.
    • Improvements to the performance

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.8.4...v2.8.5

    Source code(tar.gz)
    Source code(zip)
  • v2.8.4(Aug 19, 2022)

    Fixes

    • Fix segfault if regex has no match
    • Always order sketchybar one level below normal windows if topmost=off
    • Stabilize against uint32_t underflow

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.8.3...v2.8.4

    Source code(tar.gz)
    Source code(zip)
  • v2.8.3(Aug 12, 2022)

    Fixes

    • Fixes brackets not working in horizontal popups.
    • Fixes #230

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.8.2...v2.8.3

    Source code(tar.gz)
    Source code(zip)
  • v2.8.2(Aug 3, 2022)

  • v2.8.1(Jul 30, 2022)

    New

    • The bar is no longer 'sticky' by default, since it messes with certain system animations (#220), thus the new sticky bar property is available.

    If the bar is set to be sticky it will be always rendered on all space (as it was prior to this release), otherwise it will only be rendered on the active space and moved after the space has been changed. Because of the known issue of sluggish space change animations with a sticky bar I suggest to only use the sticky bar if you have disabled the space change animations (via yabai).

    Fixes

    • Fixes an issue with clicks leading to a SIGSEGV in rare cases (#219)
    • Fixes an issue with slow space change animations due to the WindowServer handling sticky windows differently (#220)

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.8.0...v2.8.1

    Source code(tar.gz)
    Source code(zip)
  • v2.8.0(Jul 20, 2022)

    This release contains a rework of the query system. The JSON structure of the query system has changed in this release, so if you have been relying on this in your plugins this is a minor breaking change, which is easy to fix.

    New

    • Query System now supports all properties and they are returned in the same grouping as seen in the documentation. Using jq, this allows to access the properties almost in the same syntactical way as they are set. (#55)

    Fixes

    • Fix a bug with bracket paddings (#211)
    • Fix a bug with click registration in brackets (#216)
    • Dynamically assigned spaces are now fully disabled if they are not available

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.7.4...v2.8.0

    Source code(tar.gz)
    Source code(zip)
  • v2.7.4(Jun 29, 2022)

    Due to an oversight the bar height was not applied properly in some cases. This fixes it.

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.7.3...v2.7.4

    Source code(tar.gz)
    Source code(zip)
  • v2.7.3(Jun 27, 2022)

    Additions & Improvements

    • items and popups can now have their own blur_radius (#201)
    • app icons can be displayed for all images by supplying app.<bundle-id> as an image (#204)
    • Space components now automatically associate and reassociate their display when no associated_display is set, always showing the space item on the correct display
    • New minimal default config

    Fixes

    • Occasional white flickering fixed (#207)
    • Fixed associated_display property not applying instantaneously (#206)

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.7.1...v2.7.3

    Source code(tar.gz)
    Source code(zip)
  • v2.7.2(Jun 27, 2022)

    Additions & Improvements

    • items and popups can now have their own blur_radius (#201)
    • app icons can be displayed for all images by supplying app.<bundle-id> as an image (#204)
    • Space components now automatically associate and reassociate their display when no associated_display is set, always showing the space item on the correct display
    • New minimal default config

    Fixes

    • Occasional white flickering fixed (#207)
    • Fixed associated_display property not applying instantaneously (#206)

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.7.1...v2.7.2

    Source code(tar.gz)
    Source code(zip)
  • v2.7.1(Jun 16, 2022)

    When an item had no left and right paddings, the text could have been truncated due to an off-by-one error.

    For the full changes from v2.6.0 to v2.7.0 please see: https://github.com/FelixKratz/SketchyBar/releases/tag/v2.7.0

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.7.0...v2.7.1

    Source code(tar.gz)
    Source code(zip)
  • v2.7.0(Jun 15, 2022)

    This update completely reworks the entire drawing logic and should lead to significant 3-7x speed improvements in animations and reduce the idle CPU load on a not too busy bar to a level that is barely noticeable.

    Improvements and Additions

    • Significant performance improvements in all use cases, but especially in animations

    • popup.background.image can now be used and the items are aligned accordingly, e.g. see this Spotify widget, where I have the album art below the controls in a popup: Screen Shot 2022-06-15 at 23 31 08

    • popup.background.shadow is handled properly now.

    • New mouse.entered.global and mouse.exited.global events

    • Better error messages for all configuration commands

    • Add -fno-common flag for compilation to fix problems with new compiler standards

    • Key-frame support for animations: https://felixkratz.github.io/SketchyBar/config/animations#perform-multiple-animations-chained-together

    • Add notch_offset and notch_width options to --bar domain, along with positions q = left of the notch and e = right of the notch to properly account for notched internal displays

    • New animation function: quadratic

    Fixes

    • Fixes a slight memory leak when querying default_menu_items

    • Fixes a crash when an NSDistributedNotificationCenter event would not sent a proper JSON object

    • Major Performance Optimizations by @FelixKratz in https://github.com/FelixKratz/SketchyBar/pull/191 Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.6.0...v2.7.0

    Source code(tar.gz)
    Source code(zip)
  • v2.6.0(May 28, 2022)

    New

    • Animation System for all properties: https://felixkratz.github.io/SketchyBar/config/animations

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.5.2...v2.6.0

    Source code(tar.gz)
    Source code(zip)
  • v2.5.2(May 17, 2022)

    The last release has left the topmost property not working properly.

    Fixes:

    • Fix topmost not working
    • Window updates get frozen more consistently, which should eliminate flickering on select property changes

    New:

    • Experimental Animation System (#148)

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.5.1...v2.5.2

    Source code(tar.gz)
    Source code(zip)
  • v2.5.1(May 16, 2022)

    New

    • Popup Cell Height can now be changed (popup.height)
    • Ignore Space/Display Association via new property (ignore_association)
    • Space Change Event now has a payload in $INFO
    • New documentation website

    Fixes

    • Fix a SEGV when additional trigger variables had no value
    • Bar no longer redraws if a text property is set but not changed
    • Bounding Rects are removed safely
    • Internal Refactoring
    • Drop CMake as a brew requirement
    • Fix brew compatibility for macOS < 11

    This release has bricked the topmost bar setting #185, it has been fixed since and will be repaired in the next release.

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.5.0...v2.5.1

    Source code(tar.gz)
    Source code(zip)
  • v2.5.0(Mar 2, 2022)

    This release upgrades the internal messaging from unix sockets to mach messages. Everything should be a bit faster and more reliable.

    Additions:

    • popup background shadows
    • alias color override
    • XNU mach IPC

    Fixes:

    • Fixed some slow memory leaks

    Deprecations:

    • the cache_scripts property is deprecated. All scripts must now be chmod +xed, this was not necessary prior when setting the cache_scripts property to true.

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.4.3...v2.5.0

    Source code(tar.gz)
    Source code(zip)
  • v2.4.3(Jan 23, 2022)

    • Fixes the bounding rect logic for popups
    • Backgrounds can have a y_offset
    • Negative margin now possible
    • Regex Support for --remove

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.4.2...v2.4.3

    Source code(tar.gz)
    Source code(zip)
  • v2.4.2(Jan 18, 2022)

    In the last release the left and right background padding was wrongly added to the custom width of left items, leading to displacements in the following items.

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.4.1...v2.4.2

    Source code(tar.gz)
    Source code(zip)
  • v2.4.1(Jan 16, 2022)

    New Features:

    • Some events now pass the $INFO variable to scripts with additional information
    • Added the align property to items such that the content can be aligned if the width is set to be larger than the content width (also with background images)

    Bug Fixes:

    • Fixes to images
    • Fixes to bounding rects
    • Fixes right items with width bigger than their display width
    • Fixes the width calculation for constant width items

    Full Changelog: https://github.com/FelixKratz/SketchyBar/compare/v2.4.0...v2.4.1

    Source code(tar.gz)
    Source code(zip)
  • v2.4.0(Jan 4, 2022)

Owner
Felix Kratz
Felix Kratz
By putting in a lot of speed, the speed sequence is sorted and divided, three types of speed interval distribution maps are generated.(including broken line graph,histogram and curve graph)

Auto-drawing-speed-range-map By putting in a lot of speed, the speed sequence is sorted and divided, three types of speed interval distribution maps a

wellwellAllwen 4 May 14, 2022
My_Shell is a user-defined interactive shell written in C that works similar to the original shell in linux

MY_SHELL Overview My_Shell is a user-defined interactive shell written in C that works similar to the original shell and it can execeute many of the l

Greeshma 1 Nov 22, 2021
Phage-Host Interaction Search Tool

PHIST Phage-Host Interaction Search Tool A tool to predict prokaryotic hosts for phage (meta)genomic sequences. PHIST links viruses to hosts based on

REFRESH Bioinformatics Group 19 Nov 25, 2022
Public domain, header-only file to simplify the C programmer's life in their interaction with strings

SCL_String Public domain, header-only file to simplify the C programmer's life in their interaction with strings NOTE: This library is still under con

null 5 Aug 22, 2022
Utility to install kexts, Frameworks and PrivateFrameworks in the System of macOS. For macOS Monterey 12 and Big Sur 11

Command-Line-SnapShot-Mounter Credit: chris1111 Apple This utility uses the macOS terminal Command Line SnapShot Mounter is an utility that allows you

chris1111 23 Jan 8, 2023
A gazebo actor plugin that utilizes the map of the environment and graph search methods to generate random actor trajectories that don't pass through walls, furniture, etc.

Gazebo-Map-Actor-Plugin A gazebo actor plugin that utilizes the map of the environment and graph search methods to generate random actor trajectories

Yasin Sonmez 11 Dec 23, 2022
Shell program written in C to implement various system calls, with support of executing commands, output redirection and signals.

Use ./shell command to start the shell. $<space>path/executable to run the executable(please specify the path without beginning it with "/"). Eg. type

Ayuj Panchal 1 Nov 15, 2021
A guide that teach you build a custom version of Chrome / Electron on macOS / Windows / Linux that supports hardware / software HEVC decoding.

enable-chromium-hevc-hardware-decoding A guide that teach you build a custom version of Chrome / Electron on macOS / Windows / Linux that supports har

Sta Zhu 778 Jan 1, 2023
Wayfire plugin for handling touchpad gestures globally in a layer-shell surface

wf-globalgestures Global touchpad gestures plugin for Wayfire: implements a special protocol (also in this repo) that lets clients request that a part

null 3 Oct 3, 2022
Macos-arm64-emulation - A guide for emulating macOS arm64e on an x86-based host.

macos-arm64-emulation Use the following guide to download and configure all of the necessary tools and files for emulating the macOS arm64e kernel. Th

Cylance 233 Jan 7, 2023
A desktop (supports macOS and Windows) implementation of uni_links plugin.

uni_links_desktop A desktop (supports macOS and Windows) implementation of uni_links plugin. uni_links_desktop Platform Support Quick Start Installati

LeanFlutter 18 Dec 2, 2022
A cross-platform (Android/iOS/Windows/macOS) cronet plugin for Flutter via `dart:ffi`

cronet_flutter A cross-platform (Android/iOS/Windows/macOS) cronet plugin for Flutter via dart:ffi

null 25 Dec 11, 2022
GreenLambert macOS IDA plugin to deobfuscate strings

Delambert An IDA plugin to deobfuscate strings from The Lamberts macOS malware sample af7c395426649c57e44eac0bb6c6a109ac649763065ff5b2b23db71839bac655

fG! 9 Mar 14, 2022
macOS Quick Look plugin for Matroska `.mka` files

qlmka: A macOS Quick Look plugin to display Matroska .mka covers This plugin adds support for showing thumbnails of Matroska .mka files in macOS Finde

Remko Tronçon 20 Sep 30, 2022
Kexts enabling native support for Intel Bluetooth chipsets in macOS.

IntelBluetoothFamily Kexts enabling native support for Intel Bluetooth chipsets in macOS. Most of the code is complete, and I am now in the testing ph

null 136 Dec 19, 2022
mini-plugin host as plugin

DISTRHO Ildaeil DISTRHO Ildaeil is mini-plugin host working as a plugin, allowing one-to-one plugin format reusage. Load a VST2 plugin inside a LV2 ho

DISTRHO 58 Dec 12, 2022
Hobbyist Operating System targeting x86_64 systems. Includes userspace, Virtual File System, An InitFS (tarfs), Lua port, easy porting, a decent LibC and LibM, and a shell that supports: piping, file redirection, and more.

SynnixOS Epic Hobby OS targeting x86_64 CPUs, it includes some hacked together functionality for most essential OSs although, with interactivity via Q

RaidTheWeb 42 Oct 28, 2022
Filter driver which support changing DPI of mouse that does not support hardware dpi changing.

Custom Mouse DPI Driver 하드웨어 DPI 변경이 불가능한 마우스들의 DPI 변경을 가능하게 하는 필터 드라이버 경고: 해당 드라이버는 완전히 테스트 되지 않았습니다 Install 해당 드라이버는 서명이 되어있지않습니다. 드라이버를 사용하려면 tests

storycraft 4 Sep 23, 2022
The ultimate battery tester with ESR measurement and discharge graph. Based on an Arduino Nano and a 1602 LCD.

Ultimate-Battery-Tester Version 1.0.0 Features Measures the ESR (equivalent series resistance) of the battery. This is an idicator of the health of th

Armin 11 Dec 7, 2022