Skip to content

A header for C/C++ to directly communicate with SketchyBar

License

Notifications You must be signed in to change notification settings

FelixKratz/SketchyBarHelper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 

Repository files navigation

SketchyBar Helper

This demo implementation shows how to directly communicate with SketchyBar from C or C++ to create advanced and fast helper programs.

Sending Messages to SketchyBar

The relevant function to send messages to SketchyBar is defined in the sketchybar.h header:

char* sketchybar(char* message);

it takes a message, e.g. "--query bar", and returns the response from sketchybar.

Receiving Events from SketchyBar (SketchyBar >= v2.9.0)

Additionally you can run the event server, which makes the helper listen for event calls from SketchyBar:

void event_server_begin(mach_handler handler, char* mach_helper);

where the handler is a function pointer to a function where all events are handled:

void handler(env env);

and the mach_helper string is used to register the helper.

In SketchyBar (starting from v2.9.0) the helper needs to be registered for an item, e.g

sketchybar --set <name> mach_helper=<string>

where the string is the same as used to register the helper.

Note: The helper must run before the mach_helper property in SketchyBar is set.

Compile

To compile the example run:

clang -std=c99 helper.c -o helper

You could decide to copy the helpers source code to the sketchybar config and compile and run it automatically in sketchybarrc:

HELPER=git.felix.helper
killall helper
cd $HOME/.config/sketchybar/helper && make
$HOME/.config/sketchybar/helper/helper $HELPER &

Example

Run the binary

./helper test

and add an item to your sketchybar like so:

sketchybar --add item front_app_mach left \
           --set front_app_mach mach_helper=test \
           --subscribe front_app_mach front_app_switched

and note how the item communicates with the helper to handle the front_app_switched event

About

A header for C/C++ to directly communicate with SketchyBar

Topics

Resources

License

Stars

Watchers

Forks

Languages