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