From fb37be7611535706025ea1ca1cb742b97777b80f Mon Sep 17 00:00:00 2001 From: outfoxxed Date: Fri, 4 Jul 2025 16:43:01 -0700 Subject: [PATCH] core/log: ignore on-disk logging configs for quickshell* rules. Fixes fedora hiding all command output by default. --- src/core/logging.cpp | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/core/logging.cpp b/src/core/logging.cpp index 6fe80caa..d9f3f57c 100644 --- a/src/core/logging.cpp +++ b/src/core/logging.cpp @@ -182,17 +182,18 @@ void LogManager::filterCategory(QLoggingCategory* category) { auto categoryName = QLatin1StringView(category->categoryName()); auto isQs = categoryName.startsWith(QLatin1StringView("quickshell.")); - if (instance->lastCategoryFilter) { - instance->lastCategoryFilter(category); - } - - auto filter = CategoryFilter(category); + CategoryFilter filter; + // We don't respect log filters for qs logs because some distros like to ship + // default configs that hide everything. QT_LOGGING_RULES is considered via the filter list. if (isQs) { - filter.debug = filter.debug || instance->mDefaultLevel == QtDebugMsg; - filter.info = filter.debug || instance->mDefaultLevel == QtInfoMsg; - filter.warn = filter.info || instance->mDefaultLevel == QtWarningMsg; - filter.critical = filter.warn || instance->mDefaultLevel == QtCriticalMsg; + filter.debug = instance->mDefaultLevel == QtDebugMsg; + filter.info = instance->mDefaultLevel == QtInfoMsg; + filter.warn = instance->mDefaultLevel == QtWarningMsg; + filter.critical = instance->mDefaultLevel == QtCriticalMsg; + } else if (instance->lastCategoryFilter) { + instance->lastCategoryFilter(category); + filter = CategoryFilter(category); } for (const auto& rule: *instance->rules) { @@ -235,8 +236,12 @@ void LogManager::init( { QLoggingSettingsParser parser; - parser.setContent(rules); + // Load QT_LOGGING_RULES because we ignore the last category filter for QS messages + // due to disk config files. + parser.setContent(qEnvironmentVariable("QT_LOGGING_RULES")); instance->rules = new QList(parser.rules()); + parser.setContent(rules); + instance->rules->append(parser.rules()); } qInstallMessageHandler(&LogManager::messageHandler);