gnu: Add emacs-exwm.

* gnu/packages/emacs.scm (emacs-exwm): New variable.

Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
This commit is contained in:
Feng Shu 2017-04-15 20:23:10 +08:00 committed by Arun Isaac
parent deddeb44f9
commit 2b3b745c00
No known key found for this signature in database
GPG Key ID: 2E25EE8B61802BB3
1 changed files with 72 additions and 0 deletions

View File

@ -4422,3 +4422,75 @@ X11 protocol based on the XML description files from the XCB project. It
features an object-oriented API and permits a certain degree of concurrency.
It should enable you to implement low-level X11 applications.")
(license license:gpl3+)))
(define-public emacs-exwm
(package
(name "emacs-exwm")
(version "0.13")
(synopsis "Emacs X window manager")
(source (origin
(method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/exwm-"
version ".tar"))
(sha256
(base32
"0n1wzy6chh024r0yaywjbf7mdsrxs6hrfycv5v0ps0drf6q3zldc"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-xelb" ,emacs-xelb)))
(inputs
`(("xhost" ,xhost)
("dbus" ,dbus)))
;; The following functions and variables needed by emacs-exwm are
;; not included in emacs-minimal:
;; scroll-bar-mode, fringe-mode
;; x-display-pixel-width, x-display-pixel-height
(arguments
`(#:emacs ,emacs
#:phases
(modify-phases %standard-phases
(add-after 'build 'install-xsession
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(xsessions (string-append out "/share/xsessions"))
(bin (string-append out "/bin"))
(exwm-executable (string-append bin "/exwm")))
;; Add a .desktop file to xsessions
(mkdir-p xsessions)
(mkdir-p bin)
(with-output-to-file
(string-append xsessions "/exwm.desktop")
(lambda _
(format #t "[Desktop Entry]~@
Name=~a~@
Comment=~a~@
Exec=~a~@
TryExec=~@*~a~@
Type=Application~%" ,name ,synopsis exwm-executable)))
;; Add a shell wrapper to bin
;; Set DISPLAY variable to work around
;; https://github.com/ch11ng/exwm/issues/213
(with-output-to-file exwm-executable
(lambda _
(format #t "#!~a ~@
export DISPLAY=:0 ~@
~a +SI:localuser:$USER ~@
exec ~a --exit-with-session ~a --eval '~s' ~%"
(string-append (assoc-ref inputs "bash") "/bin/sh")
(string-append (assoc-ref inputs "xhost") "/bin/xhost")
(string-append (assoc-ref inputs "dbus") "/bin/dbus-launch")
(string-append (assoc-ref inputs "emacs") "/bin/emacs")
'(cond
((file-exists-p "~/.exwm")
(load-file "~/.exwm"))
((not (featurep 'exwm))
(require 'exwm)
(require 'exwm-config)
(exwm-config-default)
(message "exwm configuration not found. Falling back to default configuration..."))))))
(chmod exwm-executable #o555)
#t))))))
(home-page "https://github.com/ch11ng/exwm")
(description "EXWM is a full-featured tiling X window manager for Emacs
built on top of XELB.")
(license license:gpl3+)))