Subject: Re: bug#26454: [PATCH 2/2] gnu: add emacs-exwm

From: [email-masked] (Ludovic Courtès)
Date: Fri, 14 Apr 2017 23:47:17 +0200

Hello Feng Shu,

"Feng Shu" <[email-masked]> skribis:

> Sadly, I have found that I can not let exwm work well in guixsd,

Could you describe what the problem is?

The patch looks good to me, but if you say that the package is actually
non-functional, then including it as is may not be very useful, except
if these are upstream bugs maybe.

>>>From b815a6adb8e8b08bb856e2b9e22ddf31324af101 Mon Sep 17 00:00:00 2001
> From: Feng Shu <[email-masked]>
> Date: Fri, 14 Apr 2017 23:06:15 +0800
> Subject: [PATCH] gnu: add emacs-exwm and emacs-xelb
>
> * gnu/packages/emacs.scm (emacs-xelb, emacs-exwm): New variables.

Before including, please make it two patches.

> +(define-public emacs-xelb
> +  (package
> +    (name "emacs-xelb")
> +    (version "0.12.d1d6b6c")
> +    (source (origin
> +              (method git-fetch)
> +              (uri (git-reference
> +                    (url "https://github.com/ch11ng/xelb")
> +                    (commit "d1d6b6cb48a6a9562252be20ab49f24708b34335")))

Minor thing: I’d suggest using the regular stanza for the
commit/revision number (info "(guix) Version Numbers").

> +         (add-after 'unpack 'regenerate-el-files
> +           (lambda _

Maybe add a comment like “Generate .el files from the XML description of
the XCB bindings.”

> +             (let ((xcb-proto-xml-path (string-append (assoc-ref %build-inputs
> +                                                                 "xcb-proto")
> +                                                      "/share/xcb"))
> +                   (emacs-path         (string-append (assoc-ref %build-inputs
> +                                                                 "emacs")
> +                                                      "/bin/emacs")))
> +               (substitute* "Makefile"
> +                 (("PROTO_PATH := ../xcb-proto/src")
> +                  (string-append "PROTO_PATH := " xcb-proto-xml-path))
> +                 (("EMACS_BIN := emacs -Q")
> +                  (string-append "EMACS_BIN := " emacs-path "  -Q")))
> +               (system* "make" "all"))
> +             #t)))))

(zero? (system* "make" "all")) and remove #t.

> +(define-public emacs-exwm
> +  (package
> +    (name "emacs-exwm")
> +    (version "0.13.7a5bb11")
> +    (source (origin
> +              (method git-fetch)
> +              (uri (git-reference
> +                    (url "https://github.com/ch11ng/exwm")
> +                    (commit "7a5bb1156d07848e465f55fd31f8ec755b52aa01")))
> +              (file-name (string-append name "-" version "-checkout"))
> +              (sha256
> +               (base32
> +                "0cbaq2ls8pivz4h8hwgn9ldvg16pwlisdf047civvilqiqczw31w"))))
> +    (build-system emacs-build-system)
> +    (propagated-inputs `(("emacs-xelb" ,emacs-xelb)))
> +    ;; The following functions or variables is need by emacs-exwm,
> +    ;; which is not included in 'emacs-minimal'.
> +    ;; scroll-bar-mode, fringe-mode
> +    ;; x-display-pixel-width x-display-pixel-height
> +    (arguments `(#:emacs ,emacs))
> +    (home-page "https://github.com/ch11ng/exwm")
> +    (synopsis "Emacs X Window Manager")
> +    (description "EXWM (Emacs X Window Manager) is a full-featured
> +tiling X window manager for Emacs built on top of XELB.")
> +    (license license:gpl3+)))

Sounds like a lot of fun.  :-)

Arun: I don’t have anything to add.  I think you could at least commit
the first one.  Dunno about exwm proper; maybe it’s not worse than
Guile-WM anyway?  ;-)

Thanks,
Ludo’.