Loading pkgs/desktops/gnome/core/evince/default.nix +23 −5 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ , gsettings-desktop-schemas , gnome-desktop , dbus , pantheon , python3 , texlive , t1lib Loading @@ -40,6 +41,7 @@ , supportMultimedia ? true # PDF multimedia , libgxps , supportXPS ? true # Open XML Paper Specification via libgxps , withPantheon ? false }: stdenv.mkDerivation rec { Loading @@ -53,6 +55,13 @@ stdenv.mkDerivation rec { sha256 = "lautDW/urJVg2zq4C6fF6rsf3xyg47PJMzmvBUU6JNg="; }; patches = lib.optionals withPantheon [ # Make this respect dark mode settings from Pantheon # https://github.com/elementary/evince # The patch currently differs from upstream (updated for evince 41). ./pantheon-dark-style.patch ]; postPatch = '' chmod +x meson_post_install.py patchShebangs meson_post_install.py Loading Loading @@ -96,9 +105,18 @@ stdenv.mkDerivation rec { poppler t1lib texlive.bin.core # kpathsea for DVI support ] ++ lib.optional supportXPS libgxps ++ lib.optionals supportMultimedia (with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav ]); ] ++ lib.optionals supportXPS [ libgxps ] ++ lib.optionals supportMultimedia (with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav ]) ++ lib.optionals withPantheon [ pantheon.granite ]; mesonFlags = [ "-Dnautilus=false" Loading Loading @@ -128,8 +146,8 @@ stdenv.mkDerivation rec { on the GNOME Desktop with a single simple application. ''; license = lib.licenses.gpl2Plus; license = licenses.gpl2Plus; platforms = platforms.linux; maintainers = teams.gnome.members; maintainers = teams.gnome.members ++ teams.pantheon.members; }; } pkgs/desktops/gnome/core/evince/pantheon-dark-style.patch 0 → 100644 +86 −0 Original line number Diff line number Diff line diff --git a/meson.build b/meson.build index bcb69cf7..4a18c08c 100644 --- a/meson.build +++ b/meson.build @@ -162,6 +162,7 @@ gmodule_dep = dependency('gmodule-2.0') gmodule_no_export_dep = dependency('gmodule-no-export-2.0', version: glib_req_version) gtk_dep = dependency('gtk+-3.0', version: gtk_req_version) gthread_dep = dependency('gthread-2.0', version: glib_req_version) +granite_dep = dependency('granite') # Keep the version here synchronised with subprojects/libhandy.wrap hdy_dep = dependency('libhandy-1', version: hdy_req_version, fallback: ['libhandy', 'libhandy_dep']) diff --git a/shell/ev-application.c b/shell/ev-application.c index e704bda2..d705328c 100644 --- a/shell/ev-application.c +++ b/shell/ev-application.c @@ -30,6 +30,7 @@ #include <glib/gi18n.h> #include <glib/gstdio.h> #include <gtk/gtk.h> +#include <granite.h> #include <handy.h> #ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> @@ -176,7 +177,7 @@ ev_spawn (const char *uri, g_string_append_printf (cmd, " %s", path); g_free (path); - + /* Page label */ if (dest) { switch (ev_link_dest_get_dest_type (dest)) { @@ -940,6 +941,20 @@ ev_application_migrate_config_dir (EvApplication *application) g_free (old_accels); } +static void +ev_application_set_prefers_color_scheme () +{ + GtkSettings* gtk_settings = gtk_settings_get_default (); + GraniteSettings* granite_settings = granite_settings_get_default (); + + g_object_set ( + gtk_settings, + "gtk-application-prefer-dark-theme", + granite_settings_get_prefers_color_scheme (granite_settings) == GRANITE_SETTINGS_COLOR_SCHEME_DARK, + NULL + ); +} + static void ev_application_startup (GApplication *gapplication) { @@ -992,6 +1007,7 @@ ev_application_startup (GApplication *gapplication) EvApplication *application = EV_APPLICATION (gapplication); const gchar **it; + GraniteSettings* granite_settings = granite_settings_get_default (); g_application_set_resource_base_path (gapplication, "/org/gnome/evince"); @@ -999,6 +1015,11 @@ ev_application_startup (GApplication *gapplication) hdy_init (); + ev_application_set_prefers_color_scheme (); + + g_signal_connect (granite_settings, "notify::prefers-color-scheme", + G_CALLBACK(ev_application_set_prefers_color_scheme), NULL); + for (it = action_accels; it[0]; it += g_strv_length ((gchar **)it) + 1) gtk_application_set_accels_for_action (GTK_APPLICATION (application), it[0], &it[1]); } diff --git a/shell/meson.build b/shell/meson.build index 7cbc48f2..a3089b13 100644 --- a/shell/meson.build +++ b/shell/meson.build @@ -52,6 +52,7 @@ sources += gnome.compile_resources( deps = [ gdk_pixbuf_dep, gnome_desktop_dep, + granite_dep, hdy_dep, libevmisc_dep, libevproperties_dep, pkgs/desktops/pantheon/default.nix +2 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,8 @@ lib.makeScope pkgs.newScope (self: with self; { epiphany = pkgs.epiphany.override { withPantheon = true; }; evince = pkgs.evince.override { withPantheon = true; }; sideload = callPackage ./apps/sideload { }; #### DESKTOP Loading Loading
pkgs/desktops/gnome/core/evince/default.nix +23 −5 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ , gsettings-desktop-schemas , gnome-desktop , dbus , pantheon , python3 , texlive , t1lib Loading @@ -40,6 +41,7 @@ , supportMultimedia ? true # PDF multimedia , libgxps , supportXPS ? true # Open XML Paper Specification via libgxps , withPantheon ? false }: stdenv.mkDerivation rec { Loading @@ -53,6 +55,13 @@ stdenv.mkDerivation rec { sha256 = "lautDW/urJVg2zq4C6fF6rsf3xyg47PJMzmvBUU6JNg="; }; patches = lib.optionals withPantheon [ # Make this respect dark mode settings from Pantheon # https://github.com/elementary/evince # The patch currently differs from upstream (updated for evince 41). ./pantheon-dark-style.patch ]; postPatch = '' chmod +x meson_post_install.py patchShebangs meson_post_install.py Loading Loading @@ -96,9 +105,18 @@ stdenv.mkDerivation rec { poppler t1lib texlive.bin.core # kpathsea for DVI support ] ++ lib.optional supportXPS libgxps ++ lib.optionals supportMultimedia (with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav ]); ] ++ lib.optionals supportXPS [ libgxps ] ++ lib.optionals supportMultimedia (with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav ]) ++ lib.optionals withPantheon [ pantheon.granite ]; mesonFlags = [ "-Dnautilus=false" Loading Loading @@ -128,8 +146,8 @@ stdenv.mkDerivation rec { on the GNOME Desktop with a single simple application. ''; license = lib.licenses.gpl2Plus; license = licenses.gpl2Plus; platforms = platforms.linux; maintainers = teams.gnome.members; maintainers = teams.gnome.members ++ teams.pantheon.members; }; }
pkgs/desktops/gnome/core/evince/pantheon-dark-style.patch 0 → 100644 +86 −0 Original line number Diff line number Diff line diff --git a/meson.build b/meson.build index bcb69cf7..4a18c08c 100644 --- a/meson.build +++ b/meson.build @@ -162,6 +162,7 @@ gmodule_dep = dependency('gmodule-2.0') gmodule_no_export_dep = dependency('gmodule-no-export-2.0', version: glib_req_version) gtk_dep = dependency('gtk+-3.0', version: gtk_req_version) gthread_dep = dependency('gthread-2.0', version: glib_req_version) +granite_dep = dependency('granite') # Keep the version here synchronised with subprojects/libhandy.wrap hdy_dep = dependency('libhandy-1', version: hdy_req_version, fallback: ['libhandy', 'libhandy_dep']) diff --git a/shell/ev-application.c b/shell/ev-application.c index e704bda2..d705328c 100644 --- a/shell/ev-application.c +++ b/shell/ev-application.c @@ -30,6 +30,7 @@ #include <glib/gi18n.h> #include <glib/gstdio.h> #include <gtk/gtk.h> +#include <granite.h> #include <handy.h> #ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> @@ -176,7 +177,7 @@ ev_spawn (const char *uri, g_string_append_printf (cmd, " %s", path); g_free (path); - + /* Page label */ if (dest) { switch (ev_link_dest_get_dest_type (dest)) { @@ -940,6 +941,20 @@ ev_application_migrate_config_dir (EvApplication *application) g_free (old_accels); } +static void +ev_application_set_prefers_color_scheme () +{ + GtkSettings* gtk_settings = gtk_settings_get_default (); + GraniteSettings* granite_settings = granite_settings_get_default (); + + g_object_set ( + gtk_settings, + "gtk-application-prefer-dark-theme", + granite_settings_get_prefers_color_scheme (granite_settings) == GRANITE_SETTINGS_COLOR_SCHEME_DARK, + NULL + ); +} + static void ev_application_startup (GApplication *gapplication) { @@ -992,6 +1007,7 @@ ev_application_startup (GApplication *gapplication) EvApplication *application = EV_APPLICATION (gapplication); const gchar **it; + GraniteSettings* granite_settings = granite_settings_get_default (); g_application_set_resource_base_path (gapplication, "/org/gnome/evince"); @@ -999,6 +1015,11 @@ ev_application_startup (GApplication *gapplication) hdy_init (); + ev_application_set_prefers_color_scheme (); + + g_signal_connect (granite_settings, "notify::prefers-color-scheme", + G_CALLBACK(ev_application_set_prefers_color_scheme), NULL); + for (it = action_accels; it[0]; it += g_strv_length ((gchar **)it) + 1) gtk_application_set_accels_for_action (GTK_APPLICATION (application), it[0], &it[1]); } diff --git a/shell/meson.build b/shell/meson.build index 7cbc48f2..a3089b13 100644 --- a/shell/meson.build +++ b/shell/meson.build @@ -52,6 +52,7 @@ sources += gnome.compile_resources( deps = [ gdk_pixbuf_dep, gnome_desktop_dep, + granite_dep, hdy_dep, libevmisc_dep, libevproperties_dep,
pkgs/desktops/pantheon/default.nix +2 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,8 @@ lib.makeScope pkgs.newScope (self: with self; { epiphany = pkgs.epiphany.override { withPantheon = true; }; evince = pkgs.evince.override { withPantheon = true; }; sideload = callPackage ./apps/sideload { }; #### DESKTOP Loading