From ecd721992ddea75de47565efd12eb9dd03ee61ca Mon Sep 17 00:00:00 2001 From: "MR_TZ.dev" <77046903+MR-TZ-dev@users.noreply.github.com> Date: Sat, 20 Jul 2024 10:41:55 +0330 Subject: [PATCH 1/3] fix: fixed problem not launching on Ubuntu 24.04 LTS. --- linux/CMakeLists.txt | 8 +++- linux/my_application.cc | 84 +++++++++++++++++++++++++++++------------ 2 files changed, 65 insertions(+), 27 deletions(-) diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt index ae76f8ad..9bffea44 100644 --- a/linux/CMakeLists.txt +++ b/linux/CMakeLists.txt @@ -127,14 +127,18 @@ install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR} install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) - - foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) install(FILES "${bundled_library}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) endforeach(bundled_library) +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + # Fully re-copy the assets directory on each build to avoid having stale files # from a previous install. set(FLUTTER_ASSET_DIR_NAME "flutter_assets") diff --git a/linux/my_application.cc b/linux/my_application.cc index 65326859..e8d9d1dd 100644 --- a/linux/my_application.cc +++ b/linux/my_application.cc @@ -7,17 +7,19 @@ #include "flutter/generated_plugin_registrant.h" -struct _MyApplication { +struct _MyApplication +{ GtkApplication parent_instance; - char** dart_entrypoint_arguments; + char **dart_entrypoint_arguments; }; G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) // Implements GApplication::activate. -static void my_application_activate(GApplication* application) { - MyApplication* self = MY_APPLICATION(application); - GtkWindow* window = +static void my_application_activate(GApplication *application) +{ + MyApplication *self = MY_APPLICATION(application); + GtkWindow *window = GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); // Use a header bar when running in GNOME as this is the common style used @@ -29,31 +31,36 @@ static void my_application_activate(GApplication* application) { // if future cases occur). gboolean use_header_bar = TRUE; #ifdef GDK_WINDOWING_X11 - GdkScreen* screen = gtk_window_get_screen(window); - if (GDK_IS_X11_SCREEN(screen)) { - const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); - if (g_strcmp0(wm_name, "GNOME Shell") != 0) { + GdkScreen *screen = gtk_window_get_screen(window); + if (GDK_IS_X11_SCREEN(screen)) + { + const gchar *wm_name = gdk_x11_screen_get_window_manager_name(screen); + if (g_strcmp0(wm_name, "GNOME Shell") != 0) + { use_header_bar = FALSE; } } #endif - if (use_header_bar) { - GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); + if (use_header_bar) + { + GtkHeaderBar *header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); gtk_widget_show(GTK_WIDGET(header_bar)); gtk_header_bar_set_title(header_bar, "Hiddify"); gtk_header_bar_set_show_close_button(header_bar, TRUE); gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); - } else { + } + else + { gtk_window_set_title(window, "Hiddify"); } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_realize(GTK_WIDGET(window)); + gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); - FlView* view = fl_view_new(project); + FlView *view = fl_view_new(project); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); @@ -63,16 +70,18 @@ static void my_application_activate(GApplication* application) { } // Implements GApplication::local_command_line. -static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { - MyApplication* self = MY_APPLICATION(application); +static gboolean my_application_local_command_line(GApplication *application, gchar ***arguments, int *exit_status) +{ + MyApplication *self = MY_APPLICATION(application); // Strip out the first argument as it is the binary name. self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); g_autoptr(GError) error = nullptr; - if (!g_application_register(application, nullptr, &error)) { - g_warning("Failed to register: %s", error->message); - *exit_status = 1; - return TRUE; + if (!g_application_register(application, nullptr, &error)) + { + g_warning("Failed to register: %s", error->message); + *exit_status = 1; + return TRUE; } g_application_activate(application); @@ -81,22 +90,47 @@ static gboolean my_application_local_command_line(GApplication* application, gch return TRUE; } +// Implements GApplication::startup. +static void my_application_startup(GApplication *application) +{ + // MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application startup. + + G_APPLICATION_CLASS(my_application_parent_class)->startup(application); +} + +// Implements GApplication::shutdown. +static void my_application_shutdown(GApplication *application) +{ + // MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application shutdown. + + G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application); +} + // Implements GObject::dispose. -static void my_application_dispose(GObject* object) { - MyApplication* self = MY_APPLICATION(object); +static void my_application_dispose(GObject *object) +{ + MyApplication *self = MY_APPLICATION(object); g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); G_OBJECT_CLASS(my_application_parent_class)->dispose(object); } -static void my_application_class_init(MyApplicationClass* klass) { +static void my_application_class_init(MyApplicationClass *klass) +{ G_APPLICATION_CLASS(klass)->activate = my_application_activate; G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; + G_APPLICATION_CLASS(klass)->startup = my_application_startup; + G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown; G_OBJECT_CLASS(klass)->dispose = my_application_dispose; } -static void my_application_init(MyApplication* self) {} +static void my_application_init(MyApplication *self) {} -MyApplication* my_application_new() { +MyApplication *my_application_new() +{ return MY_APPLICATION(g_object_new(my_application_get_type(), "application-id", APPLICATION_ID, "flags", G_APPLICATION_NON_UNIQUE, From c1e4f981df8a010a4b3390f008287139a9b5d32f Mon Sep 17 00:00:00 2001 From: Metozak <127117027+Metozak@users.noreply.github.com> Date: Sun, 21 Jul 2024 23:56:01 +0330 Subject: [PATCH 2/3] =?UTF-8?q?chore:=20update=20translations=20with=20Fin?= =?UTF-8?q?k=20=F0=9F=90=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/translations/strings_fa.i18n.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/assets/translations/strings_fa.i18n.json b/assets/translations/strings_fa.i18n.json index 603beb8e..cb5d9fd0 100644 --- a/assets/translations/strings_fa.i18n.json +++ b/assets/translations/strings_fa.i18n.json @@ -411,6 +411,8 @@ "warpCleanIp": "آی‌پی تمیز", "warpPort": "پورت", "warpNoise": "تعداد نویز", + "warpNoiseSize": "اندازه نویز", + "warpNoiseMode": "حالت نویز", "warpNoiseDelay": "تأخیر نویز" } } From 4050113dad6a35b7d857ee63ea808c2b7c351c3d Mon Sep 17 00:00:00 2001 From: SonzaiEkkusu Date: Tue, 23 Jul 2024 18:46:37 +0700 Subject: [PATCH 3/3] Add Indonesia region --- assets/translations/strings_en.i18n.json | 1 + lib/core/model/region.dart | 2 ++ .../config_option/data/config_option_repository.dart | 7 +++++++ 3 files changed, 10 insertions(+) diff --git a/assets/translations/strings_en.i18n.json b/assets/translations/strings_en.i18n.json index bb4d8662..003157fb 100644 --- a/assets/translations/strings_en.i18n.json +++ b/assets/translations/strings_en.i18n.json @@ -178,6 +178,7 @@ "cn": "China (cn)", "ru": "Russia (ru)", "af": "Afghanistan (af)", + "id": "Indonesia (id)", "other": "Other" }, "themeMode": "Theme Mode", diff --git a/lib/core/model/region.dart b/lib/core/model/region.dart index d638c328..485c4319 100644 --- a/lib/core/model/region.dart +++ b/lib/core/model/region.dart @@ -5,6 +5,7 @@ enum Region { cn, ru, af, + id, other; String present(TranslationsEn t) => switch (this) { @@ -12,6 +13,7 @@ enum Region { cn => t.settings.general.regions.cn, ru => t.settings.general.regions.ru, af => t.settings.general.regions.af, + id => t.settings.general.regions.id, other => t.settings.general.regions.other, }; } diff --git a/lib/features/config_option/data/config_option_repository.dart b/lib/features/config_option/data/config_option_repository.dart index 85a3cb80..db28f988 100644 --- a/lib/features/config_option/data/config_option_repository.dart +++ b/lib/features/config_option/data/config_option_repository.dart @@ -414,6 +414,13 @@ abstract class ConfigOptions { // outbound: RuleOutbound.bypass, // ), // ], + // Region.id => [ + // const SingboxRule( + // domains: "domain:.id,geosite:id", + // ip: "geoip:id", + // outbound: RuleOutbound.bypass, + // ), + // ], // _ => [], // };