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