gnu: r-inline: Update to 0.3.16.
[jackhill/guix/guix.git] / gnu / packages / gnome-xyz.scm
index 0fc721b..75ba0f5 100644 (file)
@@ -1,7 +1,12 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2019 Leo Prikler <leo.prikler@student.tugraz.at>
+;;; Copyright © 2019, 2020 Leo Prikler <leo.prikler@student.tugraz.at>
 ;;; Copyright © 2019 Alexandros Theodotou <alex@zrythm.org>
 ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
+;;; Copyright © 2020 Alex Griffin <a@ajgrf.com>
+;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
+;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech>
+;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
 (define-module (gnu packages gnome-xyz)
   #:use-module (guix build-system trivial)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system copy)
+  #:use-module (guix build-system meson)
   #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
+  #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages ssh)
+  #:use-module (gnu packages tls)
   #:use-module (gnu packages ruby)
   #:use-module (gnu packages xml))
 
 (define-public matcha-theme
   (package
     (name "matcha-theme")
-    (version "2019-11-02")
+    (version "2020-05-09")
     (source
       (origin
         (method git-fetch)
         (uri
           (git-reference
-            (url "https://github.com/vinceliuice/matcha")
+            (url "https://github.com/vinceliuice/Matcha-gtk-theme")
             (commit version)))
         (file-name (git-file-name name version))
         (sha256
           (base32
-            "0wci9ahap8kynq8cbyxr7aba9ndb1d4kiq42xvzr34vw1rhcahrr"))))
+            "0fp3ijynyvncy2byjjyba573p81x2pl2hdzv17mg40r8d5mjlkww"))))
     (build-system trivial-build-system)
     (arguments
      '(#:modules ((guix build utils))
@@ -63,9 +74,9 @@
                    (string-append coreutils "/bin:"
                                   (string-append bash "/bin:")))
            (copy-recursively source (getcwd))
-           (patch-shebang "Install")
+           (patch-shebang "install.sh")
            (mkdir-p themesdir)
-           (invoke "./Install" "-d" themesdir)
+           (invoke "./install.sh" "-d" themesdir)
            #t))))
     (inputs
      `(("gtk-engines" ,gtk-engines)))
@@ -82,30 +93,28 @@ like Gnome, Unity, Budgie, Pantheon, XFCE, Mate and others.")
 (define-public delft-icon-theme
   (package
     (name "delft-icon-theme")
-    (version "1.10")
+    (version "1.12")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/madmaxms/iconpack-delft.git")
+             (url "https://github.com/madmaxms/iconpack-delft")
              (commit (string-append "v" version))))
        (sha256
         (base32
-         "0vw3yw9f9ygzfd2k3zrfih3r0vkzlhk1bmsk8sapvk7np24i1z9s"))
+         "1r6b6jf793jxz15ljniwbqy3vcvsl2712qiigfrfrm46fdxlshjd"))
        (file-name (git-file-name name version))))
-    (build-system trivial-build-system)
+    (build-system copy-build-system)
     (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils))
-         (copy-recursively (assoc-ref %build-inputs "source") "icons")
-         (substitute* "icons/Delft/index.theme"
-           (("gnome") "Adwaita"))
-         (delete-file "icons/README.md")
-         (delete-file "icons/LICENSE")
-         (delete-file "icons/logo.jpg")
-         (copy-recursively "icons" (string-append %output "/share/icons")))))
+     `(#:install-plan
+       `(("." "share/icons" #:exclude ("README.md" "LICENSE" "logo.jpg")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-index.theme
+           (lambda _
+            (substitute* "Delft/index.theme"
+              (("gnome") "Adwaita"))
+            #t)))))
     (home-page "https://www.gnome-look.org/p/1199881/")
     (synopsis "Continuation of Faenza icon theme with up to date app icons")
     (description "Delft is a fork of the popular icon theme Faenza with up to
@@ -114,19 +123,133 @@ which haven't been updated for some years.  The new app icons are ported from
 the Obsidian icon theme.")
     (license license:gpl3)))
 
+(define-public gnome-shell-extension-appindicator
+  (package
+    (name "gnome-shell-extension-appindicator")
+    (version "33")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url
+                     "https://github.com/ubuntu/gnome-shell-extension-appindicator.git")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "0qm77s080nbf4gqnfzpwp8a7jf7lliz6fxbsd3lasvrr11pgsk87"))
+              (file-name (git-file-name name version))))
+    (build-system copy-build-system)
+    (arguments
+     `(#:install-plan
+       '(("." ,(string-append "share/gnome-shell/extensions/"
+                              "appindicatorsupport@rgcjonas.gmail.com")))))
+    (synopsis "Adds KStatusNotifierItem support to GNOME Shell")
+    (description "This extension integrates Ubuntu AppIndicators
+and KStatusNotifierItems (KDE's successor of the systray) into
+GNOME Shell.")
+    (home-page "https://github.com/ubuntu/gnome-shell-extension-appindicator/")
+    (license license:gpl2+)))
+
+(define-public gnome-shell-extension-clipboard-indicator
+  (package
+    (name "gnome-shell-extension-clipboard-indicator")
+    (version "34")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url (string-append "https://github.com/Tudmotu/"
+                                        "gnome-shell-extension-clipboard-indicator.git"))
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0i00psc1ky70zljd14jzr627y7nd8xwnwrh4xpajl1f6djabh12s"))
+              (modules '((guix build utils)))
+              (snippet
+               ;; Remove pre-compiled settings schemas and translations from
+               ;; source, as they are generated as part of build. Upstream
+               ;; includes them for people who want to run the software
+               ;; directly from source tree.
+               '(begin (delete-file "schemas/gschemas.compiled")
+                       (for-each delete-file (find-files "locale" "\\.mo$"))
+                       #t))))
+    (build-system copy-build-system)
+    (arguments
+     '(#:install-plan
+       '(("." "share/gnome-shell/extensions/clipboard-indicator@tudmotu.com"
+          #:include-regexp ("\\.css$" "\\.compiled$" "\\.js(on)?$" "\\.mo$" "\\.xml$")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'compile-schemas
+           (lambda _
+             (with-directory-excursion "schemas"
+               (invoke "glib-compile-schemas" "."))
+             #t))
+         (add-before 'install 'compile-locales
+           (lambda _ (invoke "./compile-locales.sh")
+                   #t)))))
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("glib:bin" ,glib "bin")))       ; for glib-compile-schemas
+    (home-page "https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator")
+    (synopsis "Clipboard manager extension for GNOME Shell")
+    (description "Clipboard Indicator is a clipboard manager for GNOME Shell
+that caches clipboard history.")
+    (license license:expat)))
+
+(define-public gnome-shell-extension-topicons-redux
+  (package
+    (name "gnome-shell-extension-topicons-redux")
+    (version "6")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/pop-planet/TopIcons-Redux.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1dli9xb545n3xlj6q4wl0y5gzkm903zs47p8fiq71pdvbr6v38rj"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("glib" ,glib "bin")))
+    (arguments
+     `(#:tests? #f                      ;no test defined in the project
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (invoke "make"
+                       "install"
+                       (string-append
+                        "INSTALL_PATH="
+                        out
+                        "/share/gnome-shell/extensions"))))))))
+    (home-page "https://gitlab.com/pop-planet/TopIcons-Redux")
+    (synopsis "Display legacy tray icons in the GNOME Shell top panel")
+    (description "Many applications, such as chat clients, downloaders, and
+some media players, are meant to run long-term in the background even after you
+close their window.  These applications remain accessible by adding an icon to
+the GNOME Shell Legacy Tray.  However, the Legacy Tray was removed in GNOME
+3.26.  TopIcons Redux brings those icons back into the top panel so that it's
+easier to keep track of apps running in the backround.")
+    (license license:gpl2+)))
+
 (define-public gnome-shell-extension-dash-to-dock
   (package
     (name "gnome-shell-extension-dash-to-dock")
-    (version "66")
+    (version "67")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/micheleg/dash-to-dock.git")
+                    (url "https://github.com/micheleg/dash-to-dock")
                     (commit (string-append "extensions.gnome.org-v"
                                            version))))
               (sha256
                (base32
-                "04krl6rxlp1qc97psraf2kwin7h0mx4c7pnfpi7vhplmvasrwkfh"))
+                "1746xm0iyvyzj6m3pvjx11smh9w1s7naz426ki0dlr5l7jh3mpy5"))
               (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
@@ -151,6 +274,99 @@ faster window switching.")
     (home-page "https://micheleg.github.io/dash-to-dock/")
     (license license:gpl2+)))
 
+(define-public gnome-shell-extension-gsconnect
+  (package
+    (name "gnome-shell-extension-gsconnect")
+    ;; v33 is the last version to support GNOME 3.34
+    (version "33")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url (string-append "https://github.com/andyholmes"
+                                        "/gnome-shell-extension-gsconnect.git"))
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1q03axhn75i864vgmd6myhmgwrmnpf01gsd1wl0di5x9q8mic2zn"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:configure-flags
+       (let* ((out (assoc-ref %outputs "out"))
+              (name+version (strip-store-file-name out))
+              (gschema-dir (string-append out
+                                          "/share/gsettings-schemas/"
+                                          name+version
+                                          "/glib-2.0/schemas"))
+              (gnome-shell (assoc-ref %build-inputs "gnome-shell"))
+              (openssh (assoc-ref %build-inputs "openssh"))
+              (openssl (assoc-ref %build-inputs "openssl")))
+         (list
+          (string-append "-Dgnome_shell_libdir=" gnome-shell "/lib")
+          (string-append "-Dgsettings_schemadir=" gschema-dir)
+          (string-append "-Dopenssl_path=" openssl "/bin/openssl")
+          (string-append "-Dsshadd_path=" openssh "/bin/ssh-add")
+          (string-append "-Dsshkeygen_path=" openssh "/bin/ssh-keygen")
+          (string-append "-Dsession_bus_services_dir=" out "/share/dbus-1/services")
+          "-Dpost_install=true"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'fix-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((glib (assoc-ref inputs "glib:bin"))
+                    (gapplication (string-append glib "/bin/gapplication"))
+                    (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
+               (substitute* "data/org.gnome.Shell.Extensions.GSConnect.desktop"
+                 (("gapplication") gapplication))
+               (for-each
+                (lambda (file)
+                  (substitute* file
+                    (("'use strict';")
+                     (string-append "'use strict';\n\n"
+                                    "'" gi-typelib-path "'.split(':').forEach("
+                                    "path => imports.gi.GIRepository.Repository."
+                                    "prepend_search_path(path));"))))
+                '("src/extension.js" "src/prefs.js"))
+               #t)))
+         (add-after 'install 'wrap-daemons
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (service-dir
+                     (string-append out "/share/gnome-shell/extensions"
+                                    "/gsconnect@andyholmes.github.io/service"))
+                    (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
+               (wrap-program (string-append service-dir "/daemon.js")
+                 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))
+               #t))))))
+    (inputs
+     `(("at-spi2-core" ,at-spi2-core)
+       ("caribou" ,caribou)
+       ("evolution-data-server" ,evolution-data-server)
+       ("gjs" ,gjs)
+       ("glib" ,glib)
+       ("glib:bin" ,glib "bin")
+       ("gsound" ,gsound)
+       ("gnome-shell" ,gnome-shell)
+       ("gtk+" ,gtk+)
+       ("nautilus" ,nautilus)
+       ("openssh" ,openssh)
+       ("openssl" ,openssl)
+       ("python-nautilus" ,python-nautilus)
+       ("python-pygobject" ,python-pygobject)
+       ("upower" ,upower)))
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("gobject-introspection" ,gobject-introspection)
+       ("libxml2" ,libxml2)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/andyholmes/gnome-shell-extension-gsconnect/wiki")
+    (synopsis "Connect GNOME Shell with your Android phone")
+    (description "GSConnect is a complete implementation of KDE Connect
+especially for GNOME Shell, allowing devices to securely share content, like
+notifications or files, and other features like SMS messaging and remote
+control.")
+    (license license:gpl2)))
+
 (define-public gnome-shell-extension-hide-app-icon
   (let ((commit "4188aa5f4ba24901a053a0c3eb0d83baa8625eab")
         (revision "0"))
@@ -190,7 +406,7 @@ faster window switching.")
       (propagated-inputs
        `(("glib" ,glib)))
       (synopsis "Hide app icon from GNOME's panel")
-      (description "This extension allows to hide the icon and/or title of the
+      (description "This extension hides the icon and/or title of the
 currently focused application in the top panel of the GNOME shell.")
       (home-page
        "https://github.com/michael-rapp/gnome-shell-extension-hide-app-icon/")
@@ -203,15 +419,15 @@ currently focused application in the top panel of the GNOME shell.")
 (define-public gnome-shell-extension-dash-to-panel
   (package
     (name "gnome-shell-extension-dash-to-panel")
-    (version "26")
+    (version "38")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/home-sweet-gnome/dash-to-panel.git")
+                    (url "https://github.com/home-sweet-gnome/dash-to-panel")
                     (commit (string-append "v" version))))
               (sha256
                (base32
-                "1phfx2pblygpcvsppsqqqflm7qnz46mqkw29hj0nv2dn69hf4xbc"))
+                "1kvybb49l1vf0fvh8d0c6xkwnry8m330scamf5x40y63d4i213j1"))
               (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
@@ -246,38 +462,67 @@ into a single panel, similar to that found in KDE Plasma and Windows 7+.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/BjoernDaase/noannoyance.git")
+                    (url "https://github.com/BjoernDaase/noannoyance")
                     (commit "e37b5b3c31f577b4698bc6659bc9fec5ea9ac5d4")))
               (sha256
                (base32
                 "0fa8l3xlh8kbq07y4385wpb908zm6x53z81q16xlmin97dln32hh"))
               (file-name (git-file-name name version))))
-    (build-system trivial-build-system)
+    (build-system copy-build-system)
     (arguments
-     '(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils))
-         (let ((dst (string-append
-                     (assoc-ref %outputs "out")
-                     "/share/gnome-shell/extensions/"
-                     "noannoyance@daase.net")))
-           (mkdir-p dst)
-           (copy-recursively (assoc-ref %build-inputs "source") dst)))))
-    (synopsis "Removes 'Window is ready' annotation")
-    (description "One of the many extensions, that remove this message.
+     '(#:install-plan
+       '(("." "share/gnome-shell/extensions/noannoyance@daase.net"))))
+    (synopsis "Remove 'Window is ready' annotation")
+    (description "One of the many extensions that remove this message.
 It uses ES6 syntax and claims to be more actively maintained than others.")
     (home-page "https://extensions.gnome.org/extension/2182/noannoyance/")
     (license license:gpl2)))
 
-(define-public numix-theme
+(define-public gnome-shell-extension-paperwm
+  (package
+    (name "gnome-shell-extension-paperwm")
+    (version "36.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/paperwm/PaperWM")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1ssnabwxrns36c61ppspjkr9i3qifv08pf2jpwl7cjv3pvyn4kly"))
+              (snippet
+               '(begin (delete-file "schemas/gschemas.compiled")))))
+    (build-system copy-build-system)
+    (arguments
+     '(#:install-plan
+       '(("." "share/gnome-shell/extensions/paperwm@hedning:matrix.org"
+          #:include-regexp ("\\.js(on)?$" "\\.css$" "\\.ui$" "\\.png$"
+                            "\\.xml$" "\\.compiled$")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'compile-schemas
+           (lambda _
+             (with-directory-excursion "schemas"
+               (invoke "make"))
+             #t)))))
+    (native-inputs
+     `(("glib:bin" ,glib "bin"))) ; for glib-compile-schemas
+    (home-page "https://github.com/paperwm/PaperWM")
+    (synopsis "Tiled scrollable window management for GNOME Shell")
+    (description "PaperWM is an experimental GNOME Shell extension providing
+scrollable tiling of windows and per monitor workspaces.  It's inspired by paper
+notebooks and tiling window managers.")
+    (license license:gpl3)))
+
+(define-public numix-gtk-theme
   (package
-    (name "numix-theme")
+    (name "numix-gtk-theme")
     (version "2.6.7")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/numixproject/numix-gtk-theme.git")
+                    (url "https://github.com/numixproject/numix-gtk-theme")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -285,11 +530,14 @@ It uses ES6 syntax and claims to be more actively maintained than others.")
                 "12mw0kr0kkvg395qlbsvkvaqccr90cmxw5rrsl236zh43kj8grb7"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:make-flags (list (string-append "DESTDIR=" (assoc-ref %outputs "out")))
+     '(#:make-flags
+       (list (string-append "INSTALL_DIR="
+                            (assoc-ref %outputs "out")
+                            "/share/themes/Numix"))
+       #:tests? #f
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure)
-         (delete 'check))))
+         (delete 'configure))))             ; no configure script
     (native-inputs
      `(("glib:bin" ,glib "bin")             ; for glib-compile-schemas
        ("gnome-shell" ,gnome-shell)
@@ -302,10 +550,13 @@ dark elements.  It supports GNOME, Unity, Xfce, and Openbox.")
     (home-page "https://numixproject.github.io")
     (license license:gpl3+)))
 
+(define-public numix-theme
+  (deprecated-package "numix-theme" numix-gtk-theme))
+
 (define-public papirus-icon-theme
   (let ((version "0.0.0") ;; The package does not use semver
-        (revision "0")
-        (tag "20191201"))
+        (revision "2")
+        (tag "20200602"))
     (package
       (name "papirus-icon-theme")
       (version (git-version version revision tag))
@@ -313,11 +564,11 @@ dark elements.  It supports GNOME, Unity, Xfce, and Openbox.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/PapirusDevelopmentTeam/papirus-icon-theme.git")
+               (url "https://github.com/PapirusDevelopmentTeam/papirus-icon-theme")
                (commit tag)))
          (sha256
           (base32
-           "0lnz1kmz28xh1f4slbsx7ycji5hgszyiyprbf5w5fbjhvi5gzw1h"))
+           "0yv19kl8jr2jmh9018b1qmnq68alw84vrmb35jm462qd3qzzdgah"))
          (file-name (git-file-name name version))))
       (build-system gnu-build-system)
     (arguments
@@ -335,3 +586,36 @@ dark elements.  It supports GNOME, Unity, Xfce, and Openbox.")
       (description "Papirus is a fork of the icon theme Paper with a lot of new icons
 and a few extra features.")
       (license license:gpl3))))
+
+(define-public vala-language-server
+  (package
+    (name "vala-language-server")
+    ;; Note to maintainer: VLS must be built with a Vala toolchain the same
+    ;; version or newer. Therefore when you update this package you may need
+    ;; to update Vala too.
+    (version "0.48")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/benwaffle/vala-language-server")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "0chgfpci247skrvsiq1l8cas8sj2z6z42dlarka3df3qwxmh0if0"))))
+    (build-system meson-build-system)
+    (arguments '(#:glib-or-gtk? #t))
+    (inputs
+     `(("glib" ,glib)
+       ("json-glib" ,json-glib)
+       ("jsonrpc-glib" ,jsonrpc-glib)
+       ("libgee" ,libgee)
+       ("vala" ,vala-0.48)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/benwaffle/vala-language-server")
+    (synopsis "Language server for Vala")
+    (description "The Vala language server is an implementation of the Vala
+language specification for the Language Server Protocol (LSP).  This tool is
+used in text editing environments to provide a complete and integrated
+feature-set for programming Vala effectively.")
+    (license license:lgpl2.1+)))