Compare commits

...

2 commits

Author SHA1 Message Date
Damocles
69ee00004a increase default screen corner radius to 20 2026-04-12 18:59:41 +02:00
Damocles
7e5afebada privacy: detect active video streams only, not hardware sources 2026-04-12 18:58:16 +02:00
2 changed files with 7 additions and 6 deletions

View file

@ -7,12 +7,13 @@ Row {
id: root id: root
spacing: M.Theme.moduleSpacing spacing: M.Theme.moduleSpacing
readonly property bool _screenShare: { // Only detect active client streams, not hardware sources/devices
readonly property bool _videoCapture: {
if (!Pipewire.nodes) return false; if (!Pipewire.nodes) return false;
for (const node of Pipewire.nodes.values) { for (const node of Pipewire.nodes.values) {
if (!node.isStream) continue; if (!node.isStream) continue;
const mc = node.properties?.["media.class"] ?? ""; const mc = node.properties?.["media.class"] ?? "";
if (mc.includes("Video")) return true; if (mc === "Stream/Input/Video" || mc === "Stream/Output/Video") return true;
} }
return false; return false;
} }
@ -27,11 +28,11 @@ Row {
return false; return false;
} }
visible: root._screenShare || root._audioIn visible: root._videoCapture || root._audioIn
// Screenshare indicator // Screenshare indicator
Text { Text {
visible: root._screenShare visible: root._videoCapture
text: "\uF03D" text: "\uF03D"
color: M.Theme.base08 color: M.Theme.base08
font.pixelSize: M.Theme.fontSize + 2 font.pixelSize: M.Theme.fontSize + 2
@ -48,7 +49,7 @@ Row {
} }
SequentialAnimation on opacity { SequentialAnimation on opacity {
running: root._screenShare running: root._videoCapture
loops: Animation.Infinite loops: Animation.Infinite
NumberAnimation { to: 0.4; duration: 600; easing.type: Easing.InOutQuad } NumberAnimation { to: 0.4; duration: 600; easing.type: Easing.InOutQuad }
NumberAnimation { to: 1; duration: 600; easing.type: Easing.InOutQuad } NumberAnimation { to: 1; duration: 600; easing.type: Easing.InOutQuad }

View file

@ -34,7 +34,7 @@ QtObject {
property int barSpacing: 12 property int barSpacing: 12
property int moduleSpacing: 4 property int moduleSpacing: 4
property int radius: 4 property int radius: 4
property int screenRadius: 15 property int screenRadius: 20
property FileView _themeFile: FileView { property FileView _themeFile: FileView {
path: (Quickshell.env("XDG_CONFIG_HOME") || (Quickshell.env("HOME") + "/.config")) + "/nova-shell/theme.json" path: (Quickshell.env("XDG_CONFIG_HOME") || (Quickshell.env("HOME") + "/.config")) + "/nova-shell/theme.json"