Main Page: Difference between revisions

No edit summary
 
(10 intermediate revisions by 2 users not shown)
Line 1: Line 1:
__NOTOC__
__NOTOC__
= PlexyDesk =
__NOEDITSECTION__


'''PlexyDesk''' is a display server and desktop shell for Linux built around a modern, GPU driven user interface. It is responsible for drawing the desktop itself, placing application windows on screen, rendering the dock and the menubar, handling animation and visual effects, and presenting a consistent UI toolkit for PlexyDesk applications.
<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>
|-
! License
| AGPL-3.0-only
|}


== What PlexyDesk does ==
== What is PlexyDesk ==
PlexyDesk combines three responsibilities into one system:
* it acts as the display server that decides what appears on screen
* it acts as the desktop shell that draws the dock, menubar, background, and window chrome
* it provides application-facing libraries so apps can create native PlexyDesk windows and controls


In practical terms, PlexyDesk is the part of the desktop that gives applications a place to live, gives windows their shape and motion, and gives the overall environment its visual identity.
<div class="pp-frontpage__hero">
[[File:Screenshot 2026-03-03 10-32-43.png|alt=shows plexydesk in use|900px|none]]
<div class="pp-frontpage__hero-caption"></div>
</div>


== Architecture in plain language ==
<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>
PlexyDesk is organised around three main layers:


{| class="wikitable"
<div class="pp-frontpage__story pp-frontpage__story--wide">
|-
<div class="pp-frontpage__label">Section index</div>
! Layer
! What it is responsible for
|-
| Applications
| Programs create windows, text, buttons, panels, lists, drawers, and other interface elements
|-
| PlexyDesk client libraries
| The libraries help apps describe their UI, render it locally, and send finished frames to the display server
|-
| PlexyDesk compositor and shell
| The compositor places windows on screen, draws the desktop shell, applies visual effects, handles input routing, and presents the final image
|}


Instead of asking the shell to draw every application widget for them, PlexyDesk applications can render their own interface locally and then hand the finished frame to the compositor. The compositor then combines those application surfaces with system elements such as the dock, menubar, background, window chrome, and transitions. This keeps the shell visually consistent while still allowing applications to manage their own content.
== Main sections ==


== Supported desktop features ==
<div class="pp-frontpage__section-grid">
=== Window presentation and motion ===
PlexyDesk provides its own window chrome and visual framing. Windows are not treated as plain rectangles with static borders; they are part of the shell experience. The compositor supports:
* animated window movement
* resize handling
* window shadows and depth styling
* rounded corners and smooth surface edges
* minimise and transition effects
* focus-aware rendering and presentation


=== Dock and menubar ===
<div>
PlexyDesk includes built-in desktop shell components instead of leaving those responsibilities to separate tools. Supported shell features include:
=== Primary sections ===
* a dock with launch feedback and running indicators
<ul class="pp-frontpage__brief-list">
* icon magnification behaviour as the pointer moves across the dock
<li>'''[[Documentation]]''' - top-level map of architecture notes, references, examples, and project pages.</li>
* a menubar that can show application menus, titles, and status information
<li>'''[[Architecture]]''' - compositor, shell, client, and rendering model.</li>
* a desktop-level clock and shell-facing window metadata
<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>


=== Visual materials and effects ===
<div>
The rendering system supports a polished visual layer throughout the shell and the UI toolkit. This includes:
=== Reference pages ===
* glass-style surfaces
<ul class="pp-frontpage__brief-list">
* blur-based materials
<li>'''[[Developer Guide]]''' - source orientation and implementation landmarks.</li>
* shader-driven lighting and depth cues
<li>'''[[PlexyUI API]]''' - generated reference for the current UI toolkit headers.</li>
* smooth rounded geometry
<li>'''[[Examples]]''' - sample programs and UI usage patterns.</li>
* scalable vector-style shape rendering for interface elements
<li>'''[[Development Status]]''' - current implementation notes and subsystem coverage.</li>
* consistent text and surface styling across windows and widgets
<li>'''[[Getting Started]]''' - local runtime and setup notes.</li>
<li>'''[[Desktop Submissions]]''' - public procedure for uploading screenshots and listing desktops.</li>
</ul>
</div>


These effects are part of the compositor and UI stack itself, so they can be used across the desktop rather than being isolated to one application.
</div>
</div>


=== Application UI toolkit ===
<div class="pp-frontpage__story">
PlexyDesk includes a UI layer for building applications that look and behave like part of the environment. Supported interface building blocks include:
<div class="pp-frontpage__label">What PlexyDesk is</div>
* labels and buttons
* text input and text areas
* sliders, switches, checkboxes, and progress controls
* separators, panels, rows, and columns
* list views and icon views
* sidebars, toolbars, breadcrumbs, status bars, and drawers
* menu integration for desktop menubars


The toolkit also supports layout controls such as padding, spacing, alignment, flexible sizing, and batched updates for responsive interfaces.
== System model ==


=== Multi-display and layout awareness ===
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.
PlexyDesk is built with display layout awareness in mind. The configuration and compositor layout model support:
* more than one monitor
* explicit placement of outputs in desktop space
* per-layout presets
* desktop-space positioning that keeps pointer movement and window placement coherent across screens


=== Backgrounds and appearance ===
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.
The shell supports desktop appearance controls such as:
</div>
* theme selection
* UI scale factor control
* wallpaper backgrounds
* animated background modes
* compositor tuning for chrome, blur, and window presentation
* dock and terminal appearance settings through configuration


=== Stability through application isolation ===
<div class="pp-frontpage__story">
PlexyDesk applications can render their own content locally and then submit frames to the compositor. In simple terms, that means the shell manages the desktop while applications manage their own drawing. This separation helps keep the shell in control of composition and reduces the amount of direct rendering work the shell has to do for every application surface.
<div class="pp-frontpage__label">Feature areas</div>


== Internal building blocks ==
== Implemented feature areas ==
{| class="wikitable"
|-
! 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>tasks/</code>
| Engineering notes, implementation summaries, and optimization work
|}


== Explore the project ==
<ul class="pp-frontpage__brief-list">
* [[Architecture]] - a deeper technical explanation of how the compositor and client stack fit together
<li>GPU-accelerated composition of windows and desktop surfaces.</li>
* [[PlexyUI API]] - generated reference for the UIKit application API
<li>Shell-owned dock, menubar, wallpaper, and window framing.</li>
* [[Developer Guide]] - where the important source files and subsystems live
<li>Window movement, resizing, focus handling, transitions, and presentation effects.</li>
* [[Examples]] - small programs that show what PlexyDesk applications can look like
<li>Client-side UI toolkit components exposed through PlexyUI and related libraries.</li>
* [[Development Status]] - implementation notes and the current shape of the project
<li>Theme, scale, wallpaper, and appearance configuration.</li>
<li>Multi-display layout and desktop-space positioning support.</li>
</ul>
</div>


== Current state ==
<div class="pp-frontpage__story">
PlexyDesk includes a functioning compositor shell, a builtin dock and menubar, a GPU driven rendering path, and a native application UI toolkit. Work is ongoing across performance, compatibility, and broader desktop behaviour (and optimizations), but the front-page story of the project is already clear: PlexyDesk is a complete graphical shell with its own rendering model, desktop components, and application framework.
<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.