Merge branch 'master' into staging
[jackhill/guix/guix.git] / gnu / packages / lxde.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
3 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
4 ;;; Copyright © 2017 ng0 <ng0@n0.is>
5 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
6 ;;; Copyright © 2017 Brendan Tildesley <mail@brendan.scot>
7 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
8 ;;; Copyright © 2018 ison <ison@airmail.cc>
9 ;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org>
10 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
11 ;;; Copyright © 2019 Meiyo Peng <meiyo@riseup.net>
12 ;;;
13 ;;; This file is part of GNU Guix.
14 ;;;
15 ;;; GNU Guix is free software; you can redistribute it and/or modify it
16 ;;; under the terms of the GNU General Public License as published by
17 ;;; the Free Software Foundation; either version 3 of the License, or (at
18 ;;; your option) any later version.
19 ;;;
20 ;;; GNU Guix is distributed in the hope that it will be useful, but
21 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
22 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 ;;; GNU General Public License for more details.
24 ;;;
25 ;;; You should have received a copy of the GNU General Public License
26 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
27
28 (define-module (gnu packages lxde)
29 #:use-module (gnu packages)
30 #:use-module (gnu packages autotools)
31 #:use-module (gnu packages bash)
32 #:use-module (gnu packages docbook)
33 #:use-module (gnu packages freedesktop)
34 #:use-module (gnu packages gettext)
35 #:use-module (gnu packages glib)
36 #:use-module (gnu packages gnome)
37 #:use-module (gnu packages gtk)
38 #:use-module (gnu packages image-viewers)
39 #:use-module (gnu packages linux)
40 #:use-module (gnu packages lsof)
41 #:use-module (gnu packages openbox)
42 #:use-module (gnu packages pkg-config)
43 #:use-module (gnu packages polkit)
44 #:use-module (gnu packages text-editors)
45 #:use-module (gnu packages video)
46 #:use-module (gnu packages wm)
47 #:use-module (gnu packages xml)
48 #:use-module (gnu packages xorg)
49 #:use-module (guix build-system gnu)
50 #:use-module (guix build-system trivial)
51 #:use-module (guix download)
52 #:use-module ((guix licenses) #:prefix license:)
53 #:use-module (guix packages)
54 #:use-module (guix utils))
55
56 (define-public libfm
57 (package
58 (name "libfm")
59 (version "1.3.1")
60 (source (origin
61 (method url-fetch)
62 (uri (string-append "mirror://sourceforge/pcmanfm/"
63 "PCManFM%20%2B%20Libfm%20%28tarball%20release"
64 "%29/LibFM/" name "-" version ".tar.xz"))
65 (sha256
66 (base32
67 "1r6gl49xrykldwz8y4h2s7gjarxigg3bbkrj0gphxjj1vr5j9ccn"))))
68 (build-system gnu-build-system)
69 (inputs `(("glib" ,glib)
70 ("gtk+" ,gtk+-2)))
71 (native-inputs `(("intltool" ,intltool)
72 ("glib" ,glib "bin") ; for gtester
73 ("libtool" ,libtool)
74 ("menu-cache" ,menu-cache)
75 ("pkg-config" ,pkg-config)
76 ("vala" ,vala)))
77 (synopsis "File management support (core library)")
78 (description "LibFM provides file management functions built on top of
79 Glib/GIO giving a higher-level API.")
80 (home-page "https://lxde.org")
81 (license license:gpl2+)))
82
83 (define-public libfm-extra
84 (package (inherit libfm)
85 (name "libfm-extra")
86 (arguments '(#:configure-flags '("--with-extra-only")))
87 (inputs `(("glib" ,glib)))
88 (native-inputs `(("intltool" ,intltool)
89 ("libtool" ,libtool)
90 ("pkg-config" ,pkg-config)))
91 (synopsis "File management support (extra library)")
92 (description "This package contains standalone library which extends the
93 libFM file management library.")))
94
95 (define-public lxappearance
96 (package
97 (name "lxappearance")
98 (version "0.6.2")
99 (source (origin
100 (method url-fetch)
101 (uri (string-append "mirror://sourceforge/lxde/"
102 "LXAppearance/" name "-" version ".tar.xz"))
103 (sha256
104 (base32
105 "07r0xbi6504zjnbpan7zrn7gi4j0kbsqqfpj8v2x94gr05p16qj4"))))
106 (build-system gnu-build-system)
107 (inputs `(("gtk+" ,gtk+-2)))
108 (native-inputs `(("intltool" ,intltool)
109 ("pkg-config" ,pkg-config)))
110 (synopsis "LXDE GTK+ theme switcher")
111 (description "LXAppearance is a desktop-independent GTK+ theme switcher
112 able to change themes, icons, and fonts used by GTK+ applications.")
113 (home-page "https://lxde.org")
114 (license license:gpl2+)))
115
116 (define-public lxrandr
117 (package
118 (name "lxrandr")
119 (version "0.3.1")
120 (source (origin
121 (method url-fetch)
122 (uri (string-append "mirror://sourceforge/lxde/LXRandR"
123 "%20%28monitor%20config%20tool%29/LXRandR%20"
124 (version-major+minor version) ".x/"
125 name "-" version ".tar.xz"))
126 (sha256
127 (base32
128 "0khqi42paqg82jllb2kza4arf3fafzgq90fhyr3rw3d9hn23763d"))))
129 (build-system gnu-build-system)
130 (inputs `(("gtk+" ,gtk+-2)))
131 (native-inputs `(("intltool" ,intltool)
132 ("pkg-config" ,pkg-config)))
133 (synopsis "LXDE monitor configuration tool")
134 (description "LXRandR is a very basic monitor configuration tool. It
135 relies on the X11 resize-and-rotate (RandR) extension but doesn't aim to be a
136 full frontend of it. LXRandR only gives you some easy and quick options which
137 are intuitive. It's suitable for laptop users who frequently uses projectors
138 or external monitor.")
139 (home-page "https://lxde.org")
140 (license license:gpl2+)))
141
142 (define-public lxtask
143 (package
144 (name "lxtask")
145 (version "0.1.7")
146 (source (origin
147 (method url-fetch)
148 (uri (string-append "mirror://sourceforge/lxde/LXTask"
149 "%20%28task%20manager%29/LXTask%20"
150 (version-major+minor version) ".x/"
151 name "-" version ".tar.xz"))
152 (sha256
153 (base32
154 "1zihhvzsg9bl6k0gv7jwx6cgsi3rmcagvnmshc1h0mjq2immmdph"))))
155 (build-system gnu-build-system)
156 (inputs `(("gtk+" ,gtk+-2)))
157 (native-inputs `(("intltool" ,intltool)
158 ("pkg-config" ,pkg-config)))
159 (synopsis "LXDE task manager")
160 (description "LXTask is a lightweight task manager derived from Xfce task
161 manager with all dependencies on Xfce removed. LXTask is based on the GTK+
162 toolkit. It allows users to monitor and control of running processes.")
163 (home-page "https://lxde.org")
164 (license license:gpl2+)))
165
166 (define-public lxterminal
167 (package
168 (name "lxterminal")
169 (version "0.3.2")
170 (source (origin
171 (method url-fetch)
172 (uri (string-append "mirror://sourceforge/lxde/LXTerminal"
173 "%20%28terminal%20emulator%29/LXTerminal%20"
174 version "/" name "-" version ".tar.xz"))
175 (sha256
176 (base32
177 "1124pghrhnx6q4391ri8nvi6bsmvbj1dx81an08mird8jf2b2rii"))))
178 (build-system gnu-build-system)
179 (inputs `(("gtk+" ,gtk+-2)
180 ("vte" ,vte/gtk+-2)))
181 (native-inputs `(("intltool" ,intltool)
182 ("pkg-config" ,pkg-config)))
183 (synopsis "LXDE terminal emulator")
184 (description "LXTerminal is a VTE-based terminal emulator. It supports
185 multiple tabs and has only minimal dependencies thus being completely
186 desktop-independent. In order to reduce memory usage and increase the
187 performance, all instances of the terminal are sharing a single process.")
188 (home-page "https://lxde.org")
189 (license license:gpl2+)))
190
191 (define-public menu-cache
192 (package
193 (name "menu-cache")
194 (version "1.1.0")
195 (source (origin
196 (method url-fetch)
197 (uri (string-append "mirror://sourceforge/lxde/" name "/"
198 (version-major+minor version) "/"
199 name "-" version ".tar.xz"))
200 (sha256
201 (base32
202 "1iry4zlpppww8qai2cw4zid4081hh7fz8nzsp5lqyffbkm2yn0pd"))))
203 (build-system gnu-build-system)
204 (inputs `(("glib" ,glib)
205 ("libfm" ,libfm-extra)))
206 (native-inputs `(("pkg-config" ,pkg-config)))
207 (synopsis "LXDE implementation of the freedesktop menu's cache")
208 (description "Menu-cache is a library creating and utilizing caches to
209 speed up the access to freedesktop.org defined application menus.")
210 (home-page "https://lxde.org")
211 (license license:lgpl2.1+)))
212
213 (define-public pcmanfm
214 (package
215 (name "pcmanfm")
216 (version "1.3.1")
217 (source (origin
218 (method url-fetch)
219 (uri (string-append "mirror://sourceforge/pcmanfm/"
220 "PCManFM%20%2B%20Libfm%20%28tarball%20release"
221 "%29/PCManFM/pcmanfm-" version ".tar.xz"))
222 (sha256
223 (base32
224 "0mb8hg76x1z0szdyl0w7jpz0bdblc6a29is1vvnh79z37qxh8138"))))
225 (build-system gnu-build-system)
226 (inputs `(("gtk+" ,gtk+-2)
227 ("gvfs" ,gvfs) ; for trash and mount support
228 ("libfm" ,libfm)
229 ("libx11" ,libx11)))
230 (native-inputs `(("intltool" ,intltool)
231 ("libtool" ,libtool)
232 ("pkg-config" ,pkg-config)))
233 (propagated-inputs
234 `(("lxmenu-data" ,lxmenu-data))) ; for "Open With..." application list
235 (synopsis "LXDE file manager")
236 (description "PCMan is a lightweight GTK+ based file manager, compliant
237 with freedesktop.org standard.")
238 (home-page "https://lxde.org")
239 (license license:gpl2+)))
240
241 (define-public spacefm
242 ;; SpaceFM is based on PCManFM.
243 (package
244 (name "spacefm")
245 (version "1.0.6")
246 (source (origin
247 (method url-fetch)
248 (uri (string-append
249 "https://github.com/IgnorantGuru/spacefm/archive/"
250 version ".tar.gz"))
251 (sha256
252 (base32
253 "1jg7xfyr7kihjnalxp8wxyb9qjk8hqf5l36rp3s0lvkpmpyakppy"))
254 (modules '((guix build utils)))
255 (snippet
256 '(begin
257 (substitute* "src/main.c"
258 (("#include <sys/types\\.h>" all)
259 ;; Add missing include for 'major' and 'minor' with glibc
260 ;; >= 2.28.
261 (string-append all "\n"
262 "#include <sys/sysmacros.h>\n")))
263 #t))
264 (file-name (string-append name "-" version ".tar.gz"))))
265 (build-system gnu-build-system)
266 (native-inputs `(("pkg-config" ,pkg-config)
267 ("intltool" ,intltool)))
268 (inputs `(("bash" ,bash)
269 ("gtk+" ,gtk+)
270 ("eudev" ,eudev)
271 ("desktop-file-utils" ,desktop-file-utils)
272 ("shared-mime-info" ,shared-mime-info)
273 ("ffmpegthumbnailer" ,ffmpegthumbnailer)
274 ("jmtpfs" ,jmtpfs)
275 ("lsof" ,lsof)
276 ("udisks" ,udisks)))
277 (arguments
278 `(#:configure-flags (list (string-append "--with-bash-path="
279 (assoc-ref %build-inputs "bash")
280 "/bin/bash")
281 (string-append "--sysconfdir="
282 (assoc-ref %outputs "out")
283 "/etc"))))
284 (home-page "http://ignorantguru.github.io/spacefm/")
285 (synopsis "Multi-panel tabbed file manager")
286 (description "SpaceFM is a graphical, multi-panel, tabbed file manager
287 based on PCManFM with built-in virtual file system, udev-based device manager,
288 customizable menu system, and Bash integration.")
289
290 ;; The combination is GPLv3+ but src/exo is under LGPLv3+.
291 (license license:gpl3+)))
292
293 (define-public lxmenu-data
294 (package
295 (name "lxmenu-data")
296 (version "0.1.5")
297 (source
298 (origin
299 (method url-fetch)
300 (uri (string-append "https://downloads.sourceforge.net/lxde/"
301 name "-" version ".tar.xz"))
302 (sha256
303 (base32
304 "1f5sh2dvb3pdnjlcsyzq9543ck2jsqizkx3204cr22zm5s6j3qwz"))))
305 (build-system gnu-build-system)
306 (native-inputs
307 `(("pkg-config" ,pkg-config)
308 ("intltool" ,intltool)))
309 (synopsis "Freedesktop.org desktop menus for LXDE")
310 (description
311 "Lxmenu-data provides files required to build freedesktop.org
312 menu spec-compliant desktop menus for LXDE.")
313 (home-page "https://lxde.org")
314 (license license:lgpl2.1+)))
315
316 (define-public lxde-icon-theme
317 (package
318 (name "lxde-icon-theme")
319 (version "0.5.1")
320 (source
321 (origin
322 (method url-fetch)
323 (uri (string-append "https://downloads.sourceforge.net/lxde/"
324 name "-" version ".tar.xz"))
325 (sha256
326 (base32
327 "0v4i6x86fr2hbx4fb2si7y2qzmj7h6hcjwaifnin18r8kwwvgl73"))))
328 (build-system gnu-build-system)
329 (native-inputs
330 `(("pkg-config" ,pkg-config)))
331 (synopsis "LXDE default icon theme based on nuoveXT2")
332 (description
333 "Lxde-icon-theme provides an default icon theme for LXDE.")
334 (home-page "https://lxde.org")
335 (license license:lgpl3)))
336
337 (define-public lxde-common
338 (package
339 (name "lxde-common")
340 (version "0.99.2")
341 (source
342 (origin
343 (method url-fetch)
344 (uri (string-append "https://downloads.sourceforge.net/lxde/"
345 name "-" version ".tar.xz"))
346 (sha256
347 (base32
348 "0mj84fa3f4ak1jjslrwc2q3ci9zxrxpciggviza9bjb0168brn8w"))))
349 (build-system gnu-build-system)
350 (arguments
351 '(#:phases (modify-phases %standard-phases
352 (add-before 'configure 'set-lxsession
353 (lambda* (#:key inputs #:allow-other-keys)
354 ;; Set the right file name for 'lxsession'.
355 (let ((lxsession (assoc-ref inputs "lxsession")))
356 (substitute* "startlxde.in"
357 (("^exec .*/bin/lxsession")
358 (string-append "exec " lxsession
359 "/bin/lxsession")))
360 #t))))))
361 (native-inputs
362 `(("pkg-config" ,pkg-config)
363 ("intltool" ,intltool)
364 ("lxmenu-data" ,lxmenu-data)
365 ("lxde-icon-theme" ,lxde-icon-theme)))
366 (inputs
367 `(("lxsession" ,lxsession)
368 ;; ("lxlock" ,lxlock) ;for 'lxde-screenlock.desktop'
369 ))
370 (synopsis "Common files of the LXDE Desktop")
371 (description
372 "Lxde-common provides common files of the LXDE Desktop.")
373 (home-page "https://lxde.org")
374 (license license:gpl2+)))
375
376 (define-public lxinput
377 (package
378 (name "lxinput")
379 (version "0.3.5")
380 (source
381 (origin
382 (method url-fetch)
383 (uri (string-append "https://downloads.sourceforge.net/lxde/"
384 name "-" version ".tar.xz"))
385 (sha256
386 (base32
387 "123f3yn4rp1w5b3n5aj3ad9snkxab29qkrs7bcvf5bx4cn57g3sf"))))
388 (build-system gnu-build-system)
389 (inputs
390 `(("gtk+-2" ,gtk+-2)))
391 (native-inputs
392 `(("pkg-config" ,pkg-config)
393 ("intltool" ,intltool)))
394 (synopsis "Tool for mouse and keyboard configuration in LXDE")
395 (description
396 "Lxinput provides a small program to configure keyboard and mouse
397 in LXDE.")
398 (home-page "https://lxde.org")
399 (license license:gpl2+)))
400
401 (define-public lxsession
402 (package
403 (name "lxsession")
404 (version "0.5.3")
405 (source
406 (origin
407 (method url-fetch)
408 (uri (string-append "https://downloads.sourceforge.net/lxde/"
409 name "-" version ".tar.xz"))
410 (patches (search-patches "lxsession-use-gapplication.patch"))
411 (sha256
412 (base32
413 "1a0zmyywwzdh59nc0l94cir18vhp633z4q2xfhn5zx11ajj45gwh"))
414 (modules '((guix build utils)))
415 (snippet
416 ;; Remove C files generated by Vala so we can build from source.
417 '(let* ((c->vala
418 (lambda (file)
419 (string-append (string-drop-right file 2)
420 ".vala")))
421 (generated-c-file?
422 (lambda (file stat)
423 (and (string-suffix? ".c" file)
424 (file-exists? (c->vala file))))))
425 (for-each delete-file
426 (find-files "." generated-c-file?))
427 #t))))
428 (build-system gnu-build-system)
429 (arguments
430 `(#:phases
431 (modify-phases %standard-phases
432 (add-after 'unpack 'rm-stamp
433 (lambda _
434 (for-each delete-file (find-files "." "\\.stamp$"))
435 ;; Force regeneration of configure script.
436 (delete-file "configure")
437 #t)))))
438 (inputs
439 `(("gtk+-2" ,gtk+-2)
440 ("polkit" ,polkit)))
441 (native-inputs
442 `(("pkg-config" ,pkg-config)
443 ("intltool" ,intltool)
444 ("docbook-xsl" ,docbook-xsl)
445 ("vala" ,vala)
446 ("autoconf" ,autoconf)
447 ("automake" ,automake)))
448 (synopsis "Lightweight X11 session manager")
449 (description
450 "Lxsession provides an lightweight X11 session manager.")
451 (home-page "https://lxde.org")
452 (license license:gpl2+)))
453
454 (define-public lxpanel
455 (package
456 (name "lxpanel")
457 (version "0.9.3")
458 (source
459 (origin
460 (method url-fetch)
461 (uri (string-append "https://downloads.sourceforge.net/lxde/"
462 name "-" version ".tar.xz"))
463 (sha256
464 (base32
465 "1ccgv7jgl3y865cpb6w7baaz7468fxncm83bqxlwyni5bwhglb1l"))))
466 (build-system gnu-build-system)
467 (arguments
468 `(#:phases
469 (modify-phases %standard-phases
470 (add-after 'install 'wrap
471 (lambda* (#:key inputs outputs #:allow-other-keys)
472 (let ((out (assoc-ref outputs "out"))
473 (menu (assoc-ref inputs "lxmenu-data")))
474 (wrap-program (string-append out "/bin/lxpanel")
475 `("XDG_DATA_DIRS" ":" prefix
476 (,(string-append menu "/share"))))
477 #t))))))
478 (inputs
479 ;; TODO: libindicator-0.3.0
480 `(("gtk+-2" ,gtk+-2)
481 ("alsa-lib" ,alsa-lib)
482 ("libwnck-2" ,libwnck-2)
483 ("keybinder" ,keybinder)
484 ("libxmu" ,libxmu)
485 ("libxpm" ,libxpm)
486 ("libxml2" ,libxml2)
487 ("cairo" ,cairo)
488 ("libx11" ,libx11)
489 ("wireless-tools" ,wireless-tools)))
490 (native-inputs
491 `(("pkg-config" ,pkg-config)
492 ("intltool" ,intltool)
493 ("docbook-xml" ,docbook-xml)
494 ("gettext-minimal" ,gettext-minimal)))
495 (propagated-inputs
496 `(("lxmenu-data" ,lxmenu-data)
497 ("libfm" ,libfm)
498 ("menu-cache" ,menu-cache)))
499 (synopsis "X11 Desktop panel for LXDE")
500 (description
501 "Lxpanel provides an X11 desktop panel for LXDE.")
502 (home-page "https://lxde.org")
503 (license license:gpl2+)))
504
505 (define-public lxde
506 (package
507 (name "lxde")
508 (version (package-version lxde-common))
509 (source #f)
510 (build-system trivial-build-system)
511 (arguments '(#:builder (begin (mkdir %output) #t)))
512 (propagated-inputs
513 ;; TODO:
514 ;; lxshortcut, lxsession-edit
515 ;; lxappearance-obconf
516 `(("menu-cache" ,menu-cache)
517 ("gpicview" ,gpicview)
518 ("leafpad" ,leafpad)
519 ("lxappearance" ,lxappearance)
520 ("lxde-icon-theme" ,lxde-icon-theme)
521 ("lxde-common" ,lxde-common)
522 ("lxmenu-data" ,lxmenu-data)
523 ("lxpanel" ,lxpanel)
524 ("lxrandr" ,lxrandr)
525 ("lxsession" ,lxsession)
526 ("libfm" ,libfm)
527 ("libfm-extra" ,libfm-extra)
528 ("lxtask" ,lxtask)
529 ("lxterminal" ,lxterminal)
530 ("pcmanfm" ,pcmanfm)
531 ("openbox" ,openbox)
532 ("obconf" ,obconf)))
533 (synopsis "Lightweight X11 Desktop Environment")
534 (description
535 "LXDE, which stands for Lightweight X11 Desktop Environment, is a
536 desktop environment which is lightweight and fast. It is designed to be
537 user friendly and slim, while keeping the resource usage low. LXDE uses
538 less RAM and less CPU while being a feature rich desktop environment. Unlike
539 other tightly integrated desktops LXDE strives to be modular, so each
540 component can be used independently with few dependencies.")
541 (home-page "https://lxde.org")
542 (license license:gpl2+))) ; And others.
543
544 ;;; lxde.scm ends here