gnu: Move web packages from haskell to haskell-web.
[jackhill/guix/guix.git] / gnu / packages / wm.scm
index 3cf74c4..599d5ad 100644 (file)
@@ -9,11 +9,12 @@
 ;;; Copyright © 2016 Al McElrath <hello@yrns.org>
 ;;; Copyright © 2016 Carlo Zancanaro <carlo@zancanaro.id.au>
 ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
+;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
 ;;; Copyright © 2016 doncatnip <gnopap@gmail.com>
 ;;; Copyright © 2016 Ivan Vilata i Balaguer <ivan@selidor.net>
 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -41,6 +42,8 @@
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module (gnu packages haskell)
+  #:use-module (gnu packages haskell-check)
+  #:use-module (gnu packages haskell-web)
   #:use-module (gnu packages base)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages perl)
 (define-public libconfuse
   (package
     (name "libconfuse")
-    (version "2.7")
+    (version "3.2.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://savannah.nongnu.org/download/confuse/"
-                                  "confuse-" version ".tar.gz"))
+              (uri (string-append "https://github.com/martinh/libconfuse/"
+                                  "releases/download/v" version
+                                  "/confuse-" version ".tar.xz"))
               (sha256
                (base32
-                "0y47r2ashz44wvnxdb18ivpmj8nxhw3y9bf7v9w0g5byhgyp89g3"))))
+                "0pnjmlj9i0alp407qd7c0vq83sz7gpsjrbdgpcn4xvzjp9r35ii3"))))
     (build-system gnu-build-system)
-    (home-page "http://www.nongnu.org/confuse/")
+    (home-page "https://github.com/martinh/libconfuse")
     (synopsis "Configuration file parser library")
     (description "libconfuse is a configuration file parser library.  It
 supports sections and (lists of) values (strings, integers, floats, booleans
@@ -93,7 +97,7 @@ nested include statements).")
 (define-public bspwm
   (package
     (name "bspwm")
-    (version "0.9")
+    (version "0.9.3")
     (source
      (origin
        (file-name (string-append name "-" version ".tar.gz"))
@@ -103,7 +107,7 @@ nested include statements).")
              version ".tar.gz"))
        (sha256
         (base32
-         "1pig0h2jk8wipyz90j69c4bk37bfyq60asnn0v0bqld2p2vjvyqy"))))
+         "17dwj7w16cdj7g4s2y2f96lgj5msq1s4543dnfa3rijlazzy6mmk"))))
     (build-system gnu-build-system)
     (inputs
      `(("libxcb" ,libxcb)
@@ -113,7 +117,7 @@ nested include statements).")
        ("xcb-util-keysyms" ,xcb-util-keysyms)
        ("xcb-util-wm" ,xcb-util-wm)))
     (arguments
-     '(#:phases (alist-delete 'configure %standard-phases)
+     '(#:phases (modify-phases %standard-phases (delete 'configure))
        #:tests? #f  ; no check target
        #:make-flags (list "CC=gcc"
                           (string-append "PREFIX=" %output))))
@@ -166,14 +170,14 @@ commands would.")
 (define-public i3-wm
   (package
     (name "i3-wm")
-    (version "4.13")
+    (version "4.14.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://i3wm.org/downloads/i3-"
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "12ngz32swh9n85xy0cz1lq16aqi9ys5hq19v589q9a97wn1k3hcl"))))
+                "1cazmfbbx6n8c81h6x6pdayq3mxs2ml3adz165z8vapkc72kl1nh"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
@@ -223,14 +227,14 @@ developers.")
 (define-public perl-anyevent-i3
   (package
     (name "perl-anyevent-i3")
-    (version "0.16")
+    (version "0.17")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/M/MS/MSTPLBG/"
                                   "AnyEvent-I3-" version ".tar.gz"))
               (sha256
                (base32
-                "1qwva5vmmn929l6k9wzhp4h80ad4qm4m1g2dyv4nlas624003hig"))))
+                "0qvd9bq16jyy7v3ma82qcnvz9j503bw0mh7h55gkjf7ir62ck0jk"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-anyevent" ,perl-anyevent)
@@ -334,7 +338,7 @@ prompt.")
 (define-public xmonad
   (package
     (name "xmonad")
-    (version "0.12")
+    (version "0.13")
     (synopsis "Tiling window manager")
     (source (origin
               (method url-fetch)
@@ -342,7 +346,7 @@ prompt.")
                                   name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1mzx3p17ppgmi30q3phaj58x6kxn73pbbkn9v9gzgmd8skdlkxp8"))))
+                "1jh3lcs20qpna36fa5a0r174xqrsxhj10x1rm5vwf64zariipy7r"))))
     (build-system haskell-build-system)
     (inputs
      `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
@@ -350,6 +354,7 @@ prompt.")
        ("ghc-quickcheck"            ,ghc-quickcheck)
        ("ghc-setlocale"             ,ghc-setlocale)
        ("ghc-utf8-string"           ,ghc-utf8-string)
+       ("ghc-directory"             ,ghc-directory)
        ("ghc-x11"                   ,ghc-x11)))
     (arguments
      `(#:phases
@@ -380,10 +385,43 @@ used on each workspace.  Xinerama is fully supported, allowing windows to be
 tiled on several screens.")
     (license license:bsd-3)))
 
+(define-public xmobar
+  (package
+    (name "xmobar")
+    (version "0.24.5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://hackage/package/xmobar/"
+                                  name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0sdzfj2wa4wpig1i2i5n9qpwm90jp88qifsmaa7j37yhhs6snfir"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-http" ,ghc-http)
+       ("ghc-parsec" ,ghc-parsec)
+       ("ghc-regex-compat" ,ghc-regex-compat)
+       ("ghc-stm" ,ghc-stm)
+       ("ghc-x11-xft" ,ghc-x11-xft)
+       ("ghc-hinotify" ,ghc-hinotify)
+       ("libxpm" ,libxpm)
+       ("wireless-tools" ,wireless-tools)))
+    (arguments
+     `(#:configure-flags
+       '("--flags=with_utf8 with_xft with_xpm with_inotify with_iwlib")))
+    (home-page "http://xmobar.org")
+    (synopsis "Minimalistic text based status bar")
+    (description
+     "@code{xmobar} is a lightweight, text-based, status bar written in
+Haskell.  It was originally designed to be used together with Xmonad, but it
+is also usable with any other window manager.  While xmobar is written in
+Haskell, no knowledge of the language is required to install and use it.")
+    (license license:bsd-3)))
+
 (define-public ghc-xmonad-contrib
   (package
     (name "ghc-xmonad-contrib")
-    (version "0.12")
+    (version "0.13")
     (source
      (origin
        (method url-fetch)
@@ -391,7 +429,7 @@ tiled on several screens.")
                            "xmonad-contrib-" version ".tar.gz"))
        (sha256
         (base32
-         "04gk449dxwmimmb6y2d2hvvmv91r91xlj879qzlyq0mcf723278k"))))
+         "0vj72jhfng6y7hv5frx2v99jvl3jn9rbpk2j7xw9vydiwmzq4q57"))))
     (build-system haskell-build-system)
     (propagated-inputs
      `(("ghc-mtl" ,ghc-mtl)
@@ -505,7 +543,7 @@ experience.")
 (define-public awesome
   (package
     (name "awesome")
-    (version "4.0")
+    (version "4.2")
     (source
      (origin (method url-fetch)
              (uri (string-append
@@ -513,7 +551,7 @@ experience.")
                    "master/awesome-" version ".tar.xz"))
              (sha256
               (base32
-               "0czkcz67sab63gf5m2p2pgg05yinjx60hfb9rfyzdkkg28q9f02w"))
+               "0kwpbls9h1alxcmvxh5g9qb995fds5b2ngcr44w0ibazkyls2pdc"))
              (modules '((guix build utils)
                         (srfi srfi-19)))
              (snippet
@@ -563,6 +601,9 @@ experience.")
        ;; '--no-name' is used, which removes timestamps from gzip output.
        #:configure-flags '("-DCOMPRESS_MANPAGES=off")
 
+       ;; Building awesome in its source dir is no longer supported.
+       #:out-of-source? #t
+
        #:phases
        (modify-phases %standard-phases
          (add-before 'build 'xmlto-skip-validation
@@ -674,3 +715,80 @@ all of them.  Currently supported window managers include:
 Keybinder works with GTK-based applications using the X Window System.")
     (home-page "https://github.com/engla/keybinder")
     (license license:gpl2+)))
+
+(define-public spectrwm
+  (package
+    (name "spectrwm")
+    (version "3.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (let ((version-with-underscores
+                   (string-join (string-split version #\.) "_")))
+              (string-append "https://github.com/conformal/spectrwm/archive/"
+                             "SPECTRWM_" version-with-underscores ".tar.gz")))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "065b7j8s0lxw3p58fyf3c1mr5203pdm0kww42v245rlx0f005kl2"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags (let ((pkg-config (lambda (flag)
+                                        (string-append
+                                         "$(shell pkg-config " flag " "
+                                         "xft fontconfig x11 libpng)"))))
+                      (list
+                       "CC=gcc"
+                       (string-append "PREFIX=" %output)
+                       (string-append "INCS=-I. " (pkg-config "--cflags"))
+                       (string-append "LIBS=" (pkg-config "--libs") " -lm")))
+       #:tests? #f ;No test suite
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'change-dir
+           (lambda _
+             (chdir "linux") #t))
+         (add-after 'change-dir 'patch-makefile
+           (lambda _
+             (substitute* "Makefile"
+               (("-g") ""))))
+         (add-after 'change-dir 'fix-freetype-include
+           (lambda _
+             (substitute* "Makefile"
+               (("/usr/include/freetype2")
+                (string-append (assoc-ref %build-inputs "freetype")
+                               "/include/freetype2")))))
+         (delete 'configure))))                   ;no 'configure' exists
+    (inputs
+     `(("freetype" ,freetype)
+       ("fontconfig" ,fontconfig)
+       ("libx11" ,libx11)
+       ("libxcursor" ,libxcursor)
+       ("libxrandr" ,libxrandr)
+       ("libxtst" ,libxtst)
+       ("libxft" ,libxft)
+       ("xcb-util" ,xcb-util)
+       ("xcb-util-wm" ,xcb-util-wm)
+       ("xcb-util-keysyms" ,xcb-util-keysyms)))
+    (native-inputs
+     `(("libxt" ,libxt)
+       ("pkg-config" ,pkg-config)))
+    (synopsis "Minimalistic automatic tiling window manager")
+    (description
+     "Spectrwm is a small dynamic tiling and reparenting window manager for X11.
+It is inspired by Xmonad and dwm.  Its major features include:
+
+@itemize
+@item Navigation anywhere on all screens with either the keyboard or mouse
+@item Customizable status bar
+@item Restartable without losing state
+@item Quick launch menu
+@item Many screen layouts possible with a few simple key strokes
+@item Move/resize floating windows
+@item Extended Window Manager Hints (EWMH) support
+@item Configureable tiling
+@item Adjustable tile gap allows for a true one pixel border
+@item Customizable colors and border width
+@end itemize\n")
+    (home-page "https://github.com/conformal/spectrwm")
+    (license license:isc)))