core/log: ignore on-disk logging configs for quickshell* rules.

Fixes fedora hiding all command output by default.
This commit is contained in:
outfoxxed 2025-07-04 16:43:01 -07:00
parent 9708d8212a
commit fb37be7611
Signed by untrusted user: outfoxxed
GPG key ID: 4C88A185FB89301E

View file

@ -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);