From aeca49ee45b7521e1ac64388da569d715566ac7b Mon Sep 17 00:00:00 2001 From: Kajus Naujokaitis Date: Mon, 17 Feb 2025 14:10:39 +0200 Subject: [PATCH] Reduce journal log flood in headless mode Signed-off-by: Kajus Naujokaitis --- modules/desktop/graphics/ewwbar.nix | 20 ++++++------------ .../ewwbar/config/scripts/default.nix | 13 ++++++++++-- modules/desktop/graphics/labwc.config.nix | 21 ++++++++++++++++--- 3 files changed, 35 insertions(+), 19 deletions(-) diff --git a/modules/desktop/graphics/ewwbar.nix b/modules/desktop/graphics/ewwbar.nix index bb50994b7..aa83db2a2 100644 --- a/modules/desktop/graphics/ewwbar.nix +++ b/modules/desktop/graphics/ewwbar.nix @@ -115,6 +115,7 @@ in description = "ewwbar"; serviceConfig = { Type = "forking"; + ExecCondition = "${pkgs.wlr-randr}/bin/wlr-randr > /dev/null 2>&1"; ExecStart = "${ewwScripts.ewwbar-ctrl}/bin/ewwbar-ctrl start"; ExecReload = "${ewwScripts.ewwbar-ctrl}/bin/ewwbar-ctrl reload"; Restart = "always"; @@ -140,16 +141,7 @@ in }; after = [ "ewwbar.service" ]; wantedBy = [ "ewwbar.service" ]; - partOf = [ "ghaf-session.target" ]; - }; - - eww-display-trigger = { - description = "eww-display-trigger"; - serviceConfig = { - Type = "oneshot"; - ExecStart = "${pkgs.bash}/bin/bash -c 'echo 1 > ~/.config/eww/display'"; - }; - after = [ "ewwbar.service" ]; + partOf = [ "ewwbar.service" ]; }; eww-display-handler = { @@ -161,7 +153,7 @@ in }; after = [ "ewwbar.service" ]; wantedBy = [ "ewwbar.service" ]; - partOf = [ "ghaf-session.target" ]; + partOf = [ "ewwbar.service" ]; }; eww-volume-popup = { @@ -179,7 +171,7 @@ in }; after = [ "ewwbar.service" ]; wantedBy = [ "ewwbar.service" ]; - partOf = [ "ghaf-session.target" ]; + partOf = [ "ewwbar.service" ]; }; eww-workspace-popup = { @@ -197,7 +189,7 @@ in }; after = [ "ewwbar.service" ]; wantedBy = [ "ewwbar.service" ]; - partOf = [ "ghaf-session.target" ]; + partOf = [ "ewwbar.service" ]; }; eww-fullscreen-update = { @@ -209,7 +201,7 @@ in }; after = [ "ewwbar.service" ]; wantedBy = [ "ewwbar.service" ]; - partOf = [ "ghaf-session.target" ]; + partOf = [ "ewwbar.service" ]; }; }; diff --git a/modules/desktop/graphics/ewwbar/config/scripts/default.nix b/modules/desktop/graphics/ewwbar/config/scripts/default.nix index 49af402ab..46d75887f 100644 --- a/modules/desktop/graphics/ewwbar/config/scripts/default.nix +++ b/modules/desktop/graphics/ewwbar/config/scripts/default.nix @@ -84,7 +84,11 @@ let text = '' start() { # Get the number of connected displays using wlr-randr and parse the output with jq - wlr_randr_output=$(wlr-randr --json) + + if ! wlr_randr_output=$(wlr-randr --json); then + echo "Error: Failed to get display info from wlr-randr" + exit 1 + fi displays=$(echo "$wlr_randr_output" | jq 'length') # Check if there are any connected displays @@ -120,7 +124,12 @@ let reload() { #${ewwCmd} reload ${ewwCmd} close-all - open-bars "$(wlr-randr --json)" + if ! wlr_randr_output=$(wlr-randr --json); then + echo "Error: Failed to get display info from wlr-randr" + exit 1 + fi + + open-bars "$wlr_randr_output" } update-vars() { diff --git a/modules/desktop/graphics/labwc.config.nix b/modules/desktop/graphics/labwc.config.nix index 59582e8db..f8b675235 100644 --- a/modules/desktop/graphics/labwc.config.nix +++ b/modules/desktop/graphics/labwc.config.nix @@ -392,12 +392,26 @@ let display-event-trigger = pkgs.writeShellApplication { name = "display-event-trigger"; - runtimeInputs = [ ]; + runtimeInputs = [ + auto-display-scale + pkgs.mako + pkgs.wlr-randr + ]; bashOptions = [ ]; text = '' # Run the following commands in order every time a display change event is detected - ${auto-display-scale}/bin/auto-display-scale # Auto scaling - ${pkgs.mako}/bin/makoctl set-mode default # Reset mako mode so notifications don't break + auto-display-scale # Auto scaling + makoctl set-mode default # Reset mako mode so notifications don't break + + if wlr-randr > /dev/null 2>&1; then + # If displays are connected (not headless mode), ensure ewwbar and ghaf-launcher are running + systemctl --user is-active --quiet ewwbar || systemctl --user reload-or-restart ewwbar + systemctl --user is-active --quiet ghaf-launcher || systemctl --user reload-or-restart ghaf-launcher + else + # If all displays were disconnected, we can stop ghaf-launcher and ewwbar services + echo "No displays connected. Stopping ghaf-launcher and ewwbar services" + systemctl --user stop ewwbar ghaf-launcher + fi ''; }; in @@ -457,6 +471,7 @@ in serviceConfig = { Type = "simple"; EnvironmentFile = "-/etc/locale.conf"; + ExecCondition = "${pkgs.wlr-randr}/bin/wlr-randr > /dev/null 2>&1"; ExecStart = "${pkgs.nwg-drawer}/bin/nwg-drawer -r -nofs -nocats -s ${drawerStyle}"; Restart = "always"; RestartSec = "1";