KWin/Packaging: Difference between revisions

From KDE Community Wiki
No edit summary
 
(6 intermediate revisions by 3 users not shown)
Line 9: Line 9:
** both plugins should always be installed (best put in the library package itself)
** both plugins should always be installed (best put in the library package itself)
** wayland plugin in particular should pull in qt's wayland plugin (i.e. qtwayland)
** wayland plugin in particular should pull in qt's wayland plugin (i.e. qtwayland)
* kidlesystem (grows plugin API, plugin supplied by kwayland-integration
* kidlesystem (grows plugin API, plugin supplied by kwayland-integration)


* kwayland (KDE specific wayland library)
* kwayland (KDE specific wayland library)
* kwin (split into kwin-x11 and kwin-wayland)
* kwin (split into kwin-x11 and kwin-wayland)
* kwayland-integration (runtime integration plugins for kidletime and kwindowsystem) must always be installed  
* kwayland-integration (runtime integration plugins for kidletime and kwindowsystem; must always be installed when using a Plasma session with wayland)
* plasma-workspace (contains startplasmacompositor and startplasma which in turn use kwin-wayland as a wayland compositor)
* plasma-workspace (contains startplasma-wayland and startplasma-waylandsession which in turn use kwin-wayland as a wayland compositor)


Suggested changes to enable wayland:
Suggested changes to enable wayland:
Line 27: Line 27:
* Package kwayland
* Package kwayland
* Package kwayland-integration
* Package kwayland-integration
* Package kwin-wayland. You can either put it in a standalone package or put it in a shared wayland package. The majority of libraries, kcms and so forth are shared between the two KWin versions so you'd only want to isolate the binaries and in case of X11 the kdeinit5 plugin. Everything else should be shared for the time being.
* Package kwin-wayland. You can either put it in a standalone package or put it in a shared kwin package for x11 and wayland. The majority of libraries, kcms and so forth are shared between the two KWin versions so you'd only want to isolate the binaries and in case of X11 the kdeinit5 plugin. Everything else should be shared for the time being.
** KWin Wayland sports numerous backends.
** KWin Wayland sports numerous backends.
*** drm (mesa-drm)
*** drm (mesa-drm)
Line 34: Line 34:
*** x11 (nesting kwin-wayland in an x session)
*** x11 (nesting kwin-wayland in an x session)
*** wayland (nesting kwin-wayland in another wayland session, e.g. running inside a weston session)
*** wayland (nesting kwin-wayland in another wayland session, e.g. running inside a weston session)
*** virtual (virtual framebuffer)
** For your default dependency line-up you want kwin-wayland to depend on the DRM backend and alternatively (if you build it) the hwcomposer backend (only used on Android-ish middleware stacks). The fbdev backend can be optionally used as a fallback for DRM but currently doesn't fall back at runtime, so it has limited usefulness.
** For your default dependency line-up you want kwin-wayland to depend on the DRM backend and alternatively (if you build it) the hwcomposer backend (only used on Android-ish middleware stacks). The fbdev backend can be optionally used as a fallback for DRM but currently doesn't fall back at runtime, so it has limited usefulness.
** The two remaining plugins are mostly only useful for testing purposes and can be kept purely optional.
** kwin-wayland also needs to depend on Xwayland
** The three remaining plugins are mostly only useful for testing purposes and can be kept purely optional.
* In plasma-workspace create a new package to contain the wayland session artifacts. This package should contain startplasmacompositor (wayland replacement for startkde) as well as the startplasma libexec.
* In plasma-workspace create a new package to contain the wayland session artifacts. This package should contain startplasmacompositor (wayland replacement for startkde) as well as the startplasma libexec.
** This package must depend on kwayland-integartion, kwin-wayland and qtwayland.
** This package must depend on kwayland-integartion, kwin-wayland and qtwayland.
== QPA ==
Plasma 5.5 adds a QPA plugin for kwin-wayland. This should be packaged alongside kwin-wayland. In particular if shipping different x11 and wayland packages you want to put the QPA plugin in the wayland package only.

Latest revision as of 08:29, 22 July 2021

KWin packaging notes \o/

Wayland

Things involved:

  • kglobalaccel (grows plugin API, plugin supplied by kwin)
  • kwindowsystem (grows plugin API)
    • both plugins should always be installed (best put in the library package itself)
    • wayland plugin in particular should pull in qt's wayland plugin (i.e. qtwayland)
  • kidlesystem (grows plugin API, plugin supplied by kwayland-integration)
  • kwayland (KDE specific wayland library)
  • kwin (split into kwin-x11 and kwin-wayland)
  • kwayland-integration (runtime integration plugins for kidletime and kwindowsystem; must always be installed when using a Plasma session with wayland)
  • plasma-workspace (contains startplasma-wayland and startplasma-waylandsession which in turn use kwin-wayland as a wayland compositor)

Suggested changes to enable wayland:

  • Kglobalaccel needs no changes.
  • Package kidletime with the XCB plugins always present.
  • Package kwindowsystem with both X11 and Wayland plugins always present. They are needed for X11 and Wayland clients respectively and since the user is currently expected to have a mix both are runtime dependencies.
    • If your packaging format supports weak dependencies (e.g. Recommends) use those to optionally pull in kwayland-integration. The majority of systems will want the integration plugins as well.
    • The package containing the Wayland plugin must depend on qtwayland.
    • If your packaging format supports weak dependencies (e.g. Recommends) use those to optionally pull in kwayland-integration. The majority of systems will want the integration plugins as well.
  • Package kwayland
  • Package kwayland-integration
  • Package kwin-wayland. You can either put it in a standalone package or put it in a shared kwin package for x11 and wayland. The majority of libraries, kcms and so forth are shared between the two KWin versions so you'd only want to isolate the binaries and in case of X11 the kdeinit5 plugin. Everything else should be shared for the time being.
    • KWin Wayland sports numerous backends.
      • drm (mesa-drm)
      • hwcomposer (android hwcomposer)
      • fbdev (direct framebuffer)
      • x11 (nesting kwin-wayland in an x session)
      • wayland (nesting kwin-wayland in another wayland session, e.g. running inside a weston session)
      • virtual (virtual framebuffer)
    • For your default dependency line-up you want kwin-wayland to depend on the DRM backend and alternatively (if you build it) the hwcomposer backend (only used on Android-ish middleware stacks). The fbdev backend can be optionally used as a fallback for DRM but currently doesn't fall back at runtime, so it has limited usefulness.
    • kwin-wayland also needs to depend on Xwayland
    • The three remaining plugins are mostly only useful for testing purposes and can be kept purely optional.
  • In plasma-workspace create a new package to contain the wayland session artifacts. This package should contain startplasmacompositor (wayland replacement for startkde) as well as the startplasma libexec.
    • This package must depend on kwayland-integartion, kwin-wayland and qtwayland.

QPA

Plasma 5.5 adds a QPA plugin for kwin-wayland. This should be packaged alongside kwin-wayland. In particular if shipping different x11 and wayland packages you want to put the QPA plugin in the wayland package only.