From b0774f4ea42f3f3dbbe8b2c13b4ee87bcbe4ee93 Mon Sep 17 00:00:00 2001 From: Kainoa Kanter Date: Fri, 22 Aug 2025 09:46:29 -0700 Subject: [PATCH 1/3] fix: run flatpak gpu-screen-recorder if applicable --- Services/ScreenRecorderService.qml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Services/ScreenRecorderService.qml b/Services/ScreenRecorderService.qml index 03560e7..28e08a7 100644 --- a/Services/ScreenRecorderService.qml +++ b/Services/ScreenRecorderService.qml @@ -30,8 +30,18 @@ Singleton { videoDir += "/" } outputPath = videoDir + filename - var command = `gpu-screen-recorder -w ${settings.videoSource} -f ${settings.frameRate} -ac ${settings.audioCodec} -k ${settings.videoCodec} -a ${settings.audioSource} -q ${settings.quality} -cursor ${settings.showCursor ? "yes" : "no"} -cr ${settings.colorRange} -o ${outputPath}` - + var command = ` + _gpuscreenrecorder_flatpak_installed() { + flatpak list --app | grep -q "com.dec05eba.gpu_screen_recorder" + } + if command -v gpu-screen-recorder >/dev/null 2>&1; then + gpu-screen-recorder -w ${settings.videoSource} -f ${settings.frameRate} -ac ${settings.audioCodec} -k ${settings.videoCodec} -a ${settings.audioSource} -q ${settings.quality} -cursor ${settings.showCursor ? "yes" : "no"} -cr ${settings.colorRange} -o ${outputPath} + elif command -v flatpak >/dev/null 2>&1 && _gpuscreenrecorder_flatpak_installed; then + flatpak run --command=gpu-screen-recorder --file-forwarding com.dec05eba.gpu_screen_recorder -w ${settings.videoSource} -f ${settings.frameRate} -ac ${settings.audioCodec} -k ${settings.videoCodec} -a ${settings.audioSource} -q ${settings.quality} -cursor ${settings.showCursor ? "yes" : "no"} -cr ${settings.colorRange} -o ${outputPath} + else + notify-send "gpu-screen-recorder not installed!" -u critical + fi`; + //Logger.log("ScreenRecorder", command) Quickshell.execDetached(["sh", "-c", command]) Logger.log("ScreenRecorder", "Started recording") From c64f6dd430168870d76a7178adcb0873abd4e938 Mon Sep 17 00:00:00 2001 From: Kainoa Kanter Date: Fri, 22 Aug 2025 09:50:21 -0700 Subject: [PATCH 2/3] make flags a variable --- Services/ScreenRecorderService.qml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Services/ScreenRecorderService.qml b/Services/ScreenRecorderService.qml index 28e08a7..57f66d9 100644 --- a/Services/ScreenRecorderService.qml +++ b/Services/ScreenRecorderService.qml @@ -30,14 +30,15 @@ Singleton { videoDir += "/" } outputPath = videoDir + filename + var flags = `-w ${settings.videoSource} -f ${settings.frameRate} -ac ${settings.audioCodec} -k ${settings.videoCodec} -a ${settings.audioSource} -q ${settings.quality} -cursor ${settings.showCursor ? "yes" : "no"} -cr ${settings.colorRange} -o ${outputPath}` var command = ` _gpuscreenrecorder_flatpak_installed() { flatpak list --app | grep -q "com.dec05eba.gpu_screen_recorder" } if command -v gpu-screen-recorder >/dev/null 2>&1; then - gpu-screen-recorder -w ${settings.videoSource} -f ${settings.frameRate} -ac ${settings.audioCodec} -k ${settings.videoCodec} -a ${settings.audioSource} -q ${settings.quality} -cursor ${settings.showCursor ? "yes" : "no"} -cr ${settings.colorRange} -o ${outputPath} + gpu-screen-recorder ${flags} elif command -v flatpak >/dev/null 2>&1 && _gpuscreenrecorder_flatpak_installed; then - flatpak run --command=gpu-screen-recorder --file-forwarding com.dec05eba.gpu_screen_recorder -w ${settings.videoSource} -f ${settings.frameRate} -ac ${settings.audioCodec} -k ${settings.videoCodec} -a ${settings.audioSource} -q ${settings.quality} -cursor ${settings.showCursor ? "yes" : "no"} -cr ${settings.colorRange} -o ${outputPath} + flatpak run --command=gpu-screen-recorder --file-forwarding com.dec05eba.gpu_screen_recorder ${flags} else notify-send "gpu-screen-recorder not installed!" -u critical fi`; From cd102d894e2538ebdf265e23e10cc4f60dba418b Mon Sep 17 00:00:00 2001 From: Kainoa Kanter Date: Fri, 22 Aug 2025 12:34:08 -0700 Subject: [PATCH 3/3] feat: show ethernet icon if ethernet is connected Closes https://github.com/noctalia-dev/noctalia-shell/issues/115 --- Modules/Bar/WiFi.qml | 3 ++- Services/NetworkService.qml | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/Modules/Bar/WiFi.qml b/Modules/Bar/WiFi.qml index 6b9b921..da749ff 100644 --- a/Modules/Bar/WiFi.qml +++ b/Modules/Bar/WiFi.qml @@ -21,6 +21,7 @@ NIconButton { colorBorderHover: Color.transparent icon: { + if (NetworkService.ethernet) return "lan" let connected = false let signalStrength = 0 for (const net in NetworkService.networks) { @@ -30,7 +31,7 @@ NIconButton { break } } - return connected ? NetworkService.signalIcon(signalStrength) : "wifi" + return connected ? NetworkService.signalIcon(signalStrength) : "wifi_find" } tooltipText: "WiFi Networks" onClicked: { diff --git a/Services/NetworkService.qml b/Services/NetworkService.qml index 65378f0..43e31e7 100644 --- a/Services/NetworkService.qml +++ b/Services/NetworkService.qml @@ -16,6 +16,7 @@ Singleton { property string detectedInterface: "" property string lastConnectedNetwork: "" property bool isLoading: false + property bool ethernet: false Component.onCompleted: { Logger.log("Network", "Service started") @@ -43,6 +44,7 @@ Singleton { function refreshNetworks() { isLoading = true + checkEthernet.running = true existingNetwork.running = true } @@ -415,6 +417,24 @@ Singleton { } } } + + property Process checkEthernet: Process { + id: checkEthernet + running: false + command: ["nmcli", "-t", "-f", "DEVICE,TYPE,STATE", "device"] + stdout: StdioCollector { + onStreamFinished: { + var lines = text.split("\n") + for (var i = 0; i < lines.length; ++i) { + var parts = lines[i].split(":") + if (parts[1] === "ethernet" && parts[2] === "connected") { + root.ethernet = true + break + } + } + } + } + } property Process addConnectionProcess: Process { id: addConnectionProcess