diff --git a/Userland/Libraries/LibDesktop/AppFile.cpp b/Userland/Libraries/LibDesktop/AppFile.cpp index 405a2c28e7..de24b80c73 100644 --- a/Userland/Libraries/LibDesktop/AppFile.cpp +++ b/Userland/Libraries/LibDesktop/AppFile.cpp @@ -87,6 +87,21 @@ String AppFile::category() const return m_config->read_entry("App", "Category").trim_whitespace(); } +String AppFile::icon_path() const +{ + return m_config->read_entry("App", "IconPath").trim_whitespace(); +} + +GUI::Icon AppFile::icon() const +{ + auto override_icon = icon_path(); + // FIXME: support pointing to actual .ico files + if (!override_icon.is_empty()) + return GUI::FileIconProvider::icon_for_path(override_icon); + + return GUI::FileIconProvider::icon_for_path(executable()); +} + bool AppFile::run_in_terminal() const { return m_config->read_bool_entry("App", "RunInTerminal", false); diff --git a/Userland/Libraries/LibDesktop/AppFile.h b/Userland/Libraries/LibDesktop/AppFile.h index ffcbc5fde9..e67a4ec9b9 100644 --- a/Userland/Libraries/LibDesktop/AppFile.h +++ b/Userland/Libraries/LibDesktop/AppFile.h @@ -27,13 +27,13 @@ public: String executable() const; String category() const; String description() const; + String icon_path() const; + GUI::Icon icon() const; bool run_in_terminal() const; Vector launcher_file_types() const; Vector launcher_protocols() const; bool spawn() const; - GUI::Icon icon() const { return GUI::FileIconProvider::icon_for_path(executable()); }; - private: explicit AppFile(const StringView& path);