Main Page: Difference between revisions

Set up PlexyDesk wiki landing page
No edit summary
 
(16 intermediate revisions by 2 users not shown)
Line 1: Line 1:
__NOTOC__
__NOTOC__
= PlexyDesk =
__NOEDITSECTION__


'''PlexyDesk''' is a GPU-accelerated display server and desktop shell for Linux. It renders window chrome, the dock, the menubar, and client widgets with OpenGL, signed distance field rendering, blur, and glass-style materials. Client applications render locally with <code>libplexycanvas</code> and submit frames to the compositor using DMA-BUF-backed buffers.
<div class="pp-frontpage">


{| class="wikitable"
<div class="pp-frontpage__lead">
|+ PlexyDesk at a glance
<div class="pp-frontpage__label">System overview</div>
|-
! Focus
| GPU-accelerated compositor and desktop shell for Linux
|-
! Runtime
| <code>plexyshell</code>
|-
! Client stack
| <code>libplexy</code>, <code>libplexycanvas</code>, <code>libplexyui</code>
|-
! Build system
| GNU Make with C11 and C++20
|-
! License
| AGPL-3.0-only
|}


== What makes it interesting ==
== What is PlexyDesk ==
* GPU-first desktop shell with compositor effects built into the core runtime
* Custom display protocol optimized for local client rendering and DMA-BUF frame handoff
* macOS-inspired polish including blur, glass materials, dock magnification, and animated window effects
* Multi-monitor oriented architecture with a built-in shell instead of a separate panel-and-window-manager stack


== Core features ==
<div class="pp-frontpage__hero">
* Glass materials with blur, refraction, and shader-based visual effects
[[File:Screenshot 2026-03-03 10-32-43.png|alt=shows plexydesk in use|900px|none]]
* Resolution-independent SDF rendering for chrome and widgets
<div class="pp-frontpage__hero-caption"></div>
* Built-in dock with hover magnification, launch animation, and running indicators
</div>
* Menubar integration with application title, menus, and clock
* PlexyUI widget toolkit with buttons, sliders, text input, sidebars, drawers, list views, and more
* Client isolation: applications render locally and submit frames to the compositor instead of drawing directly into the shell
* Native compositor work plus active bridge work around Wayland and X11 compatibility


== Quick start ==
<p class="pp-frontpage__deck">PlexyDesk is a Linux display server, compositor, desktop shell, and application toolkit for GNU/Linux and BSD. The project provides you with a full rendering infrastructure to create your own desktop environment, and client-side UI libraries to create native applications required for your DE. We are excited to see what you will create, so just ping us on Discord or  update this wiki to share your project</p></div>
<pre>
# Install dependencies on Debian/Ubuntu
./install-deps.sh


# Build the compositor
<div class="pp-frontpage__story pp-frontpage__story--wide">
make
<div class="pp-frontpage__label">Section index</div>


# Run PlexyDesk
== Main sections ==
./plexyshell
</pre>


For debug builds:
<div class="pp-frontpage__section-grid">


<pre>
<div>
BUILD_MODE=debug make
=== Primary sections ===
</pre>
<ul class="pp-frontpage__brief-list">
<li>'''[[Documentation]]''' - top-level map of architecture notes, references, examples, and project pages.</li>
<li>'''[[Architecture]]''' - compositor, shell, client, and rendering model.</li>
<li>'''[[Development]]''' - engineering focus areas and implementation-oriented documentation hubs.</li>
<li>'''[[Components]]''' - subsystem survey and source tree structure.</li>
<li>'''[[News]]''' - project chronicle and milestone summaries.</li>
<li>'''[[Gallery]]''' - screenshots and short demo captures of PlexyDesk sessions.</li>
<li>'''[[Community]]''' - contribution and wiki participation guidance.</li>
</ul>
</div>


== Documentation guide ==
<div>
* [[Getting Started]] - dependencies, build, run, systemd service, and package workflow
=== Reference pages ===
* [[Architecture]] - compositor model, client libraries, protocol flow, and repository layout
<ul class="pp-frontpage__brief-list">
* [[Developer Guide]] - what to read first and where to work in the source tree
<li>'''[[Developer Guide]]''' - source orientation and implementation landmarks.</li>
* [[Examples]] - minimal PlexyUI code plus example programs worth studying
<li>'''[[PlexyUI API]]''' - generated reference for the current UI toolkit headers.</li>
* [[Development Status]] - current shape of the project and useful implementation notes
<li>'''[[Examples]]''' - sample programs and UI usage patterns.</li>
<li>'''[[Development Status]]''' - current implementation notes and subsystem coverage.</li>
<li>'''[[Getting Started]]''' - local runtime and setup notes.</li>
<li>'''[[Desktop Submissions]]''' - public procedure for uploading screenshots and listing desktops.</li>
</ul>
</div>


== Repository map ==
</div>
{| class="wikitable"
</div>
|-
! Area
! Purpose
|-
| <code>src/</code>
| Compositor, backend, renderer, input, protocol, and shell code
|-
| <code>lib/</code>
| Client-side support libraries and event loop code
|-
| <code>include/plexy/</code>
| Public API headers such as <code>plexy_ui.h</code>
|-
| <code>examples/</code>
| Small client and UI examples
|-
| <code>apps/</code>
| Application experiments such as terminal, browser, clock, calculator, and file manager
|-
| <code>scripts/</code>
| Packaging, systemd, and development helpers
|-
| <code>docker/</code>
| Ubuntu container workflow for building <code>.deb</code> packages
|-
| <code>tasks/</code>
| Engineering notes, implementation summaries, and optimization work
|}


== Project status ==
<div class="pp-frontpage__story">
PlexyDesk is under active development. The rendering pipeline, compositor shell, dock, menubar, and widget toolkit are all present, but the project should still be treated as a developer-facing system rather than a finished general-purpose desktop environment.
<div class="pp-frontpage__label">What PlexyDesk is</div>


== Suggested next pages ==
== System model ==
If you are starting from source, begin with [[Getting Started]]. If you want to understand the shape of the codebase before building, start with [[Architecture]] and [[Developer Guide]].
 
PlexyDesk combines several layers that are often documented separately: a compositor responsible for final output composition, a desktop shell responsible for system UI such as the dock and menubar, and client libraries that let applications render native interface surfaces.
 
Applications can render their own content and submit finished surfaces to the compositor. The shell composes those surfaces with desktop-owned elements, manages input routing, and applies the presentation rules that define the environment.
</div>
 
<div class="pp-frontpage__story">
<div class="pp-frontpage__label">Feature areas</div>
 
== Implemented feature areas ==
 
<ul class="pp-frontpage__brief-list">
<li>GPU-accelerated composition of windows and desktop surfaces.</li>
<li>Shell-owned dock, menubar, wallpaper, and window framing.</li>
<li>Window movement, resizing, focus handling, transitions, and presentation effects.</li>
<li>Client-side UI toolkit components exposed through PlexyUI and related libraries.</li>
<li>Theme, scale, wallpaper, and appearance configuration.</li>
<li>Multi-display layout and desktop-space positioning support.</li>
</ul>
</div>
 
<div class="pp-frontpage__story">
<div class="pp-frontpage__label">Technical entry points</div>
 
== Key references ==
 
<ul class="pp-frontpage__brief-list">
<li>Start with [[Architecture]] for the runtime model.</li>
<li>Use [[Components]] and [[Developer Guide]] for source orientation.</li>
<li>Use [[PlexyUI API]] for the current public UI interface surface.</li>
<li>Use [[Examples]] to inspect small application patterns.</li>
</ul>
</div>
 
<div class="pp-frontpage__story">
<div class="pp-frontpage__label">Wiki interaction</div>
 
== Using this wiki ==
 
<ul class="pp-frontpage__brief-list">
<li>[[Special:AllPages]] provides the complete page index.</li>
<li>[[Special:RecentChanges]] shows the latest documentation edits.</li>
<li>[[Special:Upload]] accepts images and video for diagrams, screenshots, and demonstrations.</li>
<li>[[Gallery]] collects submitted screenshots and short demo captures.</li>
<li>[[Desktop Submissions]] explains how public users can contribute desktops.</li>
<li>Talk pages remain available for technical discussion and page review.</li>
</ul>
</div>
 
<div class="pp-frontpage__story">
<div class="pp-frontpage__label">Current scope</div>
 
== Current documentation scope ==
 
The current wiki covers architecture, source structure, generated API reference, example programs, implementation status, and project record pages. It will continue to expand as more subsystem documentation is extracted directly from the codebase.
</div>
 
</div>

Latest revision as of 09:03, 22 March 2026


System overview

What is PlexyDesk

shows plexydesk in use

PlexyDesk is a Linux display server, compositor, desktop shell, and application toolkit for GNU/Linux and BSD. The project provides you with a full rendering infrastructure to create your own desktop environment, and client-side UI libraries to create native applications required for your DE. We are excited to see what you will create, so just ping us on Discord or update this wiki to share your project

Section index

Main sections

Primary sections

  • Documentation - top-level map of architecture notes, references, examples, and project pages.
  • Architecture - compositor, shell, client, and rendering model.
  • Development - engineering focus areas and implementation-oriented documentation hubs.
  • Components - subsystem survey and source tree structure.
  • News - project chronicle and milestone summaries.
  • Gallery - screenshots and short demo captures of PlexyDesk sessions.
  • Community - contribution and wiki participation guidance.

Reference pages

What PlexyDesk is

System model

PlexyDesk combines several layers that are often documented separately: a compositor responsible for final output composition, a desktop shell responsible for system UI such as the dock and menubar, and client libraries that let applications render native interface surfaces.

Applications can render their own content and submit finished surfaces to the compositor. The shell composes those surfaces with desktop-owned elements, manages input routing, and applies the presentation rules that define the environment.

Feature areas

Implemented feature areas

  • GPU-accelerated composition of windows and desktop surfaces.
  • Shell-owned dock, menubar, wallpaper, and window framing.
  • Window movement, resizing, focus handling, transitions, and presentation effects.
  • Client-side UI toolkit components exposed through PlexyUI and related libraries.
  • Theme, scale, wallpaper, and appearance configuration.
  • Multi-display layout and desktop-space positioning support.
Technical entry points

Key references

Wiki interaction

Using this wiki

  • Special:AllPages provides the complete page index.
  • Special:RecentChanges shows the latest documentation edits.
  • Special:Upload accepts images and video for diagrams, screenshots, and demonstrations.
  • Gallery collects submitted screenshots and short demo captures.
  • Desktop Submissions explains how public users can contribute desktops.
  • Talk pages remain available for technical discussion and page review.
Current scope

Current documentation scope

The current wiki covers architecture, source structure, generated API reference, example programs, implementation status, and project record pages. It will continue to expand as more subsystem documentation is extracted directly from the codebase.