diff --git a/applications/main/xtreme_app/application.fam b/applications/main/xtreme_app/application.fam index 854e72199..c08a3d1d7 100644 --- a/applications/main/xtreme_app/application.fam +++ b/applications/main/xtreme_app/application.fam @@ -1,14 +1,12 @@ App( appid="xtreme_app", name="Xtreme", - apptype=FlipperAppType.FAPP, + apptype=FlipperAppType.MENUEXTERNAL, entry_point="xtreme_app", - cdefines=["APP_XTREME"], - requires=[ - "gui", - "dolphin", - ], stack_size=2 * 1024, icon="A_Xtreme_14", order=90, + fap_libs=["assets"], + # fap_icon="", + # fap_category="", ) diff --git a/applications/services/loader/loader.c b/applications/services/loader/loader.c index 74da6728c..1ff52f037 100644 --- a/applications/services/loader/loader.c +++ b/applications/services/loader/loader.c @@ -483,15 +483,8 @@ static LoaderStatus loader_do_start_by_name( { const FlipperInternalApplication* app = loader_find_application_by_name(name); if(app) { - if(app->app == NULL) { - // FAPP support - status = loader_start_external_app( - loader, furi_record_open(RECORD_STORAGE), app->appid, args, error_message); - furi_record_close(RECORD_STORAGE); - } else { - loader_start_internal_app(loader, app, args); - status = loader_make_success_status(error_message); - } + loader_start_internal_app(loader, app, args); + status = loader_make_success_status(error_message); break; } } diff --git a/applications/services/loader/loader_menu.c b/applications/services/loader/loader_menu.c index 279efe904..136504cc5 100644 --- a/applications/services/loader/loader_menu.c +++ b/applications/services/loader/loader_menu.c @@ -62,12 +62,6 @@ static void loader_menu_apps_callback(void* context, uint32_t index) { loader_menu_start(name_or_path); } -static void loader_menu_external_apps_callback(void* context, uint32_t index) { - UNUSED(context); - const char* path = FLIPPER_EXTERNAL_APPS[index].path; - loader_menu_start(path); -} - static void loader_menu_applications_callback(void* context, uint32_t index) { UNUSED(index); UNUSED(context); @@ -98,13 +92,29 @@ static uint32_t loader_menu_exit(void* context) { } static void loader_menu_build_menu(LoaderMenuApp* app, LoaderMenu* menu) { - size_t i; - for(i = 0; i < FLIPPER_APPS_COUNT; i++) { + menu_add_item( + app->primary_menu, + LOADER_APPLICATIONS_NAME, + &A_Plugins_14, + 0, + loader_menu_applications_callback, + (void*)menu); + for(size_t i = 0; i < FLIPPER_EXTERNAL_APPS_COUNT; i++) { + menu_add_item( + app->primary_menu, + FLIPPER_EXTERNAL_APPS[i].name, + FLIPPER_EXTERNAL_APPS[i].icon, + (uint32_t)FLIPPER_EXTERNAL_APPS[i].path, + loader_menu_apps_callback, + (void*)menu); + } + + for(size_t i = 0; i < FLIPPER_APPS_COUNT; i++) { menu_add_item( app->primary_menu, FLIPPER_APPS[i].name, FLIPPER_APPS[i].icon, - i, + (uint32_t)FLIPPER_APPS[i].name, loader_menu_apps_callback, (void*)menu); } diff --git a/scripts/fbt/appmanifest.py b/scripts/fbt/appmanifest.py index a4b83f3c9..98f794453 100644 --- a/scripts/fbt/appmanifest.py +++ b/scripts/fbt/appmanifest.py @@ -13,7 +13,6 @@ class FlipperAppType(Enum): SERVICE = "Service" SYSTEM = "System" APP = "App" - FAPP = "Fapp" DEBUG = "Debug" ARCHIVE = "Archive" SETTINGS = "Settings" @@ -382,14 +381,6 @@ class ApplicationsCGenerator: def get_app_descr(self, app: FlipperApplication): if app.apptype == FlipperAppType.STARTUP: return app.entry_point - if app.apptype == FlipperAppType.FAPP: - return f""" - {{.app = NULL, - .name = "{app.name}", - .appid = "/ext/apps/assets/{app.appid}.fap", - .stack_size = 0, - .icon = {f"&{app.icon}" if app.icon else "NULL"}, - .flags = {'|'.join(f"FlipperInternalApplicationFlag{flag}" for flag in app.flags)}}}""" return f""" {{.app = {app.entry_point}, .name = "{app.name}", @@ -421,11 +412,11 @@ class ApplicationsCGenerator: ) entry_type, entry_block = self.APP_TYPE_MAP[apptype] contents.append(f"const {entry_type} {entry_block}[] = {{") - apps = self.buildset.get_apps_of_type(apptype) - if apptype is FlipperAppType.APP: - apps += self.buildset.get_apps_of_type(FlipperAppType.FAPP) - apps.sort(key=lambda app: app.order) - contents.append(",\n".join(map(self.get_app_descr, apps))) + contents.append( + ",\n".join( + map(self.get_app_descr, self.buildset.get_apps_of_type(apptype)) + ) + ) contents.append("};") contents.append( f"const size_t {entry_block}_COUNT = COUNT_OF({entry_block});" diff --git a/scripts/fbt_tools/fbt_extapps.py b/scripts/fbt_tools/fbt_extapps.py index 951da0560..a0beb1402 100644 --- a/scripts/fbt_tools/fbt_extapps.py +++ b/scripts/fbt_tools/fbt_extapps.py @@ -179,7 +179,7 @@ class AppBuilder: deployable = False app_artifacts.dist_entries.append((deployable, fal_path)) else: - fap_path = f"apps/{'assets' if self.app.apptype == FlipperAppType.FAPP else self.app.fap_category}/{app_artifacts.compact.name}" + fap_path = f"apps/{self.app.fap_category}/{app_artifacts.compact.name}" app_artifacts.dist_entries.append( (self.app.is_default_deployable, fap_path) ) diff --git a/site_scons/extapps.scons b/site_scons/extapps.scons index 195d75c81..0893c4556 100644 --- a/site_scons/extapps.scons +++ b/site_scons/extapps.scons @@ -65,7 +65,6 @@ class FlipperExtAppBuildArtifacts: apps_to_build_as_faps = [ - FlipperAppType.FAPP, FlipperAppType.PLUGIN, FlipperAppType.EXTERNAL, FlipperAppType.MENUEXTERNAL,