No description
Find a file
2021-08-14 21:36:15 +02:00
images added image 2021-08-14 02:03:51 +02:00
plugins add script for testing of system event subscription 2021-08-14 21:36:08 +02:00
src add system event subscribe syntax 2021-08-14 21:32:25 +02:00
.gitignore working prototype 2021-08-10 00:08:31 +02:00
makefile better graph component 2021-08-13 23:24:41 +02:00
README.md Update README.md 2021-08-14 21:33:27 +02:00
sketchybarrc add system event subscribe syntax 2021-08-14 21:32:25 +02:00

SketchyBar

This is a rewrite of the spacebar project, which itself is a rewrite of the statusbar code from yabai. What I have added:

  • 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
  • Relocate all visible components of the bar (even spaces or the window title, etc.)
  • 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, window focused, etc.) for their refresh action (like in yabai)
  • ... feel free to explore my sketchybarrc file for more details on the options

I have many more plans for the project:

  • Cache the scripts in RAM to reduce I/O operations
  • Make the associated_space / associated_display properties more powerful by allowing to associate to more than one screen/display
  • Make application specific widgets with associated_app argument (e.g. when gvim is open show the vim mode indicator in the status bar)
  • Fix the currently static positioning of the bar
  • A y_offset property for all items to create (in combination with the nospace modifier) vertically stacked labels
  • Add on_click events for the widgets
  • Create more plugins
  • ......

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 run

make install
ln ./bin/sketchybar /usr/local/bin/sketchybar

Now you can create you configuration inside of $HOME/.config/sketchybar/sketchybarrc and finally run the bar via

sketchybar

If you want to use 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.

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