Script that displays the status of your microphone, camera, location and screen sharing with colored dots along with which apps are using them.
- Microphone Status: Shows a green dot when any microphone is in use.
- Camera Status: Shows an orange dot when any camera is active.
- Location Status: Shows a blue dot when location services are in use.
- Screen Status: Shows a purple dot when screen sharing is active.
- Easy to Customize: Add new statuses or change colors easily. The functionality is handled by a simple Bash script, and styling is managed with CSS.
The backend script polls status information every 3 seconds by default. It provides formatted text, tooltips, and styling classes, which you can use with any bar to display.
pipewirev4l2loopback-dkmsjqdbus
-
Download the script and place it into your scripts folder: privacy_dots.sh
-
Add this module to your waybar config:
- Add this module style to
~/.config/waybar/style.css(optional):
#custom-privacydots {
padding: 0 10px;
font-size: 12px;
letter-spacing: 3px;
}-
This fork improves the original script by adding an actually working location usage tracker and rewriting the camera tracker, which can now be triggered even by a virtual webcam.
-
As I use Waybar, guide for it is the only one that's present.
-
I don't have a laptop on which I can test this script and I'm forced to rely on using my phone as camera to test the camera tracker and
/usr/lib/geoclue-2.0/demos/agentas a geolocation trigger. I can not guarantee that it fully works with the actual hardware modules. -
All indicators tested and proved to be working with
OBS,gpu-screen-recorder,DiscordandTelegram. Screen sharing indicator does not work when sharing a specific tab in the web version of Discord in the same browser.
(PRs are more than welcome btw)
- Add more installation guides for different bars
- Add which apps use those features to the tooltip
- Add an indicator if screen is being recorded/shared

{ "custom/privacydots": { "exec": "/path/to/script/privacy_dots.sh", "return-type": "json", "interval": 3, "format": "{text}", "tooltip": true, "escape": false, "markup": "pango" } }