1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
3 ;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com>
4 ;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
5 ;;; Copyright © 2017, 2019, 2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
6 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
7 ;;; Copyright © 2020 Zheng Junjie <873216071@qq.com>
8 ;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
10 ;;; This file is part of GNU Guix.
12 ;;; GNU Guix is free software; you can redistribute it and/or modify it
13 ;;; under the terms of the GNU General Public License as published by
14 ;;; the Free Software Foundation; either version 3 of the License, or (at
15 ;;; your option) any later version.
17 ;;; GNU Guix is distributed in the hope that it will be useful, but
18 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
19 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 ;;; GNU General Public License for more details.
22 ;;; You should have received a copy of the GNU General Public License
23 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
25 (define-module (gnu packages kde-plasma)
26 #:use-module (guix packages)
27 #:use-module (guix download)
28 #:use-module ((guix licenses) #:prefix license:)
29 #:use-module (guix gexp)
30 #:use-module (guix build-system cmake)
31 #:use-module (guix build-system qt)
32 #:use-module (gnu packages compression)
33 #:use-module (gnu packages freedesktop)
34 #:use-module (gnu packages glib)
35 #:use-module (gnu packages gtk)
36 #:use-module (gnu packages kde-frameworks)
37 #:use-module (gnu packages linux)
38 #:use-module (gnu packages pkg-config)
39 #:use-module (gnu packages python)
40 #:use-module (gnu packages qt)
41 #:use-module (gnu packages xdisorg)
42 #:use-module (gnu packages xorg)
43 #:use-module (gnu packages web))
51 (uri (string-append "mirror://kde/stable/plasma/" version "/"
52 name "-" version ".tar.xz"))
55 "0dpk1w7zcafrzf46j060i1qb0fwqpsflkfzr6gcar81llmjnc4b1"))))
56 (build-system qt-build-system)
57 ;; TODO: Warning at /gnu/store/…-kpackage-5.34.0/…/KF5PackageMacros.cmake:
58 ;; warnings during generation of metainfo for org.kde.breezedark.desktop:
59 ;; Package type "Plasma/LookAndFeel" not found
60 ;; TODO: Check whether is makes sence splitting into several outputs, like
62 ;; - breeze-cursor-theme
64 ;; - kde-style-breeze - Widget style
65 ;; - kde-style-breeze-qt4 - propably not useful
66 ;; - kwin-style-breeze
67 ;; - qml-module-qtquick-controls-styles-breeze - QtQuick style
69 (list extra-cmake-modules pkg-config))
71 (list kcmutils ; optional
74 kde-frameworkintegration ; optional
78 kiconthemes ; for optional kde-frameworkintegration
83 qtdeclarative-5 ; optional
85 (home-page "https://invent.kde.org/plasma/breeze")
86 (synopsis "Default KDE Plasma theme")
87 (description "Artwork, styles and assets for the Breeze visual style for
88 the Plasma Desktop. Breeze is the default theme for the KDE Plasma desktop.")
89 (license license:gpl2+)))
91 (define-public breeze-gtk
97 (uri (string-append "mirror://kde/stable/plasma/"
99 "-" version ".tar.xz"))
102 "1j2nq9yw1ragmgwrz9f6ca4ifpi86qv1bbprdgd2qm2yh7vb44sj"))))
103 (build-system qt-build-system)
105 '(#:tests? #f)) ;no 'test' target
106 (native-inputs (list breeze extra-cmake-modules sassc python
108 (home-page "https://invent.kde.org/plasma/breeze")
109 (synopsis "Default KDE Plasma theme (GTK+ port)")
110 (description "GTK+ port of the Breeze visual style for the Plasma Desktop.
111 Breeze is the default theme for the KDE Plasma desktop.")
112 (license (list license:bsd-3 ;cmake/FindSass.cmake
113 license:lgpl2.1+)))) ;<all other files>
115 (define-public kdecoration
121 (uri (string-append "mirror://kde/stable/plasma/" version
122 "/kdecoration-" version ".tar.xz"))
125 "0pn8n7zyb0adzjnn92vmbcf7pmpss60k9k1rk5llamj016xzfgnf"))))
126 (build-system qt-build-system)
128 (list extra-cmake-modules))
130 (list ki18n qtbase-5))
131 (home-page "https://invent.kde.org/plasma/kdecoration")
132 (synopsis "Plugin based library to create window decorations")
133 (description "KDecoration is a library to create window decorations.
134 These window decorations can be used by for example an X11 based window
135 manager which re-parents a Client window to a window decoration frame.")
136 (license license:lgpl3+)))
138 (define-public ksshaskpass
144 (uri (string-append "mirror://kde/stable/plasma/" version
145 "/ksshaskpass-" version ".tar.xz"))
148 "1k2va2v9051f71w78dn3gihk642iyy5yzrkcfnp97fag8g6dpisi"))))
149 (build-system qt-build-system)
151 (list extra-cmake-modules kdoctools))
153 (list kcoreaddons ki18n kwallet kwidgetsaddons qtbase-5))
154 (home-page "https://invent.kde.org/plasma/ksshaskpass")
155 (synopsis "Front-end for ssh-add using kwallet")
156 (description "Ksshaskpass is a front-end for @code{ssh-add} which stores the
157 password of the ssh key in KWallet. Ksshaskpass is not meant to be executed
158 directly, you need to tell @code{ssh-add} about it. @code{ssh-add} will then
159 call it if it is not associated to a terminal.")
160 (license license:gpl2+)))
162 (define-public layer-shell-qt
164 (name "layer-shell-qt")
168 (uri (string-append "mirror://kde/stable/plasma/" version
169 "/layer-shell-qt-" version ".tar.xz"))
172 "1aq089pws39w9ncsiqzgg3qvfg5hc5a74pzra0smdpy5ipfsb6a4"))))
173 (build-system qt-build-system)
175 (list extra-cmake-modules pkg-config))
183 (home-page "https://invent.kde.org/plasma/layer-shell-qt")
184 (synopsis "Qt component for the Wayland ql-layer-shell protocol")
185 (description "Qt component for the Wayland ql-layer-shell protocol.")
186 (license license:gpl2+)))
188 (define-public kscreenlocker
190 (name "kscreenlocker")
194 (uri (string-append "mirror://kde/stable/plasma/" version
195 "/kscreenlocker-" version ".tar.xz"))
198 "1fd5sqaqx9kj3kr0bgxpllhcm5arf8bc9pkpd9yk9c8xjy0j0fxi"))))
199 (build-system qt-build-system)
201 `(#:tests? #f ;; TODO: make tests pass
203 (modify-phases %standard-phases
204 (add-before 'check 'check-setup
205 (lambda* (#:key inputs outputs #:allow-other-keys)
206 (system "Xvfb :1 -screen 0 640x480x24 &")
207 (setenv "DISPLAY" ":1")
210 ;; Tests use the installed library and require a DBus session.
211 (add-after 'install 'check
212 (lambda* (#:key tests? #:allow-other-keys)
215 (setenv "CTEST_OUTPUT_ON_FAILURE" "1")
216 (invoke "dbus-launch" "ctest" ".")))
219 (list extra-cmake-modules pkg-config
221 dbus xorg-server-for-tests))
223 `(("kcmutils" ,kcmutils)
225 ("kdeclarative" ,kdeclarative)
226 ("kglobalaccel" ,kglobalaccel)
228 ("kidletime" ,kidletime)
229 ("knotifications" ,knotifications)
230 ("ktextwidgets" ,ktextwidgets)
231 ("kwayland" ,kwayland)
232 ("kwindowsystem" ,kwindowsystem)
234 ("libseccomp" ,libseccomp) ;for sandboxing the look'n'feel package
235 ("libxcursor" ,libxcursor) ;missing in CMakeList.txt
236 ("libxi" ,libxi) ;XInput, required for grabbing XInput2 devices
237 ("linux-pam" ,linux-pam)
238 ("logind" ,elogind) ;optional loginctl support
240 ("qtdeclarative-5" ,qtdeclarative-5)
241 ("qtx11extras" ,qtx11extras)
244 ("xcb-util-keysyms" ,xcb-util-keysyms)))
245 (home-page "https://invent.kde.org/plasma/kscreenlocker")
246 (synopsis "Screen locking library")
248 "@code{kscreenlocker} is a library for creating secure lock screens.")
249 (license license:gpl2+)))
251 (define-public libkscreen
258 (uri (string-append "mirror://kde/stable/plasma/" version "/"
259 name "-" version ".tar.xz"))
261 (base32 "0rf1pm0yyc069f4n5s9ipdx4glzfr9zvv5cbrmn4q9i4v6z1qd8i"))))
262 (build-system qt-build-system)
264 (list extra-cmake-modules
268 (list kwayland libxrandr qtbase-5 qtx11extras))
270 '(#:tests? #f)) ; FIXME: 55% tests passed, 5 tests failed out of 11
271 (home-page "https://community.kde.org/Solid/Projects/ScreenManagement")
272 (synopsis "KDE's screen management software")
273 (description "KScreen is the new screen management software for KDE Plasma
274 Workspaces which tries to be as magic and automatic as possible for users with
275 basic needs and easy to configure for those who want special setups.")
276 (license license:gpl2+)))
278 (define-public libksysguard
280 (name "libksysguard")
285 (uri (string-append "mirror://kde//stable/plasma/" version
286 "/libksysguard-" version ".tar.xz"))
288 (base32 "1kd0h3p8bf9k5pqp0frhr81pa0yyrpkckg9zznirk9p1v88v7bfq"))))
290 (list extra-cmake-modules pkg-config))
292 `(("kconfigwidgets" ,kconfigwidgets)
293 ("kiconthemes" ,kiconthemes)
294 ("kwindowsystem" ,kwindowsystem)
297 ("kcompletion" ,kcompletion)
299 ("kcoreaddons" ,kcoreaddons)
300 ("kdeclarative" ,kdeclarative)
301 ("kglobalaccel" ,kglobalaccel)
303 ("knewstuff" ,knewstuff)
304 ("kwidgetsaddons" ,kwidgetsaddons)
305 ("kservice" ,kservice)
307 ("qtdeclarative-5" ,qtdeclarative-5)
308 ("qtscript" ,qtscript)
309 ("qtwebkit" ,qtwebkit)
310 ("qtx11extras" ,qtx11extras)
311 ("plasma" ,plasma-framework)
313 (build-system qt-build-system)
315 (list #:configure-flags
316 #~`(,(string-append "-DKDE_INSTALL_DATADIR="
319 #~(modify-phases %standard-phases
320 (add-before 'configure 'patch-cmakelists
322 ;; TODO: Verify: This should no longer be necessary, since
323 ;; KF5AuthConfig.cmake.in contains this already.
324 (substitute* "processcore/CMakeLists.txt"
325 (("KAUTH_HELPER_INSTALL_DIR")
326 "KDE_INSTALL_LIBEXECDIR"))))
329 ;; TODO: Fix this failing test-case
330 (invoke "ctest" "-E" "processtest"))))))
331 (home-page "https://userbase.kde.org/KSysGuard")
332 (synopsis "Network enabled task and system monitoring")
333 (description "KSysGuard can obtain information on system load and
334 manage running processes. It obtains this information by interacting
335 with a ksysguardd daemon, which may also run on a remote system.")
336 (license license:gpl3+)))