qtile definitions to make it runs on wayland

  • Open
  • quality assurance status badge
Details
One participant
  • Orahcio Felicio de Sousa
Owner
unassigned
Submitted by
Orahcio Felicio de Sousa
Severity
normal

Debbugs page

Orahcio Felicio de Sousa wrote 1 months ago
(address . guix-patches@gnu.org)
CAGbLQZPr0Z6fgbh_yjVzQf0BV+3gQ8P8n3R1MUw86GVqEuBEQA@mail.gmail.com
When I run `qtile -b wayland` qtile gives an error, it does not find the
wlroots library. I could package some dependencies and then make some
changes on the official qtile recipe. I don't know how to send a patch, but
I will append my-qtile (based on the official one) and its additional
dependencies to run on wayland.

Additional dependencies for
qtile-wayland: python-pywlroots, python-pywayland, python-xkbcommon.
wlroots-0.17 needs to build qtile-wayland and python-pywlroots, the last
version on guix gives error.
qtile and pywlroots staff like to use "/usr/include" to find pixman and
libdrm headers, I use (substitute* to give the guix path after 'unpack
phase.

(define-module (python-qtile)
#:use-module (gnu packages check)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages glib)
#:use-module (gnu packages gtk)
#:use-module (gnu packages libffi)
#:use-module (gnu packages mpd)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python-build)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages time)
#:use-module (gnu packages wm)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix licenses)
#:use-module (guix build-system python)
#:use-module (guix build-system pyproject))

(define-public qtile-wayland
(package
(name "qtile-wayland")
(version "0.30.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "qtile" version))
(sha256
(base32 "0zd2bh4mvgwjxkkwn3angkaqzm7ldcmzg3gdc098jzzlf90fmywm"))))
(build-system pyproject-build-system)
(arguments
(list
;; A lot of tests fail despite Xvfb and writable temp/cache space.
#:tests? #f
#:test-flags
#~(list "--ignore=test/widgets/test_widget_init_configure.py")
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'patch-paths
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "libqtile/pangocffi.py"
(("^(gobject = ffi.dlopen).*" all def)
(format #f "~a(~s)~%" def
(search-input-file inputs "/lib/libgobject-2.0.so.0")))
(("^(pango = ffi.dlopen).*" all def)
(format #f "~a(~s)~%" def
(search-input-file inputs "/lib/libpango-1.0.so.0")))
(("^(pangocairo = ffi.dlopen).*" all def)
(format #f "~a(~s)~%" def
(search-input-file
inputs "/lib/libpangocairo-1.0.so.0"))))
(substitute* "libqtile/backend/wayland/cffi/build.py"
(("/usr/include/pixman-1")
(string-append #$pixman
"/include/pixman-1"))
(("/usr/include/libdrm")
(string-append #$libdrm
"/include/libdrm")))))
(add-after 'install 'install-xsessions
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(xsessions (string-append out "/share/xsessions"))
(qtile (string-append out "/bin/qtile start")))
(mkdir-p xsessions)
(copy-file "resources/qtile.desktop"
(string-append xsessions "/qtile.desktop"))
(substitute* (string-append xsessions "/qtile.desktop")
(("qtile start") qtile)))))
(add-before 'check 'pre-check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(setenv "HOME" "/tmp")
(system "Xvfb :1 &")
(setenv "DISPLAY" ":1")
(setenv "XDG_CACHE_HOME" "/tmp")))))))
(inputs
(list glib pango pulseaudio wlroots-0.17 pixman libdrm))
(propagated-inputs
(list python-cairocffi
python-cffi
python-dateutil
python-dbus-fast
python-iwlib
python-keyring
python-libcst
python-mpd2
python-pygobject
python-pyxdg
python-xcffib
python-pywlroots
python-pywayland
python-xkbcommon))
(native-inputs
(list pkg-config
python-flake8
python-pep8-naming
python-pytest
python-pytest-cov
python-psutil
python-setuptools
python-setuptools-scm
python-wheel
xorg-server-for-tests))
(home-page "http://qtile.org")
(synopsis "Hackable tiling window manager written and configured in
Python")
(description "Qtile is simple, small, and extensible. It's easy to write
your own layouts, widgets, and built-in commands.")
(license expat)))

(define-public python-pywlroots
(package
(name "python-pywlroots")
(version "0.17.0")
(source
(origin
(method url-fetch)
(uri "
(sha256
(base32 "1ghbsdgmgpzhmfgr614bglmrlsgdl1bgdl1lg0y1i6cs9750qyv6"))))
(build-system python-build-system)
(arguments (list #:phases
#~(modify-phases %standard-phases
(add-before 'build 'set-pixman-path
(lambda _
(substitute* "wlroots/ffi_build.py"
(("/usr/include/pixman-1")
(string-append #$pixman
"/include/pixman-1"))))))))
(inputs (list wlroots-0.17 pixman))
(propagated-inputs (list python-cffi python-pywayland python-xkbcommon))
(native-inputs (list python-cffi python-pytest python-setuptools
python-wheel))
;; (inputs (list wlroots-0.17))
(synopsis "Python binding to the wlroots library using cffi")
(description "Python binding to the wlroots library using cffi.")
(license ncsa)))

(define-public python-pywayland
(package
(name "python-pywayland")
(version "0.4.18")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pywayland" version))
(sha256
(base32 "0cv5aqn23id31mn95q6isn5vcnjcd4dvaqzn52ihbb9sg01dx2jr"))))
(build-system pyproject-build-system)
(arguments (list #:tests? #f))
(propagated-inputs (list python-cffi))
(native-inputs (list python-cffi python-pytest python-setuptools
python-wheel wayland wayland-protocols pkg-config))
(synopsis
"Python bindings for the libwayland library written in pure Python")
(description
"Python bindings for the libwayland library written in pure Python.")
(license asl2.0)))

(define-public python-xkbcommon
(package
(name "python-xkbcommon")
(version "1.5.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "xkbcommon" version))
(sha256
(base32 "0dnwbp8rriwkmsa8a40cpvrccjy7m8xz6jw0vbcka7gnvc44h5xc"))))
(build-system pyproject-build-system)
(propagated-inputs (list python-cffi))
(native-inputs (list python-setuptools python-wheel libxkbcommon))
(synopsis "Bindings for libxkbcommon using cffi")
(description "Bindings for libxkbcommon using cffi.")
(license expat)))
Attachment: file
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 76038@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 76038
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help