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
					
				
					 1 changed files with 72 additions and 0 deletions
				
			
		|  | @ -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+))) | ||||
|  |  | |||
		Reference in a new issue