Auto Modes
emeet-pixyd supports four auto-management strategies, configured via EMEET_PIXYD_AUTO or the NixOS auto option.
Mode Reference
Section titled “Mode Reference”| Mode | On call start | On call end |
|---|---|---|
full (default) |
Face tracking + noise cancellation + PipeWire source switch | Privacy mode |
tracking-only |
Face tracking | Privacy mode |
privacy-only |
Nothing | Privacy mode |
off |
— (manual mode, see below) | — |
Changing Modes
Section titled “Changing Modes”emeet-pixy auto full # Full automationemeet-pixy auto tracking-only # Just trackingemeet-pixy auto privacy-only # Just privacy on call endemeet-pixy auto off # Disable all automationemeet-pixy auto # Show current modeemeet-pixy auto-on # Shortcut: set to fullemeet-pixy auto-off # Shortcut: set to offemeet-pixy toggle-auto # Toggle between off and fullEnvironment Variable
Section titled “Environment Variable”EMEET_PIXYD_AUTO=tracking-only emeet-pixydLegacy values true/1 (maps to full) and false/0 (maps to off) are still accepted for backward compatibility.
NixOS Module
Section titled “NixOS Module”hardware.emeet-pixy.auto = "full";How Call Detection Works
Section titled “How Call Detection Works”The daemon scans /proc/*/fd every 2 seconds (configurable) for processes holding the video device open. It excludes itself and its own descendants to avoid false positives.
Detection is debounced — by default, 3 consecutive cycles must agree before a state change is triggered. This prevents flicker from apps that briefly probe the camera.
| Setting | Default | Environment Variable |
|---|---|---|
| Poll interval | 2s |
EMEET_PIXYD_POLL_INTERVAL |
| Debounce count | 3 |
EMEET_PIXYD_DEBOUNCE_COUNT |
With defaults, a call start is detected within ~6 seconds and a call end within ~6 seconds.
Call Lifecycle
Section titled “Call Lifecycle”On Call Start (full mode)
Section titled “On Call Start (full mode)”- Face tracking enabled via HID
- Audio mode set to noise cancellation (
nc) via HID - PipeWire default source switched to PIXY microphone via
wpctl - Desktop notification sent via
notify-send
On Call End (full mode)
Section titled “On Call End (full mode)”- Camera enters privacy mode (hardware lens shutter) via HID
- PipeWire default source restored to previous
- Desktop notification sent
Manual Mode (off)
Section titled “Manual Mode (off)”off is the manual mode: the /proc call-detection monitor is disabled
entirely — the daemon never scans for processes using the camera, so whatever
mode you set (tracking, idle, privacy) persists until you change it. No app
needs to hold the camera open for tracking to stay active.
Your mode even survives reboots, replugs, and camera power cycles: the camera resets itself to its boot default when it loses power, and the daemon detects this on startup or hotplug and re-applies your persisted mode (so privacy mode physically re-blocks the lens after a power cut). Audio and gesture settings are adopted from the hardware on replug instead.
This fits headless or on-demand setups, e.g. a Home Assistant voice/vision assistant that toggles tracking/privacy on demand and grabs focused snapshots via FFmpeg without the daemon reacting to each capture:
emeet-pixy auto-off # or: EMEET_PIXYD_AUTO=off / NixOS: auto = "off"emeet-pixy track # tracking stays on, no capture requiredemeet-pixy privacy # physically block the lens when idleYou can still control everything manually via CLI, web UI, or HTTP API — auto mode only affects the automatic call-start/call-end behavior.
Toggle Behavior
Section titled “Toggle Behavior”The toggle-auto command cycles between off and full. If auto mode is any value other than off, toggling sets it to off. If it’s off, toggling sets it to full.
Where to go next
Section titled “Where to go next”- Call Detection — how calls are actually detected via
/proc - Configuration — tune the poll interval and debounce count
- Web UI — toggle modes from the browser
- CLI Reference — every auto command
- Quick Start — see it in action end-to-end