wm.scm 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104
  1. ;;; GNU Guix --- Functional package management for GNU
  2. ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
  3. ;;; Copyright © 2015 Siniša Biđin <sinisa@bidin.eu>
  4. ;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org>
  5. ;;; Copyright © 2015 xd1le <elisp.vim@gmail.com>
  6. ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
  7. ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
  8. ;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
  9. ;;; Copyright © 2016 Al McElrath <hello@yrns.org>
  10. ;;; Copyright © 2016 Carlo Zancanaro <carlo@zancanaro.id.au>
  11. ;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
  12. ;;; Copyright © 2016, 2017, 2018 Nils Gillmann <ng0@n0.is>
  13. ;;; Copyright © 2016 doncatnip <gnopap@gmail.com>
  14. ;;; Copyright © 2016 Ivan Vilata i Balaguer <ivan@selidor.net>
  15. ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
  16. ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
  17. ;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
  18. ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
  19. ;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
  20. ;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com>
  21. ;;;
  22. ;;; This file is part of GNU Guix.
  23. ;;;
  24. ;;; GNU Guix is free software; you can redistribute it and/or modify it
  25. ;;; under the terms of the GNU General Public License as published by
  26. ;;; the Free Software Foundation; either version 3 of the License, or (at
  27. ;;; your option) any later version.
  28. ;;;
  29. ;;; GNU Guix is distributed in the hope that it will be useful, but
  30. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  31. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  32. ;;; GNU General Public License for more details.
  33. ;;;
  34. ;;; You should have received a copy of the GNU General Public License
  35. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
  36. (define-module (gnu packages wm)
  37. #:use-module ((guix licenses) #:prefix license:)
  38. #:use-module (guix packages)
  39. #:use-module (gnu packages)
  40. #:use-module (gnu packages linux)
  41. #:use-module (guix build-system cmake)
  42. #:use-module (guix build-system gnu)
  43. #:use-module (guix build-system haskell)
  44. #:use-module (guix build-system perl)
  45. #:use-module (guix build-system python)
  46. #:use-module (gnu packages haskell)
  47. #:use-module (gnu packages haskell-check)
  48. #:use-module (gnu packages haskell-web)
  49. #:use-module (gnu packages autotools)
  50. #:use-module (gnu packages bison)
  51. #:use-module (gnu packages gawk)
  52. #:use-module (gnu packages base)
  53. #:use-module (gnu packages pkg-config)
  54. #:use-module (gnu packages perl)
  55. #:use-module (gnu packages pulseaudio)
  56. #:use-module (gnu packages xorg)
  57. #:use-module (gnu packages xdisorg)
  58. #:use-module (gnu packages documentation)
  59. #:use-module (gnu packages xml)
  60. #:use-module (gnu packages m4)
  61. #:use-module (gnu packages docbook)
  62. #:use-module (gnu packages image)
  63. #:use-module (gnu packages pcre)
  64. #:use-module (gnu packages python)
  65. #:use-module (gnu packages gtk)
  66. #:use-module (gnu packages libevent)
  67. #:use-module (gnu packages fribidi)
  68. #:use-module (gnu packages maths)
  69. #:use-module (gnu packages web)
  70. #:use-module (gnu packages fontutils)
  71. #:use-module (gnu packages freedesktop)
  72. #:use-module (gnu packages glib)
  73. #:use-module (gnu packages gperf)
  74. #:use-module (gnu packages imagemagick)
  75. #:use-module (gnu packages lua)
  76. #:use-module (gnu packages linux)
  77. #:use-module (gnu packages suckless)
  78. #:use-module (gnu packages mpd)
  79. #:use-module (guix download)
  80. #:use-module (guix git-download))
  81. (define-public libconfuse
  82. (package
  83. (name "libconfuse")
  84. (version "3.2.2")
  85. (source (origin
  86. (method url-fetch)
  87. (uri (string-append "https://github.com/martinh/libconfuse/"
  88. "releases/download/v" version
  89. "/confuse-" version ".tar.xz"))
  90. (sha256
  91. (base32
  92. "02r1mmzik2m0iigbc2da3y754vj24i18r3ml5p2wzs027mjhn959"))))
  93. (build-system gnu-build-system)
  94. (home-page "https://github.com/martinh/libconfuse")
  95. (synopsis "Configuration file parser library")
  96. (description "libconfuse is a configuration file parser library. It
  97. supports sections and (lists of) values (strings, integers, floats, booleans
  98. or other sections), as well as some other features (such as
  99. single/double-quoted strings, environment variable expansion, functions and
  100. nested include statements).")
  101. (license license:isc)))
  102. (define-public bspwm
  103. (package
  104. (name "bspwm")
  105. (version "0.9.5")
  106. (source
  107. (origin
  108. (method git-fetch)
  109. (uri (git-reference
  110. (url "https://github.com/baskerville/bspwm.git")
  111. (commit version)))
  112. (file-name (git-file-name name version))
  113. (sha256
  114. (base32 "09h3g1rxxjyw861mk32lj774nmwkx8cwxq4wfgmf4dpbizymvhhr"))))
  115. (build-system gnu-build-system)
  116. (inputs
  117. `(("libxcb" ,libxcb)
  118. ("libxinerama" ,libxinerama)
  119. ("sxhkd" ,sxhkd)
  120. ("xcb-util" ,xcb-util)
  121. ("xcb-util-keysyms" ,xcb-util-keysyms)
  122. ("xcb-util-wm" ,xcb-util-wm)))
  123. (arguments
  124. '(#:phases
  125. (modify-phases %standard-phases
  126. (delete 'configure)) ; no configure script
  127. #:tests? #f ; no check target
  128. #:make-flags
  129. (list "CC=gcc"
  130. (string-append "PREFIX=" %output))))
  131. (home-page "https://github.com/baskerville/bspwm")
  132. (synopsis "Tiling window manager based on binary space partitioning")
  133. (description "bspwm is a tiling window manager that represents windows as
  134. the leaves of a full binary tree.")
  135. (license license:bsd-2)))
  136. (define-public i3status
  137. (package
  138. (name "i3status")
  139. (version "2.12")
  140. (source (origin
  141. (method url-fetch)
  142. (uri (string-append "https://i3wm.org/i3status/i3status-"
  143. version ".tar.bz2"))
  144. (sha256
  145. (base32
  146. "06krpbijv4yi33nypg6qcn4hilcrdyarsdpd9fmr2cq46qaqiikg"))))
  147. (build-system gnu-build-system)
  148. (arguments
  149. `(#:make-flags (list "CC=gcc" (string-append "PREFIX=" %output))
  150. #:phases
  151. (modify-phases %standard-phases
  152. (delete 'configure))
  153. #:tests? #f)) ; no test suite
  154. (inputs
  155. `(("openlibm" ,openlibm)
  156. ("libconfuse" ,libconfuse)
  157. ("libyajl" ,libyajl)
  158. ("alsa-lib" ,alsa-lib)
  159. ("pulseaudio" ,pulseaudio)
  160. ("libnl" ,libnl)
  161. ("libcap" ,libcap)
  162. ("asciidoc" ,asciidoc)))
  163. (native-inputs
  164. `(("pkg-config" ,pkg-config)))
  165. (home-page "https://i3wm.org/i3status/")
  166. (synopsis "Status bar for i3bar, dzen2, xmobar or similar programs")
  167. (description "i3status is a small program for generating a status bar for
  168. i3bar, dzen2, xmobar or similar programs. It is designed to be very efficient
  169. by issuing a very small number of system calls, as one generally wants to
  170. update such a status line every second. This ensures that even under high
  171. load, your status bar is updated correctly. Also, it saves a bit of energy by
  172. not hogging your CPU as much as spawning the corresponding amount of shell
  173. commands would.")
  174. (license license:bsd-3)))
  175. (define-public i3-wm
  176. (package
  177. (name "i3-wm")
  178. (version "4.16.1")
  179. (source (origin
  180. (method url-fetch)
  181. (uri (string-append "https://i3wm.org/downloads/i3-"
  182. version ".tar.bz2"))
  183. (sha256
  184. (base32
  185. "0xl56y196vxv001gvx35xwfr25zah8m3xwizp9ycdgdc0rfc4rdb"))))
  186. (build-system gnu-build-system)
  187. (arguments
  188. `(#:configure-flags
  189. ;; The build system tries to build in a separate directory, but that
  190. ;; seems to be unnecessary.
  191. (list "--disable-builddir")
  192. ;; The test suite requires the unpackaged Xephyr X server.
  193. #:tests? #f))
  194. (inputs
  195. `(("libxcb" ,libxcb)
  196. ("xcb-util" ,xcb-util)
  197. ("xcb-util-cursor" ,xcb-util-cursor)
  198. ("xcb-util-keysyms" ,xcb-util-keysyms)
  199. ("xcb-util-wm" ,xcb-util-wm)
  200. ("xcb-util-xrm" ,xcb-util-xrm)
  201. ("libxkbcommon" ,libxkbcommon)
  202. ("libev" ,libev)
  203. ("libyajl" ,libyajl)
  204. ("asciidoc" ,asciidoc)
  205. ("xmlto" ,xmlto)
  206. ("perl-pod-simple" ,perl-pod-simple)
  207. ("libx11" ,libx11)
  208. ("pcre" ,pcre)
  209. ("startup-notification" ,startup-notification)
  210. ("pango" ,pango)
  211. ("cairo" ,cairo)))
  212. (native-inputs
  213. `(("which" ,which)
  214. ("perl" ,perl)
  215. ("pkg-config" ,pkg-config)
  216. ;; For building the documentation.
  217. ("libxml2" ,libxml2)
  218. ("docbook-xsl" ,docbook-xsl)))
  219. (home-page "https://i3wm.org/")
  220. (synopsis "Tiling window manager")
  221. (description "i3 is a tiling X11 window manager that dynamically manages
  222. tiled, stacked, and tabbed window layouts.
  223. i3 primarily targets advanced users. Windows are managed manually and organised
  224. inside containers, which can be split vertically or horizontally, and optionally
  225. resized.
  226. i3 uses a plain-text configuration file, and can be extended and controlled from
  227. many programming languages.")
  228. (license license:bsd-3)))
  229. (define-public i3blocks
  230. (let ((commit "37f23805ff886639163fbef8aedba71c8071eff8")
  231. (revision "1"))
  232. (package
  233. (name "i3blocks")
  234. (version (string-append "1.4-" revision "."
  235. (string-take commit 7)))
  236. (source (origin
  237. (method git-fetch)
  238. (uri (git-reference
  239. (url "https://github.com/vivien/i3blocks.git")
  240. (commit commit)))
  241. (sha256
  242. (base32
  243. "15rnrcajzyrmhlz1a21qqsjlj3dkib70806dlb386fliylc2kisb"))
  244. (file-name (git-file-name name version))))
  245. (build-system gnu-build-system)
  246. (arguments
  247. `(#:make-flags (list "CC=gcc" (string-append "PREFIX=" %output))
  248. #:phases (modify-phases %standard-phases
  249. (add-after 'unpack 'autogen
  250. (lambda _ (invoke "sh" "autogen.sh")))
  251. (add-after 'install 'install-doc
  252. (lambda* (#:key outputs #:allow-other-keys)
  253. (let* ((out (assoc-ref outputs "out"))
  254. (man1 (string-append out "/share/man/man1")))
  255. (install-file "docs/i3blocks.1" man1)
  256. #t))))))
  257. (native-inputs
  258. `(("autoconf" ,autoconf)
  259. ("automake" ,automake)
  260. ("pkg-config" ,pkg-config)))
  261. (home-page "https://github.com/vivien/i3blocks")
  262. (synopsis "Minimalist scheduler for status bar scripts")
  263. (description "i3blocks executes your command lines and generates a
  264. status line from their output. The generated line is meant to be displayed by
  265. the i3 window manager through its i3bar component, as an alternative to
  266. i3status.")
  267. (license license:gpl3+))))
  268. (define-public perl-anyevent-i3
  269. (package
  270. (name "perl-anyevent-i3")
  271. (version "0.17")
  272. (source (origin
  273. (method url-fetch)
  274. (uri (string-append "mirror://cpan/authors/id/M/MS/MSTPLBG/"
  275. "AnyEvent-I3-" version ".tar.gz"))
  276. (sha256
  277. (base32
  278. "0qvd9bq16jyy7v3ma82qcnvz9j503bw0mh7h55gkjf7ir62ck0jk"))))
  279. (build-system perl-build-system)
  280. (propagated-inputs
  281. `(("perl-anyevent" ,perl-anyevent)
  282. ("perl-json-xs" ,perl-json-xs)))
  283. (home-page "https://metacpan.org/release/AnyEvent-I3")
  284. (synopsis
  285. "Communicate with the i3 window manager through perl")
  286. (description
  287. "This module connects to the i3 window manager using the UNIX socket
  288. based IPC interface it provides (if enabled in the configuration file).
  289. You can then subscribe to events or send messages and receive their replies.")
  290. ;; Can be used with either license.
  291. (license (list license:gpl3+ license:perl-license))))
  292. (define-public python-i3-py
  293. (package
  294. (name "python-i3-py")
  295. (version "0.6.5")
  296. (source
  297. (origin
  298. ;; The latest release is not tagged in Git nor has an entry in PyPi,
  299. ;; but there is still a clear commit for it, and it's been the last one
  300. ;; for years.
  301. (method git-fetch)
  302. (uri (git-reference
  303. (url "https://github.com/ziberna/i3-py.git")
  304. (commit "27f88a616e9ecc340e7d041d3d00782f8a1964c1")))
  305. (sha256
  306. (base32
  307. "1nm719dc2xqlll7vj4c4m7mpjb27lpn3bg3c66gajvnrz2x1nmxs"))
  308. (file-name (string-append name "-" version "-checkout"))))
  309. (build-system python-build-system)
  310. (arguments
  311. `(#:tests? #f ; no tests yet
  312. #:phases (modify-phases %standard-phases
  313. (add-after 'install 'install-doc
  314. ;; Copy readme file to documentation directory.
  315. (lambda* (#:key outputs #:allow-other-keys)
  316. (let ((doc (string-append (assoc-ref outputs "out")
  317. "/share/doc/" ,name)))
  318. (install-file "README.md" doc)
  319. ;; Avoid unspecified return value.
  320. #t))))))
  321. (propagated-inputs
  322. `(("i3-wm" ,i3-wm)))
  323. (home-page "https://github.com/ziberna/i3-py")
  324. (synopsis "Python interface to the i3 window manager")
  325. (description "This package allows you to interact from a Python program
  326. with the i3 window manager via its IPC socket. It can send commands and other
  327. kinds of messages to i3, select the affected containers, filter results and
  328. subscribe to events.")
  329. (license license:gpl3+)))
  330. (define-public python2-i3-py
  331. (package-with-python2 python-i3-py))
  332. (define-public quickswitch-i3
  333. (let ((commit "ed692b1e8f43b95bd907ced26238ce8ccb2ed28f")
  334. (revision "1")) ; Guix package revision
  335. (package
  336. (name "quickswitch-i3")
  337. (version (string-append "2.2-" revision "."
  338. (string-take commit 7)))
  339. (source
  340. (origin
  341. ;; The latest commit is a few years old and just a couple commits
  342. ;; after the last tagged release, so we use that latest commit
  343. ;; instead of the release.
  344. (method git-fetch)
  345. (uri (git-reference
  346. (url "https://github.com/proxypoke/quickswitch-for-i3.git")
  347. (commit commit)))
  348. (sha256
  349. (base32
  350. "0447077sama80jcdg5p64zjsvafmz5rbdrirhm1adcdjhkh6iqc5"))
  351. (patches (search-patches "quickswitch-fix-dmenu-check.patch"))
  352. (file-name (string-append name "-" version "-checkout"))))
  353. (build-system python-build-system)
  354. (arguments
  355. `(#:tests? #f ; no tests yet
  356. #:phases (modify-phases %standard-phases
  357. (add-after 'install 'install-doc
  358. ;; Copy readme file to documentation directory.
  359. (lambda* (#:key outputs #:allow-other-keys)
  360. (let ((doc (string-append (assoc-ref outputs "out")
  361. "/share/doc/" ,name)))
  362. (install-file "README.rst" doc)
  363. ;; Avoid unspecified return value.
  364. #t))))))
  365. (inputs
  366. `(("python-i3-py" ,python-i3-py)
  367. ("dmenu" ,dmenu)))
  368. (home-page "https://github.com/proxypoke/quickswitch-for-i3")
  369. (synopsis "Quickly change to and locate windows in the i3 window manager")
  370. (description
  371. "This utility for the i3 window manager allows you to quickly switch to
  372. and locate windows on all your workspaces, using an interactive dmenu
  373. prompt.")
  374. (license (license:non-copyleft "http://www.wtfpl.net/txt/copying/")))))
  375. (define-public i3lock-color
  376. (package
  377. (name "i3lock-color")
  378. (version "2.11-c")
  379. (source
  380. (origin
  381. (method url-fetch)
  382. (uri (string-append "https://github.com/PandorasFox/i3lock-color/"
  383. "archive/" version ".tar.gz"))
  384. (file-name (string-append name "-" version ".tar.gz"))
  385. (sha256
  386. (base32
  387. "0zh7il2y6dmzym3w6r9xii5dma8pjjjlq4dm5iby7m3gvplj4q9p"))))
  388. (build-system gnu-build-system)
  389. (arguments
  390. `(#:tests? #f)) ;no tests included
  391. (inputs
  392. `(("cairo" ,cairo)
  393. ("libev" ,libev)
  394. ("libjpeg" ,libjpeg-turbo)
  395. ("libxcb" ,libxcb)
  396. ("libxkbcommon" ,libxkbcommon)
  397. ("linux-pam" ,linux-pam)
  398. ("xcb-util" ,xcb-util)
  399. ("xcb-util-image" ,xcb-util-image)))
  400. (native-inputs
  401. `(("autoconf" ,autoconf)
  402. ("automake" ,automake)
  403. ("pkg-config" ,pkg-config)))
  404. (home-page "https://github.com/PandorasFox/i3lock-color")
  405. (synopsis "Screen locker with color configuration support")
  406. (description
  407. "i3lock-color is a simpler X11 screen locker derived from i3lock.
  408. Features include:
  409. @enumerate
  410. @item forking process, the locked screen is preserved when you suspend to RAM;
  411. @item specify background color or image to be displayed in the lock screen;
  412. @item many additional color options.
  413. @end enumerate")
  414. (license license:bsd-3)))
  415. (define-public i3lock-fancy
  416. (package
  417. (name "i3lock-fancy")
  418. (version "0.2")
  419. (source
  420. (origin
  421. (method url-fetch)
  422. (uri (string-append "https://github.com/meskarune/i3lock-fancy/archive/"
  423. version ".tar.gz"))
  424. (file-name (string-append name "-" version ".tar.gz"))
  425. (sha256
  426. (base32
  427. "020m7mnfq5cvir7p9v3hkb7cvb4cai33wppxl2zdwscwwjnchc5y"))))
  428. (build-system gnu-build-system)
  429. (arguments
  430. `(#:tests? #f ;No tests included
  431. #:phases
  432. (modify-phases %standard-phases
  433. (replace 'configure
  434. (lambda* (#:key inputs outputs #:allow-other-keys)
  435. (let* ((out (assoc-ref outputs "out"))
  436. (icons (string-append out "/share/i3lock-fancy/icons/"))
  437. (wmctrl (string-append (assoc-ref inputs "wmctrl")
  438. "/bin/wmctrl"))
  439. (mconvert (string-append (assoc-ref inputs "imagemagick")
  440. "/bin/convert"))
  441. (mimport (string-append (assoc-ref inputs "imagemagick")
  442. "/bin/import"))
  443. (awk (string-append (assoc-ref inputs "gawk")
  444. "/bin/gawk")))
  445. (substitute* "lock"
  446. (("$(which wmctrl)") wmctrl)
  447. (("convert") mconvert)
  448. (("shot=\\(import") (string-append "shot=\(" mimport))
  449. (("awk -F") (string-append awk " -F"))
  450. ((" awk") awk)
  451. (("\\$scriptpath/icons/") icons))
  452. #t)))
  453. (delete 'build)
  454. (replace 'install
  455. (lambda* (#:key inputs outputs #:allow-other-keys)
  456. (let* ((out (assoc-ref outputs "out"))
  457. (bin (string-append out "/bin"))
  458. (icons (string-append out "/share/i3lock-fancy/icons/")))
  459. (install-file "lock" bin)
  460. (rename-file (string-append bin "/lock")
  461. (string-append bin "/i3lock-fancy"))
  462. (copy-recursively "icons" icons)
  463. #t))))))
  464. (native-inputs
  465. `(("imagemagick" ,imagemagick)
  466. ("wmctrl" ,wmctrl)
  467. ("gawk" ,gawk)))
  468. (home-page "https://github.com/meskarune/i3lock-fancy")
  469. (synopsis "Screen locker with screenshot function")
  470. (description
  471. "@code{i3lock-fancy} is a Bash script that takes a screenshot of
  472. the desktop, blurs the background and adds a lock icon and text.
  473. It requires @code{i3lock-color} or @code{i3lock} and can optionally
  474. be passed any screenshot util like @code{scrot}.
  475. This screen locker can be used with any window manager or
  476. desktop environment.")
  477. (license license:expat)))
  478. (define-public xmonad
  479. (package
  480. (name "xmonad")
  481. (version "0.14.2")
  482. (synopsis "Tiling window manager")
  483. (source (origin
  484. (method url-fetch)
  485. (uri (string-append "mirror://hackage/package/xmonad/"
  486. name "-" version ".tar.gz"))
  487. (sha256
  488. (base32
  489. "0gqyivpw8z1x73p1l1fpyq1wc013a1c07r6xn1a82liijs91b949"))))
  490. (build-system haskell-build-system)
  491. (inputs
  492. `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
  493. ("ghc-quickcheck" ,ghc-quickcheck)
  494. ("ghc-semigroups" ,ghc-semigroups)
  495. ("ghc-setlocale" ,ghc-setlocale)
  496. ("ghc-utf8-string" ,ghc-utf8-string)
  497. ("ghc-x11" ,ghc-x11)))
  498. (arguments
  499. `(#:phases
  500. (modify-phases %standard-phases
  501. (add-after
  502. 'install 'install-xsession
  503. (lambda _
  504. (let* ((xsessions (string-append %output "/share/xsessions")))
  505. (mkdir-p xsessions)
  506. (call-with-output-file
  507. (string-append xsessions "/xmonad.desktop")
  508. (lambda (port)
  509. (format port "~
  510. [Desktop Entry]~@
  511. Name=~a~@
  512. Comment=~a~@
  513. Exec=~a/bin/xmonad~@
  514. Type=Application~%" ,name ,synopsis %output)))))))))
  515. (home-page "https://xmonad.org")
  516. (description
  517. "Xmonad is a tiling window manager for X. Windows are arranged
  518. automatically to tile the screen without gaps or overlap, maximising screen
  519. use. All features of the window manager are accessible from the keyboard: a
  520. mouse is strictly optional. Xmonad is written and extensible in Haskell.
  521. Custom layout algorithms, and other extensions, may be written by the user in
  522. config files. Layouts are applied dynamically, and different layouts may be
  523. used on each workspace. Xinerama is fully supported, allowing windows to be
  524. tiled on several screens.")
  525. (license license:bsd-3)))
  526. (define-public xmobar
  527. (package
  528. (name "xmobar")
  529. (version "0.28")
  530. (source (origin
  531. (method url-fetch)
  532. (uri (string-append "mirror://hackage/package/xmobar/"
  533. name "-" version ".tar.gz"))
  534. (sha256
  535. (base32
  536. "1xh87asg8y35srvp7d3gyyy4bkxsw122liihxgzgm8pqv2z3h4zd"))))
  537. (build-system haskell-build-system)
  538. (native-inputs
  539. `(("ghc-hspec" ,ghc-hspec)
  540. ("hspec-discover" ,hspec-discover)))
  541. (inputs
  542. `(("ghc-hinotify" ,ghc-hinotify)
  543. ("ghc-http" ,ghc-http)
  544. ("ghc-iwlib" ,ghc-iwlib)
  545. ("ghc-parsec" ,ghc-parsec)
  546. ("ghc-parsec-numbers" ,ghc-parsec-numbers)
  547. ("ghc-regex-compat" ,ghc-regex-compat)
  548. ("ghc-stm" ,ghc-stm)
  549. ("ghc-x11-xft" ,ghc-x11-xft)
  550. ("libxpm" ,libxpm)))
  551. (arguments
  552. `(#:configure-flags
  553. (list (string-append "--flags="
  554. (string-join (list "with_inotify"
  555. "with_iwlib"
  556. "with_utf8"
  557. "with_weather"
  558. "with_xft"
  559. "with_xpm")
  560. " ")))))
  561. (home-page "http://xmobar.org")
  562. (synopsis "Minimalistic text based status bar")
  563. (description
  564. "@code{xmobar} is a lightweight, text-based, status bar written in
  565. Haskell. It was originally designed to be used together with Xmonad, but it
  566. is also usable with any other window manager. While xmobar is written in
  567. Haskell, no knowledge of the language is required to install and use it.")
  568. (license license:bsd-3)))
  569. (define-public ghc-xmonad-contrib
  570. (package
  571. (name "ghc-xmonad-contrib")
  572. (version "0.14")
  573. (source
  574. (origin
  575. (method url-fetch)
  576. (uri (string-append "mirror://hackage/package/xmonad-contrib/"
  577. "xmonad-contrib-" version ".tar.gz"))
  578. (sha256
  579. (base32
  580. "1660w3xhbfrlq8b8s1rviq2mcn1vyqpypli4023gqxwry52brk6y"))))
  581. (build-system haskell-build-system)
  582. (propagated-inputs
  583. `(("ghc-old-time" ,ghc-old-time)
  584. ("ghc-random" ,ghc-random)
  585. ("ghc-utf8-string" ,ghc-utf8-string)
  586. ("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
  587. ("ghc-semigroups" ,ghc-semigroups)
  588. ("ghc-x11" ,ghc-x11)
  589. ("ghc-x11-xft" ,ghc-x11-xft)
  590. ("xmonad" ,xmonad)))
  591. (home-page "https://xmonad.org")
  592. (synopsis "Third party extensions for xmonad")
  593. (description
  594. "Third party tiling algorithms, configurations, and scripts to Xmonad, a
  595. tiling window manager for X.")
  596. (license license:bsd-3)))
  597. (define-public evilwm
  598. (package
  599. (name "evilwm")
  600. (version "1.1.1")
  601. (source
  602. (origin
  603. (method url-fetch)
  604. (uri (string-append "http://www.6809.org.uk/evilwm/evilwm-"
  605. version ".tar.gz"))
  606. (sha256
  607. (base32
  608. "0ak0yajzk3v4dg5wmaghv6acf7v02a4iw8qxmq5yw5ard8lrqn3r"))
  609. (patches (search-patches "evilwm-lost-focus-bug.patch"))))
  610. (build-system gnu-build-system)
  611. (inputs
  612. `(("libx11" ,libx11)
  613. ("libxext" ,libxext)
  614. ("libxrandr" ,libxrandr)))
  615. (arguments
  616. `(#:modules ((srfi srfi-26)
  617. (guix build utils)
  618. (guix build gnu-build-system))
  619. #:make-flags (let ((inputs (map (cut assoc-ref %build-inputs <>)
  620. '("libx11" "libxext" "libxrandr")))
  621. (join (lambda (proc strs)
  622. (string-join (map proc strs) " ")))
  623. (dash-I (cut string-append "-I" <> "/include"))
  624. (dash-L (cut string-append "-L" <> "/lib")))
  625. `("desktopfilesdir=$(prefix)/share/xsessions"
  626. ,(string-append "prefix=" (assoc-ref %outputs "out"))
  627. ,(string-append "CPPFLAGS=" (join dash-I inputs))
  628. ,(string-append "LDFLAGS=" (join dash-L inputs))))
  629. #:tests? #f ;no tests
  630. #:phases (modify-phases %standard-phases
  631. (delete 'configure)))) ;no configure script
  632. (home-page "http://www.6809.org.uk/evilwm/")
  633. (synopsis "Minimalist window manager for the X Window System")
  634. (description
  635. "evilwm is a minimalist window manager based on aewm, extended to feature
  636. many keyboard controls with repositioning and maximize toggles, solid window
  637. drags, snap-to-border support, and virtual desktops.")
  638. (license (license:x11-style "file:///README"))))
  639. (define-public fluxbox
  640. (package
  641. (name "fluxbox")
  642. (version "1.3.7")
  643. (synopsis "Small and fast window manager")
  644. (source (origin
  645. (method url-fetch)
  646. (uri (string-append "mirror://sourceforge/fluxbox/fluxbox/"
  647. version "/fluxbox-" version ".tar.xz"))
  648. (sha256
  649. (base32
  650. "1h1f70y40qd225dqx937vzb4k2cz219agm1zvnjxakn5jkz7b37w"))))
  651. (build-system gnu-build-system)
  652. (arguments
  653. `(#:make-flags '("CPPFLAGS=-U__TIME__") ;ugly, but for reproducibility
  654. #:phases
  655. (modify-phases %standard-phases
  656. (add-after 'install 'install-vim-files
  657. (lambda* (#:key outputs #:allow-other-keys)
  658. (let* ((out (assoc-ref outputs "out"))
  659. (syntax (string-append out "/share/vim/vimfiles/syntax")))
  660. (copy-recursively "3rd/vim/vim/syntax" syntax)
  661. #t)))
  662. (add-after 'install 'install-xsession
  663. (lambda* (#:key outputs #:allow-other-keys)
  664. (let* ((out (assoc-ref outputs "out"))
  665. (xsessions (string-append out "/share/xsessions")))
  666. (mkdir-p xsessions)
  667. (call-with-output-file
  668. (string-append xsessions "/fluxbox.desktop")
  669. (lambda (port)
  670. (format port "~
  671. [Desktop Entry]~@
  672. Name=~a~@
  673. Comment=~a~@
  674. Exec=~a/bin/startfluxbox~@
  675. Type=Application~%" ,name ,synopsis out)))
  676. #t))))))
  677. (native-inputs
  678. `(("pkg-config" ,pkg-config)))
  679. (inputs
  680. `(("freetype" ,freetype)
  681. ("fribidi" ,fribidi)
  682. ("imlib2" ,imlib2)
  683. ("libx11" ,libx11)
  684. ("libxext" ,libxext)
  685. ("libxft" ,libxft)
  686. ("libxinerama" ,libxinerama)
  687. ("libxpm" ,libxpm)
  688. ("libxrandr" ,libxrandr)
  689. ("libxrender" ,libxrender)))
  690. (description "Fluxbox is a window manager. It is light on resources
  691. and easy to handle yet full of features to make an easy and fast desktop
  692. experience.")
  693. (home-page "http://fluxbox.org/")
  694. (license license:expat)))
  695. (define-public awesome
  696. (package
  697. (name "awesome")
  698. (version "4.2")
  699. (source
  700. (origin (method url-fetch)
  701. (uri (string-append
  702. "https://github.com/awesomeWM/awesome-releases/raw/"
  703. "master/awesome-" version ".tar.xz"))
  704. (sha256
  705. (base32
  706. "0kwpbls9h1alxcmvxh5g9qb995fds5b2ngcr44w0ibazkyls2pdc"))
  707. (modules '((guix build utils)
  708. (srfi srfi-19)))
  709. (snippet '(begin
  710. ;; Remove non-reproducible timestamp and use the date
  711. ;; of the source file instead.
  712. (substitute* "common/version.c"
  713. (("__DATE__ \" \" __TIME__")
  714. (date->string
  715. (time-utc->date
  716. (make-time time-utc 0
  717. (stat:mtime (stat "awesome.c"))))
  718. "\"~c\"")))
  719. #t))
  720. (patches (search-patches "awesome-reproducible-png.patch"))))
  721. (build-system cmake-build-system)
  722. (native-inputs `(("asciidoc" ,asciidoc)
  723. ("docbook-xsl" ,docbook-xsl)
  724. ("doxygen" ,doxygen)
  725. ("gperf" ,gperf)
  726. ("imagemagick" ,imagemagick)
  727. ("libxml2" ,libxml2) ;for XML_CATALOG_FILES
  728. ("pkg-config" ,pkg-config)
  729. ("xmlto" ,xmlto)))
  730. (inputs `(("cairo" ,cairo)
  731. ("dbus" ,dbus)
  732. ("gdk-pixbuf" ,gdk-pixbuf)
  733. ("glib" ,glib)
  734. ("gobject-introspection" ,gobject-introspection)
  735. ("imlib2" ,imlib2)
  736. ("libev" ,libev)
  737. ("libxcb" ,libxcb)
  738. ("libxcursor" ,libxcursor)
  739. ("libxdg-basedir" ,libxdg-basedir)
  740. ("libxkbcommon" ,libxkbcommon)
  741. ("lua" ,lua)
  742. ("lua-lgi" ,lua-lgi)
  743. ("pango" ,pango)
  744. ("startup-notification" ,startup-notification)
  745. ("xcb-util" ,xcb-util)
  746. ("xcb-util-cursor" ,xcb-util-cursor)
  747. ("xcb-util-image" ,xcb-util-image)
  748. ("xcb-util-keysyms" ,xcb-util-keysyms)
  749. ("xcb-util-renderutil" ,xcb-util-renderutil)
  750. ("xcb-util-xrm" ,xcb-util-xrm)
  751. ("xcb-util-wm" ,xcb-util-wm)))
  752. (arguments
  753. `(;; Let compression happen in our 'compress-documentation' phase so that
  754. ;; '--no-name' is used, which removes timestamps from gzip output.
  755. #:configure-flags '("-DCOMPRESS_MANPAGES=off")
  756. ;; Building awesome in its source dir is no longer supported.
  757. #:out-of-source? #t
  758. #:phases
  759. (modify-phases %standard-phases
  760. (add-before 'build 'xmlto-skip-validation
  761. (lambda _
  762. ;; We can't download the necessary schema, so so skip
  763. ;; validation and assume they're valid.
  764. (substitute* "../build/CMakeFiles/man.dir/build.make"
  765. (("/xmlto")
  766. (string-append "/xmlto --skip-validation")))
  767. #t))
  768. (add-before 'configure 'set-lua-paths
  769. (lambda* (#:key inputs #:allow-other-keys)
  770. ;; The build process needs to load cairo dynamically.
  771. (let* ((cairo (string-append
  772. (assoc-ref inputs "cairo") "/lib" ))
  773. (lua-lgi (assoc-ref inputs "lua-lgi") ))
  774. (setenv "LD_LIBRARY_PATH" cairo )
  775. (setenv "LUA_PATH" (string-append lua-lgi
  776. "/share/lua/5.2/?.lua"))
  777. (setenv "LUA_CPATH" (string-append lua-lgi
  778. "/lib/lua/5.2/?.so"))
  779. #t)))
  780. (replace 'check
  781. (lambda _
  782. ;; There aren't any tests, so just make sure the binary
  783. ;; gets built and can be run successfully.
  784. (invoke "../build/awesome" "-v")))
  785. (add-after 'install 'wrap
  786. (lambda* (#:key inputs outputs #:allow-other-keys)
  787. (let* ((awesome (assoc-ref outputs "out"))
  788. (cairo (string-append
  789. (assoc-ref inputs "cairo") "/lib" ))
  790. (lua-lgi (assoc-ref inputs "lua-lgi") ))
  791. (wrap-program (string-append awesome "/bin/awesome")
  792. `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH")))
  793. `("LD_LIBRARY_PATH" suffix (, cairo))
  794. `("LUA_PATH" suffix (,(string-append lua-lgi
  795. "/share/lua/5.2/?.lua")))
  796. `("LUA_CPATH" suffix (,(string-append
  797. lua-lgi "/lib/lua/5.2/?.so"))))))))))
  798. (synopsis "Highly configurable window manager")
  799. (description
  800. "Awesome has been designed as a framework window manager. It is fast, small,
  801. dynamic and extensible using the Lua programming language.")
  802. (license license:gpl2+)
  803. (home-page "https://awesome.naquadah.org/")))
  804. (define-public menumaker
  805. (package
  806. (name "menumaker")
  807. (version "0.99.10")
  808. (source
  809. (origin
  810. (method url-fetch)
  811. (uri (string-append "mirror://sourceforge/menumaker/"
  812. "menumaker-" version ".tar.gz"))
  813. (sha256
  814. (base32
  815. "1mm4cvg3kphkkd8nwrhcg6d9nm5ar7mgc0wf6fxk6zck1l7xn8ky"))))
  816. (build-system gnu-build-system)
  817. (inputs
  818. `(("python" ,python)))
  819. (synopsis "Heuristics-driven menu generator")
  820. (description
  821. "MenuMaker is a menu generation utility for a number of X window
  822. managers and desktop environments. It is capable of finding lots of
  823. installed programs and generating a root menu consistent across all
  824. supported window managers, so one will get (almost) the same menu in
  825. all of them. Currently supported window managers include:
  826. @enumerate
  827. @item BlackBox
  828. @item Deskmenu
  829. @item FluxBox
  830. @item IceWM
  831. @item OpenBox
  832. @item PekWM
  833. @item WindowMaker
  834. @item XFCE
  835. @end enumerate\n")
  836. (home-page "http://menumaker.sourceforge.net/")
  837. (license license:bsd-2)))
  838. (define-public keybinder
  839. (package
  840. (name "keybinder")
  841. (version "0.3.1")
  842. (source
  843. (origin
  844. (method url-fetch)
  845. (uri (string-append "https://github.com/kupferlauncher/keybinder"
  846. "/releases/download/v" version "/keybinder-"
  847. version ".tar.gz"))
  848. (file-name (string-append name "-" version ".tar.gz"))
  849. (sha256
  850. (base32
  851. "0h52hj3ay8mfhwvmfxbxlfyq74hifdk8wxgxp7fr4iy6189hg7w7"))))
  852. (build-system gnu-build-system)
  853. (inputs
  854. `(("python-2" ,python-2)
  855. ("gtk+-2" ,gtk+-2)))
  856. (native-inputs
  857. `(("python2-pygtk" ,python2-pygtk)
  858. ("gtk-doc" ,gtk-doc)
  859. ("pkg-config" ,pkg-config)))
  860. (synopsis "Library for registering global keyboard shortcuts")
  861. (description
  862. "Keybinder is a library for registering global keyboard shortcuts.
  863. Keybinder works with GTK-based applications using the X Window System.")
  864. (home-page "https://github.com/kupferlauncher/keybinder")
  865. (license license:gpl2+)))
  866. (define-public spectrwm
  867. (package
  868. (name "spectrwm")
  869. (version "3.2.0")
  870. (source
  871. (origin
  872. (method url-fetch)
  873. (uri (let ((version-with-underscores
  874. (string-join (string-split version #\.) "_")))
  875. (string-append "https://github.com/conformal/spectrwm/archive/"
  876. "SPECTRWM_" version-with-underscores ".tar.gz")))
  877. (file-name (string-append name "-" version ".tar.gz"))
  878. (sha256
  879. (base32
  880. "0z7gjmp1x6y8q3dnw6swvbv8x2wd4ykzjvi3ibk2sxhgc910907v"))))
  881. (build-system gnu-build-system)
  882. (arguments
  883. `(#:make-flags (let ((pkg-config (lambda (flag)
  884. (string-append
  885. "$(shell pkg-config " flag " "
  886. "xft fontconfig x11 libpng)"))))
  887. (list
  888. "CC=gcc"
  889. (string-append "PREFIX=" %output)
  890. (string-append "INCS=-I. " (pkg-config "--cflags"))
  891. (string-append "LIBS=" (pkg-config "--libs") " -lm")))
  892. #:tests? #f ;no test suite
  893. #:phases
  894. (modify-phases %standard-phases
  895. (add-before 'build 'change-dir
  896. (lambda _
  897. (chdir "linux") #t))
  898. (add-after 'change-dir 'patch-makefile
  899. (lambda _
  900. (substitute* "Makefile"
  901. (("-g") ""))))
  902. (delete 'configure)))) ;no 'configure' exists
  903. (inputs
  904. `(("freetype" ,freetype)
  905. ("fontconfig" ,fontconfig)
  906. ("libx11" ,libx11)
  907. ("libxcursor" ,libxcursor)
  908. ("libxrandr" ,libxrandr)
  909. ("libxtst" ,libxtst)
  910. ("libxft" ,libxft)
  911. ("xcb-util" ,xcb-util)
  912. ("xcb-util-wm" ,xcb-util-wm)
  913. ("xcb-util-keysyms" ,xcb-util-keysyms)))
  914. (native-inputs
  915. `(("libxt" ,libxt)
  916. ("pkg-config" ,pkg-config)))
  917. (synopsis "Minimalistic automatic tiling window manager")
  918. (description
  919. "Spectrwm is a small dynamic tiling and reparenting window manager for X11.
  920. It is inspired by Xmonad and dwm. Its major features include:
  921. @itemize
  922. @item Navigation anywhere on all screens with either the keyboard or mouse
  923. @item Customizable status bar
  924. @item Restartable without losing state
  925. @item Quick launch menu
  926. @item Many screen layouts possible with a few simple key strokes
  927. @item Move/resize floating windows
  928. @item Extended Window Manager Hints (@dfn{EWMH}) support
  929. @item Configurable tiling
  930. @item Adjustable tile gap allows for a true one pixel border
  931. @item Customizable colors and border width
  932. @end itemize\n")
  933. (home-page "https://github.com/conformal/spectrwm")
  934. (license license:isc)))
  935. (define-public cwm
  936. (package
  937. (name "cwm")
  938. (version "6.3")
  939. (source
  940. (origin
  941. (method url-fetch)
  942. (uri (string-append "http://chneukirchen.org/releases/cwm-"
  943. version ".tar.gz"))
  944. (sha256
  945. (base32
  946. "17pdp9cfgh2n3n3905l4rl9qk7b722i8psnarhlc2h98qzx7zmac"))))
  947. (build-system gnu-build-system)
  948. (arguments
  949. `(#:make-flags (list "CC=gcc"
  950. (string-append "PREFIX=" %output))
  951. #:tests? #f
  952. #:phases
  953. (modify-phases %standard-phases
  954. (delete 'configure)
  955. (add-after 'build 'install-xsession
  956. (lambda* (#:key outputs #:allow-other-keys)
  957. ;; Add a .desktop file to xsessions.
  958. (let* ((output (assoc-ref outputs "out"))
  959. (xsessions (string-append output "/share/xsessions")))
  960. (mkdir-p xsessions)
  961. (with-output-to-file
  962. (string-append xsessions "/cwm.desktop")
  963. (lambda _
  964. (format #t
  965. "[Desktop Entry]~@
  966. Name=cwm~@
  967. Comment=OpenBSD Calm Window Manager fork~@
  968. Exec=~a/bin/cwm~@
  969. TryExec=~@*~a/bin/cwm~@
  970. Icon=~@
  971. Type=Application~%"
  972. output)))
  973. #t))))))
  974. (inputs
  975. `(("libxft" ,libxft)
  976. ("libxrandr" ,libxrandr)
  977. ("libxinerama" ,libxinerama)))
  978. (native-inputs
  979. `(("pkg-config" ,pkg-config)
  980. ("bison" ,bison)))
  981. (home-page "https://github.com/chneukirchen/cwm")
  982. (synopsis "OpenBSD fork of the calmwm window manager")
  983. (description "Cwm is a stacking window manager for X11. It is an OpenBSD
  984. project derived from the original Calm Window Manager.")
  985. (license license:isc)))
  986. (define-public nitrogen
  987. (package
  988. (name "nitrogen")
  989. (version "1.6.1")
  990. (source (origin
  991. (method url-fetch)
  992. (uri (string-append "http://github.com/l3ib/nitrogen/"
  993. "releases/download/" version "/"
  994. name "-" version ".tar.gz"))
  995. (sha256
  996. (base32
  997. "0zc3fl1mbhq0iyndy4ysmy8vv5c7xwf54rbgamzfhfvsgdq160pl"))))
  998. (build-system gnu-build-system)
  999. (inputs
  1000. `(("gtk+" ,gtk+-2)
  1001. ("gtkmm" ,gtkmm-2)
  1002. ("glib" ,glib)
  1003. ("glibmm" ,glibmm)))
  1004. (native-inputs
  1005. `(("pkg-config" ,pkg-config)))
  1006. (arguments
  1007. `(#:configure-flags (list
  1008. (string-append "--prefix=" %output)
  1009. "CXXFLAGS=-std=c++11")))
  1010. (home-page "http://projects.l3ib.org/nitrogen/")
  1011. (synopsis "Background browser and setter for X windows")
  1012. (description
  1013. "This package is a background browser and setter for X windows. It's
  1014. features are:
  1015. @itemize
  1016. @item Multihead and Xinerama aware
  1017. @item Recall mode to used via startup script
  1018. @item Uses freedesktop.org standard for thumbnails
  1019. @item Can set GNOME background
  1020. @item Command lie set modes for script use
  1021. @item Inotify monitoring of browse directory
  1022. @item Lazy loading of thumbnails - conserves memory
  1023. @item \"Automatic\" set mode - determines best mode to set an image based on
  1024. its size
  1025. @item Display preview images in a tiled icon layout
  1026. @end itemize")
  1027. (license license:gpl2+)))
  1028. (define-public polybar
  1029. (package
  1030. (name "polybar")
  1031. (version "3.3.0")
  1032. (source
  1033. (origin
  1034. (method url-fetch)
  1035. (uri (string-append "https://github.com/jaagr/polybar/releases/"
  1036. "download/" version "/polybar.tar"))
  1037. (sha256
  1038. (base32 "0sjh3xmf11g09spi88zj7xsc3a3vv78kixab6n5i7436py7xwzb4"))
  1039. (file-name (string-append name "-" version ".tar"))))
  1040. (build-system cmake-build-system)
  1041. (arguments
  1042. ;; Test is disabled because it requires downloading googletest from the
  1043. ;; Internet.
  1044. '(#:tests? #f))
  1045. (inputs
  1046. `(("alsa-lib" ,alsa-lib)
  1047. ("cairo" ,cairo)
  1048. ("i3-wm" ,i3-wm)
  1049. ("libmpdclient" ,libmpdclient)
  1050. ("libnl" ,libnl)
  1051. ("libxcb" ,libxcb)
  1052. ("pulseaudio" ,pulseaudio)
  1053. ("xcb-proto" ,xcb-proto)
  1054. ("xcb-util" ,xcb-util)
  1055. ("xcb-util-cursor" ,xcb-util-cursor)
  1056. ("xcb-util-image" ,xcb-util-image)
  1057. ("xcb-util-wm" ,xcb-util-wm)
  1058. ("xcb-util-xrm" ,xcb-util-xrm)))
  1059. (native-inputs
  1060. `(("pkg-config" ,pkg-config)
  1061. ("python-2" ,python-2) ; lib/xpp depends on python 2
  1062. ("python" ,python))) ; xcb-proto depends on python 3
  1063. (home-page "https://polybar.github.io/")
  1064. (synopsis "Fast and easy-to-use status bar")
  1065. (description "Polybar aims to help users build beautiful and highly
  1066. customizable status bars for their desktop environment. It has built-in
  1067. functionality to display information about the most commonly used services.")
  1068. (license license:expat)))