diff --git a/pkgs/desktops/gnome/core/evince/default.nix b/pkgs/desktops/gnome/core/evince/default.nix index 39eb0338332c..45812dbc901a 100644 --- a/pkgs/desktops/gnome/core/evince/default.nix +++ b/pkgs/desktops/gnome/core/evince/default.nix @@ -30,6 +30,7 @@ , gsettings-desktop-schemas , gnome-desktop , dbus +, pantheon , python3 , texlive , t1lib @@ -40,6 +41,7 @@ , supportMultimedia ? true # PDF multimedia , libgxps , supportXPS ? true # Open XML Paper Specification via libgxps +, withPantheon ? false }: stdenv.mkDerivation rec { @@ -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 @@ -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" @@ -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; }; } diff --git a/pkgs/desktops/gnome/core/evince/pantheon-dark-style.patch b/pkgs/desktops/gnome/core/evince/pantheon-dark-style.patch new file mode 100644 index 000000000000..5e1ef67b08cd --- /dev/null +++ b/pkgs/desktops/gnome/core/evince/pantheon-dark-style.patch @@ -0,0 +1,86 @@ +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 + #include + #include ++#include + #include + #ifdef GDK_WINDOWING_X11 + #include +@@ -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, diff --git a/pkgs/desktops/pantheon/default.nix b/pkgs/desktops/pantheon/default.nix index b3b5409f6a01..668638c1bfec 100644 --- a/pkgs/desktops/pantheon/default.nix +++ b/pkgs/desktops/pantheon/default.nix @@ -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