Architecture

Architecture

[edit | edit source]

PlexyDesk combines a compositor, desktop shell, client libraries, and a custom display protocol into one system.

High-level model

[edit | edit source]
Layer Role
Client application Creates windows and widgets through PlexyDesk APIs
libplexyui High-level C API for widgets, layout, events, and styling
libplexycanvas Local rendering of widgets, text, layout, and GPU effects
libplexy Protocol and DMA-BUF frame handoff support
Unix socket protocol Communication path between clients and compositor
plexyshell Compositor and desktop shell runtime
Backend stack DRM/KMS, input handling, OpenGL, and compatibility bridge code

Render flow

[edit | edit source]
  1. A client creates UI using functions from plexy_ui.h.
  2. The client renders its widget tree locally using libplexycanvas.
  3. The rendered frame is handed to the compositor using the PlexyDesk protocol and DMA-BUF-backed buffers.
  4. The compositor composites all visible client surfaces, applies shell chrome and effects, and renders desktop elements such as the dock and menubar.

Design direction

[edit | edit source]

PlexyDesk is not presented as a generic Wayland replacement. The codebase is built around a GPU-first rendering path and a project-specific display protocol, while also carrying active bridge work around Wayland and X11 interoperability.

Important runtime pieces

[edit | edit source]
  • src/shells/gnu_liquid/main.cpp is the active compositor runtime entry point described in the Makefile
  • src/renderer/ contains compositor rendering, background, dock, menubar, shader, and async rendering code
  • src/backend/ contains DRM and display backend support
  • src/input/ contains libinput integration and focus policy code
  • src/server/ contains socket server code for the compositor side of the protocol
  • src/wayland/ contains bridge and interoperability work including XWM-related files
  • src/core/ contains shell runtime, event loop, dock manager, and display layout state

Public API surface

[edit | edit source]

The public API is exposed through headers in include/plexy/. In particular, plexy_ui.h documents:

  • application lifecycle
  • window creation
  • widget creation
  • flexbox-like layout controls
  • styling helpers
  • event callbacks
  • desktop menubar integration

Repository structure

[edit | edit source]
Path Notes
src/ Main compositor, runtime, renderer, input, backend, and bridge code
lib/ Shared client-side support libraries
include/plexy/ Public headers for application authors
examples/ Small standalone sample applications
apps/ Larger experiments such as terminal, browser, clock, and utilities
tasks/ Engineering notes and implementation logs

Development note

[edit | edit source]

The Makefile notes that the old src/uikit/ code remains in the repository, but is no longer compiled into the compositor. The compositor now consumes the canvas library through the C API instead.

[edit | edit source]