mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-12-01 20:10:28 +00:00
LibDesktop+Taskbar: Add an option to exclude apps from the system menu
We currently hard-code excluding Settings apps from the system menu. This adds an "ExcludeFromSystemMenu" option to the AppFile configuration to selectively exclude these apps, which all Settings app now set. This is to allow selectively excluding a few Demo apps in a future commit.
This commit is contained in:
parent
10bf86de2c
commit
3d6b0e60ca
Notes:
sideshowbarker
2024-07-17 03:03:37 +09:00
Author: https://github.com/trflynn89 Commit: https://github.com/SerenityOS/serenity/commit/3d6b0e60ca Pull-request: https://github.com/SerenityOS/serenity/pull/16777 Reviewed-by: https://github.com/gmta
13 changed files with 20 additions and 9 deletions
|
@ -3,3 +3,4 @@ Name=Browser Settings
|
|||
Executable=/bin/BrowserSettings
|
||||
Category=Settings
|
||||
Description=Configure Browser
|
||||
ExcludeFromSystemMenu=true
|
||||
|
|
|
@ -3,3 +3,4 @@ Name=Calendar Settings
|
|||
Executable=/bin/CalendarSettings
|
||||
Category=Settings
|
||||
Description=Configure the Calendar application and applet
|
||||
ExcludeFromSystemMenu=true
|
||||
|
|
|
@ -3,3 +3,4 @@ Name=Clock Settings
|
|||
Executable=/bin/ClockSettings
|
||||
Category=Settings
|
||||
Description=Configure the system clock
|
||||
ExcludeFromSystemMenu=true
|
||||
|
|
|
@ -3,3 +3,4 @@ Name=Display Settings
|
|||
Executable=/bin/DisplaySettings
|
||||
Category=Settings
|
||||
Description=Configure your display hardware, desktop wallpaper, fonts, etc.
|
||||
ExcludeFromSystemMenu=true
|
||||
|
|
|
@ -3,3 +3,4 @@ Name=Games Settings
|
|||
Executable=/bin/GamesSettings
|
||||
Category=Settings
|
||||
Description=Configure games
|
||||
ExcludeFromSystemMenu=true
|
||||
|
|
|
@ -3,3 +3,4 @@ Name=Keyboard Settings
|
|||
Executable=/bin/KeyboardSettings
|
||||
Category=Settings
|
||||
Description=Customize your keyboard layout and other settings
|
||||
ExcludeFromSystemMenu=true
|
||||
|
|
|
@ -3,3 +3,4 @@ Name=Mail Settings
|
|||
Executable=/bin/MailSettings
|
||||
Category=Settings
|
||||
Description=Configure the Mail application
|
||||
ExcludeFromSystemMenu=true
|
||||
|
|
|
@ -3,3 +3,4 @@ Name=Mouse Settings
|
|||
Executable=/bin/MouseSettings
|
||||
Category=Settings
|
||||
Description=Customize your mouse and cursor settings
|
||||
ExcludeFromSystemMenu=true
|
||||
|
|
|
@ -4,3 +4,4 @@ Executable=/bin/NetworkSettings
|
|||
RequiresRoot=true
|
||||
Category=Settings
|
||||
Description=Configure network connections
|
||||
ExcludeFromSystemMenu=true
|
||||
|
|
|
@ -3,3 +3,4 @@ Name=Terminal Settings
|
|||
Executable=/bin/TerminalSettings
|
||||
Category=Settings
|
||||
Description=Configure the Terminal appearance and behavior
|
||||
ExcludeFromSystemMenu=true
|
||||
|
|
|
@ -112,6 +112,11 @@ bool AppFile::requires_root() const
|
|||
return m_config->read_bool_entry("App", "RequiresRoot", false);
|
||||
}
|
||||
|
||||
bool AppFile::exclude_from_system_menu() const
|
||||
{
|
||||
return m_config->read_bool_entry("App", "ExcludeFromSystemMenu", false);
|
||||
}
|
||||
|
||||
Vector<DeprecatedString> AppFile::launcher_mime_types() const
|
||||
{
|
||||
Vector<DeprecatedString> mime_types;
|
||||
|
|
|
@ -34,6 +34,7 @@ public:
|
|||
GUI::Icon icon() const;
|
||||
bool run_in_terminal() const;
|
||||
bool requires_root() const;
|
||||
bool exclude_from_system_menu() const;
|
||||
Vector<DeprecatedString> launcher_mime_types() const;
|
||||
Vector<DeprecatedString> launcher_file_types() const;
|
||||
Vector<DeprecatedString> launcher_protocols() const;
|
||||
|
|
|
@ -96,6 +96,8 @@ ErrorOr<Vector<DeprecatedString>> discover_apps_and_categories()
|
|||
{
|
||||
HashTable<DeprecatedString> seen_app_categories;
|
||||
Desktop::AppFile::for_each([&](auto af) {
|
||||
if (af->exclude_from_system_menu())
|
||||
return;
|
||||
if (access(af->executable().characters(), X_OK) == 0) {
|
||||
g_apps.append({ af->executable(), af->name(), af->category(), af->working_directory(), af->icon(), af->run_in_terminal(), af->requires_root() });
|
||||
seen_app_categories.set(af->category());
|
||||
|
@ -159,19 +161,12 @@ ErrorOr<NonnullRefPtr<GUI::Menu>> build_system_menu(GUI::Window& window)
|
|||
app_category_menus.set(category, category_menu);
|
||||
};
|
||||
|
||||
for (auto const& category : sorted_app_categories) {
|
||||
if (category != "Settings"sv)
|
||||
create_category_menu(category);
|
||||
}
|
||||
for (auto const& category : sorted_app_categories)
|
||||
create_category_menu(category);
|
||||
|
||||
// Then we create and insert all the app menu items into the right place.
|
||||
int app_identifier = 0;
|
||||
for (auto const& app : g_apps) {
|
||||
if (app.category == "Settings"sv) {
|
||||
++app_identifier;
|
||||
continue;
|
||||
}
|
||||
|
||||
auto icon = app.icon.bitmap_for_size(16);
|
||||
|
||||
if constexpr (SYSTEM_MENU_DEBUG) {
|
||||
|
|
Loading…
Reference in a new issue