* feat(freebsd): add comprehensive native FreeBSD support
* Update BatteryService.qml
* Add battery probe completion and fallback updates
* Add isVideoSource function and update PwObjectTracker filter
* Add isPipewireVideoSource function to AudioService
Added a function to check if a Pipewire node is a video source.
* Refactor video source check to use AudioService
* Remove unnecessary call in BatteryService.qml
* Add call to updateFreeBsdBatteryFallback on completion
* Simplify AudioService by eliminating redundant bindings
Removed unnecessary bindings in the AudioService loader to streamline the loading process.
* Improve error handling in CheckUpdates function
Handle specific exit error for package upgrade check.
* Enhance FreeBSD network detection logic
* Implement FreeBSD Wi-Fi hardware discovery in Initialize
Added FreeBSD Wi-Fi hardware discovery and updated initialization logic to handle cases where no wpa_supplicant control socket is found.
* Implement Ethernet state monitoring in StartMonitoring
Added monitoring for Ethernet state updates in StartMonitoring function.
* Add Ethernet management functions to backend
* Remove unimplemented Ethernet control methods
Removed unimplemented Ethernet control methods from WpaSupplicantBackend.
* Implement SetWiFiEnabled method for WiFi control
Add error handling and state management for WiFi control
* Update core/internal/server/network/backend_wpa_ethernet.go
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
* Implement Ethernet monitoring in WpaSupplicantBackend
* Refactor startEthernetMonitor and add debounce logic
Refactor the startEthernetMonitor function to improve readability and maintainability. Introduce a debounce mechanism for processing relevant FreeBSD route events.
* Reorder import statements in backend_pkg.go
* Remove unnecessary blank line in backend_wpa_ethernet.go
* Implement FreeBSD audio polling based on UI visibility
Introduce a polling mechanism for FreeBSD audio device updates based on visibility of UI elements.
* Add readonly freeBsdPollingRequested property and optimize polling
Introduce a readonly property to determine if FreeBSD polling is requested based on various UI conditions. Update command execution to prioritize polling efficiency.
* Simplify freeBsdPollingRequested logic
Removed unnecessary conditions from freeBsdPollingRequested property.
* Implement reference counting for battery consumers
Added reference counting to manage battery information consumers and updated related functions for better battery state handling.
---------
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Apps capturing the screen through PipeWire, such as OBS, create a live
video input stream, which the camera check counted as camera use. Skip
streams tagged with the Screen media role.
Turn on do not disturb while a screen share is active so notification
popups and their contents stay off the shared screen. The unread dot and
the existing dnd bypasses are unaffected.
Detection reuses the screen sharing privacy indicator: niri cast ipc,
otherwise pipewire and xdg-desktop-portal. Neither source says when it
has finished reporting, so a share reading as gone is only acted on once
it stays gone for four seconds. Engaging stays immediate, and turning the
setting off releases right away since that is a user action rather than a
detection guess.
Turning dnd off by hand during a share is remembered against the sources
that were sharing at the time, so it holds for that share and across a
shell reload. A share started after that one has ended gets a fresh
decision.
Co-authored-by: Claude Opus 5 <[email protected]>
Screen sharing was not detected by PrivacyService on Niri because:
1. Niri creates the screencast as a Stream/Output/Video node, but
screensharingActive only checked PwNodeType.VideoSource nodes.
2. looksLikeScreencast() only inspected application.name and
node.name, missing Niri's node which has an empty application.name
but identifies itself via media.name (niri-screen-cast-src).
Add Stream/Output/Video to the checked media classes and include
media.name in the screencast heuristic. Also add a forward-compatible
check for NiriService.hasActiveCast for when Niri gains cast tracking
in its IPC.
Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
* ci: change to prek for pre-commit
* refactor: fix shellcheck warnings for the scripts
* chore: unify whitespace formatting
* nix: add prek to dev shell