Main Page: Difference between revisions

Refresh main page for PlexyPress editorial layout
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">Lead article</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 ==
== The PlexyDesk desktop as one coherent system ==
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.
<p class="pp-frontpage__deck">PlexyDesk is a Linux display server, compositor, desktop shell, and application toolkit built to present the desktop as one connected system. It is concerned with how windows move, how the dock and menubar behave, how widgets are drawn, and how applications participate in the same visual language.</p>


== Architecture in plain language ==
PlexyDesk does not stop at arranging windows on screen. It draws the shell itself, manages presentation and effects, and offers native client libraries so applications can feel like part of the environment rather than separate guests inside it.
PlexyDesk is organised around three main layers:


{| class="wikitable"
* [[Architecture|Read the architecture briefing]]
|-
* [[Documentation|Open the documentation desk]]
! Layer
* [[Components|Browse the component index]]
! What it is responsible for
</div>
|-
| 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.
<div class="pp-frontpage__story">
<div class="pp-frontpage__label">Architecture spotlight</div>


== Supported desktop features ==
== Compositor, shell, and toolkit ==
=== 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 ===
The system is organised around a compositor that combines application surfaces with desktop-owned elements such as the dock, the menubar, wallpaper, window frames, and transitions. Client libraries help applications render their own interface and submit finished surfaces to the shell, keeping responsibilities clear while preserving a consistent desktop identity.
PlexyDesk includes built-in desktop shell components instead of leaving those responsibilities to separate tools. Supported shell features include:
* a dock with launch feedback and running indicators
* icon magnification behaviour as the pointer moves across the dock
* a menubar that can show application menus, titles, and status information
* a desktop-level clock and shell-facing window metadata


=== Visual materials and effects ===
See [[Architecture]] for the full technical model, or jump to [[PlexyUI API]] for the current toolkit surface.
The rendering system supports a polished visual layer throughout the shell and the UI toolkit. This includes:
</div>
* glass-style surfaces
* blur-based materials
* shader-driven lighting and depth cues
* smooth rounded geometry
* scalable vector-style shape rendering for interface elements
* consistent text and surface styling across windows and widgets


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 class="pp-frontpage__story">
<div class="pp-frontpage__label">Project features</div>


=== Application UI toolkit ===
== What the desktop already supports ==
PlexyDesk includes a UI layer for building applications that look and behave like part of the environment. Supported interface building blocks include:
* 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.
<ul class="pp-frontpage__brief-list">
<li>GPU-driven window composition and desktop rendering.</li>
<li>Integrated dock and menubar owned by the shell.</li>
<li>Window movement, resize handling, depth styling, and smooth surface presentation.</li>
<li>Native UI controls through PlexyUI, including text, panels, lists, sliders, and drawers.</li>
<li>Wallpaper, theme, scale, and appearance configuration.</li>
<li>Multi-display layout awareness and desktop-space positioning.</li>
</ul>
</div>


=== Multi-display and layout awareness ===
<div class="pp-frontpage__story">
PlexyDesk is built with display layout awareness in mind. The configuration and compositor layout model support:
<div class="pp-frontpage__label">Reference desk</div>
* 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 ===
== Essential reading ==
The shell supports desktop appearance controls such as:
* 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 ===
* [[Documentation]] for the main documentation map
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.
* [[Developer Guide]] for source tree orientation
* [[Examples]] for small application and UI samples
* [[Development Status]] for engineering notes and implementation coverage
* [[Getting Started]] for the current environment and setup notes
</div>


== Internal building blocks ==
<div class="pp-frontpage__story">
{| class="wikitable"
<div class="pp-frontpage__label">Shell components</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>tasks/</code>
| Engineering notes, implementation summaries, and optimization work
|}


== Explore the project ==
== Major building blocks ==
* [[Architecture]] - a deeper technical explanation of how the compositor and client stack fit together
* [[PlexyUI API]] - generated reference for the UIKit application API
* [[Developer Guide]] - where the important source files and subsystems live
* [[Examples]] - small programs that show what PlexyDesk applications can look like
* [[Development Status]] - implementation notes and the current shape of the project


== Current state ==
PlexyDesk is made up of several layers that cooperate closely: compositor and backend code in <code>src/</code>, client-facing libraries in <code>lib/</code>, public headers in <code>include/plexy/</code>, example programs in <code>examples/</code>, and application experiments in <code>apps/</code>. Each layer exists to explain one part of the system rather than hide it.
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.
 
The [[Components]] page gives a structured survey of the main areas and why they matter.
</div>
 
<div class="pp-frontpage__story">
<div class="pp-frontpage__label">Development notes</div>
 
== What the project is refining ==
 
Current work is centred on stabilising compositor behaviour, expanding the UI toolkit, clarifying subsystem boundaries, and documenting APIs in a way that stays close to the source tree. The generated [[PlexyUI API]] reference and the living [[Development]] hub are intended to keep the publication aligned with the code.
</div>
 
<div class="pp-frontpage__story">
<div class="pp-frontpage__label">Community and record</div>
 
== A working journal for the project ==
 
This wiki is meant to read like a publication, but it also acts as the project record: pages can be edited collaboratively, images and videos can be uploaded to illustrate work, and talk pages remain available for discussion. Visit [[Community]] for editorial and collaboration pointers, or [[News]] for the project chronicle.
</div>
 
</div>

Revision as of 21:36, 21 March 2026


Lead article

The PlexyDesk desktop as one coherent system

PlexyDesk is a Linux display server, compositor, desktop shell, and application toolkit built to present the desktop as one connected system. It is concerned with how windows move, how the dock and menubar behave, how widgets are drawn, and how applications participate in the same visual language.

PlexyDesk does not stop at arranging windows on screen. It draws the shell itself, manages presentation and effects, and offers native client libraries so applications can feel like part of the environment rather than separate guests inside it.

Architecture spotlight

Compositor, shell, and toolkit

The system is organised around a compositor that combines application surfaces with desktop-owned elements such as the dock, the menubar, wallpaper, window frames, and transitions. Client libraries help applications render their own interface and submit finished surfaces to the shell, keeping responsibilities clear while preserving a consistent desktop identity.

See Architecture for the full technical model, or jump to PlexyUI API for the current toolkit surface.

Project features

What the desktop already supports

  • GPU-driven window composition and desktop rendering.
  • Integrated dock and menubar owned by the shell.
  • Window movement, resize handling, depth styling, and smooth surface presentation.
  • Native UI controls through PlexyUI, including text, panels, lists, sliders, and drawers.
  • Wallpaper, theme, scale, and appearance configuration.
  • Multi-display layout awareness and desktop-space positioning.
Reference desk

Essential reading

Shell components

Major building blocks

PlexyDesk is made up of several layers that cooperate closely: compositor and backend code in src/, client-facing libraries in lib/, public headers in include/plexy/, example programs in examples/, and application experiments in apps/. Each layer exists to explain one part of the system rather than hide it.

The Components page gives a structured survey of the main areas and why they matter.

Development notes

What the project is refining

Current work is centred on stabilising compositor behaviour, expanding the UI toolkit, clarifying subsystem boundaries, and documenting APIs in a way that stays close to the source tree. The generated PlexyUI API reference and the living Development hub are intended to keep the publication aligned with the code.

Community and record

A working journal for the project

This wiki is meant to read like a publication, but it also acts as the project record: pages can be edited collaboratively, images and videos can be uploaded to illustrate work, and talk pages remain available for discussion. Visit Community for editorial and collaboration pointers, or News for the project chronicle.