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]- A client creates UI using functions from
plexy_ui.h. - The client renders its widget tree locally using
libplexycanvas. - The rendered frame is handed to the compositor using the PlexyDesk protocol and DMA-BUF-backed buffers.
- 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.cppis the active compositor runtime entry point described in the Makefilesrc/renderer/contains compositor rendering, background, dock, menubar, shader, and async rendering codesrc/backend/contains DRM and display backend supportsrc/input/contains libinput integration and focus policy codesrc/server/contains socket server code for the compositor side of the protocolsrc/wayland/contains bridge and interoperability work including XWM-related filessrc/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.
Related pages
[edit | edit source]This page has not yet been filed in a published category.