From 455305ffd5f4e0bca239c8fc0f65f0a1f36ba8d0 Mon Sep 17 00:00:00 2001 From: Feng Shu Date: Sat, 11 Feb 2023 10:55:47 +0800 Subject: [PATCH v7 1/2] gnu: Add jwm. * gnu/packages/wm.scm (jwm): New variable. --- gnu/packages/wm.scm | 107 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index 37fbf88e99..14dc3a0988 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -2904,6 +2904,113 @@ read and write, and compatible with JSON.") capabilities. It is heavily inspired by the Calm Window manager(cwm).") (license license:bsd-2))) +(define-public jwm + (package + (name "jwm") + (version "2.4.3") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/joewing/jwm/releases/download/" + "v" version "/jwm-" version ".tar.xz")) + (sha256 + (base32 + "1av7r9sp26r5l74zvwdmyyyzav29mw5bafihp7y33vsjqkh4wfzf")))) + (build-system gnu-build-system) + (arguments + (list + #:tests? #f ; no check target + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-example.jwmrc + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "example.jwmrc" + ;; Ignore existing menus in example.jwmrc. + (("") " -->") + ;; Adjust xterm path in terminal menu item. + ((">xterm") + (string-append + ">" (search-input-file inputs "/bin/xterm") + "")) + ;; Replace xscreensaver with xlock, which has been configured + ;; well by desktop-service. + (("xscreensaver-command -lock") "xlock") + ;; Adjust icons search paths. + (("/usr/local/share/jwm") + (string-append #$output "/share/jwm")) + (("/usr/local/share/icons") + "/run/current-system/profile/share/icons") + ;; Include menu created by mjwm command. + (("" all) + (string-append + all "\n " + "" + (search-input-file inputs "/bin/mjwm") + " --iconize --no-backup " + " --output-file $HOME/.jwmrc-mjwm-guix" + "\n " + "" + "$HOME/.jwmrc-mjwm-guix" + "\n"))))) + (add-after 'install 'install-tango-icon-files + ;; Copy icon files used by example.jwm to share/jwm dir, this way + ;; may be better than adding tango-icon-theme to inputs. + (lambda* (#:key inputs #:allow-other-keys) + (let ((icon-dir (search-input-directory + inputs "share/icons/Tango/scalable")) + (icon-install-dir (string-append #$output "/share/jwm"))) + (for-each + (lambda (icon) + (for-each (lambda (icon-file) + (install-file icon-file icon-install-dir)) + (find-files icon-dir (string-append "^" icon "\\.svg$")))) + '("calc" "email" "exit" "folder" "font" "help-browser" + "image" "info" "lock" "reload" "sound" + "system-file-manager" "utilities-terminal" + "web-browser" "gnome-settings" "applications-.*")) + (with-directory-excursion icon-install-dir + ;; tango-icon-theme have no applications-science icon. + (copy-file "help-browser.svg" "applications-science.svg"))))) + (add-after 'install 'install-xsession + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (xsessions (string-append out "/share/xsessions"))) + (mkdir-p xsessions) + (call-with-output-file + (string-append xsessions "/jwm.desktop") + (lambda (port) + (format port "~ + [Desktop Entry]~@ + Name=jwm~@ + Comment=Joe's Window Manager~@ + Exec=~a/bin/jwm~@ + Type=XSession~%" out))))))))) + (native-inputs (list pkg-config tango-icon-theme)) + (inputs + (list cairo + libjpeg-turbo + libpng + librsvg + libxext + libxinerama + libxmu + libxpm + libxrandr + libxt + mjwm + pango + xterm)) + (home-page "http://joewing.net/projects/jwm") + (synopsis "Joe's Window Manager") + (description + "JWM is a light-weight window manager for the X11 Window System. it is +written in C and uses only Xlib at a minimum. Because of its small footprint, +it makes a good window manager for older computers and less powerful systems, +such as the Raspberry Pi, though it is perfectly capable of running on modern +systems.") + (license license:expat))) + (define-public devour (package (name "devour") -- 2.30.2