Skip to content

Waybar Integration

emeet-pixyd provides JSON output formatted for Waybar custom modules.

Add a custom module to your Waybar config:

{
"custom/emeet-pixy": {
"exec": "emeet-pixy waybar",
"format": "{}",
"interval": 5,
"tooltip": true,
"on-click": "emeet-pixy toggle-privacy",
"on-click-right": "emeet-pixy toggle-auto"
}
}

The waybar command outputs a JSON object:

{
"text": "\uf030 CAM",
"tooltip": "EMEET PIXY: tracking\nAudio: nc\nAuto: full",
"class": "custom-camera tracking"
}

The text field combines a Font Awesome icon with a short label. The class field is always prefixed with custom-camera and includes the camera state. When a call is detected, in-call is appended to the class; when the device answers the battery queries, charging or discharging is appended instead.

Camera State Icon Text CSS Class
Tracking \uf030 CAM tracking
Idle \uf03d IDLE idle
Privacy \uf011 OFF privacy
Offline \uf00d --- offline
#custom-emeet-pixy.custom-camera.tracking {
color: #10b981;
}
#custom-emeet-pixy.custom-camera.idle {
color: #fbbf24;
}
#custom-emeet-pixy.custom-camera.privacy {
color: #f87171;
}
#custom-emeet-pixy.custom-camera.offline {
color: #78716c;
}
#custom-emeet-pixy.custom-camera.in-call {
text-decoration: underline;
}
#custom-emeet-pixy.custom-camera.charging {
color: #34d399;
}
#custom-emeet-pixy.custom-camera.discharging {
opacity: 0.9;
}

The tooltip shows a multi-line summary:

EMEET PIXY: tracking
Audio: nc
Auto: full

When a call is detected, a fourth line is appended:

In call: yes

When the device answers the official battery queries, a Battery: 87% (charging) line is appended and the JSON object carries an additive battery field (omitted otherwise — absence is an expected outcome, not an error).

Common click mappings:

Action Command
Left click emeet-pixy toggle-privacy
Right click emeet-pixy toggle-auto
Middle click emeet-pixy center
Scroll up emeet-pixy zoom rel+10
Scroll down emeet-pixy zoom rel-10

The waybarJSON struct is optimized for low allocation count — 7 allocations and ~334ns per call.