From bcf57675a5e63ff150058310c9df972db5e3139a Mon Sep 17 00:00:00 2001 From: noise Date: Sun, 6 Sep 2026 00:55:52 +0300 Subject: [PATCH] fix: bugs in new gtk runtime, adaptive tray icon --- .../jp.angeltech.MoeMoji-tray-symbolic.svg | 13 ++++++++ data/icons/meson.build | 9 ++---- src/moemoji-application.c | 30 ++----------------- src/moemoji-application.h | 1 - src/moemoji-window.c | 1 + src/style.css | 2 +- 6 files changed, 19 insertions(+), 37 deletions(-) create mode 100644 data/icons/hicolor/symbolic/apps/jp.angeltech.MoeMoji-tray-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/jp.angeltech.MoeMoji-tray-symbolic.svg b/data/icons/hicolor/symbolic/apps/jp.angeltech.MoeMoji-tray-symbolic.svg new file mode 100644 index 0000000..81a33ab --- /dev/null +++ b/data/icons/hicolor/symbolic/apps/jp.angeltech.MoeMoji-tray-symbolic.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/data/icons/meson.build b/data/icons/meson.build index bd158cd..833e335 100644 --- a/data/icons/meson.build +++ b/data/icons/meson.build @@ -17,11 +17,6 @@ install_data( ) install_data( - join_paths(scalable_dir, ('@0@-tray-dark.svg').format(application_id)), - install_dir: join_paths(get_option('datadir'), 'icons', scalable_dir) -) - -install_data( - join_paths(scalable_dir, ('@0@-tray-light.svg').format(application_id)), - install_dir: join_paths(get_option('datadir'), 'icons', scalable_dir) + join_paths(symbolic_dir, ('@0@-tray-symbolic.svg').format(application_id)), + install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) ) diff --git a/src/moemoji-application.c b/src/moemoji-application.c index 1a6d98d..765ec88 100644 --- a/src/moemoji-application.c +++ b/src/moemoji-application.c @@ -245,12 +245,8 @@ GVariant *sni_get_property(G_GNUC_UNUSED GDBusConnection *connection, return g_variant_new_string("MoeMoji"); if (g_strcmp0(property_name, "Status") == 0) return g_variant_new_string("Active"); - if (g_strcmp0(property_name, "IconName") == 0) { - MoeMojiApplication *self = MOEMOJI_APPLICATION(user_data); - return g_variant_new_string(self->tray_icon_name - ? self->tray_icon_name - : "jp.angeltech.MoeMoji-tray-dark"); - } + if (g_strcmp0(property_name, "IconName") == 0) + return g_variant_new_string("jp.angeltech.MoeMoji-tray-symbolic"); if (g_strcmp0(property_name, "ItemIsMenu") == 0) return g_variant_new_boolean(FALSE); if (g_strcmp0(property_name, "Menu") == 0) @@ -269,25 +265,6 @@ static const GDBusInterfaceVTable sni_vtable = { .set_property = NULL, }; -static void update_tray_icon(MoeMojiApplication *self) { - AdwStyleManager *sm = adw_style_manager_get_default(); - gboolean dark = adw_style_manager_get_dark(sm); - self->tray_icon_name = dark ? "jp.angeltech.MoeMoji-tray-dark" - : "jp.angeltech.MoeMoji-tray-light"; - - if (self->dbus_conn && self->sni_registration_id > 0) { - g_dbus_connection_emit_signal(self->dbus_conn, NULL, "/StatusNotifierItem", - "org.kde.StatusNotifierItem", "NewIcon", NULL, - NULL); - } -} - -static void on_dark_changed(G_GNUC_UNUSED GObject *obj, - G_GNUC_UNUSED GParamSpec *pspec, - gpointer user_data) { - update_tray_icon(MOEMOJI_APPLICATION(user_data)); -} - static void setup_sni(MoeMojiApplication *self) { GError *error = NULL; self->dbus_conn = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, &error); @@ -547,9 +524,6 @@ static void moemoji_application_startup(GApplication *app) { } } setup_sni(self); - update_tray_icon(self); - g_signal_connect(adw_style_manager_get_default(), "notify::dark", - G_CALLBACK(on_dark_changed), self); setup_global_shortcuts(self); } diff --git a/src/moemoji-application.h b/src/moemoji-application.h index d11829c..e1e3660 100644 --- a/src/moemoji-application.h +++ b/src/moemoji-application.h @@ -13,7 +13,6 @@ struct _MoeMojiApplication { guint sni_registration_id; guint menu_registration_id; gchar *icon_theme_path; - const gchar *tray_icon_name; GDBusProxy *shortcuts_proxy; gchar *shortcuts_session_path; gboolean has_tray; diff --git a/src/moemoji-window.c b/src/moemoji-window.c index 3f8d910..2289c30 100644 --- a/src/moemoji-window.c +++ b/src/moemoji-window.c @@ -329,6 +329,7 @@ static void add_kaomoji_button(MoeMojiWindow *self, GtkFlowBox *flow, GtkWidget *button = gtk_button_new_with_label(label_text); gtk_widget_set_halign(button, GTK_ALIGN_FILL); GtkWidget *label = gtk_button_get_child(GTK_BUTTON(button)); + gtk_widget_add_css_class(label, "kaomoji-label"); gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_END); gtk_label_set_xalign(GTK_LABEL(label), 0.0); gtk_widget_add_css_class(button, "kaomoji-button"); diff --git a/src/style.css b/src/style.css index 04cedff..300f452 100644 --- a/src/style.css +++ b/src/style.css @@ -4,7 +4,7 @@ padding: 4px 8px; } -.kaomoji-button label { +.kaomoji-label { text-align: left; text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.6),