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:
parent
deddeb44f9
commit
2b3b745c00
|
@ -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.
|
features an object-oriented API and permits a certain degree of concurrency.
|
||||||
It should enable you to implement low-level X11 applications.")
|
It should enable you to implement low-level X11 applications.")
|
||||||
(license license:gpl3+)))
|
(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+)))
|
||||||
|
|
Loading…
Reference in New Issue