lxde.scm 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676
  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 Nikita <nikita@n0.is>
  5. ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
  6. ;;; Copyright © 2017 Brendan Tildesley <mail@brendan.scot>
  7. ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
  8. ;;; Copyright © 2018 ison <ison@airmail.cc>
  9. ;;; Copyright © 2018, 2019, 2021 Ludovic Courtès <ludo@gnu.org>
  10. ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
  11. ;;; Copyright © 2019 Meiyo Peng <meiyo@riseup.net>
  12. ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
  13. ;;;
  14. ;;; This file is part of GNU Guix.
  15. ;;;
  16. ;;; GNU Guix is free software; you can redistribute it and/or modify it
  17. ;;; under the terms of the GNU General Public License as published by
  18. ;;; the Free Software Foundation; either version 3 of the License, or (at
  19. ;;; your option) any later version.
  20. ;;;
  21. ;;; GNU Guix is distributed in the hope that it will be useful, but
  22. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  23. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  24. ;;; GNU General Public License for more details.
  25. ;;;
  26. ;;; You should have received a copy of the GNU General Public License
  27. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
  28. (define-module (gnu packages lxde)
  29. #:use-module (gnu packages)
  30. #:use-module (gnu packages admin)
  31. #:use-module (gnu packages autotools)
  32. #:use-module (gnu packages base)
  33. #:use-module (gnu packages bash)
  34. #:use-module (gnu packages curl)
  35. #:use-module (gnu packages disk)
  36. #:use-module (gnu packages docbook)
  37. #:use-module (gnu packages file-systems)
  38. #:use-module (gnu packages freedesktop)
  39. #:use-module (gnu packages gettext)
  40. #:use-module (gnu packages glib)
  41. #:use-module (gnu packages gnome)
  42. #:use-module (gnu packages gtk)
  43. #:use-module (gnu packages image-viewers)
  44. #:use-module (gnu packages libusb)
  45. #:use-module (gnu packages linux)
  46. #:use-module (gnu packages lsof)
  47. #:use-module (gnu packages openbox)
  48. #:use-module (gnu packages pkg-config)
  49. #:use-module (gnu packages polkit)
  50. #:use-module (gnu packages text-editors)
  51. #:use-module (gnu packages video)
  52. #:use-module (gnu packages wget)
  53. #:use-module (gnu packages wm)
  54. #:use-module (gnu packages xdisorg)
  55. #:use-module (gnu packages xml)
  56. #:use-module (gnu packages xorg)
  57. #:use-module (guix build-system glib-or-gtk)
  58. #:use-module (guix build-system gnu)
  59. #:use-module (guix build-system trivial)
  60. #:use-module (guix download)
  61. #:use-module (guix git-download)
  62. #:use-module ((guix licenses) #:prefix license:)
  63. #:use-module (guix packages)
  64. #:use-module (guix utils))
  65. (define-public libfm
  66. (package
  67. (name "libfm")
  68. (version "1.3.2")
  69. (source (origin
  70. (method url-fetch)
  71. (uri (string-append "mirror://sourceforge/pcmanfm/"
  72. "PCManFM%20%2B%20Libfm%20%28tarball%20release"
  73. "%29/LibFM/" name "-" version ".tar.xz"))
  74. (sha256
  75. (base32
  76. "1rfira3lx8v6scz1aq69925j4vslpp36bmgrrzcfby2c60q2c155"))))
  77. (build-system gnu-build-system)
  78. (inputs `(("glib" ,glib)
  79. ("gtk+" ,gtk+-2)))
  80. (native-inputs `(("intltool" ,intltool)
  81. ("glib" ,glib "bin") ; for gtester
  82. ("libtool" ,libtool)
  83. ("menu-cache" ,menu-cache)
  84. ("pkg-config" ,pkg-config)
  85. ("vala" ,vala)))
  86. (synopsis "File management support (core library)")
  87. (description "LibFM provides file management functions built on top of
  88. Glib/GIO giving a higher-level API.")
  89. (home-page "https://lxde.github.io")
  90. (license license:gpl2+)))
  91. (define-public libfm-extra
  92. (package (inherit libfm)
  93. (name "libfm-extra")
  94. (arguments '(#:configure-flags '("--with-extra-only")))
  95. (inputs `(("glib" ,glib)))
  96. (native-inputs `(("intltool" ,intltool)
  97. ("libtool" ,libtool)
  98. ("pkg-config" ,pkg-config)))
  99. (synopsis "File management support (extra library)")
  100. (description "This package contains a stand-alone library which extends the
  101. libFM file management library.")))
  102. (define-public lxappearance
  103. (package
  104. (name "lxappearance")
  105. (version "0.6.3")
  106. (source
  107. (origin
  108. (method url-fetch)
  109. (uri (string-append "mirror://sourceforge/lxde/"
  110. "LXAppearance/lxappearance-" version ".tar.xz"))
  111. (sha256
  112. (base32 "0f4bjaamfxxdr9civvy55pa6vv9dx1hjs522gjbbgx7yp1cdh8kj"))))
  113. (build-system gnu-build-system)
  114. (inputs `(("gtk+" ,gtk+-2)))
  115. (native-inputs `(("intltool" ,intltool)
  116. ("pkg-config" ,pkg-config)))
  117. (synopsis "LXDE GTK+ theme switcher")
  118. (description "LXAppearance is a desktop-independent GTK+ theme switcher
  119. able to change themes, icons, and fonts used by GTK+ applications.")
  120. (home-page "https://lxde.github.io")
  121. (license license:gpl2+)))
  122. (define-public lxrandr
  123. (package
  124. (name "lxrandr")
  125. (version "0.3.2")
  126. (source (origin
  127. (method url-fetch)
  128. (uri (string-append "mirror://sourceforge/lxde/LXRandR"
  129. "%20%28monitor%20config%20tool%29/LXRandR%20"
  130. (version-major+minor version) ".x/"
  131. "lxrandr-" version ".tar.xz"))
  132. (sha256
  133. (base32
  134. "04n3vgh3ix12p8jfs4w0dyfq3anbjy33h7g53wbbqqc0f74xyplb"))))
  135. (build-system gnu-build-system)
  136. (arguments
  137. `(#:phases
  138. (modify-phases %standard-phases
  139. (add-after 'unpack 'xrandr-absolutely
  140. ;; lxrandr is useless without xrandr and gives an unhelpful error
  141. ;; message if it's not in $PATH, so make it a hard dependency.
  142. (lambda* (#:key input #:allow-other-keys)
  143. (substitute* "src/lxrandr.c"
  144. (("(\"|')xrandr\"" _ match)
  145. (string-append match (which "xrandr") "\"")))
  146. #t)))))
  147. (inputs `(("gtk+" ,gtk+-2)
  148. ("xrandr" ,xrandr)))
  149. (native-inputs `(("intltool" ,intltool)
  150. ("pkg-config" ,pkg-config)))
  151. (synopsis "LXDE monitor configuration tool")
  152. (description "LXRandR is a very basic monitor configuration tool. It
  153. relies on the X11 resize-and-rotate (RandR) extension but doesn't aim to be a
  154. full frontend of it. LXRandR only gives you some easy and quick options which
  155. are intuitive. It's suitable for laptop users who frequently uses projectors
  156. or external monitor.")
  157. (home-page "https://lxde.github.io")
  158. (license license:gpl2+)))
  159. (define-public lxtask
  160. (package
  161. (name "lxtask")
  162. (version "0.1.10")
  163. (source (origin
  164. (method url-fetch)
  165. (uri (string-append "mirror://sourceforge/lxde/LXTask"
  166. "%20%28task%20manager%29/LXTask%20"
  167. (version-major+minor version) ".x/"
  168. "lxtask-" version ".tar.xz"))
  169. (sha256
  170. (base32
  171. "0b2fxg8jjjpk219gh7qa18g45365598nd2bq7rrq0bdvqjdxy5i2"))))
  172. (build-system gnu-build-system)
  173. (inputs `(("gtk+" ,gtk+-2)))
  174. (native-inputs `(("intltool" ,intltool)
  175. ("pkg-config" ,pkg-config)))
  176. (synopsis "LXDE task manager")
  177. (description "LXTask is a lightweight task manager derived from Xfce task
  178. manager with all dependencies on Xfce removed. LXTask is based on the GTK+
  179. toolkit. It allows users to monitor and control of running processes.")
  180. (home-page "https://lxde.github.io")
  181. (license license:gpl2+)))
  182. (define-public lxterminal
  183. (package
  184. (name "lxterminal")
  185. (version "0.3.2")
  186. (source (origin
  187. (method url-fetch)
  188. (uri (string-append "mirror://sourceforge/lxde/LXTerminal"
  189. "%20%28terminal%20emulator%29/LXTerminal%20"
  190. version "/" name "-" version ".tar.xz"))
  191. (sha256
  192. (base32
  193. "1124pghrhnx6q4391ri8nvi6bsmvbj1dx81an08mird8jf2b2rii"))))
  194. (build-system gnu-build-system)
  195. (inputs `(("gtk+" ,gtk+-2)
  196. ("vte" ,vte/gtk+-2)))
  197. (native-inputs `(("intltool" ,intltool)
  198. ("pkg-config" ,pkg-config)))
  199. (synopsis "LXDE terminal emulator")
  200. (description "LXTerminal is a VTE-based terminal emulator. It supports
  201. multiple tabs and has only minimal dependencies thus being completely
  202. desktop-independent. In order to reduce memory usage and increase the
  203. performance, all instances of the terminal are sharing a single process.")
  204. (home-page "https://lxde.github.io")
  205. (license license:gpl2+)))
  206. (define-public menu-cache
  207. (package
  208. (name "menu-cache")
  209. (version "1.1.0")
  210. (source (origin
  211. (method url-fetch)
  212. (uri (string-append "mirror://sourceforge/lxde/" name "/"
  213. (version-major+minor version) "/"
  214. name "-" version ".tar.xz"))
  215. (sha256
  216. (base32
  217. "1iry4zlpppww8qai2cw4zid4081hh7fz8nzsp5lqyffbkm2yn0pd"))))
  218. (build-system gnu-build-system)
  219. (inputs `(("glib" ,glib)
  220. ("libfm" ,libfm-extra)))
  221. (native-inputs `(("pkg-config" ,pkg-config)))
  222. (arguments
  223. `(#:configure-flags '("CFLAGS=-fcommon")))
  224. (synopsis "LXDE implementation of the freedesktop menu's cache")
  225. (description "Menu-cache is a library creating and utilizing caches to
  226. speed up the access to freedesktop.org defined application menus.")
  227. (home-page "https://lxde.github.io")
  228. (license license:lgpl2.1+)))
  229. (define-public pcmanfm
  230. (package
  231. (name "pcmanfm")
  232. (version "1.3.2")
  233. (source (origin
  234. (method url-fetch)
  235. (uri (string-append "mirror://sourceforge/pcmanfm/"
  236. "PCManFM%20%2B%20Libfm%20%28tarball%20release"
  237. "%29/PCManFM/pcmanfm-" version ".tar.xz"))
  238. (sha256
  239. (base32
  240. "1xqc2k2jh165mm81xg0ghxx0ml1s3rhh4ndvbzkcri4kfhj7pjql"))))
  241. (build-system gnu-build-system)
  242. (inputs `(("gtk+" ,gtk+-2)
  243. ("gvfs" ,gvfs) ; for trash and mount support
  244. ("libfm" ,libfm)
  245. ("libx11" ,libx11)))
  246. (native-inputs `(("intltool" ,intltool)
  247. ("libtool" ,libtool)
  248. ("pkg-config" ,pkg-config)))
  249. (propagated-inputs
  250. `(("lxmenu-data" ,lxmenu-data))) ; for "Open With..." application list
  251. (synopsis "LXDE file manager")
  252. (description "PCMan is a lightweight GTK+ based file manager, compliant
  253. with freedesktop.org standard.")
  254. (home-page "https://lxde.github.io")
  255. (license license:gpl2+)))
  256. (define-public spacefm
  257. ;; SpaceFM is based on PCManFM.
  258. (package
  259. (name "spacefm")
  260. (version "1.0.6")
  261. (source
  262. (origin
  263. (method git-fetch)
  264. (uri
  265. (git-reference
  266. (url "https://github.com/IgnorantGuru/spacefm")
  267. (commit version)))
  268. (file-name (git-file-name name version))
  269. (sha256
  270. (base32 "193mdcv73cfc2bnm4bzmnf1wmkzgj1ya64y0lgyxn3ww36ghcsx9"))
  271. (modules '((guix build utils)))
  272. (snippet
  273. '(begin
  274. (substitute* "src/main.c"
  275. (("#include <sys/types\\.h>" all)
  276. ;; Add missing include for 'major' and 'minor' with glibc
  277. ;; >= 2.28.
  278. (string-append all "\n"
  279. "#include <sys/sysmacros.h>\n")))
  280. #t))))
  281. (build-system glib-or-gtk-build-system)
  282. (native-inputs
  283. `(("desktop-file-utils" ,desktop-file-utils)
  284. ("glib:bin" ,glib "bin")
  285. ("gtk+:bin" ,gtk+ "bin")
  286. ("intltool" ,intltool)
  287. ("pkg-config" ,pkg-config)))
  288. (inputs
  289. `(("bash" ,bash)
  290. ("btrfs-progs" ,btrfs-progs)
  291. ("cairo" ,cairo)
  292. ("coreutils" ,coreutils)
  293. ("curlftpfs" ,curlftpfs)
  294. ("e2fsprogs" ,e2fsprogs)
  295. ("eudev" ,eudev)
  296. ("fakeroot" ,fakeroot)
  297. ("ffmpegthumbnailer" ,ffmpegthumbnailer)
  298. ("fsarchiver" ,fsarchiver)
  299. ("fuseiso" ,fuseiso)
  300. ("glib" ,glib)
  301. ("gphotofs" ,gphotofs)
  302. ("gtk+" ,gtk+)
  303. ("ifuse" ,ifuse)
  304. ("jmtpfs" ,jmtpfs)
  305. ("ktsuss" ,ktsuss)
  306. ("libx11" ,libx11)
  307. ("lsof" ,lsof)
  308. ("ntfs-3g" ,ntfs-3g)
  309. ("pango" ,pango)
  310. ("procps" ,procps)
  311. ("shared-mime-info" ,shared-mime-info)
  312. ("startup-notification" ,startup-notification)
  313. ("udevil" ,udevil)
  314. ("util-linux" ,util-linux)
  315. ("wget" ,wget)))
  316. (arguments
  317. `(#:phases
  318. (modify-phases %standard-phases
  319. (add-after 'unpack 'patch-bin-dirs
  320. (lambda* (#:key inputs #:allow-other-keys)
  321. (let* ((bash (assoc-ref inputs "bash"))
  322. (coreutils (assoc-ref inputs "coreutils"))
  323. (util-linux (assoc-ref inputs "util-linux"))
  324. (procps (assoc-ref inputs "procps"))
  325. (e2fsprogs (assoc-ref inputs "e2fsprogs"))
  326. (btrfs-progs (assoc-ref inputs "btrfs-progs"))
  327. (ntfs-3g (assoc-ref inputs "ntfs-3g"))
  328. (lsof (assoc-ref inputs "lsof"))
  329. (fsarchiver (assoc-ref inputs "fsarchiver"))
  330. (ktsuss (assoc-ref inputs "ktsuss")))
  331. (with-directory-excursion "src"
  332. (substitute* '("ptk/ptk-file-task.c" "ptk/ptk-handler.h"
  333. "ptk/ptk-location-view.c" "spacefm-auth"
  334. "spacefm-auth.bash" "vfs/vfs-file-task.c"
  335. "settings.c" "../data/ui/prefdlg.ui"
  336. "../data/ui/prefdlg2.ui")
  337. (("/bin/sh" file) (string-append bash file))
  338. (("/bin/bash" file) (string-append bash file))
  339. (("/bin/kill" file) (string-append coreutils file))
  340. (("/bin/ls" file) (string-append coreutils file))
  341. (("/usr(/bin/sha256sum)" _ file) (string-append coreutils file))
  342. (("/usr(/bin/sha512sum)" _ file) (string-append coreutils file))
  343. (("/sbin/fsck" file) (string-append util-linux file))
  344. (("/sbin/mkfs" file) (string-append util-linux file))
  345. (("/sbin/mkswap" file) (string-append util-linux file))
  346. (("/bin/ps" file) (string-append procps file))
  347. (("/sbin/tune2fs" file) (string-append e2fsprogs file))
  348. (("/sbin/btrfs") (string-append btrfs-progs "/bin/btrfs"))
  349. (("/sbin/ntfslabel" file) (string-append ntfs-3g file))
  350. (("/usr(/bin/lsof)" _ file) (string-append lsof file))
  351. (("(/usr)?/(sbin|bin)/fsarchiver") (string-append fsarchiver
  352. "/sbin/fsarchiver"))
  353. (("/usr(/bin/ktsuss)" _ file) (string-append ktsuss file))))
  354. #t)))
  355. (add-after 'patch-bin-dirs 'patch-share-dirs
  356. (lambda* (#:key outputs #:allow-other-keys)
  357. (let* ((out (assoc-ref outputs "out"))
  358. (share (string-append out "/share")))
  359. (with-directory-excursion "src"
  360. (substitute* '("main-window.c" "settings.c"
  361. "ptk/ptk-app-chooser.c")
  362. (("/usr(/local)?/share") share)))
  363. #t)))
  364. (add-after 'patch-share-dirs 'patch-mime-dirs
  365. (lambda* (#:key inputs #:allow-other-keys)
  366. (let* ((mime (search-input-directory inputs "/share/mime")))
  367. (with-directory-excursion "src"
  368. (substitute* '("mime-type/mime-type.c" "ptk/ptk-file-menu.c")
  369. (("/usr(/local)?/share/mime") mime)))
  370. #t)))
  371. (add-after 'patch-mime-dirs 'patch-setuid-progs
  372. (lambda _
  373. (let* ((su "/run/setuid-programs/su")
  374. (mount "/run/setuid-programs/mount")
  375. (umount "/run/setuid-programs/umount")
  376. (udevil "/run/setuid-programs/udevil"))
  377. (with-directory-excursion "src"
  378. (substitute* '("settings.c" "settings.h" "vfs/vfs-file-task.c"
  379. "vfs/vfs-volume-hal.c" "../data/ui/prefdlg.ui"
  380. "../data/ui/prefdlg2.ui")
  381. (("(/usr)?/bin/su") su)
  382. (("/(bin|sbin)/mount") mount)
  383. (("/(bin|sbin)/umount") umount)
  384. (("/usr/bin/udevil") udevil)))
  385. #t)))
  386. (add-after 'patch-setuid-progs 'patch-spacefm-conf
  387. (lambda* (#:key inputs #:allow-other-keys)
  388. (substitute* "etc/spacefm.conf"
  389. (("#terminal_su=/bin/su")
  390. "terminal_su=/run/setuid-programs/su")
  391. (("#graphical_su=/usr/bin/gksu")
  392. (string-append "graphical_su="
  393. (search-input-file inputs "/bin/ktsuss")))))))
  394. #:configure-flags (list
  395. "CFLAGS=-fcommon"
  396. (string-append "--with-preferable-sudo="
  397. (assoc-ref %build-inputs "ktsuss")
  398. "/bin/ktsuss")
  399. (string-append "--with-bash-path="
  400. (assoc-ref %build-inputs "bash")
  401. "/bin/bash")
  402. (string-append "--sysconfdir="
  403. (assoc-ref %outputs "out")
  404. "/etc"))))
  405. (home-page "https://ignorantguru.github.io/spacefm/")
  406. (synopsis "Multi-panel tabbed file manager")
  407. (description "SpaceFM is a graphical, multi-panel, tabbed file manager
  408. based on PCManFM with built-in virtual file system, udev-based device manager,
  409. customizable menu system, and Bash integration.")
  410. ;; The combination is GPLv3+ but src/exo is under LGPLv3+.
  411. (license license:gpl3+)))
  412. (define-public lxmenu-data
  413. (package
  414. (name "lxmenu-data")
  415. (version "0.1.5")
  416. (source
  417. (origin
  418. (method url-fetch)
  419. (uri (string-append "https://downloads.sourceforge.net/lxde/"
  420. name "-" version ".tar.xz"))
  421. (sha256
  422. (base32
  423. "1f5sh2dvb3pdnjlcsyzq9543ck2jsqizkx3204cr22zm5s6j3qwz"))))
  424. (build-system gnu-build-system)
  425. (native-inputs
  426. `(("pkg-config" ,pkg-config)
  427. ("intltool" ,intltool)))
  428. (synopsis "Freedesktop.org desktop menus for LXDE")
  429. (description
  430. "Lxmenu-data provides files required to build freedesktop.org
  431. menu spec-compliant desktop menus for LXDE.")
  432. (home-page "https://lxde.github.io")
  433. (license license:lgpl2.1+)))
  434. (define-public lxde-icon-theme
  435. (package
  436. (name "lxde-icon-theme")
  437. (version "0.5.1")
  438. (source
  439. (origin
  440. (method url-fetch)
  441. (uri (string-append "https://downloads.sourceforge.net/lxde/"
  442. name "-" version ".tar.xz"))
  443. (sha256
  444. (base32
  445. "0v4i6x86fr2hbx4fb2si7y2qzmj7h6hcjwaifnin18r8kwwvgl73"))))
  446. (build-system gnu-build-system)
  447. (native-inputs
  448. `(("pkg-config" ,pkg-config)))
  449. (synopsis "LXDE default icon theme based on nuoveXT2")
  450. (description
  451. "Lxde-icon-theme provides an default icon theme for LXDE.")
  452. (home-page "https://lxde.github.io")
  453. (license license:lgpl3)))
  454. (define-public lxde-common
  455. (package
  456. (name "lxde-common")
  457. (version "0.99.2")
  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. "0mj84fa3f4ak1jjslrwc2q3ci9zxrxpciggviza9bjb0168brn8w"))))
  466. (build-system gnu-build-system)
  467. (arguments
  468. '(#:phases (modify-phases %standard-phases
  469. (add-before 'configure 'set-lxsession
  470. (lambda* (#:key inputs #:allow-other-keys)
  471. ;; Set the right file name for 'lxsession'.
  472. (let ((lxsession (assoc-ref inputs "lxsession")))
  473. (substitute* "startlxde.in"
  474. (("^exec .*/bin/lxsession")
  475. (string-append "exec " lxsession
  476. "/bin/lxsession")))
  477. #t))))))
  478. (native-inputs
  479. `(("pkg-config" ,pkg-config)
  480. ("intltool" ,intltool)
  481. ("lxmenu-data" ,lxmenu-data)
  482. ("lxde-icon-theme" ,lxde-icon-theme)))
  483. (inputs
  484. `(("lxsession" ,lxsession)
  485. ;; ("lxlock" ,lxlock) ;for 'lxde-screenlock.desktop'
  486. ))
  487. (synopsis "Common files of the LXDE Desktop")
  488. (description
  489. "Lxde-common provides common files of the LXDE Desktop.")
  490. (home-page "https://lxde.github.io")
  491. (license license:gpl2+)))
  492. (define-public lxinput
  493. (package
  494. (name "lxinput")
  495. (version "0.3.5")
  496. (source
  497. (origin
  498. (method url-fetch)
  499. (uri (string-append "https://downloads.sourceforge.net/lxde/"
  500. name "-" version ".tar.xz"))
  501. (sha256
  502. (base32
  503. "123f3yn4rp1w5b3n5aj3ad9snkxab29qkrs7bcvf5bx4cn57g3sf"))))
  504. (build-system gnu-build-system)
  505. (inputs
  506. `(("gtk+-2" ,gtk+-2)))
  507. (native-inputs
  508. `(("pkg-config" ,pkg-config)
  509. ("intltool" ,intltool)))
  510. (synopsis "Tool for mouse and keyboard configuration in LXDE")
  511. (description
  512. "Lxinput provides a small program to configure keyboard and mouse
  513. in LXDE.")
  514. (home-page "https://lxde.github.io")
  515. (license license:gpl2+)))
  516. (define-public lxsession
  517. (package
  518. (name "lxsession")
  519. (version "0.5.5")
  520. (source
  521. (origin
  522. (method url-fetch)
  523. (uri (string-append "https://downloads.sourceforge.net/lxde/"
  524. "lxsession-" version ".tar.xz"))
  525. (sha256
  526. (base32 "0imv9nysip1j9lrb2z96kl05isjgp312323wnnd5b59h0ff0sgp4"))
  527. (modules '((guix build utils)))
  528. (snippet
  529. ;; Remove C files generated by Vala so we can build from source.
  530. '(let* ((c->vala
  531. (lambda (file)
  532. (string-append (string-drop-right file 2)
  533. ".vala")))
  534. (generated-c-file?
  535. (lambda (file stat)
  536. (and (string-suffix? ".c" file)
  537. (file-exists? (c->vala file))))))
  538. (for-each delete-file
  539. (find-files "." generated-c-file?))
  540. #t))))
  541. (build-system gnu-build-system)
  542. (arguments
  543. `(#:phases
  544. (modify-phases %standard-phases
  545. (add-after 'unpack 'rm-stamp
  546. (lambda _
  547. (for-each delete-file (find-files "." "\\.stamp$"))
  548. ;; Force regeneration of configure script.
  549. (delete-file "configure")
  550. #t)))))
  551. (inputs
  552. `(("gtk+-2" ,gtk+-2)
  553. ("polkit" ,polkit)))
  554. (native-inputs
  555. `(("pkg-config" ,pkg-config)
  556. ("intltool" ,intltool)
  557. ("docbook-xsl" ,docbook-xsl)
  558. ("vala" ,vala)
  559. ;; For bootstrapping.
  560. ("autoconf" ,autoconf)
  561. ("automake" ,automake)))
  562. (synopsis "Lightweight X11 session manager")
  563. (description
  564. "Lxsession provides an lightweight X11 session manager.")
  565. (home-page "https://lxde.github.io")
  566. (license license:gpl2+)))
  567. (define-public lxpanel
  568. (package
  569. (name "lxpanel")
  570. (version "0.10.0")
  571. (source
  572. (origin
  573. (method url-fetch)
  574. (uri (string-append "https://downloads.sourceforge.net/lxde/"
  575. "lxpanel-" version ".tar.xz"))
  576. (sha256
  577. (base32 "0zis3b815p375s6mymhf5sn1a0c1xv0ixxzb0mh3fqhrby6cqy26"))))
  578. (build-system gnu-build-system)
  579. (arguments
  580. `(#:phases
  581. (modify-phases %standard-phases
  582. (add-after 'install 'wrap
  583. (lambda* (#:key inputs outputs #:allow-other-keys)
  584. (let ((out (assoc-ref outputs "out"))
  585. (menu (assoc-ref inputs "lxmenu-data")))
  586. (wrap-program (string-append out "/bin/lxpanel")
  587. `("XDG_DATA_DIRS" ":" prefix
  588. (,(string-append menu "/share"))))
  589. #t))))))
  590. (inputs
  591. ;; TODO: libindicator-0.3.0
  592. `(("curl" ,curl)
  593. ("gtk+-2" ,gtk+-2)
  594. ("alsa-lib" ,alsa-lib)
  595. ("libwnck-2" ,libwnck-2)
  596. ("keybinder" ,keybinder)
  597. ("libxmu" ,libxmu)
  598. ("libxpm" ,libxpm)
  599. ("libxml2" ,libxml2)
  600. ("cairo" ,cairo)
  601. ("libx11" ,libx11)
  602. ("wireless-tools" ,wireless-tools)))
  603. (native-inputs
  604. `(("pkg-config" ,pkg-config)
  605. ("intltool" ,intltool)
  606. ("docbook-xml" ,docbook-xml)
  607. ("gettext-minimal" ,gettext-minimal)))
  608. (propagated-inputs
  609. `(("lxmenu-data" ,lxmenu-data)
  610. ("libfm" ,libfm)
  611. ("menu-cache" ,menu-cache)))
  612. (synopsis "X11 Desktop panel for LXDE")
  613. (description
  614. "Lxpanel provides an X11 desktop panel for LXDE.")
  615. (home-page "https://lxde.github.io")
  616. (license license:gpl2+)))
  617. (define-public lxde
  618. (package
  619. (name "lxde")
  620. (version (package-version lxde-common))
  621. (source #f)
  622. (build-system trivial-build-system)
  623. (arguments '(#:builder (begin (mkdir %output) #t)))
  624. (propagated-inputs
  625. ;; TODO:
  626. ;; lxshortcut, lxsession-edit
  627. ;; lxappearance-obconf
  628. `(("menu-cache" ,menu-cache)
  629. ("gpicview" ,gpicview)
  630. ("leafpad" ,leafpad)
  631. ("lxappearance" ,lxappearance)
  632. ("lxde-icon-theme" ,lxde-icon-theme)
  633. ("lxde-common" ,lxde-common)
  634. ("lxmenu-data" ,lxmenu-data)
  635. ("lxpanel" ,lxpanel)
  636. ("lxrandr" ,lxrandr)
  637. ("lxsession" ,lxsession)
  638. ("libfm" ,libfm)
  639. ("libfm-extra" ,libfm-extra)
  640. ("lxtask" ,lxtask)
  641. ("lxterminal" ,lxterminal)
  642. ("pcmanfm" ,pcmanfm)
  643. ("openbox" ,openbox)
  644. ("obconf" ,obconf)))
  645. (synopsis "Lightweight X11 Desktop Environment")
  646. (description
  647. "LXDE, which stands for Lightweight X11 Desktop Environment, is a
  648. desktop environment which is lightweight and fast. It is designed to be
  649. user friendly and slim, while keeping the resource usage low. LXDE uses
  650. less RAM and less CPU while being a feature rich desktop environment. Unlike
  651. other tightly integrated desktops LXDE strives to be modular, so each
  652. component can be used independently with few dependencies.")
  653. (home-page "https://lxde.github.io")
  654. (license license:gpl2+))) ; And others.
  655. ;;; lxde.scm ends here