summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-02-10 23:11:20 +0100
committerLudovic Courtès <ludo@gnu.org>2019-02-10 23:25:01 +0100
commita76d0f032b6d4148bd36dcb640109fae20922bbc (patch)
treefe73992af0553d0b0fabb972e48e6fab6b9d7068
parent5e6a5aeebd7b735e5d5f2eed496cc1c7e8a5b4c9 (diff)
downloadguix-a76d0f032b6d4148bd36dcb640109fae20922bbc.tar.gz
gnu: gnome-shell: Customize the GDM log-in screen.
* gnu/packages/patches/gnome-shell-theme.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/gnome.scm (gnome-shell)[source](patches, modules)
(snippet): New fields.
[arguments]: Add 'rebuild-css' phase.
[native-inputs]: Add RUBY-SASS.
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/gnome.scm34
-rw-r--r--gnu/packages/patches/gnome-shell-theme.patch53
3 files changed, 86 insertions, 2 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 37083ca916..3bb60d3ade 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -827,6 +827,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/glog-gcc-5-demangling.patch		\
   %D%/packages/patches/gmp-arm-asm-nothumb.patch		\
   %D%/packages/patches/gmp-faulty-test.patch			\
+  %D%/packages/patches/gnome-shell-theme.patch			\
   %D%/packages/patches/gnome-todo-libical-compat.patch		\
   %D%/packages/patches/gnome-tweak-tool-search-paths.patch	\
   %D%/packages/patches/gnucash-fix-test-transaction-failure.patch \
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index db10b0a16b..367d5de16c 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -126,6 +126,7 @@
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages rdesktop)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages ruby)
   #:use-module (gnu packages samba)
   #:use-module (gnu packages scanner)
   #:use-module (gnu packages selinux)
@@ -149,6 +150,7 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages xorg)
+  #:use-module (gnu artwork)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system gnu)
@@ -159,6 +161,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix utils)
+  #:use-module (guix gexp)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1))
 
@@ -5570,11 +5573,37 @@ properties, screen resolution, and other GNOME parameters.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1f20x36ymkp1j667hb7s7byly2gqc4m0anldy3qwp38vm8437caq"))))
+                "1f20x36ymkp1j667hb7s7byly2gqc4m0anldy3qwp38vm8437caq"))
+              (patches (search-patches "gnome-shell-theme.patch"))
+              (modules '((guix build utils)))
+              (snippet
+               #~(begin
+                   ;; CSS files have to be regenerated from the .scss source
+                   ;; that 'gnome-shell-theme.patch' modifies.
+                   (for-each delete-file
+                             (find-files "data/theme"
+                                         "^gnome-shell.*\\.css$"))
+
+                   ;; Copy images for use on the GDM log-in screen.
+                   (copy-file #$(file-append %artwork-repository
+                                             "/slim/0.x/background.png")
+                              "data/theme/guix-background.png")
+                   (invoke #+(file-append inkscape "/bin/inkscape")
+                           "--export-png=data/theme/guix-logo.png"
+                           #$(file-append %artwork-repository
+                                          "/logo/Guix-horizontal-white.svg"))
+                   #t))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
+         (add-before 'build 'rebuild-css
+           (lambda _
+             ;; Rebuild the CSS files from the .scss files that our patch
+             ;; modifies.
+             (invoke "make" "-C" "data"
+                     "theme/gnome-shell.css"
+                     "theme/gnome-shell-high-contrast.css")))
          (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out     (assoc-ref outputs "out"))
@@ -5604,7 +5633,8 @@ properties, screen resolution, and other GNOME parameters.")
        ("intltool" ,intltool)
        ("pkg-config" ,pkg-config)
        ("python" ,python)
-       ("xsltproc" ,libxslt)))
+       ("xsltproc" ,libxslt)
+       ("ruby-sass" ,ruby-sass)))
     (inputs
      `(("accountsservice" ,accountsservice)
        ("caribou" ,caribou)
diff --git a/gnu/packages/patches/gnome-shell-theme.patch b/gnu/packages/patches/gnome-shell-theme.patch
new file mode 100644
index 0000000000..fc7f7caf0f
--- /dev/null
+++ b/gnu/packages/patches/gnome-shell-theme.patch
@@ -0,0 +1,53 @@
+Adjust GNOME-Shell so that it uses a Guix theme by default.
+
+Patch by Ludovic Courtès <ludo@gnu.org>.
+
+diff --git a/data/gnome-shell-theme.gresource.xml b/data/gnome-shell-theme.gresource.xml
+index 76aeaa5..8eaf32e 100644
+--- a/data/gnome-shell-theme.gresource.xml
++++ b/data/gnome-shell-theme.gresource.xml
+@@ -22,6 +22,8 @@
+     <file>no-events.svg</file>
+     <file>no-notifications.svg</file>
+     <file>noise-texture.png</file>
++    <file>guix-background.png</file>
++    <file>guix-logo.png</file>
+     <file>pad-osd.css</file>
+     <file>page-indicator-active.svg</file>
+     <file>page-indicator-inactive.svg</file>
+diff --git a/data/theme/gnome-shell-sass/_common.scss b/data/theme/gnome-shell-sass/_common.scss
+index 54d9f39..b9badd0 100644
+--- a/data/theme/gnome-shell-sass/_common.scss
++++ b/data/theme/gnome-shell-sass/_common.scss
+@@ -1742,7 +1742,16 @@ $legacy_icon_size: 24px;
+ 
+ }
+ 
+-  .login-dialog-logo-bin { padding: 24px 0px; }
++  .login-dialog-logo-bin {
++      /* Make it a bit narrower than .login-dialog-user-list.  */
++      width: 12em;
++      height: 8em;
++      background: url(resource:///org/gnome/shell/theme/guix-logo.png);
++      background-color: transparent;
++      background-repeat: no-repeat;
++      background-size: contain;
++      background-position: center; }
++
+   .login-dialog-banner { color: darken($osd_fg_color,10%); }
+   .login-dialog-button-box { spacing: 5px; }
+   .login-dialog-message-warning { color: $warning_color; }
+@@ -1889,9 +1898,10 @@ $legacy_icon_size: 24px;
+ }
+ 
+ #lockDialogGroup {
+-  background: #2e3436 url(resource:///org/gnome/shell/theme/noise-texture.png);
+-  background-repeat: repeat;
+-}
++  background: #2e3436 url(resource:///org/gnome/shell/theme/guix-background.png);
++  background-repeat: no-repeat;
++  background-size: cover;
++  background-position: center; }
+ 
+ #screenShieldNotifications {
+   StButton#vhandle, StButton#hhandle {