Developer Guide: Difference between revisions
Add developer guide |
Link generated PlexyUI API reference |
||
| Line 8: | Line 8: | ||
* <code>Makefile</code> - build modes, active runtime entry points, and source grouping | * <code>Makefile</code> - build modes, active runtime entry points, and source grouping | ||
* <code>include/plexy/plexy_ui.h</code> - public client API | * <code>include/plexy/plexy_ui.h</code> - public client API | ||
* [[PlexyUI API]] - generated reference page built directly from <code>include/plexy/plexy_ui.h</code> | |||
* <code>examples/hello_uikit.c</code> - smallest useful UI example | * <code>examples/hello_uikit.c</code> - smallest useful UI example | ||
* <code>docker/README.md</code> - package build workflow | * <code>docker/README.md</code> - package build workflow | ||
Latest revision as of 19:54, 21 March 2026
Developer Guide
[edit | edit source]This page is a practical map for engineers who want to read or modify the PlexyDesk source tree.
Read these first
[edit | edit source]tasks/README.md- current work areas and implementation notesinstall-deps.sh- the fastest view of build and system dependenciesMakefile- build modes, active runtime entry points, and source groupinginclude/plexy/plexy_ui.h- public client API- PlexyUI API - generated reference page built directly from
include/plexy/plexy_ui.h examples/hello_uikit.c- smallest useful UI exampledocker/README.md- package build workflowplexyshell.conf.example- runtime configuration surface
Key source areas
[edit | edit source]| Path | What you will find there |
|---|---|
src/renderer/
|
Compositing, window effects, dock, menubar, shaders, async renderer, and GPU configuration |
src/backend/
|
DRM, X11-related display backend code, session management, and display backend selection |
src/input/
|
libinput integration, focus policy, and input coordination |
src/core/
|
Shell runtime, event loop, dock manager, drag/resize state, and display layout state |
src/server/
|
Compositor-side protocol server |
src/wayland/
|
Wayland bridge and XWM interoperability work |
src/canvas/
|
Canvas rendering, text, layout, styling, and animation support |
lib/
|
Client-side event loop and protocol support |
Build workflow
[edit | edit source]Standard release build:
make
Verbose debug build:
BUILD_MODE=debug make
The Makefile groups sources by subsystem and applies different compiler and logging flags for debug versus release mode. Release builds enable aggressive optimization and link-time optimization.
Public client API
[edit | edit source]The main client-facing API lives in include/plexy/plexy_ui.h. It covers:
- application and window lifecycle
- widget creation
- layout primitives such as row, column, justify, align, padding, and gap
- state changes such as visibility, text, value, and enabled state
- styling helpers such as corner radius, fill color, elevation, and glass material
- event hooks for clicks, values, text changes, keys, and menus
Example-driven learning
[edit | edit source]The best small files to read early are:
examples/hello_uikit.cexamples/canvas_demo.cexamples/drawer_demo.cexamples/settings_panel.cexamples/showcase_demo.c
Applications and experiments
[edit | edit source]The apps/ directory includes larger experiments such as:
plexy_termplexy_browserplexy_clockfilemanpcalcvim
Packaging and service helpers
[edit | edit source]docker/README.mdexplains the Ubuntu Docker package flowscripts/systemd/contains the user slice, service, installer, starter, and status helpers
Good follow-up pages
[edit | edit source]This page has not yet been filed in a published category.