core/icon: allow changing the icon theme

This commit is contained in:
outfoxxed 2024-09-17 14:21:34 -07:00
parent 7a283089b1
commit bd8978375b
Signed by: outfoxxed
GPG key ID: 4C88A185FB89301E
2 changed files with 13 additions and 0 deletions

View file

@ -822,6 +822,7 @@ int launch(const LaunchArgs& args, char** argv, QCoreApplication* coreApplicatio
bool useQApplication = false;
bool nativeTextRendering = false;
bool desktopSettingsAware = true;
QString iconTheme = qEnvironmentVariable("QS_ICON_THEME");
QHash<QString, QString> envOverrides;
} pragmas;
@ -834,6 +835,7 @@ int launch(const LaunchArgs& args, char** argv, QCoreApplication* coreApplicatio
if (pragma == "UseQApplication") pragmas.useQApplication = true;
else if (pragma == "NativeTextRendering") pragmas.nativeTextRendering = true;
else if (pragma == "IgnoreSystemSettings") pragmas.desktopSettingsAware = false;
else if (pragma.startsWith("IconTheme ")) pragmas.iconTheme = pragma.sliced(10);
else if (pragma.startsWith("Env ")) {
auto envPragma = pragma.sliced(4);
auto splitIdx = envPragma.indexOf('=');
@ -857,6 +859,10 @@ int launch(const LaunchArgs& args, char** argv, QCoreApplication* coreApplicatio
file.close();
if (!pragmas.iconTheme.isEmpty()) {
QIcon::setThemeName(pragmas.iconTheme);
}
qInfo() << "Shell ID:" << shellId << "Path ID" << pathId;
auto launchTime = qs::Common::LAUNCH_TIME.toSecsSinceEpoch();

View file

@ -124,6 +124,13 @@ public:
Q_INVOKABLE QVariant env(const QString& variable);
/// Returns a string usable for a @@QtQuick.Image.source for a given system icon.
///
/// > [!INFO] By default, icons are loaded from the theme selected by the qt platform theme,
/// > which means they should match with all other qt applications on your system.
/// >
/// > If you want to use a different icon theme, you can put `//@ pragma IconTheme <name>`
/// > at the top of your root config file or set the `QS_ICON_THEME` variable to the name
/// > of your icon theme.
Q_INVOKABLE static QString iconPath(const QString& icon);
[[nodiscard]] QString workingDirectory() const;