From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:470:142:3::10]:45525) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j7RHD-00055v-Th for guix-patches@gnu.org; Thu, 27 Feb 2020 17:05:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j7RHC-0004rs-9O for guix-patches@gnu.org; Thu, 27 Feb 2020 17:05:03 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:54428) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j7RHC-0004ro-1F for guix-patches@gnu.org; Thu, 27 Feb 2020 17:05:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1j7RHB-0004MI-Rj for guix-patches@gnu.org; Thu, 27 Feb 2020 17:05:01 -0500 Subject: [bug#39804] [PATCH] gnu: add emacs-exwm-next package (i.e. exwm for emacs-next) Resent-Message-ID: References: <87blplqcdd.fsf@web.de> <8736aw8igd.fsf@ambrevar.xyz> From: dario In-reply-to: <8736aw8igd.fsf@ambrevar.xyz> Date: Thu, 27 Feb 2020 23:04:50 +0100 Message-ID: <87tv3bd6v1.fsf@web.de> MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: quoted-printable List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: Pierre Neidhardt Cc: 39804@debbugs.gnu.org Thanks for your feedback. >> --- >> gnu/packages/emacs-xyz.scm | 71 ++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 71 insertions(+) >> >> diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm >> index 6b9027df8a..c6df469895 100644 >> --- a/gnu/packages/emacs-xyz.scm >> +++ b/gnu/packages/emacs-xyz.scm >> @@ -8601,6 +8601,77 @@ It should enable you to implement low-level X11 = applications.") >> built on top of XELB.") >> (license license:gpl3+))) >> >> +(define-public emacs-exwm-next > > I think you don't need to copy the whole package definition. Instead, > you could `inherit' from the original definition and only adjust the > name, description, inputs and maybe arguments. > > For instance > > --8<---------------cut here---------------start------------->8--- > (define-public emacs-exwm-next > (package > (inherit emacs) > (name "emacs-exwm-next") > (inputs ...) > (synopsys ...))) > --8<---------------cut here---------------end--------------->8--- > > See `substitute-keyword-arguments' in the fftwf package for a convenient > way to modify just one argument. > >> + (package >> + (name "emacs-exwm-next") >> + (version "0.23") >> + (synopsis "Emacs X window manager") Nice - I was not aware of that. The following definition seems to work (see also the patch at the end of this mail) > --8<---------------cut here---------------start------------->8--- (define-public emacs-exwm-next (package (inherit emacs-exwm) (name "emacs-exwm-next") (synopsis "Emacs X window manager using the next version of emacs") (inputs (cons `("emacs-next" ,emacs-next) (delete `("emacs" ,emacs) (package-inputs emacs-exwm)))))) > --8<---------------cut here---------------end------------->8--- >> + (arguments >> + `(#:emacs ,emacs > > Shouldn't this be `emacs-next` as well? I have to admit that I do not understand that part. If I change it to emacs-next, the build fails with the error > --8<---------------cut here---------------start------------->8--- phase `install' succeeded after 0.0 seconds starting phase `make-autoloads' Wrong type argument: stringp, nil command "/gnu/store/1z520fgx6fiq426yf2174kal2q63a9q7-emacs-next-27.0.50-0.= 36abf68/bin/emacs" "--quick" "--batch" "--eval=3D(let ((backup-inhibited t= ) (generated-autoload-file \"/gnu/store/nnjcqc448yj79dxaj11fnq7s9a8zpc1z-e= macs-exwm-next-test-0.23/share/emacs/site-lisp/exwm-next-test-autoloads.el= \")) (update-directory-autoloads \"/gnu/store/nnjcqc448yj79dxaj11fnq7s9a8z= pc1z-emacs-exwm-next-test-0.23/share/emacs/site-lisp\"))" failed with stat= us 255 > --8<---------------cut here---------------end------------->8--- It is a bit difficult for me to understand what is going on here, because, like I said, I do not really understand this part of the package definition in the first place - sorry. However, without modifying the arguments, everything seems to work. The following patch seems to work (do I need to send it on its own? I am new to this type of workflow.) Best Dario =2D-- gnu/packages/emacs-xyz.scm | 72 ++++---------------------------------- 1 file changed, 6 insertions(+), 66 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index c6df469895..3d5b650df9 100644 =2D-- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -8603,74 +8603,14 @@ built on top of XELB.") (define-public emacs-exwm-next (package + (inherit emacs-exwm) (name "emacs-exwm-next") - (version "0.23") - (synopsis "Emacs X window manager") - (source (origin - (method url-fetch) - (uri (string-append "https://elpa.gnu.org/packages/exwm-" - version ".tar")) - (sha256 - (base32 - "05w1v3wrp1lzz20zd9lcvr5nhk809kgy6svvkbs15xhnr6x55ad5")))= ) - (build-system emacs-build-system) - (propagated-inputs - `(("emacs-xelb" ,emacs-xelb))) + (synopsis "Emacs X window manager using the next version of emacs") (inputs - `(("xhost" ,xhost) - ("emacs-next" ,emacs-next) - ("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=3D~a~@ - Comment=3D~a~@ - Exec=3D~a~@ - TryExec=3D~:*~a~@ - Type=3DApplication~%" ,name ,synopsis exwm-executabl= e))) - ;; Add a shell wrapper to bin - (with-output-to-file exwm-executable - (lambda _ - (format #t "#!~a ~@ - ~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") "/bi= n/xhost") - (string-append (assoc-ref inputs "dbus") "/bin= /dbus-launch") - (string-append (assoc-ref inputs "emacs-next")= "/bin/emacs") - '(cond - ((file-exists-p "~/.exwm") - (load-file "~/.exwm")) - ((not (featurep 'exwm)) - (require 'exwm) - (require 'exwm-config) - (exwm-config-default) - (message (concat "exwm configuration not fo= und. " - "Falling back to default c= onfiguration..."))))))) - (chmod exwm-executable #o555) - #t)))))) - (home-page "https://github.com/ch11ng/exwm") - (description "EXWM is a full-featured tiling X window manager for Ema= cs -built on top of XELB.") - (license license:gpl3+))) + (cons + `("emacs-next" ,emacs-next) + (delete `("emacs" ,emacs) + (package-inputs emacs-exwm)))))) (define-public emacs-switch-window (package =2D- 2.25.1