PlexyDesk : GPU accelerated Display Server for GNU/Linux and BSD
Search
PlexyDesk
Not logged in
Talk
Contributions
Create account
Log in
Open Desktop Systems Journal
Main page
Documentation
Architecture
Development
Components
News
Gallery
Community
Page
Discussion
Read
Edit
Edit source
View history
Editing
Developer Guide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
= Developer Guide = This page is a practical map for engineers who want to read or modify the PlexyDesk source tree. == Read these first == * <code>tasks/README.md</code> - current work areas and implementation notes * <code>install-deps.sh</code> - the fastest view of build and system dependencies * <code>Makefile</code> - build modes, active runtime entry points, and source grouping * <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>docker/README.md</code> - package build workflow * <code>plexyshell.conf.example</code> - runtime configuration surface == Key source areas == {| class="wikitable" |- ! Path ! What you will find there |- | <code>src/renderer/</code> | Compositing, window effects, dock, menubar, shaders, async renderer, and GPU configuration |- | <code>src/backend/</code> | DRM, X11-related display backend code, session management, and display backend selection |- | <code>src/input/</code> | libinput integration, focus policy, and input coordination |- | <code>src/core/</code> | Shell runtime, event loop, dock manager, drag/resize state, and display layout state |- | <code>src/server/</code> | Compositor-side protocol server |- | <code>src/wayland/</code> | Wayland bridge and XWM interoperability work |- | <code>src/canvas/</code> | Canvas rendering, text, layout, styling, and animation support |- | <code>lib/</code> | Client-side event loop and protocol support |} == Build workflow == Standard release build: <pre> make </pre> Verbose debug build: <pre> BUILD_MODE=debug make </pre> 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 == The main client-facing API lives in <code>include/plexy/plexy_ui.h</code>. 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 == The best small files to read early are: * <code>examples/hello_uikit.c</code> * <code>examples/canvas_demo.c</code> * <code>examples/drawer_demo.c</code> * <code>examples/settings_panel.c</code> * <code>examples/showcase_demo.c</code> == Applications and experiments == The <code>apps/</code> directory includes larger experiments such as: * <code>plexy_term</code> * <code>plexy_browser</code> * <code>plexy_clock</code> * <code>fileman</code> * <code>pcalc</code> * <code>vim</code> == Packaging and service helpers == * <code>docker/README.md</code> explains the Ubuntu Docker package flow * <code>scripts/systemd/</code> contains the user slice, service, installer, starter, and status helpers == Good follow-up pages == * [[Architecture]] * [[Getting Started]] * [[Examples]] * [[Development Status]]
Summary:
Please note that all contributions to PlexyDesk - Display Server for GNU/Linux may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Project:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)