Developer Guide

Developer Guide

This page is a practical map for engineers who want to read or modify the PlexyDesk source tree.

Read these first

  • tasks/README.md - current work areas and implementation notes
  • install-deps.sh - the fastest view of build and system dependencies
  • Makefile - build modes, active runtime entry points, and source grouping
  • include/plexy/plexy_ui.h - public client API
  • examples/hello_uikit.c - smallest useful UI example
  • docker/README.md - package build workflow
  • plexyshell.conf.example - runtime configuration surface

Key source areas

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

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

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

The best small files to read early are:

  • examples/hello_uikit.c
  • examples/canvas_demo.c
  • examples/drawer_demo.c
  • examples/settings_panel.c
  • examples/showcase_demo.c

Applications and experiments

The apps/ directory includes larger experiments such as:

  • plexy_term
  • plexy_browser
  • plexy_clock
  • fileman
  • pcalc
  • vim

Packaging and service helpers

  • docker/README.md explains the Ubuntu Docker package flow
  • scripts/systemd/ contains the user slice, service, installer, starter, and status helpers

Good follow-up pages