From: Johan Malm Date: Fri, 27 Dec 2024 22:19:35 +0000 (+0000) Subject: desktop-entry: demote libsfdo error-logging X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=304a94e716551b9056b0a8792d8dc49f5d5c9784;p=proto%2Flabwc.git desktop-entry: demote libsfdo error-logging ...to WLR_INFO to avoid logging issues with .desktop files as errors, for example: [sfdo-desktop] 1:1: Name is unset [sfdo-desktop] Failed to load /usr/share/applications/lxqt-panel.desktop [sfdo-desktop] 1:1: Exec is unset while DBusActivatable is unset or false [sfdo-desktop] Failed to load /usr/share/applications/qemu.desktop Also make libsfdo debug/info logging depend on environment variable LABWC_DEBUG_LIBSFDO being set to avoid disproportionately verbose logging by default for one particular sub-system. Add an 'ENVIRONMENT VARIABLES' section to labwc(1) to describe the above as well as other hitherto undocumented env vars with prefix LABWC_DEBUG_. --- diff --git a/docs/labwc.1.scd b/docs/labwc.1.scd index 2bb66572..4e643918 100644 --- a/docs/labwc.1.scd +++ b/docs/labwc.1.scd @@ -39,7 +39,8 @@ the `--exit` and `--reconfigure` options use. Specify a config directory *-d, --debug* - Enable full logging, including debug information + Enable full logging, including debug information. See *ENVIRONMENT + VARIABLES* section below for further options. *-e, --exit* Exit the compositor by sending SIGTERM to `$LABWC_PID` @@ -117,6 +118,32 @@ this is accomplished by setting the session variables to empty strings. For systemd, the command `systemctl --user unset-environment` will be invoked to actually remove the variables from the activation environment. +# ENVIRONMENT VARIABLES + +Set the environment variables listed below to enable specific debug options. +This can be done in either the *environment* file or on the command line, for +example: *LABWC_DEBUG_FOO=1 labwc*. + +*LABWC_DEBUG_LIBSFDO* + Enable debug and info logging for libsfdo, for example for parsing of + .desktop files and searching for icons. Note that libsfdo error logging + is always enabled regardless of this environment variable but will only + be shown with the *-V|--version* option. + +*LABWC_DEBUG_DIR_CONFIG_AND_THEME* + Increase logging of paths for config files (for example rc.xml, + autostart, environment and menu.xml) as well as titlebar buttons. + +*LABWC_DEBUG_CONFIG_NODENAMES*++ +*LABWC_DEBUG_MENU_NODENAMES* + Enable logging of all nodenames (for example *policy.placement: Cascade* + for *Cascade*) for config and + menu files respectively. + +*LABWC_DEBUG_KEY_STATE* + Enable logging of press and release events for bound keys (generally + key-combinations like *Ctrl-Alt-t*) + # SEE ALSO labwc-actions(5), labwc-config(5), labwc-menu(5), labwc-theme(5) diff --git a/src/desktop-entry.c b/src/desktop-entry.c index b4bc9d94..1d84fd4f 100644 --- a/src/desktop-entry.c +++ b/src/desktop-entry.c @@ -2,6 +2,7 @@ #include #include #include +#include #include #include #include @@ -13,6 +14,8 @@ #include "labwc.h" +static const char *debug_libsfdo; + struct sfdo { struct sfdo_desktop_ctx *desktop_ctx; struct sfdo_icon_ctx *icon_ctx; @@ -23,6 +26,23 @@ struct sfdo { static void log_handler(enum sfdo_log_level level, const char *fmt, va_list args, void *tag) { + /* + * libsfdo info/debug logging is only provided when LABWC_DEBUG_LIBSFDO + * is set to avoid disproportionately verbose logging by default for one + * particularly sub-system. + */ + if (!debug_libsfdo && level > SFDO_LOG_LEVEL_ERROR) { + return; + } + + /* + * To avoid logging issues with .desktop files as errors, all libsfdo + * error-logging is demoted to info level. + */ + if (level == SFDO_LOG_LEVEL_ERROR) { + level = SFDO_LOG_LEVEL_INFO; + } + /* add a prefix if the format length is reasonable */ char buf[256]; if (snprintf(buf, sizeof(buf), "[%s] %s", (const char *)tag, fmt) @@ -38,6 +58,8 @@ desktop_entry_init(struct server *server) { struct sfdo *sfdo = znew(*sfdo); + debug_libsfdo = getenv("LABWC_DEBUG_LIBSFDO"); + struct sfdo_basedir_ctx *basedir_ctx = sfdo_basedir_ctx_create(); if (!basedir_ctx) { goto err_basedir_ctx;