summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregor Kleen <gkleen@yggdrasil.li>2026-03-06 19:30:48 +0100
committerGregor Kleen <gkleen@yggdrasil.li>2026-03-06 19:30:48 +0100
commit16a7fb7e8cfb9a682e411891c0cb81e0aa0a1b15 (patch)
tree51e39719158102da5e23491acb90e68950d19a50
parent72abd9db7c907fc1a6ef7bf8d2483649aa3bc949 (diff)
downloadnixos-16a7fb7e8cfb9a682e411891c0cb81e0aa0a1b15.tar
nixos-16a7fb7e8cfb9a682e411891c0cb81e0aa0a1b15.tar.gz
nixos-16a7fb7e8cfb9a682e411891c0cb81e0aa0a1b15.tar.bz2
nixos-16a7fb7e8cfb9a682e411891c0cb81e0aa0a1b15.tar.xz
nixos-16a7fb7e8cfb9a682e411891c0cb81e0aa0a1b15.zip
niri: screenshare indicators
-rw-r--r--accounts/gkleen@sif/niri.nix18
-rw-r--r--accounts/gkleen@sif/shell/quickshell/Bar.qml8
-rw-r--r--accounts/gkleen@sif/shell/quickshell/Services/NiriService.qml10
3 files changed, 35 insertions, 1 deletions
diff --git a/accounts/gkleen@sif/niri.nix b/accounts/gkleen@sif/niri.nix
index b701b4c2..80abfc1a 100644
--- a/accounts/gkleen@sif/niri.nix
+++ b/accounts/gkleen@sif/niri.nix
@@ -711,6 +711,24 @@ in {
711 (sleaf "match" { app-id = "^org\\.gnome\\.Papers$"; }) 711 (sleaf "match" { app-id = "^org\\.gnome\\.Papers$"; })
712 (sleaf "default-column-display" "tabbed") 712 (sleaf "default-column-display" "tabbed")
713 ]) 713 ])
714 (plain "window-rule" [
715 (sleaf "match" { is-window-cast-target = true; })
716 (plain "border" [
717 (sleaf "width" 2)
718 (sleaf "active-gradient" {
719 from = "hsla(20 100% 45% 1)";
720 to = "hsla(340 100% 37.5% 1)";
721 angle = 29;
722 relative-to = "workspace-view";
723 })
724 (sleaf "inactive-gradient" {
725 from = "hsla(20 50% 27.7% 1)";
726 to = "hsla(340 50% 23% 1)";
727 angle = 29;
728 relative-to = "workspace-view";
729 })
730 ])
731 ])
714 732
715 (plain "layer-rule" [ 733 (plain "layer-rule" [
716 (sleaf "match" { namespace = "^notifications$"; }) 734 (sleaf "match" { namespace = "^notifications$"; })
diff --git a/accounts/gkleen@sif/shell/quickshell/Bar.qml b/accounts/gkleen@sif/shell/quickshell/Bar.qml
index 54ac2d3c..e8bd6245 100644
--- a/accounts/gkleen@sif/shell/quickshell/Bar.qml
+++ b/accounts/gkleen@sif/shell/quickshell/Bar.qml
@@ -32,8 +32,14 @@ PanelWindow {
32 implicitHeight: 21 32 implicitHeight: 21
33 color: "transparent" 33 color: "transparent"
34 34
35 property bool haveScreenshare: Array.from(NiriService.casts).some(cast => cast.target.Output?.name == bar.screen.name)
36
35 Rectangle { 37 Rectangle {
36 color: bar.haveMaximizedWindow ? "black" : Qt.rgba(0, 0, 0, 0.75) 38 color: {
39 if (bar.haveScreenshare)
40 return bar.haveMaximizedWindow ? Qt.rgba(0.2, 0, 0, 1) : Qt.rgba(0.2, 0, 0, 0.75);
41 return bar.haveMaximizedWindow ? "black" : Qt.rgba(0, 0, 0, 0.75);
42 }
37 anchors.fill: parent 43 anchors.fill: parent
38 // bottomLeftRadius: 8 44 // bottomLeftRadius: 8
39 // bottomRightRadius: 8 45 // bottomRightRadius: 8
diff --git a/accounts/gkleen@sif/shell/quickshell/Services/NiriService.qml b/accounts/gkleen@sif/shell/quickshell/Services/NiriService.qml
index 6dbff134..cd4ed125 100644
--- a/accounts/gkleen@sif/shell/quickshell/Services/NiriService.qml
+++ b/accounts/gkleen@sif/shell/quickshell/Services/NiriService.qml
@@ -74,6 +74,10 @@ Singleton {
74 eventWindowFocusTimestampChanged(event.WindowFocusTimestampChanged); 74 eventWindowFocusTimestampChanged(event.WindowFocusTimestampChanged);
75 else if (event.CastsChanged) 75 else if (event.CastsChanged)
76 root.casts = event.CastsChanged.casts 76 root.casts = event.CastsChanged.casts
77 else if (event.CastStartedOrChanged)
78 eventCastStartedOrChanged(event.CastStartedOrChanged);
79 else if (event.CastStopped)
80 eventCastStopped(event.CastStopped);
77 else if (event.Ok && !eventStreamSocket.acked) { eventStreamSocket.acked = true; } 81 else if (event.Ok && !eventStreamSocket.acked) { eventStreamSocket.acked = true; }
78 else if (event.OverviewOpenedOrClosed) {} 82 else if (event.OverviewOpenedOrClosed) {}
79 else if (event.ConfigLoaded) {} 83 else if (event.ConfigLoaded) {}
@@ -203,4 +207,10 @@ Singleton {
203 return win; 207 return win;
204 }); 208 });
205 } 209 }
210 function eventCastStartedOrChanged(data) {
211 root.casts = [...Array.from(root.casts).filter(cast => cast.stream_id !== data.cast.stream_id), data.cast];
212 }
213 function eventCastStopped(data) {
214 root.casts = Array.from(root.casts).filter(cast => cast.stream_id !== data.stream_id);
215 }
206} 216}