gnu: stumpwm-with-slynk: Fix build error.
[jackhill/guix/guix.git] / gnu / packages / wm.scm
CommitLineData
bda2ded6
ED
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
6e38c4be 3;;; Copyright © 2015 Siniša Biđin <sinisa@bidin.eu>
0ede252b 4;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org>
1268e52d 5;;; Copyright © 2015 xd1le <elisp.vim@gmail.com>
ca80b8ba 6;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
0ede252b 7;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
a8360892 8;;; Copyright © 2016, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
766a22fb 9;;; Copyright © 2016 Al McElrath <hello@yrns.org>
3d1240aa 10;;; Copyright © 2016 Carlo Zancanaro <carlo@zancanaro.id.au>
a0158c26 11;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
9593caff 12;;; Copyright © 2016, 2017, 2018, 2020 Nikita <nikita@n0.is>
22037a32 13;;; Copyright © 2016 doncatnip <gnopap@gmail.com>
37356e0b 14;;; Copyright © 2016 Ivan Vilata i Balaguer <ivan@selidor.net>
174b091f 15;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
f5fb52f1 16;;; Copyright © 2017, 2019, 2020 Marius Bakke <marius@gnu.org>
65051fdc 17;;; Copyright © 2017, 2020 Oleg Pykhalov <go.wigust@gmail.com>
553199c5 18;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
70024cfa 19;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
e23b6a68 20;;; Copyright © 2018, 2019 Meiyo Peng <meiyo@riseup.net>
eea969cf 21;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
4ec42524 22;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com>
7a1d6a77 23;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
1d25447e 24;;; Copyright © 2019 Kyle Andrews <kyle.c.andrews@gmail.com>
8c765a3b 25;;; Copyright © 2019 Ingo Ruhnke <grumbel@gmail.com>
d5329de9 26;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
b066ad89 27;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
88f06fd0
PN
28;;; Copyright © 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com>
29;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
59198ba1 30;;; Copyright © 2019 Evan Straw <evan.straw99@gmail.com>
4b3ff362 31;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
d4145638 32;;; Copyright © 2019 Noodles! <nnoodle@chiru.no>
d4842a7c 33;;; Copyright © 2019, 2020 Alexandru-Sergiu Marton <brown121407@member.fsf.org>
c0c1811f 34;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
47560aa2 35;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
138896e1 36;;; Copyright © 2020 Boris A. Dekshteyn <harlequin78@gmail.com>
fd65311c 37;;; Copyright © 2020 Marcin Karpezo <sirmacik@wioo.waw.pl>
9c814c33 38;;; Copyright © 2020 EuAndreh <eu@euandre.org>
48b00a4c 39;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
dfb85d1e 40;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
8e2aad26 41;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
3138e4a7 42;; Copyright © 2020 Niklas Eklund <niklas.eklund@posteo.net>
bda2ded6
ED
43;;;
44;;; This file is part of GNU Guix.
45;;;
46;;; GNU Guix is free software; you can redistribute it and/or modify it
47;;; under the terms of the GNU General Public License as published by
48;;; the Free Software Foundation; either version 3 of the License, or (at
49;;; your option) any later version.
50;;;
51;;; GNU Guix is distributed in the hope that it will be useful, but
52;;; WITHOUT ANY WARRANTY; without even the implied warranty of
53;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
54;;; GNU General Public License for more details.
55;;;
56;;; You should have received a copy of the GNU General Public License
57;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
58
59(define-module (gnu packages wm)
0ede252b 60 #:use-module ((guix licenses) #:prefix license:)
bda2ded6 61 #:use-module (guix packages)
40cad6b9
EF
62 #:use-module (guix download)
63 #:use-module (guix git-download)
88f06fd0 64 #:use-module (guix build-system asdf)
3d1240aa 65 #:use-module (guix build-system cmake)
bda2ded6 66 #:use-module (guix build-system gnu)
6e38c4be 67 #:use-module (guix build-system haskell)
eea969cf 68 #:use-module (guix build-system meson)
3e7cb70a 69 #:use-module (guix build-system perl)
c165591d 70 #:use-module (guix build-system python)
9a12243c 71 #:use-module (guix build-system trivial)
88f06fd0 72 #:use-module (guix utils)
40cad6b9 73 #:use-module (gnu packages)
9a12243c 74 #:use-module (gnu packages bash)
4b563b34 75 #:use-module (gnu packages autotools)
bda2ded6 76 #:use-module (gnu packages base)
40cad6b9 77 #:use-module (gnu packages bison)
f5fb52f1 78 #:use-module (gnu packages build-tools) ;for meson-0.55
5e78a87b 79 #:use-module (gnu packages calendar)
bda2ded6 80 #:use-module (gnu packages docbook)
40cad6b9 81 #:use-module (gnu packages documentation)
0ede252b 82 #:use-module (gnu packages fontutils)
3d1240aa 83 #:use-module (gnu packages freedesktop)
40cad6b9
EF
84 #:use-module (gnu packages fribidi)
85 #:use-module (gnu packages gawk)
80817888 86 #:use-module (gnu packages gcc)
40cad6b9 87 #:use-module (gnu packages gl)
3d1240aa
CZ
88 #:use-module (gnu packages glib)
89 #:use-module (gnu packages gperf)
40cad6b9
EF
90 #:use-module (gnu packages gtk)
91 #:use-module (gnu packages haskell-check)
92 #:use-module (gnu packages haskell-web)
93 #:use-module (gnu packages haskell-xyz)
94 #:use-module (gnu packages image)
3d1240aa 95 #:use-module (gnu packages imagemagick)
40cad6b9 96 #:use-module (gnu packages libevent)
4b563b34 97 #:use-module (gnu packages linux)
88f06fd0 98 #:use-module (gnu packages lisp-xyz)
40cad6b9
EF
99 #:use-module (gnu packages logging)
100 #:use-module (gnu packages lua)
101 #:use-module (gnu packages m4)
2ff844f0 102 #:use-module (gnu packages man)
40cad6b9
EF
103 #:use-module (gnu packages maths)
104 #:use-module (gnu packages mpd)
105 #:use-module (gnu packages pcre)
106 #:use-module (gnu packages perl)
107 #:use-module (gnu packages pkg-config)
7a1d6a77 108 #:use-module (gnu packages pretty-print)
40cad6b9
EF
109 #:use-module (gnu packages pulseaudio)
110 #:use-module (gnu packages python)
9a12243c 111 #:use-module (gnu packages readline)
7a1d6a77 112 #:use-module (gnu packages serialization)
47560aa2 113 #:use-module (gnu packages sphinx)
40cad6b9 114 #:use-module (gnu packages suckless)
88f06fd0 115 #:use-module (gnu packages texinfo)
40cad6b9 116 #:use-module (gnu packages textutils)
40cad6b9
EF
117 #:use-module (gnu packages video)
118 #:use-module (gnu packages web)
119 #:use-module (gnu packages xdisorg)
120 #:use-module (gnu packages xml)
121 #:use-module (gnu packages xorg))
bda2ded6 122
1268e52d 123(define-public bspwm
124 (package
125 (name "bspwm")
336b6d3c 126 (version "0.9.10")
1268e52d 127 (source
128 (origin
782b1224
TGR
129 (method git-fetch)
130 (uri (git-reference
b0e7b699 131 (url "https://github.com/baskerville/bspwm")
782b1224
TGR
132 (commit version)))
133 (file-name (git-file-name name version))
1268e52d 134 (sha256
336b6d3c 135 (base32 "0qlv7b4c2mmjfd65y100d11x8iqyg5f6lfiws3cgmpjidhdygnxc"))))
1268e52d 136 (build-system gnu-build-system)
137 (inputs
138 `(("libxcb" ,libxcb)
139 ("libxinerama" ,libxinerama)
140 ("sxhkd" ,sxhkd)
141 ("xcb-util" ,xcb-util)
142 ("xcb-util-keysyms" ,xcb-util-keysyms)
143 ("xcb-util-wm" ,xcb-util-wm)))
144 (arguments
aa0551c2
TGR
145 '(#:phases
146 (modify-phases %standard-phases
147 (delete 'configure)) ; no configure script
148 #:tests? #f ; no check target
149 #:make-flags
150 (list "CC=gcc"
151 (string-append "PREFIX=" %output))))
1268e52d 152 (home-page "https://github.com/baskerville/bspwm")
153 (synopsis "Tiling window manager based on binary space partitioning")
154 (description "bspwm is a tiling window manager that represents windows as
155the leaves of a full binary tree.")
0ede252b 156 (license license:bsd-2)))
1268e52d 157
1d25447e
KA
158(define-public herbstluftwm
159 (package
160 (name "herbstluftwm")
d87c9fc5 161 (version "0.8.3")
1d25447e
KA
162 (source
163 (origin
164 (method url-fetch)
165 (uri (string-append "https://herbstluftwm.org/tarballs/herbstluftwm-"
166 version ".tar.gz"))
167 (sha256
d87c9fc5 168 (base32 "1qmb4pjf2f6g0dvcg11cw9njwmxblhqzd70ai8qnlgqw1iz3nkm1"))
1d25447e 169 (file-name (string-append "herbstluftwm-" version ".tar.gz"))))
138896e1 170 (build-system cmake-build-system)
1d25447e
KA
171 (inputs
172 `(("dzen" ,dzen)
173 ("dmenu" ,dmenu)
174 ("glib" ,glib)
175 ("glibmm" ,glibmm)
176 ("xterm" ,xterm)
177 ("xsetroot" ,xsetroot)
178 ("libx11" ,libx11)
179 ("libxext" ,libxext)
138896e1
BD
180 ("libxinerama" ,libxinerama)
181 ("libxrandr" ,libxrandr)))
1d25447e 182 (native-inputs
138896e1
BD
183 `(("asciidoc" ,asciidoc)
184 ("pkg-config" ,pkg-config)))
1d25447e 185 (arguments
138896e1
BD
186 '(#:tests? #f
187 #:configure-flags
188 (let ((out (assoc-ref %outputs "out")))
189 (list "-DCC=gcc"
190 (string-append "-DCMAKE_INSTALL_SYSCONF_PREFIX=" out "/etc")
191 (string-append "-DBASHCOMPLETIONDIR=" out "/etc/bash_completion.d")))
192 #:phases
1d25447e 193 (modify-phases %standard-phases
1d25447e
KA
194 (add-after 'install 'install-xsession
195 (lambda* (#:key outputs #:allow-other-keys)
196 (let* ((out (assoc-ref outputs "out"))
197 (xsessions (string-append out "/share/xsessions")))
198 (mkdir-p xsessions)
199 (call-with-output-file
200 (string-append xsessions "/herbstluftwm.desktop")
201 (lambda (port)
202 (format port "~
203 [Desktop Entry]~@
204 Name=herbstluftwm~@
205 Comment=Manual tiling window manager~@
206 Exec=~a/bin/herbstluftwm~@
207 Type=XSession~%" out)))
138896e1 208 #t))))))
1d25447e
KA
209 (synopsis "Tiling window manager for X11")
210 (description "herbstluftwm is a manual tiling window manager for X11 using
211Xlib and GLib. Its main features are:
212
213@itemize
214@item
215The layout is based on splitting frames into subframes which can be split
216again or can be filled with windows (similar to i3 or musca).
217
218@item
219Tags (or workspaces or virtual desktops or …) can be added/removed at runtime.
220Each tag contains an own layout.
221
222@item
223Exactly one tag is viewed on each monitor. The tags are monitor independent
224(similar to Xmonad).
225
226@item
227It is configured at runtime via IPC calls from @command{herbstclient}. So the
228configuration file is just a script which is run on startup (similar to wmii
229or musca).
230
231@end itemize")
232 (home-page "https://herbstluftwm.org")
233 (license license:bsd-2)))
234
63b1bdbc
ED
235(define-public i3status
236 (package
237 (name "i3status")
cb96d239 238 (version "2.13")
63b1bdbc
ED
239 (source (origin
240 (method url-fetch)
fdad1f3c 241 (uri (string-append "https://i3wm.org/i3status/i3status-"
63b1bdbc
ED
242 version ".tar.bz2"))
243 (sha256
244 (base32
cb96d239 245 "0rhlzb96mw64z2jnhwz9nibc7pxg549626lz5642xxk5hpzwk2ff"))))
63b1bdbc
ED
246 (build-system gnu-build-system)
247 (arguments
cb96d239
MB
248 `(;; XXX: Do an "out of source" build to work around
249 ;; <https://github.com/i3/i3status/issues/339>.
250 #:out-of-source? #t
63b1bdbc
ED
251 #:tests? #f)) ; no test suite
252 (inputs
253 `(("openlibm" ,openlibm)
254 ("libconfuse" ,libconfuse)
255 ("libyajl" ,libyajl)
256 ("alsa-lib" ,alsa-lib)
766a22fb
AM
257 ("pulseaudio" ,pulseaudio)
258 ("libnl" ,libnl)
63b1bdbc
ED
259 ("libcap" ,libcap)
260 ("asciidoc" ,asciidoc)))
766a22fb 261 (native-inputs
cb96d239
MB
262 `(("pkg-config" ,pkg-config)
263 ("docbook-xsl" ,docbook-xsl)
264 ("libxml2" ,libxml2) ;for XML_CATALOG_FILES
265 ("xmlto" ,xmlto)))
fdad1f3c 266 (home-page "https://i3wm.org/i3status/")
63b1bdbc
ED
267 (synopsis "Status bar for i3bar, dzen2, xmobar or similar programs")
268 (description "i3status is a small program for generating a status bar for
269i3bar, dzen2, xmobar or similar programs. It is designed to be very efficient
270by issuing a very small number of system calls, as one generally wants to
271update such a status line every second. This ensures that even under high
272load, your status bar is updated correctly. Also, it saves a bit of energy by
273not hogging your CPU as much as spawning the corresponding amount of shell
274commands would.")
0ede252b 275 (license license:bsd-3)))
63b1bdbc 276
bda2ded6
ED
277(define-public i3-wm
278 (package
279 (name "i3-wm")
1434f2b0 280 (version "4.18.3")
bda2ded6
ED
281 (source (origin
282 (method url-fetch)
8658d403 283 (uri (string-append "https://i3wm.org/downloads/i3-"
bda2ded6
ED
284 version ".tar.bz2"))
285 (sha256
286 (base32
1434f2b0 287 "03dijnwv2n8ak9jq59fhq0rc80m5wjc9d54fslqaivnnz81pkbjk"))))
bda2ded6
ED
288 (build-system gnu-build-system)
289 (arguments
ebd2ae18 290 `(#:configure-flags
4bd391f5
LF
291 ;; The build system tries to build in a separate directory, but that
292 ;; seems to be unnecessary.
ebd2ae18
TGR
293 (list "--disable-builddir")
294
295 ;; The test suite requires the unpackaged Xephyr X server.
aa7cdc57
TS
296 #:tests? #f
297 #:phases
298 (modify-phases %standard-phases
299 (add-after 'install 'patch-session-file
300 (lambda* (#:key outputs #:allow-other-keys)
301 (let* ((out (assoc-ref outputs "out"))
302 (i3 (string-append out "/bin/i3"))
303 (i3-with-shmlog (string-append out "/bin/i3-with-shmlog")))
304 (substitute* (string-append out "/share/xsessions/i3.desktop")
305 (("Exec=i3") (string-append "Exec=" i3)))
306 (substitute* (string-append out "/share/xsessions/i3-with-shmlog.desktop")
307 (("Exec=i3-with-shmlog") (string-append "Exec=" i3-with-shmlog)))
308 #t))))))
bda2ded6
ED
309 (inputs
310 `(("libxcb" ,libxcb)
311 ("xcb-util" ,xcb-util)
312 ("xcb-util-cursor" ,xcb-util-cursor)
313 ("xcb-util-keysyms" ,xcb-util-keysyms)
314 ("xcb-util-wm" ,xcb-util-wm)
4bd391f5 315 ("xcb-util-xrm" ,xcb-util-xrm)
bda2ded6
ED
316 ("libxkbcommon" ,libxkbcommon)
317 ("libev" ,libev)
318 ("libyajl" ,libyajl)
319 ("asciidoc" ,asciidoc)
320 ("xmlto" ,xmlto)
321 ("perl-pod-simple" ,perl-pod-simple)
bda2ded6
ED
322 ("libx11" ,libx11)
323 ("pcre" ,pcre)
324 ("startup-notification" ,startup-notification)
325 ("pango" ,pango)
326 ("cairo" ,cairo)))
327 (native-inputs
328 `(("which" ,which)
329 ("perl" ,perl)
4bd391f5
LF
330 ("pkg-config" ,pkg-config)
331 ;; For building the documentation.
4b0e6367 332 ("libxml2" ,libxml2)
4bd391f5 333 ("docbook-xsl" ,docbook-xsl)))
8658d403 334 (home-page "https://i3wm.org/")
71a5da8e
TGR
335 (synopsis "Tiling window manager")
336 (description "i3 is a tiling X11 window manager that dynamically manages
337tiled, stacked, and tabbed window layouts.
338
339i3 primarily targets advanced users. Windows are managed manually and organised
340inside containers, which can be split vertically or horizontally, and optionally
341resized.
342
343i3 uses a plain-text configuration file, and can be extended and controlled from
344many programming languages.")
0ede252b 345 (license license:bsd-3)))
6e38c4be 346
88c94080
ASM
347(define-public i3-gaps
348 (package (inherit i3-wm)
349 (name "i3-gaps")
831365c6 350 (version "4.18.3")
88c94080
ASM
351 (source (origin
352 (method url-fetch)
353 (uri (string-append
354 "https://github.com/Airblader/i3/releases/download/"
355 version "/i3-" version ".tar.bz2"))
356 (sha256
357 (base32
831365c6 358 "1hcakwyz78lgp8mhqv7pw86jlb3m415pfql1q19rkijnhm3fn3ci"))))
88c94080
ASM
359 (home-page "https://github.com/Airblader/i3")
360 (synopsis "Tiling window manager with gaps")
361 (description "i3-gaps is a fork of i3wm, a tiling window manager
362for X11. It is kept up to date with upstream, adding a few additional
363features such as gaps between windows.
364
365i3 is a tiling X11 window manager that dynamically manages tiled, stacked,
366and tabbed window layouts.
367
368i3 primarily targets advanced users. Windows are managed manually and
369organised inside containers, which can be split vertically or horizontally,
370and optionally resized.
371
372i3 uses a plain-text configuration file, and can be extended and controlled
373from many programming languages.")
374 (license license:bsd-3)))
375
b6afc350
MB
376(define-public i3lock
377 (package
378 (name "i3lock")
379 (version "2.11.1")
380 (source (origin
381 (method url-fetch)
382 (uri (string-append "https://i3wm.org/i3lock/i3lock-"
383 version ".tar.bz2"))
384 (sha256
385 (base32
386 "015dn534m7cxjvqdncpvaq9p8b2r4w5hp1yanbdy2abmhbcc7a7j"))))
387 (build-system gnu-build-system)
388 (native-inputs
389 `(("pkg-config" ,pkg-config)))
390 (inputs
391 `(("cairo" ,cairo)
392 ("libev" ,libev)
393 ("linux-pam" ,linux-pam)
394 ("libxcb" ,libxcb)
395 ("libxkbcommon" ,libxkbcommon)
396 ("xcb-util" ,xcb-util)
397 ("xcb-util-image" ,xcb-util-image)
398 ("xcb-util-xrm" ,xcb-util-xrm)))
399 (home-page "https://i3wm.org/i3lock/")
400 (synopsis "Lightweight screen locker")
401 (description
402 "i3lock is a simple X11 screen locker developed alongside the i3 project.
403Despite the name it should work with any X11 window manager.")
404 (license license:bsd-3)))
405
bc83b2e2 406(define-public i3blocks
97e036ca
TGR
407 (package
408 (name "i3blocks")
409 (version "1.5")
410 (source (origin
411 (method git-fetch)
412 (uri (git-reference
b0e7b699 413 (url "https://github.com/vivien/i3blocks")
97e036ca
TGR
414 (commit version)))
415 (sha256
416 (base32
417 "0v8mwnm8qzpv6xnqvrk43s4b9iyld4naqzbaxk4ldq1qkhai0wsv"))
418 (file-name (git-file-name name version))))
419 (build-system gnu-build-system)
420 (native-inputs
421 `(("autoconf" ,autoconf)
422 ("automake" ,automake)
423 ("pkg-config" ,pkg-config)))
424 (home-page "https://github.com/vivien/i3blocks")
425 (synopsis "Minimalist scheduler for status bar scripts")
426 (description "i3blocks executes your command lines and generates a
bc83b2e2
MP
427status line from their output. The generated line is meant to be displayed by
428the i3 window manager through its i3bar component, as an alternative to
429i3status.")
97e036ca 430 (license license:gpl3+)))
bc83b2e2 431
3e7cb70a
MB
432(define-public perl-anyevent-i3
433 (package
434 (name "perl-anyevent-i3")
ec5c986e 435 (version "0.17")
3e7cb70a
MB
436 (source (origin
437 (method url-fetch)
438 (uri (string-append "mirror://cpan/authors/id/M/MS/MSTPLBG/"
439 "AnyEvent-I3-" version ".tar.gz"))
440 (sha256
441 (base32
ec5c986e 442 "0qvd9bq16jyy7v3ma82qcnvz9j503bw0mh7h55gkjf7ir62ck0jk"))))
3e7cb70a
MB
443 (build-system perl-build-system)
444 (propagated-inputs
445 `(("perl-anyevent" ,perl-anyevent)
446 ("perl-json-xs" ,perl-json-xs)))
9aba9b12 447 (home-page "https://metacpan.org/release/AnyEvent-I3")
3e7cb70a
MB
448 (synopsis
449 "Communicate with the i3 window manager through perl")
450 (description
451 "This module connects to the i3 window manager using the UNIX socket
452based IPC interface it provides (if enabled in the configuration file).
453You can then subscribe to events or send messages and receive their replies.")
454 ;; Can be used with either license.
2f3108ad 455 (license (list license:gpl3+ license:perl-license))))
3e7cb70a 456
c165591d
IVB
457(define-public python-i3-py
458 (package
459 (name "python-i3-py")
460 (version "0.6.5")
461 (source
462 (origin
463 ;; The latest release is not tagged in Git nor has an entry in PyPi,
464 ;; but there is still a clear commit for it, and it's been the last one
465 ;; for years.
466 (method git-fetch)
467 (uri (git-reference
b0e7b699 468 (url "https://github.com/ziberna/i3-py")
c165591d
IVB
469 (commit "27f88a616e9ecc340e7d041d3d00782f8a1964c1")))
470 (sha256
471 (base32
472 "1nm719dc2xqlll7vj4c4m7mpjb27lpn3bg3c66gajvnrz2x1nmxs"))
473 (file-name (string-append name "-" version "-checkout"))))
474 (build-system python-build-system)
475 (arguments
476 `(#:tests? #f ; no tests yet
477 #:phases (modify-phases %standard-phases
478 (add-after 'install 'install-doc
479 ;; Copy readme file to documentation directory.
480 (lambda* (#:key outputs #:allow-other-keys)
481 (let ((doc (string-append (assoc-ref outputs "out")
482 "/share/doc/" ,name)))
483 (install-file "README.md" doc)
484 ;; Avoid unspecified return value.
485 #t))))))
486 (propagated-inputs
487 `(("i3-wm" ,i3-wm)))
488 (home-page "https://github.com/ziberna/i3-py")
489 (synopsis "Python interface to the i3 window manager")
490 (description "This package allows you to interact from a Python program
491with the i3 window manager via its IPC socket. It can send commands and other
492kinds of messages to i3, select the affected containers, filter results and
493subscribe to events.")
494 (license license:gpl3+)))
495
496(define-public python2-i3-py
497 (package-with-python2 python-i3-py))
498
37356e0b
IVB
499(define-public quickswitch-i3
500 (let ((commit "ed692b1e8f43b95bd907ced26238ce8ccb2ed28f")
501 (revision "1")) ; Guix package revision
502 (package
503 (name "quickswitch-i3")
504 (version (string-append "2.2-" revision "."
505 (string-take commit 7)))
506 (source
507 (origin
508 ;; The latest commit is a few years old and just a couple commits
509 ;; after the last tagged release, so we use that latest commit
510 ;; instead of the release.
511 (method git-fetch)
512 (uri (git-reference
b0e7b699 513 (url "https://github.com/proxypoke/quickswitch-for-i3")
37356e0b
IVB
514 (commit commit)))
515 (sha256
516 (base32
517 "0447077sama80jcdg5p64zjsvafmz5rbdrirhm1adcdjhkh6iqc5"))
518 (patches (search-patches "quickswitch-fix-dmenu-check.patch"))
519 (file-name (string-append name "-" version "-checkout"))))
520 (build-system python-build-system)
521 (arguments
522 `(#:tests? #f ; no tests yet
523 #:phases (modify-phases %standard-phases
524 (add-after 'install 'install-doc
525 ;; Copy readme file to documentation directory.
526 (lambda* (#:key outputs #:allow-other-keys)
527 (let ((doc (string-append (assoc-ref outputs "out")
528 "/share/doc/" ,name)))
529 (install-file "README.rst" doc)
530 ;; Avoid unspecified return value.
531 #t))))))
532 (inputs
533 `(("python-i3-py" ,python-i3-py)
534 ("dmenu" ,dmenu)))
535 (home-page "https://github.com/proxypoke/quickswitch-for-i3")
536 (synopsis "Quickly change to and locate windows in the i3 window manager")
537 (description
538 "This utility for the i3 window manager allows you to quickly switch to
539and locate windows on all your workspaces, using an interactive dmenu
540prompt.")
5d6bab9e 541 (license license:wtfpl2))))
37356e0b 542
4b563b34 543(define-public i3lock-color
544 (package
545 (name "i3lock-color")
7969751f 546 (version "2.12.c")
4b563b34 547 (source
548 (origin
f45cc966
TGR
549 (method git-fetch)
550 (uri (git-reference
b0e7b699 551 (url "https://github.com/PandorasFox/i3lock-color")
f45cc966
TGR
552 (commit version)))
553 (file-name (git-file-name name version))
4b563b34 554 (sha256
7969751f 555 (base32 "08fhnchf187b73h52xgzb86g6byzxz085zs9galsvl687g5zxk34"))))
4b563b34 556 (build-system gnu-build-system)
557 (arguments
f45cc966 558 `(#:tests? #f)) ; no tests included
4b563b34 559 (inputs
fa2886b7
TGR
560 `(("cairo" ,cairo)
561 ("libev" ,libev)
3dc77d40 562 ("libjpeg" ,libjpeg-turbo)
4b563b34 563 ("libxcb" ,libxcb)
4b563b34 564 ("libxkbcommon" ,libxkbcommon)
fa2886b7
TGR
565 ("linux-pam" ,linux-pam)
566 ("xcb-util" ,xcb-util)
7969751f
TGR
567 ("xcb-util-image" ,xcb-util-image)
568 ("xcb-util-xrm" ,xcb-util-xrm)))
4b563b34 569 (native-inputs
fa2886b7
TGR
570 `(("autoconf" ,autoconf)
571 ("automake" ,automake)
572 ("pkg-config" ,pkg-config)))
4b563b34 573 (home-page "https://github.com/PandorasFox/i3lock-color")
574 (synopsis "Screen locker with color configuration support")
575 (description
576 "i3lock-color is a simpler X11 screen locker derived from i3lock.
577Features include:
578
579@enumerate
580@item forking process, the locked screen is preserved when you suspend to RAM;
581@item specify background color or image to be displayed in the lock screen;
582@item many additional color options.
583@end enumerate")
584 (license license:bsd-3)))
585
b0a2dc72 586(define-public i3lock-fancy
587 (package
588 (name "i3lock-fancy")
589 (version "0.2")
590 (source
591 (origin
a48db08a
TGR
592 (method git-fetch)
593 (uri (git-reference
b0e7b699 594 (url "https://github.com/meskarune/i3lock-fancy")
a48db08a
TGR
595 (commit version)))
596 (file-name (git-file-name name version))
b0a2dc72 597 (sha256
a48db08a 598 (base32 "11g2kkim33ra38d1m897sq1ifajw17iyw9mr7sg1q8i2ibl4lfsi"))))
b0a2dc72 599 (build-system gnu-build-system)
600 (arguments
a48db08a 601 `(#:tests? #f ; no tests included
b0a2dc72 602 #:phases
603 (modify-phases %standard-phases
604 (replace 'configure
605 (lambda* (#:key inputs outputs #:allow-other-keys)
606 (let* ((out (assoc-ref outputs "out"))
607 (icons (string-append out "/share/i3lock-fancy/icons/"))
608 (wmctrl (string-append (assoc-ref inputs "wmctrl")
609 "/bin/wmctrl"))
610 (mconvert (string-append (assoc-ref inputs "imagemagick")
611 "/bin/convert"))
612 (mimport (string-append (assoc-ref inputs "imagemagick")
613 "/bin/import"))
614 (awk (string-append (assoc-ref inputs "gawk")
615 "/bin/gawk")))
616
617 (substitute* "lock"
184598a4 618 (("\\$\\(command -V wmctrl\\)") wmctrl)
b0a2dc72 619 (("convert") mconvert)
620 (("shot=\\(import") (string-append "shot=\(" mimport))
621 (("awk -F") (string-append awk " -F"))
622 ((" awk") awk)
623 (("\\$scriptpath/icons/") icons))
624 #t)))
625 (delete 'build)
626 (replace 'install
627 (lambda* (#:key inputs outputs #:allow-other-keys)
628 (let* ((out (assoc-ref outputs "out"))
629 (bin (string-append out "/bin"))
630 (icons (string-append out "/share/i3lock-fancy/icons/")))
631
632 (install-file "lock" bin)
633 (rename-file (string-append bin "/lock")
634 (string-append bin "/i3lock-fancy"))
635 (copy-recursively "icons" icons)
636 #t))))))
1aa765fd 637 (inputs
b0a2dc72 638 `(("imagemagick" ,imagemagick)
639 ("wmctrl" ,wmctrl)
640 ("gawk" ,gawk)))
641 (home-page "https://github.com/meskarune/i3lock-fancy")
642 (synopsis "Screen locker with screenshot function")
643 (description
644 "@code{i3lock-fancy} is a Bash script that takes a screenshot of
645the desktop, blurs the background and adds a lock icon and text.
646It requires @code{i3lock-color} or @code{i3lock} and can optionally
647be passed any screenshot util like @code{scrot}.
648This screen locker can be used with any window manager or
649desktop environment.")
650 (license license:expat)))
651
6e38c4be
SB
652(define-public xmonad
653 (package
654 (name "xmonad")
de98b915 655 (version "0.15")
6e38c4be
SB
656 (synopsis "Tiling window manager")
657 (source (origin
658 (method url-fetch)
966a543b 659 (uri (string-append "mirror://hackage/package/xmonad/"
ec9299d0 660 "xmonad-" version ".tar.gz"))
6e38c4be
SB
661 (sha256
662 (base32
57983029
TS
663 "0a7rh21k9y6g8fwkggxdxjns2grvvsd5hi2ls4klmqz5xvk4hyaa"))
664 (patches (search-patches "xmonad-dynamic-linking.patch"))))
6e38c4be
SB
665 (build-system haskell-build-system)
666 (inputs
174b091f 667 `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
174b091f 668 ("ghc-quickcheck" ,ghc-quickcheck)
dd821380 669 ("ghc-semigroups" ,ghc-semigroups)
174b091f
MM
670 ("ghc-setlocale" ,ghc-setlocale)
671 ("ghc-utf8-string" ,ghc-utf8-string)
672 ("ghc-x11" ,ghc-x11)))
6e38c4be
SB
673 (arguments
674 `(#:phases
675 (modify-phases %standard-phases
676 (add-after
677 'install 'install-xsession
678 (lambda _
679 (let* ((xsessions (string-append %output "/share/xsessions")))
680 (mkdir-p xsessions)
681 (call-with-output-file
682 (string-append xsessions "/xmonad.desktop")
683 (lambda (port)
684 (format port "~
685 [Desktop Entry]~@
686 Name=~a~@
687 Comment=~a~@
688 Exec=~a/bin/xmonad~@
689 Type=Application~%" ,name ,synopsis %output)))))))))
8c0be00a 690 (home-page "https://xmonad.org")
6e38c4be
SB
691 (description
692 "Xmonad is a tiling window manager for X. Windows are arranged
693automatically to tile the screen without gaps or overlap, maximising screen
694use. All features of the window manager are accessible from the keyboard: a
695mouse is strictly optional. Xmonad is written and extensible in Haskell.
696Custom layout algorithms, and other extensions, may be written by the user in
697config files. Layouts are applied dynamically, and different layouts may be
698used on each workspace. Xinerama is fully supported, allowing windows to be
699tiled on several screens.")
0ede252b 700 (license license:bsd-3)))
78edf44c 701
6e864d00
OP
702(define-public xmobar
703 (package
704 (name "xmobar")
ccc960bb 705 (version "0.34")
6e864d00
OP
706 (source (origin
707 (method url-fetch)
708 (uri (string-append "mirror://hackage/package/xmobar/"
079db056 709 "xmobar-" version ".tar.gz"))
6e864d00
OP
710 (sha256
711 (base32
ccc960bb 712 "0x09xbz7y9ay0046j1xpr9jjk5jqivqi06vm3q6mhcrgc4y922rx"))))
6e864d00 713 (build-system haskell-build-system)
800e4fd8
TGR
714 (native-inputs
715 `(("ghc-hspec" ,ghc-hspec)
716 ("hspec-discover" ,hspec-discover)))
6e864d00 717 (inputs
b066ad89
JS
718 `(("ghc-alsa-core" ,ghc-alsa-core)
719 ("ghc-alsa-mixer" ,ghc-alsa-mixer)
720 ("ghc-dbus" ,ghc-dbus)
721 ("ghc-hinotify" ,ghc-hinotify)
d2ea8064 722 ("ghc-http" ,ghc-http)
b066ad89
JS
723 ("ghc-http-conduit" ,ghc-http-conduit)
724 ("ghc-http-types" ,ghc-http-types)
d2ea8064 725 ("ghc-iwlib" ,ghc-iwlib)
b066ad89
JS
726 ("ghc-libmpd" ,ghc-libmpd)
727 ("ghc-old-locale" ,ghc-old-locale)
d877e0d8 728 ("ghc-parsec-numbers" ,ghc-parsec-numbers)
6e864d00 729 ("ghc-regex-compat" ,ghc-regex-compat)
b066ad89
JS
730 ("ghc-temporary" ,ghc-temporary)
731 ("ghc-timezone-olson" ,ghc-timezone-olson)
732 ("ghc-x11" ,ghc-x11)
6e864d00 733 ("ghc-x11-xft" ,ghc-x11-xft)
d2ea8064 734 ("libxpm" ,libxpm)))
6e864d00 735 (arguments
b066ad89
JS
736 `(#:configure-flags (list "--flags=all_extensions")
737 #:phases
738 (modify-phases %standard-phases
739 (add-before 'build 'patch-test-shebang
740 (lambda* (#:key inputs #:allow-other-keys)
741 (substitute* "test/Xmobar/Plugins/Monitors/AlsaSpec.hs"
742 (("/bin/bash") (which "bash")))
743 #t)))))
680e803d 744 (home-page "https://xmobar.org")
6e864d00
OP
745 (synopsis "Minimalistic text based status bar")
746 (description
747 "@code{xmobar} is a lightweight, text-based, status bar written in
748Haskell. It was originally designed to be used together with Xmonad, but it
749is also usable with any other window manager. While xmobar is written in
750Haskell, no knowledge of the language is required to install and use it.")
751 (license license:bsd-3)))
752
9c814c33
EG
753(define-public yeganesh
754 (package
755 (name "yeganesh")
756 (version "2.4")
757 (source
758 (origin
759
760 (method url-fetch)
761 (uri (string-append "http://dmwit.com/yeganesh/yeganesh-" version ".tar.gz"))
762 (sha256
763 (base32 "04djfyjab3c5y9z9x8zd0xcx0jyy35zq7cl9ddr4ppf6k5ky6iky"))))
764 (build-system haskell-build-system)
765 (inputs
766 `(("ghc-strict" ,ghc-strict)
767 ("ghc-xdg-basedir" ,ghc-xdg-basedir)))
768 (home-page "http://dmwit.com/yeganesh/")
769 (synopsis "Small wrapper around dmenu")
770 (description "@code{yeganesh} is a small wrapper around demnu. Like
771dmenu, it accepts input on stdin and writes the chosen result on stdout.
772Unlike dmenu, it mangles the input before it presents its choices. In
773particular, it displays commonly-chosen options before uncommon ones.")
774 (license license:bsd-3)))
775
78edf44c
SB
776(define-public ghc-xmonad-contrib
777 (package
778 (name "ghc-xmonad-contrib")
3cbf3f74 779 (version "0.16")
78edf44c
SB
780 (source
781 (origin
782 (method url-fetch)
966a543b 783 (uri (string-append "mirror://hackage/package/xmonad-contrib/"
78edf44c
SB
784 "xmonad-contrib-" version ".tar.gz"))
785 (sha256
3cbf3f74 786 (base32 "1pddgkvnbww28wykncc7j0yb0lv15bk7xnnhdcbrwkxzw66w6wmd"))))
78edf44c
SB
787 (build-system haskell-build-system)
788 (propagated-inputs
f54f0475 789 `(("ghc-old-time" ,ghc-old-time)
78edf44c
SB
790 ("ghc-random" ,ghc-random)
791 ("ghc-utf8-string" ,ghc-utf8-string)
792 ("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
b42b5afd 793 ("ghc-semigroups" ,ghc-semigroups)
78edf44c
SB
794 ("ghc-x11" ,ghc-x11)
795 ("ghc-x11-xft" ,ghc-x11-xft)
796 ("xmonad" ,xmonad)))
8c0be00a 797 (home-page "https://xmonad.org")
78edf44c
SB
798 (synopsis "Third party extensions for xmonad")
799 (description
800 "Third party tiling algorithms, configurations, and scripts to Xmonad, a
801tiling window manager for X.")
0ede252b 802 (license license:bsd-3)))
45e10968
EB
803
804(define-public evilwm
805 (package
806 (name "evilwm")
807 (version "1.1.1")
808 (source
809 (origin
810 (method url-fetch)
811 (uri (string-append "http://www.6809.org.uk/evilwm/evilwm-"
812 version ".tar.gz"))
813 (sha256
814 (base32
c595cd47 815 "0ak0yajzk3v4dg5wmaghv6acf7v02a4iw8qxmq5yw5ard8lrqn3r"))
fc1adab1 816 (patches (search-patches "evilwm-lost-focus-bug.patch"))))
45e10968
EB
817 (build-system gnu-build-system)
818 (inputs
819 `(("libx11" ,libx11)
820 ("libxext" ,libxext)
821 ("libxrandr" ,libxrandr)))
822 (arguments
823 `(#:modules ((srfi srfi-26)
824 (guix build utils)
825 (guix build gnu-build-system))
826 #:make-flags (let ((inputs (map (cut assoc-ref %build-inputs <>)
827 '("libx11" "libxext" "libxrandr")))
828 (join (lambda (proc strs)
829 (string-join (map proc strs) " ")))
830 (dash-I (cut string-append "-I" <> "/include"))
831 (dash-L (cut string-append "-L" <> "/lib")))
832 `("desktopfilesdir=$(prefix)/share/xsessions"
833 ,(string-append "prefix=" (assoc-ref %outputs "out"))
834 ,(string-append "CPPFLAGS=" (join dash-I inputs))
835 ,(string-append "LDFLAGS=" (join dash-L inputs))))
836 #:tests? #f ;no tests
837 #:phases (modify-phases %standard-phases
838 (delete 'configure)))) ;no configure script
839 (home-page "http://www.6809.org.uk/evilwm/")
840 (synopsis "Minimalist window manager for the X Window System")
841 (description
842 "evilwm is a minimalist window manager based on aewm, extended to feature
843many keyboard controls with repositioning and maximize toggles, solid window
844drags, snap-to-border support, and virtual desktops.")
0ede252b
DM
845 (license (license:x11-style "file:///README"))))
846
847(define-public fluxbox
848 (package
849 (name "fluxbox")
850 (version "1.3.7")
851 (synopsis "Small and fast window manager")
852 (source (origin
853 (method url-fetch)
de67e922 854 (uri (string-append "mirror://sourceforge/fluxbox/fluxbox/"
0ede252b
DM
855 version "/fluxbox-" version ".tar.xz"))
856 (sha256
857 (base32
858 "1h1f70y40qd225dqx937vzb4k2cz219agm1zvnjxakn5jkz7b37w"))))
859 (build-system gnu-build-system)
860 (arguments
861 `(#:make-flags '("CPPFLAGS=-U__TIME__") ;ugly, but for reproducibility
862 #:phases
863 (modify-phases %standard-phases
37f7853e
EF
864 (add-after 'install 'install-vim-files
865 (lambda* (#:key outputs #:allow-other-keys)
866 (let* ((out (assoc-ref outputs "out"))
867 (syntax (string-append out "/share/vim/vimfiles/syntax")))
868 (copy-recursively "3rd/vim/vim/syntax" syntax)
869 #t)))
4ee3b309
EF
870 (add-after 'install 'install-xsession
871 (lambda* (#:key outputs #:allow-other-keys)
872 (let* ((out (assoc-ref outputs "out"))
873 (xsessions (string-append out "/share/xsessions")))
874 (mkdir-p xsessions)
875 (call-with-output-file
876 (string-append xsessions "/fluxbox.desktop")
877 (lambda (port)
878 (format port "~
879 [Desktop Entry]~@
880 Name=~a~@
881 Comment=~a~@
882 Exec=~a/bin/startfluxbox~@
883 Type=Application~%" ,name ,synopsis out)))
884 #t))))))
0ede252b
DM
885 (native-inputs
886 `(("pkg-config" ,pkg-config)))
887 (inputs
888 `(("freetype" ,freetype)
889 ("fribidi" ,fribidi)
890 ("imlib2" ,imlib2)
891 ("libx11" ,libx11)
892 ("libxext" ,libxext)
893 ("libxft" ,libxft)
894 ("libxinerama" ,libxinerama)
895 ("libxpm" ,libxpm)
896 ("libxrandr" ,libxrandr)
897 ("libxrender" ,libxrender)))
898 (description "Fluxbox is a window manager. It is light on resources
899and easy to handle yet full of features to make an easy and fast desktop
900experience.")
901 (home-page "http://fluxbox.org/")
902 (license license:expat)))
3d1240aa
CZ
903
904(define-public awesome
905 (package
906 (name "awesome")
c0c1811f 907 (version "4.3")
3d1240aa 908 (source
c0c1811f
NG
909 (origin
910 (method url-fetch)
911 (uri (string-append
912 "https://github.com/awesomeWM/awesome-releases/raw/master/"
913 "awesome-" version ".tar.xz"))
914 (sha256
915 (base32 "0lqpw401mkkmp9wgbvrmm45bqq2j9357l4irwdqv6l1305pls9kq"))
916 (modules '((guix build utils)
917 (srfi srfi-19)))
918 (snippet
919 '(begin
920 ;; Remove non-reproducible timestamp and use the date of
921 ;; the source file instead.
922 (substitute* "common/version.c"
923 (("__DATE__ \" \" __TIME__")
924 (date->string
925 (time-utc->date
926 (make-time time-utc 0 (stat:mtime (stat "awesome.c"))))
927 "\"~c\"")))
928 #t))
929 (patches
930 (search-patches "awesome-reproducible-png.patch"))))
3d1240aa 931 (build-system cmake-build-system)
c0c1811f
NG
932 (native-inputs
933 `(("asciidoc" ,asciidoc)
934 ("docbook-xsl" ,docbook-xsl)
935 ("doxygen" ,doxygen)
936 ("gperf" ,gperf)
937 ("imagemagick" ,imagemagick)
938 ("libxml2" ,libxml2) ;for XML_CATALOG_FILES
939 ("lua-ldoc" ,lua-ldoc)
940 ("pkg-config" ,pkg-config)
941 ("xmlto" ,xmlto)))
942 (inputs
943 `(("cairo" ,cairo)
944 ("dbus" ,dbus)
945 ("gdk-pixbuf" ,gdk-pixbuf)
946 ("glib" ,glib)
947 ("gobject-introspection" ,gobject-introspection)
948 ("imlib2" ,imlib2)
949 ("libev" ,libev)
950 ("libxcb" ,libxcb)
951 ("libxcursor" ,libxcursor)
952 ("libxdg-basedir" ,libxdg-basedir)
953 ("libxkbcommon" ,libxkbcommon)
954 ("lua" ,lua)
955 ("lua-lgi" ,lua-lgi)
956 ("pango" ,pango)
957 ("startup-notification" ,startup-notification)
958 ("xcb-util" ,xcb-util)
959 ("xcb-util-cursor" ,xcb-util-cursor)
960 ("xcb-util-image" ,xcb-util-image)
961 ("xcb-util-keysyms" ,xcb-util-keysyms)
962 ("xcb-util-renderutil" ,xcb-util-renderutil)
963 ("xcb-util-xrm" ,xcb-util-xrm)
964 ("xcb-util-wm" ,xcb-util-wm)))
3d1240aa 965 (arguments
c0c1811f
NG
966 `(#:modules ((guix build cmake-build-system)
967 (guix build utils)
968 (ice-9 match))
969 ;; Let compression happen in our 'compress-documentation' phase
970 ;; so that '--no-name' is used, which removes timestamps from
971 ;; gzip output.
972 #:configure-flags
973 '("-DCOMPRESS_MANPAGES=off")
974 ;; Building awesome in its source directory is no longer
975 ;; supported.
db0164b2 976 #:out-of-source? #t
22037a32 977 #:phases
978 (modify-phases %standard-phases
c0c1811f 979 (add-before 'configure 'set-paths
22037a32 980 (lambda* (#:key inputs #:allow-other-keys)
1af5e57d
IK
981 (substitute* "lib/awful/completion.lua"
982 (("/usr/bin/env")
983 ""))
c0c1811f
NG
984 ;; The build process needs to load Cairo dynamically.
985 (let* ((cairo (string-append (assoc-ref inputs "cairo") "/lib"))
986 (lua-version ,(version-major+minor (package-version lua)))
987 (lua-dependencies
988 (filter (match-lambda
989 ((label . _) (string-prefix? "lua-" label)))
990 inputs))
991 (lua-path
992 (string-join
993 (map (match-lambda
994 ((_ . dir)
995 (string-append
996 dir "/share/lua/" lua-version "/?.lua;"
997 dir "/share/lua/" lua-version "/?/?.lua")))
998 lua-dependencies)
999 ";"))
1000 (lua-cpath
1001 (string-join
1002 (map (match-lambda
1003 ((_ . dir)
1004 (string-append
1005 dir "/lib/lua/" lua-version "/?.so;"
1006 dir "/lib/lua/" lua-version "/?/?.so")))
1007 lua-dependencies)
1008 ";")))
1009 (setenv "LD_LIBRARY_PATH" cairo)
1010 (setenv "LUA_PATH" (string-append "?.lua;" lua-path))
1011 (setenv "LUA_CPATH" lua-cpath)
22037a32 1012 #t)))
1013 (replace 'check
1014 (lambda _
1015 ;; There aren't any tests, so just make sure the binary
1016 ;; gets built and can be run successfully.
b5e70d92 1017 (invoke "../build/awesome" "-v")))
4ec42524
TS
1018 (add-after 'install 'patch-session-file
1019 (lambda* (#:key outputs #:allow-other-keys)
1020 (let* ((out (assoc-ref outputs "out"))
1021 (awesome (string-append out "/bin/awesome")))
1022 (substitute* (string-append out "/share/xsessions/awesome.desktop")
1023 (("Exec=awesome") (string-append "Exec=" awesome)))
1024 #t)))
22037a32 1025 (add-after 'install 'wrap
1026 (lambda* (#:key inputs outputs #:allow-other-keys)
1027 (let* ((awesome (assoc-ref outputs "out"))
c0c1811f
NG
1028 (cairo (string-append (assoc-ref inputs "cairo") "/lib"))
1029 (lua-version ,(version-major+minor (package-version lua)))
1030 (lua-lgi (assoc-ref inputs "lua-lgi")))
22037a32 1031 (wrap-program (string-append awesome "/bin/awesome")
1af5e57d 1032 `("LUA_PATH" ";" suffix
c0c1811f 1033 (,(format #f "~a/share/lua/~a/?.lua" lua-lgi lua-version)))
1af5e57d 1034 `("LUA_CPATH" ";" suffix
c0c1811f 1035 (,(format #f "~a/lib/lua/~a/?.so" lua-lgi lua-version)))
22037a32 1036 `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH")))
c0c1811f
NG
1037 `("LD_LIBRARY_PATH" suffix (,cairo)))
1038 #t))))))
1039 (home-page "https://awesomewm.org/")
3d1240aa
CZ
1040 (synopsis "Highly configurable window manager")
1041 (description
c4dd0def 1042 "Awesome has been designed as a framework window manager. It is fast, small,
1043dynamic and extensible using the Lua programming language.")
c0c1811f 1044 (license license:gpl2+)))
395751c0 1045
1046(define-public menumaker
1047 (package
1048 (name "menumaker")
1c217fc3 1049 (version "0.99.12")
395751c0 1050 (source
1051 (origin
1052 (method url-fetch)
1053 (uri (string-append "mirror://sourceforge/menumaker/"
1054 "menumaker-" version ".tar.gz"))
1055 (sha256
1c217fc3 1056 (base32 "034v5204bsgkzzk6zfa5ia63q95gln47f7hwf96yvad5hrhmd8z3"))))
395751c0 1057 (build-system gnu-build-system)
1058 (inputs
1059 `(("python" ,python)))
1060 (synopsis "Heuristics-driven menu generator")
1061 (description
1062 "MenuMaker is a menu generation utility for a number of X window
1063managers and desktop environments. It is capable of finding lots of
1064installed programs and generating a root menu consistent across all
1065supported window managers, so one will get (almost) the same menu in
1066all of them. Currently supported window managers include:
1067
1068@enumerate
1069@item BlackBox
1070@item Deskmenu
1071@item FluxBox
1072@item IceWM
1073@item OpenBox
1074@item PekWM
1075@item WindowMaker
1076@item XFCE
1077@end enumerate\n")
1078 (home-page "http://menumaker.sourceforge.net/")
1079 (license license:bsd-2)))
dbf544f9 1080
1081(define-public keybinder
1082 (package
1083 (name "keybinder")
1084 (version "0.3.1")
1085 (source
1086 (origin
1087 (method url-fetch)
6d688b6e
TGR
1088 (uri (string-append "https://github.com/kupferlauncher/keybinder"
1089 "/releases/download/v" version "/keybinder-"
dbf544f9 1090 version ".tar.gz"))
1091 (file-name (string-append name "-" version ".tar.gz"))
1092 (sha256
1093 (base32
1094 "0h52hj3ay8mfhwvmfxbxlfyq74hifdk8wxgxp7fr4iy6189hg7w7"))))
1095 (build-system gnu-build-system)
1096 (inputs
1097 `(("python-2" ,python-2)
1098 ("gtk+-2" ,gtk+-2)))
1099 (native-inputs
1100 `(("python2-pygtk" ,python2-pygtk)
1101 ("gtk-doc" ,gtk-doc)
1102 ("pkg-config" ,pkg-config)))
1103 (synopsis "Library for registering global keyboard shortcuts")
1104 (description
1105 "Keybinder is a library for registering global keyboard shortcuts.
1106Keybinder works with GTK-based applications using the X Window System.")
6d688b6e 1107 (home-page "https://github.com/kupferlauncher/keybinder")
dbf544f9 1108 (license license:gpl2+)))
78dfc9e2 1109
8c765a3b
IR
1110(define-public keybinder-3.0
1111 (package
1112 (name "keybinder-3.0")
1113 (version "0.3.2")
1114 (source
1115 (origin
1116 (method url-fetch)
1117 (uri (string-append "https://github.com/kupferlauncher/keybinder"
1118 "/releases/download/" name "-v" version "/" name "-"
1119 version ".tar.gz"))
1120 (file-name (string-append name "-" version ".tar.gz"))
1121 (sha256
1122 (base32
1123 "0830ihwnalw59pp1xzrp37dn58n8vwb8zasnm4a1h81v3x7dxqz6"))))
1124 (build-system gnu-build-system)
1125 (inputs
1126 `(("gtk+" ,gtk+)
1127 ("gobject-introspection" ,gobject-introspection)))
1128 (native-inputs
1129 `(("gtk-doc" ,gtk-doc)
1130 ("pkg-config" ,pkg-config)))
1131 (synopsis "Library for registering global keyboard shortcuts, Gtk3 version")
1132 (description
1133 "Keybinder is a library for registering global keyboard shortcuts.
1134Keybinder works with GTK-based applications using the X Window System.")
1135 (home-page "https://github.com/kupferlauncher/keybinder")
1136 (license license:x11)))
1137
78dfc9e2 1138(define-public spectrwm
1139 (package
1140 (name "spectrwm")
f6c8a97a 1141 (version "3.2.0")
78dfc9e2 1142 (source
1143 (origin
b82bd90c
TGR
1144 (method git-fetch)
1145 (uri (git-reference
b0e7b699 1146 (url "https://github.com/conformal/spectrwm")
b82bd90c
TGR
1147 (commit
1148 (string-append "SPECTRWM_"
1149 (string-join (string-split version #\.) "_")))))
1150 (file-name (git-file-name name version))
78dfc9e2 1151 (sha256
b82bd90c 1152 (base32 "1dfqy5f0s1nv6rqkz9lj006vypmp4rwxd5vczfk3ndzqgnh19kw6"))))
78dfc9e2 1153 (build-system gnu-build-system)
1154 (arguments
1155 `(#:make-flags (let ((pkg-config (lambda (flag)
1156 (string-append
1157 "$(shell pkg-config " flag " "
1158 "xft fontconfig x11 libpng)"))))
1159 (list
1160 "CC=gcc"
1161 (string-append "PREFIX=" %output)
1162 (string-append "INCS=-I. " (pkg-config "--cflags"))
1163 (string-append "LIBS=" (pkg-config "--libs") " -lm")))
f6c8a97a 1164 #:tests? #f ;no test suite
78dfc9e2 1165 #:phases
1166 (modify-phases %standard-phases
1167 (add-before 'build 'change-dir
1168 (lambda _
1169 (chdir "linux") #t))
1170 (add-after 'change-dir 'patch-makefile
1171 (lambda _
1172 (substitute* "Makefile"
1173 (("-g") ""))))
f6c8a97a 1174 (delete 'configure)))) ;no 'configure' exists
78dfc9e2 1175 (inputs
1176 `(("freetype" ,freetype)
1177 ("fontconfig" ,fontconfig)
1178 ("libx11" ,libx11)
1179 ("libxcursor" ,libxcursor)
1180 ("libxrandr" ,libxrandr)
1181 ("libxtst" ,libxtst)
1182 ("libxft" ,libxft)
1183 ("xcb-util" ,xcb-util)
1184 ("xcb-util-wm" ,xcb-util-wm)
1185 ("xcb-util-keysyms" ,xcb-util-keysyms)))
1186 (native-inputs
1187 `(("libxt" ,libxt)
1188 ("pkg-config" ,pkg-config)))
1189 (synopsis "Minimalistic automatic tiling window manager")
1190 (description
1191 "Spectrwm is a small dynamic tiling and reparenting window manager for X11.
1192It is inspired by Xmonad and dwm. Its major features include:
1193
1194@itemize
1195@item Navigation anywhere on all screens with either the keyboard or mouse
1196@item Customizable status bar
1197@item Restartable without losing state
1198@item Quick launch menu
1199@item Many screen layouts possible with a few simple key strokes
1200@item Move/resize floating windows
32008a75
TGR
1201@item Extended Window Manager Hints (@dfn{EWMH}) support
1202@item Configurable tiling
78dfc9e2 1203@item Adjustable tile gap allows for a true one pixel border
1204@item Customizable colors and border width
1205@end itemize\n")
1206 (home-page "https://github.com/conformal/spectrwm")
1207 (license license:isc)))
b4cb9308 1208
1209(define-public cwm
1210 (package
1211 (name "cwm")
16634798 1212 (version "6.7")
b4cb9308 1213 (source
1214 (origin
1215 (method url-fetch)
9593caff 1216 (uri (string-append "https://leahneukirchen.org/releases/cwm-"
b4cb9308 1217 version ".tar.gz"))
1218 (sha256
16634798 1219 (base32 "022zld29qawd8gl700g4m24qa89il3aks397zkhh66wvzssdblzx"))))
b4cb9308 1220 (build-system gnu-build-system)
1221 (arguments
fa50a8bc 1222 `(#:make-flags (list (string-append "CC=" ,(cc-for-target))
b4cb9308 1223 (string-append "PREFIX=" %output))
1224 #:tests? #f
1225 #:phases
1226 (modify-phases %standard-phases
1227 (delete 'configure)
1228 (add-after 'build 'install-xsession
1229 (lambda* (#:key outputs #:allow-other-keys)
1230 ;; Add a .desktop file to xsessions.
1231 (let* ((output (assoc-ref outputs "out"))
1232 (xsessions (string-append output "/share/xsessions")))
1233 (mkdir-p xsessions)
1234 (with-output-to-file
1235 (string-append xsessions "/cwm.desktop")
1236 (lambda _
1237 (format #t
1238 "[Desktop Entry]~@
1239 Name=cwm~@
1240 Comment=OpenBSD Calm Window Manager fork~@
1241 Exec=~a/bin/cwm~@
1242 TryExec=~@*~a/bin/cwm~@
1243 Icon=~@
1244 Type=Application~%"
1245 output)))
1246 #t))))))
1247 (inputs
1248 `(("libxft" ,libxft)
1249 ("libxrandr" ,libxrandr)
1250 ("libxinerama" ,libxinerama)))
1251 (native-inputs
1252 `(("pkg-config" ,pkg-config)
1253 ("bison" ,bison)))
9593caff 1254 (home-page "https://github.com/leahneukirchen/cwm")
b4cb9308 1255 (synopsis "OpenBSD fork of the calmwm window manager")
1256 (description "Cwm is a stacking window manager for X11. It is an OpenBSD
1257project derived from the original Calm Window Manager.")
1258 (license license:isc)))
70024cfa
PAR
1259
1260(define-public nitrogen
1261 (package
1262 (name "nitrogen")
1263 (version "1.6.1")
1264 (source (origin
1265 (method url-fetch)
1266 (uri (string-append "http://github.com/l3ib/nitrogen/"
1267 "releases/download/" version "/"
1268 name "-" version ".tar.gz"))
1269 (sha256
1270 (base32
1271 "0zc3fl1mbhq0iyndy4ysmy8vv5c7xwf54rbgamzfhfvsgdq160pl"))))
1272 (build-system gnu-build-system)
1273 (inputs
1274 `(("gtk+" ,gtk+-2)
1275 ("gtkmm" ,gtkmm-2)
1276 ("glib" ,glib)
1277 ("glibmm" ,glibmm)))
1278 (native-inputs
de99ba7e 1279 `(("pkg-config" ,pkg-config)))
70024cfa
PAR
1280 (home-page "http://projects.l3ib.org/nitrogen/")
1281 (synopsis "Background browser and setter for X windows")
1282 (description
1283 "This package is a background browser and setter for X windows. It's
1284features are:
1285
1286@itemize
1287@item Multihead and Xinerama aware
1288@item Recall mode to used via startup script
1289@item Uses freedesktop.org standard for thumbnails
1290@item Can set GNOME background
1291@item Command lie set modes for script use
1292@item Inotify monitoring of browse directory
1293@item Lazy loading of thumbnails - conserves memory
1294@item \"Automatic\" set mode - determines best mode to set an image based on
1295its size
1296@item Display preview images in a tiled icon layout
1297@end itemize")
1298 (license license:gpl2+)))
d8dcbcc9
MP
1299
1300(define-public polybar
1301 (package
1302 (name "polybar")
99f80e5c 1303 (version "3.4.3")
d8dcbcc9
MP
1304 (source
1305 (origin
1306 (method url-fetch)
44b73520 1307 (uri (string-append "https://github.com/polybar/polybar/releases/"
4b9e4ac7 1308 "download/" version "/polybar-" version ".tar"))
d8dcbcc9 1309 (sha256
99f80e5c 1310 (base32 "0bw22qvbcdvyd0qv3ax48r34rnclbbb6dyb8h8zljq1r3lf15vfl"))))
d8dcbcc9
MP
1311 (build-system cmake-build-system)
1312 (arguments
1313 ;; Test is disabled because it requires downloading googletest from the
1314 ;; Internet.
1315 '(#:tests? #f))
1316 (inputs
1317 `(("alsa-lib" ,alsa-lib)
1318 ("cairo" ,cairo)
1319 ("i3-wm" ,i3-wm)
005c2ccf 1320 ("jsoncpp" ,jsoncpp)
d8dcbcc9
MP
1321 ("libmpdclient" ,libmpdclient)
1322 ("libnl" ,libnl)
1323 ("libxcb" ,libxcb)
1324 ("pulseaudio" ,pulseaudio)
1325 ("xcb-proto" ,xcb-proto)
1326 ("xcb-util" ,xcb-util)
1327 ("xcb-util-cursor" ,xcb-util-cursor)
1328 ("xcb-util-image" ,xcb-util-image)
1329 ("xcb-util-wm" ,xcb-util-wm)
1330 ("xcb-util-xrm" ,xcb-util-xrm)))
1331 (native-inputs
1332 `(("pkg-config" ,pkg-config)
47560aa2 1333 ("python-sphinx" ,python-sphinx) ; for the manual
e2684594
NG
1334 ;; XXX: "python" input must be located after "python-2", or the package
1335 ;; fails to build with "missing required python module: xcbgen".
d8dcbcc9
MP
1336 ("python-2" ,python-2) ; lib/xpp depends on python 2
1337 ("python" ,python))) ; xcb-proto depends on python 3
1338 (home-page "https://polybar.github.io/")
1339 (synopsis "Fast and easy-to-use status bar")
1340 (description "Polybar aims to help users build beautiful and highly
1341customizable status bars for their desktop environment. It has built-in
1342functionality to display information about the most commonly used services.")
1343 (license license:expat)))
eea969cf
RH
1344
1345(define-public wlroots
1346 (package
1347 (name "wlroots")
f5fb52f1 1348 (version "0.12.0")
eea969cf
RH
1349 (source
1350 (origin
1351 (method git-fetch)
1352 (uri (git-reference
b0e7b699 1353 (url "https://github.com/swaywm/wlroots")
eea969cf
RH
1354 (commit version)))
1355 (file-name (git-file-name name version))
1356 (sha256
f5fb52f1 1357 (base32 "01j38lmgs2c6fq68v8b75pkilia2wsgzgp46ivfbi9hhx47kgcfn"))))
eea969cf
RH
1358 (build-system meson-build-system)
1359 (arguments
1360 `(#:configure-flags '("-Dlogind-provider=elogind")
f5fb52f1 1361 #:meson ,meson-0.55
eea969cf
RH
1362 #:phases
1363 (modify-phases %standard-phases
1364 (add-before 'configure 'hardcode-paths
1365 (lambda* (#:key inputs #:allow-other-keys)
f5fb52f1 1366 (substitute* "xwayland/server.c"
eea969cf
RH
1367 (("Xwayland") (string-append (assoc-ref inputs
1368 "xorg-server-xwayland")
1369 "/bin/Xwayland")))
1370 #t)))))
f5fb52f1
MB
1371 (propagated-inputs
1372 `(;; As required by wlroots.pc.
1373 ("elogind" ,elogind)
1374 ("eudev" ,eudev)
1375 ("libinput" ,libinput)
1376 ("libxkbcommon" ,libxkbcommon)
1377 ("mesa" ,mesa)
1378 ("pixman" ,pixman)
1379 ("wayland" ,wayland)
1380 ("xcb-util-errors" ,xcb-util-errors)
1381 ("xcb-util-wm" ,xcb-util-wm)
1382 ("xorg-server-xwayland" ,xorg-server-xwayland)))
1383 (native-inputs
1384 `(("pkg-config" ,pkg-config)
1385 ("wayland-protocols" ,wayland-protocols)))
eea969cf
RH
1386 (home-page "https://github.com/swaywm/wlroots")
1387 (synopsis "Pluggable, composable, unopinionated modules for building a
1388Wayland compositor")
1389 (description "wlroots is a set of pluggable, composable, unopinionated
1390modules for building a Wayland compositor.")
1391 (license license:expat))) ; MIT license
2ff844f0
RH
1392
1393(define-public sway
1394 (package
1395 (name "sway")
7fc378aa 1396 (version "1.5.1")
2ff844f0
RH
1397 (source
1398 (origin
1399 (method git-fetch)
1400 (uri (git-reference
b0e7b699 1401 (url "https://github.com/swaywm/sway")
2ff844f0
RH
1402 (commit version)))
1403 (file-name (git-file-name name version))
1404 (sha256
7fc378aa 1405 (base32 "1xsa3h8zhf29p0mi90baxpr76jkd9pd1gr97ky8cnjbcs4isj9j0"))))
2ff844f0
RH
1406 (build-system meson-build-system)
1407 (arguments
1408 `(#:phases
1409 (modify-phases %standard-phases
1410 (add-before 'configure 'hardcode-paths
1411 (lambda* (#:key inputs #:allow-other-keys)
e23b6a68
MP
1412 ;; Hardcode path to swaybg.
1413 (substitute* "sway/config.c"
1414 (("strdup..swaybg..")
1415 (string-append "strdup(\"" (assoc-ref inputs "swaybg")
1416 "/bin/swaybg\")")))
1417 ;; Hardcode path to scdoc.
2ff844f0
RH
1418 (substitute* "meson.build"
1419 (("scdoc.get_pkgconfig_variable..scdoc..")
1420 (string-append "'" (assoc-ref inputs "scdoc")
1421 "/bin/scdoc'")))
1422 #t)))))
1423 (inputs `(("cairo" ,cairo)
1424 ("elogind" ,elogind)
1425 ("gdk-pixbuf" ,gdk-pixbuf)
1426 ("json-c" ,json-c)
aa07299f 1427 ("libevdev" ,libevdev)
2ff844f0
RH
1428 ("libinput" ,libinput)
1429 ("libxkbcommon" ,libxkbcommon)
1430 ("pango" ,pango)
e23b6a68 1431 ("swaybg" ,swaybg)
2ff844f0
RH
1432 ("wayland" ,wayland)
1433 ("wlroots" ,wlroots)))
7fc378aa
MB
1434 (native-inputs
1435 `(("linux-pam" ,linux-pam)
1436 ("mesa" ,mesa)
1437 ("pkg-config" ,pkg-config)
1438 ("scdoc" ,scdoc)
1439 ("wayland-protocols" ,wayland-protocols)))
2ff844f0
RH
1440 (home-page "https://github.com/swaywm/sway")
1441 (synopsis "Wayland compositor compatible with i3")
1442 (description "Sway is a i3-compatible Wayland compositor.")
7fc378aa 1443 (license license:expat)))
06ae5efc
RH
1444
1445(define-public swayidle
1446 (package
1447 (name "swayidle")
53d8e2c6 1448 (version "1.6")
06ae5efc
RH
1449 (source
1450 (origin
1451 (method git-fetch)
1452 (uri (git-reference
b0e7b699 1453 (url "https://github.com/swaywm/swayidle")
06ae5efc
RH
1454 (commit version)))
1455 (file-name (git-file-name name version))
1456 (sha256
53d8e2c6 1457 (base32 "1nd3v8r9549lykdwh4krldfl59lzaspmmai5k1icy7dvi6kkr18r"))))
06ae5efc 1458 (build-system meson-build-system)
ddd401d2
MP
1459 (arguments
1460 `(#:configure-flags '("-Dlogind-provider=elogind")))
1461 (inputs `(("elogind" ,elogind)
1462 ("wayland" ,wayland)))
06ae5efc
RH
1463 (native-inputs `(("pkg-config" ,pkg-config)
1464 ("scdoc" ,scdoc)
1465 ("wayland-protocols" ,wayland-protocols)))
1466 (home-page "https://github.com/swaywm/sway")
1467 (synopsis "Idle management daemon for Wayland compositors")
1468 (description "Swayidle is a idle management daemon for Wayland compositors.")
1469 (license license:expat))) ; MIT license
b0805973
RH
1470
1471(define-public swaylock
1472 (package
1473 (name "swaylock")
75d31a4c 1474 (version "1.5")
b0805973
RH
1475 (source
1476 (origin
1477 (method git-fetch)
1478 (uri (git-reference
b0e7b699 1479 (url "https://github.com/swaywm/swaylock")
b0805973
RH
1480 (commit version)))
1481 (file-name (git-file-name name version))
1482 (sha256
75d31a4c 1483 (base32 "0r95p4w11dwm5ra614vddz83r8j7z6gd120z2vcchy7m9b0f15kf"))))
b0805973
RH
1484 (build-system meson-build-system)
1485 (inputs `(("cairo" ,cairo)
1486 ("gdk-pixbuf" ,gdk-pixbuf)
1487 ("libxkbcommon" ,libxkbcommon)
1488 ;("linux-pam" ,linux-pam) ; FIXME: Doesn't work.
1489 ("wayland" ,wayland)))
bc552a0c 1490 (native-inputs `(("pango" ,pango)
b0805973
RH
1491 ("pkg-config" ,pkg-config)
1492 ("scdoc" ,scdoc)
1493 ("wayland-protocols" ,wayland-protocols)))
1494 (home-page "https://github.com/swaywm/sway")
1495 (synopsis "Screen locking utility for Wayland compositors")
1496 (description "Swaylock is a screen locking utility for Wayland compositors.")
1497 (license license:expat))) ; MIT license
bedb3457
SS
1498
1499(define-public swaybg
1500 (package
1501 (name "swaybg")
1502 (version "1.0")
1503 (source
1504 (origin
1505 (method git-fetch)
1506 (uri (git-reference
b0e7b699 1507 (url "https://github.com/swaywm/swaybg")
bedb3457
SS
1508 (commit version)))
1509 (file-name (git-file-name name version))
1510 (sha256
1511 (base32 "1lmqz5bmig90gq2m7lwf02d2g7z4hzf8fhqz78c8vk92c6p4xwbc"))))
1512 (build-system meson-build-system)
1513 (inputs `(("cairo" ,cairo)
1514 ("gdk-pixbuf" ,gdk-pixbuf)
1515 ("wayland" ,wayland)))
3e295e8d 1516 (native-inputs `(("pkg-config" ,pkg-config)
bedb3457
SS
1517 ("scdoc" ,scdoc)
1518 ("wayland-protocols" ,wayland-protocols)))
1519 (home-page "https://github.com/swaywm/sway")
1520 (synopsis "Screen wallpaper utility for Wayland compositors")
1521 (description "Swaybg is a wallpaper utility for Wayland compositors.")
1522 (license license:expat))) ; MIT license
7a1d6a77
GB
1523
1524(define-public waybar
1525 (package
1526 (name "waybar")
08014aed 1527 (version "0.9.4")
7a1d6a77
GB
1528 (source
1529 (origin
1530 (method git-fetch)
1531 (uri (git-reference
b0e7b699 1532 (url "https://github.com/Alexays/Waybar")
7a1d6a77
GB
1533 (commit version)))
1534 (file-name (git-file-name name version))
1535 (sha256
08014aed 1536 (base32 "038vnma7y7z81caywp45yr364bc1aq8d01j5vycyiyfv33nm76fy"))))
7a1d6a77 1537 (build-system meson-build-system)
5e78a87b 1538 (inputs `(("date" ,date)
a8360892 1539 ("fmt" ,fmt-6)
5e78a87b 1540 ("gtk-layer-shell" ,gtk-layer-shell)
7a1d6a77
GB
1541 ("gtkmm" ,gtkmm)
1542 ("jsoncpp" ,jsoncpp)
de2d14f2 1543 ("libdbusmenu" ,libdbusmenu)
7a1d6a77 1544 ("libinput" ,libinput)
de2d14f2
GB
1545 ("libmpdclent" ,libmpdclient)
1546 ("libnl" ,libnl)
1547 ("pulseaudio" ,pulseaudio)
7a1d6a77
GB
1548 ("spdlog" ,spdlog)
1549 ("wayland" ,wayland)))
80817888
TGR
1550 (native-inputs
1551 `(("gcc" ,gcc-8) ; for #include <filesystem>
1552 ("glib:bin" ,glib "bin")
1553 ("pkg-config" ,pkg-config)
56c39a07 1554 ("scdoc" ,scdoc)
80817888 1555 ("wayland-protocols" ,wayland-protocols)))
7a1d6a77 1556 (home-page "https://github.com/Alexays/Waybar")
5e78a87b 1557 (synopsis "Wayland bar for Sway and Wlroots based compositors")
7a1d6a77
GB
1558 (description "Waybar is a highly customisable Wayland bar for Sway and
1559Wlroots based compositors.")
1560 (license license:expat))) ; MIT license
46dc940c
GB
1561
1562(define-public mako
1563 (package
1564 (name "mako")
9ca38df7 1565 (version "1.4.1")
46dc940c
GB
1566 (source
1567 (origin
1568 (method git-fetch)
1569 (uri (git-reference
b0e7b699 1570 (url "https://github.com/emersion/mako")
46dc940c
GB
1571 (commit (string-append "v" version))))
1572 (file-name (git-file-name name version))
1573 (sha256
9ca38df7 1574 (base32 "0hwvibpnrximb628w9dsfjpi30b5jy7nfkm4d94z5vhp78p43vxh"))))
46dc940c
GB
1575 (build-system meson-build-system)
1576 (inputs `(("cairo" ,cairo)
1577 ("elogind" ,elogind)
1578 ("gdk-pixbuf" ,gdk-pixbuf)
1579 ("pango" ,pango)
1580 ("wayland" ,wayland)))
1581 (native-inputs `(("pkg-config" ,pkg-config)
1582 ("scdoc" ,scdoc)
1583 ("wayland-protocols" ,wayland-protocols)))
1584 (home-page "https://wayland.emersion.fr/mako")
1585 (synopsis "Lightweight Wayland notification daemon")
1586 (description "Mako is a lightweight notification daemon for Wayland
1587compositors that support the layer-shell protocol.")
1588 (license license:expat))) ; MIT license
88f06fd0
PN
1589
1590(define-public stumpwm
1591 (package
1592 (name "stumpwm")
dfb85d1e 1593 (version "20.11")
88f06fd0
PN
1594 (source
1595 (origin
1596 (method git-fetch)
1597 (uri (git-reference
b0e7b699 1598 (url "https://github.com/stumpwm/stumpwm")
88f06fd0
PN
1599 (commit version)))
1600 (file-name (git-file-name "stumpwm" version))
1601 (sha256
dfb85d1e 1602 (base32 "1ghs6ihvmb3bz4q4ys1d3h6rdi96xyiw7l2ip7jh54c25049aymf"))))
88f06fd0
PN
1603 (build-system asdf-build-system/sbcl)
1604 (native-inputs `(("fiasco" ,sbcl-fiasco)
afed1b94
TGR
1605 ("texinfo" ,texinfo)
1606
1607 ;; To build the manual.
1608 ("autoconf" ,autoconf)
1609 ("automake" ,automake)))
88f06fd0
PN
1610 (inputs `(("cl-ppcre" ,sbcl-cl-ppcre)
1611 ("clx" ,sbcl-clx)
1612 ("alexandria" ,sbcl-alexandria)))
1613 (outputs '("out" "lib"))
1614 (arguments
2ff8b5ba 1615 '(#:asd-systems '("stumpwm")
88f06fd0
PN
1616 #:phases
1617 (modify-phases %standard-phases
2ff8b5ba 1618 (add-after 'create-asdf-configuration 'build-program
88f06fd0
PN
1619 (lambda* (#:key outputs #:allow-other-keys)
1620 (build-program
1621 (string-append (assoc-ref outputs "out") "/bin/stumpwm")
1622 outputs
1623 #:entry-program '((stumpwm:stumpwm) 0))))
1624 (add-after 'build-program 'create-desktop-file
1625 (lambda* (#:key outputs #:allow-other-keys)
1626 (let* ((out (assoc-ref outputs "out"))
1627 (xsessions (string-append out "/share/xsessions")))
1628 (mkdir-p xsessions)
1629 (call-with-output-file
1630 (string-append xsessions "/stumpwm.desktop")
1631 (lambda (file)
1632 (format file
1633 "[Desktop Entry]~@
1634 Name=stumpwm~@
1635 Comment=The Stump Window Manager~@
1636 Exec=~a/bin/stumpwm~@
1637 TryExec=~@*~a/bin/stumpwm~@
1638 Icon=~@
1639 Type=Application~%"
1640 out)))
1641 #t)))
1642 (add-after 'install 'install-manual
afed1b94 1643 (lambda* (#:key (make-flags '()) outputs #:allow-other-keys)
88f06fd0
PN
1644 (let* ((out (assoc-ref outputs "out"))
1645 (info (string-append out "/share/info")))
afed1b94
TGR
1646 (invoke "./autogen.sh")
1647 (invoke "sh" "./configure" "SHELL=sh")
1648 (apply invoke "make" "stumpwm.info" make-flags)
88f06fd0
PN
1649 (install-file "stumpwm.info" info)
1650 #t))))))
1651 (synopsis "Window manager written in Common Lisp")
1652 (description "Stumpwm is a window manager written entirely in Common Lisp.
1653It attempts to be highly customizable while relying entirely on the keyboard
1654for input. These design decisions reflect the growing popularity of
1655productive, customizable lisp based systems.")
1656 (home-page "https://github.com/stumpwm/stumpwm")
1657 (license license:gpl2+)
1658 (properties `((cl-source-variant . ,(delay cl-stumpwm))))))
1659
1660(define-public sbcl-stumpwm
1661 (deprecated-package "sbcl-stumpwm" stumpwm))
1662
1663(define-public cl-stumpwm
1664 (package
1665 (inherit (sbcl-package->cl-source-package stumpwm))
1666 (name "cl-stumpwm")))
1667
1668(define-public stumpwm+slynk
1669 (package
1670 (inherit stumpwm)
1671 (name "stumpwm-with-slynk")
1672 (outputs '("out"))
1673 (inputs
1674 `(("stumpwm" ,stumpwm "lib")
1675 ("slynk" ,sbcl-slynk)))
1676 (arguments
1677 (substitute-keyword-arguments (package-arguments stumpwm)
1678 ((#:phases phases)
1679 `(modify-phases ,phases
1680 (replace 'build-program
1681 (lambda* (#:key inputs outputs #:allow-other-keys)
1682 (let* ((out (assoc-ref outputs "out"))
1683 (program (string-append out "/bin/stumpwm")))
3138e4a7 1684 (setenv "HOME" "/tmp")
88f06fd0
PN
1685 (build-program program outputs
1686 #:entry-program '((stumpwm:stumpwm) 0)
2ff8b5ba 1687 #:dependencies '("stumpwm" "slynk")
88f06fd0
PN
1688 #:dependency-prefixes
1689 (map (lambda (input) (assoc-ref inputs input))
1690 '("stumpwm" "slynk")))
88f06fd0
PN
1691 #t)))
1692 (delete 'copy-source)
1693 (delete 'build)
1694 (delete 'check)
2ff8b5ba 1695 (delete 'cleanup)))))))
88f06fd0 1696
81b045e1
KCB
1697(define stumpwm-contrib
1698 (let ((commit "920f8fc1488f7953f205e1dda4c2ecbbbda56d63")
8b2a637d 1699 (revision "2"))
9a12243c 1700 (package
81b045e1 1701 (name "stumpwm-contrib")
9a12243c
OP
1702 (version (git-version "0.0.1" revision commit)) ;no upstream release
1703 (source
1704 (origin
1705 (method git-fetch)
1706 (uri (git-reference
b0e7b699 1707 (url "https://github.com/stumpwm/stumpwm-contrib")
9a12243c 1708 (commit commit)))
b9e1fc2f 1709 (file-name (git-file-name name version))
9a12243c 1710 (sha256
8b2a637d 1711 (base32 "0giac390bq95ag41xkxqp8jjrhfx1wpgglz7jg5rkm0wjhcwmyml"))))
81b045e1 1712 (build-system asdf-build-system/sbcl)
9a12243c 1713 (inputs
81b045e1 1714 `(("stumpwm" ,stumpwm "lib")))
9a12243c
OP
1715 (home-page "https://github.com/stumpwm/stumpwm-contrib")
1716 (synopsis "StumpWM interactive shell")
1717 (description "This package provides a StumpWM interactive shell.")
1718 (license (list license:gpl2+ license:gpl3+ license:bsd-2)))))
1719
81b045e1
KCB
1720(define-public stumpish
1721 (package
1722 (inherit stumpwm-contrib)
1723 (name "stumpish")
1724 (inputs
1725 `(("bash" ,bash)
48b00a4c
MR
1726 ("rlwrap" ,rlwrap)
1727 ("xprop" ,xprop)))
81b045e1
KCB
1728 (build-system trivial-build-system)
1729 (arguments
1730 '(#:modules ((guix build utils))
81b045e1
KCB
1731 #:builder
1732 (begin
1733 (use-modules (guix build utils))
1734 (copy-recursively (assoc-ref %build-inputs "source") ".")
1735 (chdir "util/stumpish")
1736 (substitute* "stumpish"
1737 (("rlwrap") (string-append (assoc-ref %build-inputs "rlwrap")
1738 "/bin/rlwrap"))
48b00a4c
MR
1739 (("xprop") (string-append (assoc-ref %build-inputs "xprop")
1740 "/bin/xprop"))
81b045e1
KCB
1741 (("/bin/sh") (string-append (assoc-ref %build-inputs "bash")
1742 "/bin/bash")))
1743 (install-file "stumpish" (string-append %output "/bin")))))
1744 (home-page "https://github.com/stumpwm/stumpwm-contrib")
1745 (synopsis "StumpWM interactive shell")
1746 (description "This package provides a StumpWM interactive shell.")
1747 (license (list license:gpl2+ license:gpl3+ license:bsd-2))))
1748
88f06fd0
PN
1749(define-public sbcl-stumpwm+slynk
1750 (deprecated-package "sbcl-stumpwm-with-slynk" stumpwm+slynk))
d4145638 1751
65051fdc 1752(define-public sbcl-stumpwm-ttf-fonts
81b045e1
KCB
1753 (package
1754 (inherit stumpwm-contrib)
1755 (name "sbcl-stumpwm-ttf-fonts")
1756 (inputs
1757 `(("stumpwm" ,stumpwm "lib")
1758 ("clx-truetype" ,sbcl-clx-truetype)))
1759 (arguments
2ff8b5ba 1760 '(#:asd-systems '("ttf-fonts")
81b045e1
KCB
1761 #:tests? #f
1762 #:phases
1763 (modify-phases %standard-phases
1764 (add-after 'unpack 'chdir
1765 (lambda _ (chdir "util/ttf-fonts") #t)))))
1766 (home-page "https://github.com/stumpwm/stumpwm-contrib")
1767 (synopsis "Implementation of TTF font rendering for Lisp")
1768 (description "This package provides a Lisp implementation of TTF font
65051fdc 1769rendering.")
81b045e1 1770 (license (list license:gpl2+ license:gpl3+ license:bsd-2))))
65051fdc 1771
fd65311c 1772(define-public sbcl-stumpwm-pass
81b045e1
KCB
1773 (package
1774 (inherit stumpwm-contrib)
1775 (name "sbcl-stumpwm-pass")
1776 (arguments
2ff8b5ba 1777 '(#:asd-systems '("pass")
81b045e1
KCB
1778 #:tests? #f
1779 #:phases
1780 (modify-phases %standard-phases
1781 (add-after 'unpack 'chdir
1782 (lambda _ (chdir "util/pass") #t)))))
1783 (home-page "https://github.com/stumpwm/stumpwm-contrib")
4a1e3610 1784 (synopsis "Integrate @code{pass} with StumpWM")
81b045e1 1785 (description "This package provides an interface which integrates
fd65311c 1786password-store into StumpWM.")
81b045e1 1787 (license (list license:gpl2+ license:gpl3+ license:bsd-2))))
fd65311c 1788
396eb9e1 1789(define-public sbcl-stumpwm-globalwindows
81b045e1
KCB
1790 (package
1791 (inherit stumpwm-contrib)
1792 (name "sbcl-stumpwm-globalwindows")
1793 (arguments
2ff8b5ba 1794 '(#:asd-systems '("globalwindows")
81b045e1
KCB
1795 #:tests? #f
1796 #:phases
1797 (modify-phases %standard-phases
1798 (add-after 'unpack 'chdir
1799 (lambda _ (chdir "util/globalwindows") #t)))))
1800 (home-page "https://github.com/stumpwm/stumpwm-contrib")
1801 (synopsis "Manipulate all windows in the current X session")
1802 (description "This package provides a StumpWM module to manipulate all
396eb9e1 1803windows in the current X session.")
81b045e1 1804 (license (list license:gpl2+ license:gpl3+ license:bsd-2))))
396eb9e1 1805
693d0fff 1806(define-public sbcl-stumpwm-swm-gaps
81b045e1
KCB
1807 (package
1808 (inherit stumpwm-contrib)
1809 (name "sbcl-stumpwm-swm-gaps")
1810 (arguments
2ff8b5ba 1811 '(#:asd-systems '("swm-gaps")
81b045e1
KCB
1812 #:tests? #f
1813 #:phases
1814 (modify-phases %standard-phases
1815 (add-after 'unpack 'chdir
1816 (lambda _ (chdir "util/swm-gaps") #t)))))
1817 (home-page "https://github.com/stumpwm/stumpwm-contrib")
1818 (synopsis "Gaps between windows for StumpWM")
1819 (description "This package provides a StumpWM module which adds gaps
693d0fff 1820between windows.")
81b045e1 1821 (license (list license:gpl2+ license:gpl3+ license:bsd-2))))
693d0fff 1822
ea94e4d3
KCB
1823(define-public sbcl-stumpwm-net
1824 (package
1825 (inherit stumpwm-contrib)
1826 (name "sbcl-stumpwm-net")
1827 (arguments
2ff8b5ba 1828 '(#:asd-systems '("net")
ea94e4d3
KCB
1829 #:tests? #f
1830 #:phases
1831 (modify-phases %standard-phases
1832 (add-after 'unpack 'chdir (lambda _ (chdir "modeline/net") #t)))))
1833 (home-page
1834 "https://github.com/stumpwm/stumpwm-contrib/tree/master/modeline/net")
1835 (synopsis "Modeline support for network connectivity")
1836 (description "Modeline support for network connectivity.")
1837 (supported-systems
1838 (filter (lambda (a) (string-contains a "linux")) %supported-systems))
1839 (license license:gpl3+)))
1840
86ee8d15
KCB
1841(define-public sbcl-stumpwm-wifi
1842 (package
1843 (inherit stumpwm-contrib)
1844 (name "sbcl-stumpwm-wifi")
1845 (arguments
2ff8b5ba 1846 '(#:asd-systems '("wifi")
86ee8d15
KCB
1847 #:tests? #f
1848 #:phases
1849 (modify-phases %standard-phases
1850 (add-after 'unpack 'chdir (lambda _ (chdir "modeline/wifi") #t)))))
1851 (home-page
1852 "https://github.com/stumpwm/stumpwm-contrib/tree/master/modeline/wifi")
1853 (synopsis "Modeline support for wifi connectivity")
1854 (description "Modeline support for wifi connectivity.")
1855 (supported-systems
1856 (filter (lambda (a) (string-contains a "linux")) %supported-systems))
1857 (license license:gpl3+)))
1858
1afe58e4
KCB
1859(define-public sbcl-stumpwm-stumptray
1860 (package
1861 (inherit stumpwm-contrib)
1862 (name "sbcl-stumpwm-stumptray")
1863 (arguments
2ff8b5ba 1864 '(#:asd-systems '("stumptray")
1afe58e4
KCB
1865 #:tests? #f
1866 #:phases
1867 (modify-phases %standard-phases
1868 (add-after 'unpack 'chdir (lambda _ (chdir "modeline/stumptray") #t)))))
1869 (inputs
1870 `(("stumpwm" ,stumpwm "lib")
1871 ("xembed" ,sbcl-clx-xembed)
1872 ("alexandria" ,sbcl-alexandria)))
1873 (home-page
1874 "https://github.com/stumpwm/stumpwm-contrib/tree/master/modeline/stumptray")
1875 (synopsis "Modeline support for stumptray connectivity")
1876 (description "Modeline support for stumptray connectivity.")
1877 (supported-systems
1878 (filter (lambda (a) (string-contains a "linux")) %supported-systems))
1879 (license license:gpl3+)))
1880
b70e612b
KCB
1881(define-public sbcl-stumpwm-kbd-layouts
1882 (package
1883 (inherit stumpwm-contrib)
1884 (name "sbcl-stumpwm-kbd-layouts")
1885 (arguments
2ff8b5ba 1886 '(#:asd-systems '("kbd-layouts")
b70e612b
KCB
1887 #:tests? #f
1888 #:phases
1889 (modify-phases %standard-phases
1890 (add-after 'unpack 'chdir (lambda _ (chdir "util/kbd-layouts") #t)))))
1891 (home-page
1892 "https://github.com/stumpwm/stumpwm-contrib/tree/master/util/kbd-layouts")
1893 (synopsis "Keyboard layout switcher for StumpWM")
1894 (description "Keyboard layout switcher for StumpWM")
1895 (license license:gpl3+)))
1896
680102aa
GLV
1897(define-public sbcl-stumpwm-numpad-layouts
1898 (package
1899 (inherit stumpwm-contrib)
1900 (name "sbcl-stumpwm-numpad-layouts")
1901 (arguments
1902 '(#:asd-systems '("numpad-layouts")
1903 #:tests? #f
1904 #:phases
1905 (modify-phases %standard-phases
1906 (add-after 'unpack 'chdir
1907 (lambda _
1908 (chdir "util/numpad-layouts"))))))
1909 (home-page
1910 "https://github.com/stumpwm/stumpwm-contrib/tree/master/util/numpad-layouts")
1911 (synopsis "Keyboard numpad layouts for StumpWM")
1912 (description "This is a module for handling different keyboards numpad
1913layouts in StumpWM.")
1914 (license license:gpl3+)))
1915
fba3e9e2
GLV
1916(define-public sbcl-stumpwm-cpu
1917 (package
1918 (inherit stumpwm-contrib)
1919 (name "sbcl-stumpwm-cpu")
1920 (arguments
1921 '(#:asd-systems '("cpu")
1922 #:tests? #f
1923 #:phases
1924 (modify-phases %standard-phases
1925 (add-after 'unpack 'chdir
1926 (lambda _
1927 (chdir "modeline/cpu"))))))
1928 (home-page
1929 "https://github.com/stumpwm/stumpwm-contrib/tree/master/modeline/cpu")
1930 (synopsis "Modeline support for CPU info")
1931 (description "Modeline support for CPU info.")
1932 (license license:gpl3+)))
1933
52828db0
GLV
1934(define-public sbcl-stumpwm-mem
1935 (package
1936 (inherit stumpwm-contrib)
1937 (name "sbcl-stumpwm-mem")
1938 (arguments
1939 '(#:asd-systems '("mem")
1940 #:tests? #f
1941 #:phases
1942 (modify-phases %standard-phases
1943 (add-after 'unpack 'chdir
1944 (lambda _
1945 (chdir "modeline/mem"))))))
1946 (home-page
1947 "https://github.com/stumpwm/stumpwm-contrib/tree/master/modeline/mem")
1948 (synopsis "Modeline support for memory info")
1949 (description "Modeline support for memory info.")
1950 (license license:gpl3+)))
1951
f6c827c1
GLV
1952(define-public sbcl-stumpwm-winner-mode
1953 (package
1954 (inherit stumpwm-contrib)
1955 (name "sbcl-stumpwm-winner-mode")
1956 (arguments
1957 '(#:asd-systems '("winner-mode")
1958 #:tests? #f
1959 #:phases
1960 (modify-phases %standard-phases
1961 (add-after 'unpack 'chdir
1962 (lambda _
1963 (chdir "util/winner-mode"))))))
1964 (home-page
1965 "https://github.com/stumpwm/stumpwm-contrib/tree/master/util/winner-mode")
1966 (synopsis "Emacs' winner-mode for StumpWM")
1967 (description "This module provides a winner-mode for StumpWM similar to the
1968one in Emacs.")
1969 (license license:gpl3+)))
1970
275fcffc
GLV
1971(define-public sbcl-stumpwm-screenshot
1972 (package
1973 (inherit stumpwm-contrib)
1974 (name "sbcl-stumpwm-screenshot")
1975 (inputs
1976 `(("stumpwm" ,stumpwm "lib")
1977 ("zpng" ,sbcl-zpng)))
1978 (arguments
1979 '(#:asd-systems '("screenshot")
1980 #:tests? #f
1981 #:phases
1982 (modify-phases %standard-phases
1983 (add-after 'unpack 'chdir
1984 (lambda _
1985 (chdir "util/screenshot")))
1986 (add-after 'chdir 'fix-build
1987 (lambda _
1988 (substitute* "screenshot.asd"
1989 (("#:zpng")
1990 "#:stumpwm #:zpng")))))))
1991 (home-page
1992 "https://github.com/stumpwm/stumpwm-contrib/tree/master/util/screenshot")
1993 (synopsis "Screenshots for StumpWM")
1994 (description "This StumpWM module can take screenshots and store them as
1995PNG files.")
1996 (license license:gpl3+)))
1997
d4145638
N
1998(define-public lemonbar
1999 (let ((commit "35183ab81d2128dbb7b6d8e119cc57846bcefdb4")
2000 (revision "1"))
2001 (package
2002 (name "lemonbar")
2003 (version (git-version "1.3" revision commit))
2004 (source (origin
2005 (method git-fetch)
2006 (uri (git-reference
2007 (url "https://github.com/LemonBoy/bar")
2008 (commit commit)))
2009 (file-name (git-file-name name version))
2010 (sha256
2011 (base32
2012 "1wwqbph392iwz8skaqxb0xpklb1l6yganqz80g4x1fhrnz7idmlh"))))
2013 (build-system gnu-build-system)
2014 (arguments
6978cb28
TGR
2015 `(#:tests? #f ; no test suite
2016 #:make-flags
2017 (list ,(string-append "CC=" (cc-for-target))
2018 (string-append "PREFIX=" %output))
d4145638
N
2019 #:phases
2020 (modify-phases %standard-phases
2021 (delete 'configure))))
2022 (inputs
2023 `(("libxcb" ,libxcb)))
2024 (native-inputs
2025 `(("perl" ,perl)))
2026 (home-page "https://github.com/LemonBoy/bar")
2027 (synopsis "Featherweight status bar")
2028 (description
2029 "@code{lemonbar} (formerly known as @code{bar}) is a lightweight
2030bar entirely based on XCB. Provides full UTF-8 support, basic
2031formatting, RandR and Xinerama support and EWMH compliance without
2032wasting your precious memory.")
2033 (license license:x11))))
ab751d53 2034
8e2aad26 2035(define-public lemonbar-xft
2036 ;; Upstream v2.0 tag is several years behind HEAD
2037 (let ((commit "481e12363e2a0fe0ddd2176a8e003392be90ed02"))
2038 (package
2039 (inherit lemonbar)
2040 (name "lemonbar-xft")
2041 (version (string-append "2.0." (string-take commit 7)))
2042 (source (origin
2043 (method git-fetch)
2044 (uri (git-reference
2045 (url "https://github.com/drscream/lemonbar-xft")
2046 (commit commit)))
2047 (file-name (git-file-name name version))
2048 (sha256
2049 (base32
2050 "0588g37h18lv50h7w8vfbwhvc3iajh7sdr53848spaif99nh3mh4"))))
2051 (inputs
2052 `(("freetype" ,freetype)
2053 ("libxft" ,libxft)
2054 ("libx11" ,libx11)
2055 ,@(package-inputs lemonbar)))
2056 (arguments
2057 (substitute-keyword-arguments (package-arguments lemonbar)
2058 ((#:make-flags make-flags)
2059 `(append
2060 ,make-flags
2061 (list (string-append
2062 "CFLAGS="
2063 (string-join
2064 (list (string-append
2065 "-I" (assoc-ref %build-inputs "freetype")
2066 "/include/freetype2")
2067 (string-append
2068 "-D" "VERSION="
2069 (format #f "'~s'" ,version))))))))))
2070 (home-page "https://github.com/drscream/lemonbar-xft")
2071 (synopsis
2072 (string-append
2073 (package-synopsis lemonbar)
2074 " with fontconfig support"))
2075 (description
2076 (string-append
2077 (package-description lemonbar)
2078 "This is a fork of the @code{lemonbar} package that adds fontconfig
2079support, for easier unicode usage.")))))
2080
ab751d53 2081(define-public xclickroot
8ff16233
OP
2082 (package
2083 (name "xclickroot")
2084 (version "1.2")
2085 (source (origin
2086 (method git-fetch)
2087 (uri (git-reference
2088 (url "https://github.com/phillbush/xclickroot")
2089 (commit (string-append "v" version))))
2090 (file-name (git-file-name name version))
2091 (sha256
2092 (base32
2093 "1nd5qz0qz5j7gx2jsbcp234giwaa0xmg42vrcjrcf587q9ivakfl"))))
2094 (build-system gnu-build-system)
2095 (inputs
2096 `(("libx11" ,libx11)))
2097 (arguments
2098 `(#:tests? #f ;no test suite
2099 #:make-flags
2100 (list ,(string-append "CC=" (cc-for-target))
2101 (string-append "PREFIX=" %output))
2102 #:phases
2103 (modify-phases %standard-phases
2104 (delete 'configure))))
2105 (home-page "https://github.com/phillbush/xclickroot")
2106 (synopsis "Run a command when a mouse button is pressed on the root window")
2107 (description "@code{xclickroot} runs a command every time a given mouse
ab751d53 2108button is pressed on the root window.")
8ff16233 2109 (license license:public-domain)))
6bd6b123
OP
2110
2111(define-public xmenu
2112 (package
2113 (name "xmenu")
bf822521 2114 (version "4.4.1")
6bd6b123
OP
2115 (source (origin
2116 (method git-fetch)
2117 (uri (git-reference
2118 (url "https://github.com/phillbush/xmenu")
2119 (commit (string-append "v" version))))
2120 (file-name (git-file-name name version))
2121 (sha256
2122 (base32
bf822521 2123 "1s70zvsaqnsjqs298vw3py0vcvia68xlks1wcz37pb88bwligz1x"))))
6bd6b123
OP
2124 (build-system gnu-build-system)
2125 (inputs
2126 `(("libx11" ,libx11)
bf822521 2127 ("libxinerama" ,libxinerama)
6bd6b123
OP
2128 ("libxft" ,libxft)
2129 ("freetype" ,freetype)
2130 ("imlib2" ,imlib2)))
2131 (arguments
2132 `(#:tests? #f ;no test suite
2133 #:make-flags
2134 (list (string-append "CC=" ,(cc-for-target))
2135 (string-append "PREFIX=" %output)
2136 (string-append "CFLAGS="
2137 "-I" (assoc-ref %build-inputs "freetype")
2138 "/include/freetype2"))
2139 #:phases
2140 (modify-phases %standard-phases
2141 (delete 'configure))))
2142 (home-page "https://github.com/phillbush/xmenu")
2143 (synopsis "Menu utility for X")
2144 (description "@code{xmenu} receives a menu specification in stdin, shows
2145a menu for the user to select one of the options, and outputs the option
2146selected to stdout. It can be controlled both via mouse and via keyboard.")
2147 (license license:public-domain)))
1db15d00
OP
2148
2149(define-public idesk
2150 (package
2151 (name "idesk")
2152 (version "0.7.5")
2153 (source
2154 (origin
2155 (method url-fetch)
2156 (uri (string-append
2157 "mirror://sourceforge/idesk/idesk/idesk-" version
2158 "/idesk-" version ".tar.bz2"))
2159 (sha256
2160 (base32
2161 "1lxk2yvgysxwl514zc82lwr1dwc8cd62slgr5lzdhjbdrxfymdyl"))
2162 (modules '((guix build utils)
2163 (ice-9 format)))
2164 (snippet
2165 '(let* ((file "src/DesktopConfig.cpp")
2166 (template (string-append file ".XXXXXX"))
2167 (out (mkstemp! template))
2168 (st (stat file))
2169 (mode (stat:mode st)))
2170 (call-with-ascii-input-file file
2171 (lambda (p)
2172 (format out "~{~a~%~}" '("#include <unistd.h>"
2173 "#include <sys/stat.h>"
2174 "#include <sys/types.h>"))
2175 (dump-port p out)
2176 (close out)
2177 (chmod template mode)
2178 (rename-file template file)
2179 #t))))))
2180 (build-system gnu-build-system)
2181 (inputs
2182 `(("libx11" ,libx11)
2183 ("libxft" ,libxft)
2184 ("libxpm" ,libxpm)
2185 ("libpng" ,libpng)
2186 ("freetype" ,freetype)
2187 ("imlib2" ,imlib2)
2188 ("sed" ,sed)))
2189 (native-inputs
2190 `(("pkg-config" ,pkg-config)))
2191 (arguments
2192 `(#:tests? #f)) ;no test suite
2193 (home-page "https://sourceforge.net/projects/idesk/")
2194 (synopsis "Add icons on X desktop and set background image for wallpaper")
2195 (description "Idesk is program that draws desktop icons. Each icon will
2196execute a shell command on a configurable action. The icons can be moved on
2197the desktop by dragging them, and the icons will remember their positions on
2198start-up.")
2199 (license license:bsd-3)))
2aa39332
OP
2200
2201(define-public xnotify
2202 (package
2203 (name "xnotify")
2a72cb7b 2204 (version "0.7.3")
2aa39332
OP
2205 (source (origin
2206 (method git-fetch)
2207 (uri (git-reference
2208 (url "https://github.com/phillbush/xnotify")
2a72cb7b 2209 (commit version)))
2aa39332
OP
2210 (file-name (git-file-name name version))
2211 (sha256
2212 (base32
2a72cb7b 2213 "09s29m8z4x3mc3wja2587ik3f6zg16b40adr3nllnpyy1mqnprq5"))))
2aa39332
OP
2214 (build-system gnu-build-system)
2215 (inputs
2216 `(("libx11" ,libx11)
2217 ("libxft" ,libxft)
2218 ("libxinerama" ,libxinerama)
2219 ("imlib2" ,imlib2)))
2220 (arguments
2221 `(#:make-flags
2222 (list (string-append "CC=" ,(cc-for-target))
2223 (string-append "PREFIX=" %output)
2224 (string-append "CFLAGS="
2225 "-I" (assoc-ref %build-inputs "freetype")
2226 "/include/freetype2"))
2227 #:tests? #f ;no test suite
2228 #:phases
2229 (modify-phases %standard-phases
2230 (delete 'configure))))
2231 (home-page "https://github.com/phillbush/xnotify")
2232 (synopsis "Displays a notification on the screen")
2233 (description "XNotify receives a notification specification in stdin and
2234shows a notification for the user on the screen.")
2235 (license license:expat)))