<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://plexydesk.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Plexydesk</id>
	<title>PlexyDesk - Display Server for GNU/Linux - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://plexydesk.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Plexydesk"/>
	<link rel="alternate" type="text/html" href="https://plexydesk.org/wiki/Special:Contributions/Plexydesk"/>
	<updated>2026-04-03T19:19:48Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://plexydesk.org/index.php?title=Main_Page&amp;diff=47</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Main_Page&amp;diff=47"/>
		<updated>2026-03-22T06:11:21Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Replace hero figcaption with full-width caption block&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__lead&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;System overview&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PlexyDesk technical documentation ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__hero&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Screenshot 2026-03-03 10-32-43.png|alt=shows plexydesk in use|900px|none]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__hero-caption&amp;quot;&amp;gt;PlexyDesk screenshot&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;pp-frontpage__deck&amp;quot;&amp;gt;PlexyDesk is a Linux display server, compositor, desktop shell, and application toolkit. The project combines surface composition, shell-owned desktop components, rendering infrastructure, and client-side UI libraries in one integrated system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This wiki is the technical reference for PlexyDesk. It describes the compositor architecture, desktop shell behaviour, public toolkit APIs, source layout, and current implementation status. Use the section index below to navigate the main documentation areas.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story pp-frontpage__story--wide&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Section index&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Main sections ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__section-grid&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
=== Primary sections ===&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Documentation]]&#039;&#039;&#039; - top-level map of architecture notes, references, examples, and project pages.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Architecture]]&#039;&#039;&#039; - compositor, shell, client, and rendering model.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Development]]&#039;&#039;&#039; - engineering focus areas and implementation-oriented documentation hubs.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Components]]&#039;&#039;&#039; - subsystem survey and source tree structure.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[News]]&#039;&#039;&#039; - project chronicle and milestone summaries.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Gallery]]&#039;&#039;&#039; - screenshots and short demo captures of PlexyDesk sessions.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Community]]&#039;&#039;&#039; - contribution and wiki participation guidance.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
=== Reference pages ===&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Developer Guide]]&#039;&#039;&#039; - source orientation and implementation landmarks.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[PlexyUI API]]&#039;&#039;&#039; - generated reference for the current UI toolkit headers.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Examples]]&#039;&#039;&#039; - sample programs and UI usage patterns.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Development Status]]&#039;&#039;&#039; - current implementation notes and subsystem coverage.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Getting Started]]&#039;&#039;&#039; - local runtime and setup notes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Desktop Submissions]]&#039;&#039;&#039; - public procedure for uploading screenshots and listing desktops.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;What PlexyDesk is&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System model ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Feature areas&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implemented feature areas ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;GPU-accelerated composition of windows and desktop surfaces.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Shell-owned dock, menubar, wallpaper, and window framing.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Window movement, resizing, focus handling, transitions, and presentation effects.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Client-side UI toolkit components exposed through PlexyUI and related libraries.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Theme, scale, wallpaper, and appearance configuration.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Multi-display layout and desktop-space positioning support.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Technical entry points&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Key references ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start with [[Architecture]] for the runtime model.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use [[Components]] and [[Developer Guide]] for source orientation.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use [[PlexyUI API]] for the current public UI interface surface.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use [[Examples]] to inspect small application patterns.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Wiki interaction&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using this wiki ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Special:AllPages]] provides the complete page index.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Special:RecentChanges]] shows the latest documentation edits.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Special:Upload]] accepts images and video for diagrams, screenshots, and demonstrations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Gallery]] collects submitted screenshots and short demo captures.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Desktop Submissions]] explains how public users can contribute desktops.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Talk pages remain available for technical discussion and page review.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Current scope&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current documentation scope ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Main_Page&amp;diff=45</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Main_Page&amp;diff=45"/>
		<updated>2026-03-22T05:15:38Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Render front-page screenshot as an inline lead image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__lead&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;System overview&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PlexyDesk technical documentation ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__hero&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Screenshot 2026-03-03 10-32-43.png|alt=shows plexydesk in use|900px|none|thumb|PlexyDesk screenshot]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;pp-frontpage__deck&amp;quot;&amp;gt;PlexyDesk is a Linux display server, compositor, desktop shell, and application toolkit. The project combines surface composition, shell-owned desktop components, rendering infrastructure, and client-side UI libraries in one integrated system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This wiki is the technical reference for PlexyDesk. It describes the compositor architecture, desktop shell behaviour, public toolkit APIs, source layout, and current implementation status. Use the section index below to navigate the main documentation areas.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story pp-frontpage__story--wide&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Section index&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Main sections ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__section-grid&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
=== Primary sections ===&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Documentation]]&#039;&#039;&#039; - top-level map of architecture notes, references, examples, and project pages.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Architecture]]&#039;&#039;&#039; - compositor, shell, client, and rendering model.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Development]]&#039;&#039;&#039; - engineering focus areas and implementation-oriented documentation hubs.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Components]]&#039;&#039;&#039; - subsystem survey and source tree structure.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[News]]&#039;&#039;&#039; - project chronicle and milestone summaries.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Gallery]]&#039;&#039;&#039; - screenshots and short demo captures of PlexyDesk sessions.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Community]]&#039;&#039;&#039; - contribution and wiki participation guidance.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
=== Reference pages ===&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Developer Guide]]&#039;&#039;&#039; - source orientation and implementation landmarks.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[PlexyUI API]]&#039;&#039;&#039; - generated reference for the current UI toolkit headers.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Examples]]&#039;&#039;&#039; - sample programs and UI usage patterns.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Development Status]]&#039;&#039;&#039; - current implementation notes and subsystem coverage.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Getting Started]]&#039;&#039;&#039; - local runtime and setup notes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Desktop Submissions]]&#039;&#039;&#039; - public procedure for uploading screenshots and listing desktops.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;What PlexyDesk is&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System model ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Feature areas&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implemented feature areas ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;GPU-accelerated composition of windows and desktop surfaces.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Shell-owned dock, menubar, wallpaper, and window framing.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Window movement, resizing, focus handling, transitions, and presentation effects.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Client-side UI toolkit components exposed through PlexyUI and related libraries.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Theme, scale, wallpaper, and appearance configuration.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Multi-display layout and desktop-space positioning support.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Technical entry points&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Key references ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start with [[Architecture]] for the runtime model.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use [[Components]] and [[Developer Guide]] for source orientation.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use [[PlexyUI API]] for the current public UI interface surface.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use [[Examples]] to inspect small application patterns.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Wiki interaction&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using this wiki ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Special:AllPages]] provides the complete page index.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Special:RecentChanges]] shows the latest documentation edits.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Special:Upload]] accepts images and video for diagrams, screenshots, and demonstrations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Gallery]] collects submitted screenshots and short demo captures.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Desktop Submissions]] explains how public users can contribute desktops.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Talk pages remain available for technical discussion and page review.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Current scope&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current documentation scope ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Main_Page&amp;diff=44</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Main_Page&amp;diff=44"/>
		<updated>2026-03-22T05:14:38Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Place front-page screenshot inline beneath the title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__lead&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;System overview&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PlexyDesk technical documentation ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__hero&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Screenshot 2026-03-03 10-32-43.png|alt=shows plexydesk in use|none|thumb|PlexyDesk screenshot]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;pp-frontpage__deck&amp;quot;&amp;gt;PlexyDesk is a Linux display server, compositor, desktop shell, and application toolkit. The project combines surface composition, shell-owned desktop components, rendering infrastructure, and client-side UI libraries in one integrated system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This wiki is the technical reference for PlexyDesk. It describes the compositor architecture, desktop shell behaviour, public toolkit APIs, source layout, and current implementation status. Use the section index below to navigate the main documentation areas.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story pp-frontpage__story--wide&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Section index&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Main sections ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__section-grid&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
=== Primary sections ===&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Documentation]]&#039;&#039;&#039; - top-level map of architecture notes, references, examples, and project pages.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Architecture]]&#039;&#039;&#039; - compositor, shell, client, and rendering model.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Development]]&#039;&#039;&#039; - engineering focus areas and implementation-oriented documentation hubs.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Components]]&#039;&#039;&#039; - subsystem survey and source tree structure.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[News]]&#039;&#039;&#039; - project chronicle and milestone summaries.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Gallery]]&#039;&#039;&#039; - screenshots and short demo captures of PlexyDesk sessions.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Community]]&#039;&#039;&#039; - contribution and wiki participation guidance.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
=== Reference pages ===&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Developer Guide]]&#039;&#039;&#039; - source orientation and implementation landmarks.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[PlexyUI API]]&#039;&#039;&#039; - generated reference for the current UI toolkit headers.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Examples]]&#039;&#039;&#039; - sample programs and UI usage patterns.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Development Status]]&#039;&#039;&#039; - current implementation notes and subsystem coverage.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Getting Started]]&#039;&#039;&#039; - local runtime and setup notes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Desktop Submissions]]&#039;&#039;&#039; - public procedure for uploading screenshots and listing desktops.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;What PlexyDesk is&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System model ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Feature areas&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implemented feature areas ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;GPU-accelerated composition of windows and desktop surfaces.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Shell-owned dock, menubar, wallpaper, and window framing.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Window movement, resizing, focus handling, transitions, and presentation effects.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Client-side UI toolkit components exposed through PlexyUI and related libraries.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Theme, scale, wallpaper, and appearance configuration.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Multi-display layout and desktop-space positioning support.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Technical entry points&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Key references ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start with [[Architecture]] for the runtime model.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use [[Components]] and [[Developer Guide]] for source orientation.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use [[PlexyUI API]] for the current public UI interface surface.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use [[Examples]] to inspect small application patterns.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Wiki interaction&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using this wiki ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Special:AllPages]] provides the complete page index.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Special:RecentChanges]] shows the latest documentation edits.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Special:Upload]] accepts images and video for diagrams, screenshots, and demonstrations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Gallery]] collects submitted screenshots and short demo captures.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Desktop Submissions]] explains how public users can contribute desktops.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Talk pages remain available for technical discussion and page review.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Current scope&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current documentation scope ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Main_Page&amp;diff=40</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Main_Page&amp;diff=40"/>
		<updated>2026-03-22T04:53:49Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Add gallery and submission links to main page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__lead&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;System overview&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PlexyDesk technical documentation ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;pp-frontpage__deck&amp;quot;&amp;gt;PlexyDesk is a Linux display server, compositor, desktop shell, and application toolkit. The project combines surface composition, shell-owned desktop components, rendering infrastructure, and client-side UI libraries in one integrated system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This wiki is the technical reference for PlexyDesk. It describes the compositor architecture, desktop shell behaviour, public toolkit APIs, source layout, and current implementation status. Use the section index below to navigate the main documentation areas.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story pp-frontpage__story--wide&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Section index&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Main sections ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__section-grid&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
=== Primary sections ===&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Documentation]]&#039;&#039;&#039; - top-level map of architecture notes, references, examples, and project pages.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Architecture]]&#039;&#039;&#039; - compositor, shell, client, and rendering model.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Development]]&#039;&#039;&#039; - engineering focus areas and implementation-oriented documentation hubs.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Components]]&#039;&#039;&#039; - subsystem survey and source tree structure.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[News]]&#039;&#039;&#039; - project chronicle and milestone summaries.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Gallery]]&#039;&#039;&#039; - screenshots and short demo captures of PlexyDesk sessions.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Community]]&#039;&#039;&#039; - contribution and wiki participation guidance.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
=== Reference pages ===&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Developer Guide]]&#039;&#039;&#039; - source orientation and implementation landmarks.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[PlexyUI API]]&#039;&#039;&#039; - generated reference for the current UI toolkit headers.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Examples]]&#039;&#039;&#039; - sample programs and UI usage patterns.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Development Status]]&#039;&#039;&#039; - current implementation notes and subsystem coverage.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Getting Started]]&#039;&#039;&#039; - local runtime and setup notes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Desktop Submissions]]&#039;&#039;&#039; - public procedure for uploading screenshots and listing desktops.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;What PlexyDesk is&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System model ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Feature areas&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implemented feature areas ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;GPU-accelerated composition of windows and desktop surfaces.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Shell-owned dock, menubar, wallpaper, and window framing.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Window movement, resizing, focus handling, transitions, and presentation effects.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Client-side UI toolkit components exposed through PlexyUI and related libraries.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Theme, scale, wallpaper, and appearance configuration.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Multi-display layout and desktop-space positioning support.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Technical entry points&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Key references ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start with [[Architecture]] for the runtime model.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use [[Components]] and [[Developer Guide]] for source orientation.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use [[PlexyUI API]] for the current public UI interface surface.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use [[Examples]] to inspect small application patterns.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Wiki interaction&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using this wiki ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Special:AllPages]] provides the complete page index.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Special:RecentChanges]] shows the latest documentation edits.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Special:Upload]] accepts images and video for diagrams, screenshots, and demonstrations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Gallery]] collects submitted screenshots and short demo captures.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Desktop Submissions]] explains how public users can contribute desktops.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Talk pages remain available for technical discussion and page review.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Current scope&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current documentation scope ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Desktop_Submissions&amp;diff=39</id>
		<title>Desktop Submissions</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Desktop_Submissions&amp;diff=39"/>
		<updated>2026-03-22T04:53:48Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Add public desktop submission guide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Desktop Submissions =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Desktop Submissions&#039;&#039;&#039; explains how public contributors can add screenshots or short demo captures of PlexyDesk to the wiki gallery.&lt;br /&gt;
&lt;br /&gt;
== 1. Sign in ==&lt;br /&gt;
Create or sign in to a wiki account before uploading files or editing gallery pages.&lt;br /&gt;
&lt;br /&gt;
== 2. Capture the desktop ==&lt;br /&gt;
Prepare a screenshot or short video that clearly shows PlexyDesk in use.&lt;br /&gt;
&lt;br /&gt;
Preferred media:&lt;br /&gt;
* PNG or JPEG for still images&lt;br /&gt;
* WebM or MP4 for short demo captures&lt;br /&gt;
&lt;br /&gt;
Before uploading, remove private data such as personal files, tokens, chat windows, or unrelated desktop content.&lt;br /&gt;
&lt;br /&gt;
== 3. Upload the file ==&lt;br /&gt;
Open [[Special:Upload]] and provide:&lt;br /&gt;
* the media file&lt;br /&gt;
* a clear filename, preferably in a form such as &amp;lt;code&amp;gt;PlexyDesk-username-topic.png&amp;lt;/code&amp;gt;&lt;br /&gt;
* a summary describing what the capture shows&lt;br /&gt;
&lt;br /&gt;
If the file represents a specific branch, build, or experiment, include that in the upload summary.&lt;br /&gt;
&lt;br /&gt;
== 4. Add the file to [[Gallery]] ==&lt;br /&gt;
After the upload finishes, edit [[Gallery]] and add one line inside the &amp;lt;code&amp;gt;&amp;amp;lt;gallery&amp;amp;gt;&amp;lt;/code&amp;gt; block:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
File:PlexyDesk-username-topic.png|Short technical caption — branch or build; scale factor; visible shell components&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. Write a useful caption ==&lt;br /&gt;
A good caption should include:&lt;br /&gt;
* branch, version, or build context when known&lt;br /&gt;
* what part of PlexyDesk is being shown&lt;br /&gt;
* whether the capture highlights shell layout, compositor behaviour, toolkit widgets, or an application&lt;br /&gt;
* any display-scale or multi-monitor detail that matters to interpretation&lt;br /&gt;
&lt;br /&gt;
== Submission rules ==&lt;br /&gt;
* submit only media directly related to PlexyDesk&lt;br /&gt;
* use technical wording rather than promotional wording&lt;br /&gt;
* keep video clips short and focused on one visible behaviour&lt;br /&gt;
* do not upload copyrighted material you do not have the right to share&lt;br /&gt;
* do not upload media containing credentials, personal information, or unrelated private content&lt;br /&gt;
&lt;br /&gt;
== Related pages ==&lt;br /&gt;
* [[Gallery]]&lt;br /&gt;
* [[Special:Upload]]&lt;br /&gt;
* [[Community]]&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Gallery&amp;diff=38</id>
		<title>Gallery</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Gallery&amp;diff=38"/>
		<updated>2026-03-22T04:53:47Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Add screenshot gallery page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Gallery =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gallery&#039;&#039;&#039; indexes screenshots and short demo captures of PlexyDesk sessions. Use it to document compositor behaviour, shell layout, visual changes, and application integration with the desktop.&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
This page is intended for:&lt;br /&gt;
* full desktop screenshots&lt;br /&gt;
* focused captures of the dock, menubar, windows, or toolkit behaviour&lt;br /&gt;
* short demo videos that show visible runtime behaviour&lt;br /&gt;
&lt;br /&gt;
== Community submissions ==&lt;br /&gt;
No desktop captures have been listed yet.&lt;br /&gt;
&lt;br /&gt;
After uploading media through [[Special:Upload]], add it to the gallery block below by following [[Desktop Submissions]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; heights=&amp;quot;220&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add lines in the form:&lt;br /&gt;
File:Example.png|Short technical caption&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Caption guidance ==&lt;br /&gt;
Each gallery entry should describe:&lt;br /&gt;
* the branch, build, or relevant code state if known&lt;br /&gt;
* the visible shell or toolkit features shown in the capture&lt;br /&gt;
* display scale, monitor layout, or theme details when they matter&lt;br /&gt;
* the specific behaviour the screenshot or video is meant to document&lt;br /&gt;
&lt;br /&gt;
== Related pages ==&lt;br /&gt;
* [[Desktop Submissions]]&lt;br /&gt;
* [[Special:Upload]]&lt;br /&gt;
* [[Community]]&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Community&amp;diff=37</id>
		<title>Community</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Community&amp;diff=37"/>
		<updated>2026-03-22T04:53:47Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Rewrite community hub in technical style&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Community =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Community&#039;&#039;&#039; describes how contributors can use this wiki as a shared technical record for PlexyDesk.&lt;br /&gt;
&lt;br /&gt;
== Contribution paths ==&lt;br /&gt;
* improve architecture, component, and API reference pages when behaviour becomes clearer&lt;br /&gt;
* add diagrams, screenshots, and short demo media that document actual runtime behaviour&lt;br /&gt;
* correct source-oriented pages when code structure or exposed interfaces change&lt;br /&gt;
* use article talk pages to discuss wording, missing details, or technical accuracy&lt;br /&gt;
&lt;br /&gt;
== Media contributions ==&lt;br /&gt;
* [[Gallery]] is the public index for screenshots and short demo captures&lt;br /&gt;
* [[Desktop Submissions]] explains how to prepare, upload, and list desktop screenshots&lt;br /&gt;
* [[Special:Upload]] is the upload entry point for image and video files&lt;br /&gt;
&lt;br /&gt;
== Useful pages ==&lt;br /&gt;
* [[Documentation]] for the main documentation map&lt;br /&gt;
* [[Special:RecentChanges]] for a live view of current edits&lt;br /&gt;
* [[Special:AllPages]] for the full page index&lt;br /&gt;
* [[News]] for milestone summaries and documentation updates&lt;br /&gt;
&lt;br /&gt;
== Content conventions ==&lt;br /&gt;
Pages should use technical language, avoid marketing claims, and stay close to what the codebase and runtime actually support. Captions, summaries, and page text should explain behaviour precisely enough to be useful to both contributors and readers.&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=News&amp;diff=36</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=News&amp;diff=36"/>
		<updated>2026-03-22T04:53:46Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Rewrite news hub in technical style&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= News =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;News&#039;&#039;&#039; records high-level project changes that affect how PlexyDesk is understood, evaluated, or documented. It should summarize milestones, visible feature additions, and major documentation changes in concise technical terms.&lt;br /&gt;
&lt;br /&gt;
== Current status summary ==&lt;br /&gt;
* PlexyDesk includes a functioning compositor shell with integrated dock and menubar components.&lt;br /&gt;
* The runtime supports shell-owned composition, visual presentation, and client-submitted surfaces.&lt;br /&gt;
* Public toolkit headers are documented through the generated [[PlexyUI API]] reference.&lt;br /&gt;
* The wiki now includes architectural, subsystem, example, gallery, and contribution pages intended to track the codebase.&lt;br /&gt;
&lt;br /&gt;
== Tracking pages ==&lt;br /&gt;
* [[Development Status]] for implementation notes and subsystem coverage&lt;br /&gt;
* [[Development]] for engineering-facing references&lt;br /&gt;
* [[Special:RecentChanges]] for the latest wiki edits&lt;br /&gt;
* [[Gallery]] for visual captures of running PlexyDesk sessions&lt;br /&gt;
* [[PlexyUI API]] for source-backed toolkit reference&lt;br /&gt;
&lt;br /&gt;
== Intended use ==&lt;br /&gt;
This page should be used for milestone summaries, major visible changes, documentation expansions, and other high-level updates that are useful to readers who need a compact view of project progress.&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Components&amp;diff=35</id>
		<title>Components</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Components&amp;diff=35"/>
		<updated>2026-03-22T04:53:45Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Rewrite components hub in technical style&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Components =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Components&#039;&#039;&#039; maps the major building blocks of PlexyDesk and the role each one plays in the runtime.&lt;br /&gt;
&lt;br /&gt;
== System layers ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Layer&lt;br /&gt;
! Role in the desktop&lt;br /&gt;
|-&lt;br /&gt;
| Applications&lt;br /&gt;
| Create windows, controls, text, panels, lists, and other interface content&lt;br /&gt;
|-&lt;br /&gt;
| PlexyDesk client libraries&lt;br /&gt;
| Help applications describe UI, render it locally, and submit finished surfaces&lt;br /&gt;
|-&lt;br /&gt;
| PlexyDesk compositor and shell&lt;br /&gt;
| Combine application surfaces with shell elements such as the dock, menubar, wallpaper, chrome, and transitions&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Source tree map ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Path&lt;br /&gt;
! Component area&lt;br /&gt;
! Responsibility&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Compositor and shell runtime&lt;br /&gt;
| Output composition, window presentation, backend integration, input routing, and shell-owned desktop behaviour&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Client support libraries&lt;br /&gt;
| Application-facing runtime helpers, event loop code, and support functionality used by PlexyDesk clients&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;include/plexy/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Public headers&lt;br /&gt;
| Exposed interface definitions for client code, including the current PlexyUI surface&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;examples/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Reference examples&lt;br /&gt;
| Small programs that demonstrate application patterns and toolkit usage&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;apps/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Application experiments&lt;br /&gt;
| Larger programs used to exercise the desktop, shell integration, and UI stack&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;tasks/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Engineering notes&lt;br /&gt;
| Design notes, implementation summaries, and optimisation work&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related pages ==&lt;br /&gt;
* [[Architecture]]&lt;br /&gt;
* [[Developer Guide]]&lt;br /&gt;
* [[PlexyUI API]]&lt;br /&gt;
* [[Development]]&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Development&amp;diff=34</id>
		<title>Development</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Development&amp;diff=34"/>
		<updated>2026-03-22T04:53:45Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Rewrite development hub in technical style&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Development =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Development&#039;&#039;&#039; indexes the engineering-facing material for PlexyDesk. Use this page to identify active work areas, the source directories that implement them, and the reference pages that should be consulted during development.&lt;br /&gt;
&lt;br /&gt;
== Current engineering themes ==&lt;br /&gt;
Current work is centred on making the compositor, shell, and client toolkit operate as one coherent runtime. The main areas are:&lt;br /&gt;
&lt;br /&gt;
* compositor and surface management behaviour&lt;br /&gt;
* shell-owned desktop UI such as the dock, menubar, wallpaper, and chrome&lt;br /&gt;
* renderer behaviour, materials, and presentation consistency&lt;br /&gt;
* client toolkit growth and public API clarity&lt;br /&gt;
* source-backed documentation and examples that track the codebase closely&lt;br /&gt;
&lt;br /&gt;
== Source map ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Area&lt;br /&gt;
! Why it matters&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Core compositor, backend, renderer, protocol, input, and shell implementation&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Client-side support libraries and event loop code used by applications&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;include/plexy/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Public API headers, including the current PlexyUI interface surface&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;examples/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Small reference programs that demonstrate application patterns&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;apps/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Application experiments that exercise the runtime and UI toolkit&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;tasks/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Engineering notes, implementation summaries, and optimisation work&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Working references ==&lt;br /&gt;
* [[Architecture]] for the runtime model and subsystem responsibilities&lt;br /&gt;
* [[Developer Guide]] for a guided source-tree tour&lt;br /&gt;
* [[PlexyUI API]] for the current toolkit interface surface&lt;br /&gt;
* [[Examples]] for small application patterns&lt;br /&gt;
* [[Development Status]] for implementation notes and current project state&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Documentation&amp;diff=33</id>
		<title>Documentation</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Documentation&amp;diff=33"/>
		<updated>2026-03-22T04:53:44Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Rewrite documentation hub in technical style&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Documentation =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Documentation&#039;&#039;&#039; is the top-level index for PlexyDesk technical material. It links to the pages that describe runtime architecture, subsystem boundaries, source layout, public APIs, and reference media.&lt;br /&gt;
&lt;br /&gt;
== System documentation ==&lt;br /&gt;
* [[Architecture]] - compositor, shell, client-surface, and rendering model&lt;br /&gt;
* [[Components]] - subsystem survey and source tree map&lt;br /&gt;
* [[Developer Guide]] - implementation landmarks and source orientation&lt;br /&gt;
* [[Development]] - current engineering areas and working references&lt;br /&gt;
* [[Development Status]] - implementation coverage and subsystem notes&lt;br /&gt;
&lt;br /&gt;
== API and reference material ==&lt;br /&gt;
* [[PlexyUI API]] - generated reference derived from the current UI toolkit headers&lt;br /&gt;
* [[Examples]] - sample programs and UI usage patterns&lt;br /&gt;
* [[Getting Started]] - local runtime and setup notes&lt;br /&gt;
&lt;br /&gt;
== Media and community resources ==&lt;br /&gt;
* [[Gallery]] - screenshots and short demo captures of PlexyDesk sessions&lt;br /&gt;
* [[Desktop Submissions]] - public procedure for uploading and listing desktop captures&lt;br /&gt;
* [[Community]] - contribution workflow and content conventions&lt;br /&gt;
* [[News]] - milestone and documentation record&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=MediaWiki:Sidebar&amp;diff=32</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=MediaWiki:Sidebar&amp;diff=32"/>
		<updated>2026-03-22T04:53:42Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Add gallery and submission links to sidebar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Documentation|Documentation&lt;br /&gt;
** Architecture|Architecture&lt;br /&gt;
** Development|Development&lt;br /&gt;
** Components|Components&lt;br /&gt;
** News|News&lt;br /&gt;
** Gallery|Gallery&lt;br /&gt;
** Community|Community&lt;br /&gt;
* plexydesk-nav&lt;br /&gt;
** PlexyUI API|PlexyUI API&lt;br /&gt;
** Developer Guide|Developer Guide&lt;br /&gt;
** Examples|Examples&lt;br /&gt;
** Development Status|Development Status&lt;br /&gt;
** Getting Started|Getting Started&lt;br /&gt;
** Desktop Submissions|Desktop Submissions&lt;br /&gt;
* wiki-tools&lt;br /&gt;
** Special:RecentChanges|Recent Changes&lt;br /&gt;
** Special:AllPages|All Pages&lt;br /&gt;
** Special:Upload|Upload file&lt;br /&gt;
** Special:SpecialPages|Special Pages&lt;br /&gt;
* TOOLBOX&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Main_Page&amp;diff=31</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Main_Page&amp;diff=31"/>
		<updated>2026-03-22T04:46:12Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Rework main page into technical section index&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__lead&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;System overview&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PlexyDesk technical documentation ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;pp-frontpage__deck&amp;quot;&amp;gt;PlexyDesk is a Linux display server, compositor, desktop shell, and application toolkit. The project combines surface composition, shell-owned desktop components, rendering infrastructure, and client-side UI libraries in one integrated system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This wiki is the technical reference for PlexyDesk. It describes the compositor architecture, desktop shell behaviour, public toolkit APIs, source layout, and current implementation status. Use the section index below to navigate the main documentation areas.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story pp-frontpage__story--wide&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Section index&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Main sections ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__section-grid&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
=== Primary sections ===&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Documentation]]&#039;&#039;&#039; - top-level map of architecture notes, references, examples, and project pages.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Architecture]]&#039;&#039;&#039; - compositor, shell, client, and rendering model.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Development]]&#039;&#039;&#039; - engineering focus areas and implementation-oriented documentation hubs.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Components]]&#039;&#039;&#039; - subsystem survey and source tree structure.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[News]]&#039;&#039;&#039; - project chronicle and milestone summaries.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Community]]&#039;&#039;&#039; - contribution and wiki participation guidance.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
=== Reference pages ===&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Developer Guide]]&#039;&#039;&#039; - source orientation and implementation landmarks.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[PlexyUI API]]&#039;&#039;&#039; - generated reference for the current UI toolkit headers.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Examples]]&#039;&#039;&#039; - sample programs and UI usage patterns.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Development Status]]&#039;&#039;&#039; - current implementation notes and subsystem coverage.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;[[Getting Started]]&#039;&#039;&#039; - local runtime and setup notes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;What PlexyDesk is&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System model ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Feature areas&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implemented feature areas ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;GPU-accelerated composition of windows and desktop surfaces.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Shell-owned dock, menubar, wallpaper, and window framing.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Window movement, resizing, focus handling, transitions, and presentation effects.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Client-side UI toolkit components exposed through PlexyUI and related libraries.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Theme, scale, wallpaper, and appearance configuration.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Multi-display layout and desktop-space positioning support.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Technical entry points&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Key references ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start with [[Architecture]] for the runtime model.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use [[Components]] and [[Developer Guide]] for source orientation.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use [[PlexyUI API]] for the current public UI interface surface.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use [[Examples]] to inspect small application patterns.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Wiki interaction&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using this wiki ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Special:AllPages]] provides the complete page index.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Special:RecentChanges]] shows the latest documentation edits.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Special:Upload]] accepts images and video for diagrams, screenshots, and demonstrations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Talk pages remain available for technical discussion and page review.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Current scope&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current documentation scope ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Community&amp;diff=30</id>
		<title>Community</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Community&amp;diff=30"/>
		<updated>2026-03-21T21:36:33Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Add community and editorial guidance page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Community =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Community&#039;&#039;&#039; describes how people can use this wiki as a shared editorial and technical record for PlexyDesk.&lt;br /&gt;
&lt;br /&gt;
== Ways to contribute ==&lt;br /&gt;
* improve explanatory pages when architecture or behaviour becomes clearer&lt;br /&gt;
* upload screenshots, diagrams, icons, and short videos that help explain the desktop&lt;br /&gt;
* use article talk pages to discuss wording, structure, and missing references&lt;br /&gt;
* keep source-backed technical pages aligned with the code and the generated API reference&lt;br /&gt;
&lt;br /&gt;
== Useful places around the site ==&lt;br /&gt;
* [[Special:Upload]] for images and video&lt;br /&gt;
* [[Special:RecentChanges]] for a live view of ongoing edits&lt;br /&gt;
* [[Special:AllPages]] for the full page index&lt;br /&gt;
* [[Documentation]] for the main reading map&lt;br /&gt;
* [[News]] for the current project chronicle&lt;br /&gt;
&lt;br /&gt;
== Editorial direction ==&lt;br /&gt;
This wiki is meant to feel like a serious technical publication. Pages should explain the system clearly, avoid inflated claims, and stay close to what the source tree and runtime actually support. The goal is a record that is readable to newcomers and still useful to engineers.&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=News&amp;diff=29</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=News&amp;diff=29"/>
		<updated>2026-03-21T21:36:33Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Add project chronicle page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= News =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;News&#039;&#039;&#039; is the public chronicle for the PlexyDesk project. It is less about marketing announcements and more about keeping a readable record of what the system already is, what areas are actively being refined, and where readers should look next.&lt;br /&gt;
&lt;br /&gt;
== Current headlines ==&lt;br /&gt;
* PlexyDesk already presents a functioning compositor shell with its own dock and menubar.&lt;br /&gt;
* The rendering path supports a visually rich desktop with shell-owned presentation and effects.&lt;br /&gt;
* The project includes a native application toolkit so programs can look and behave like part of the same environment.&lt;br /&gt;
* Documentation is being expanded into a permanent project publication, with architecture notes, component surveys, and generated API reference pages.&lt;br /&gt;
&lt;br /&gt;
== Where to follow the project ==&lt;br /&gt;
* [[Development Status]] for implementation notes and current subsystem coverage&lt;br /&gt;
* [[Development]] for the engineering hub&lt;br /&gt;
* [[Special:RecentChanges]] for the latest edits on this wiki&lt;br /&gt;
* [[PlexyUI API]] for source-backed toolkit reference&lt;br /&gt;
&lt;br /&gt;
== Why this page exists ==&lt;br /&gt;
The purpose of this page is to give PlexyDesk a chronicle that reads clearly to new visitors while staying grounded in the work already represented elsewhere in the wiki. As the publication grows, this page can carry milestone summaries, notable additions, and high-level editorial notes.&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Components&amp;diff=28</id>
		<title>Components</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Components&amp;diff=28"/>
		<updated>2026-03-21T21:36:32Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Add component survey page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Components =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Components&#039;&#039;&#039; surveys the major building blocks of PlexyDesk and the role each one plays in the overall desktop.&lt;br /&gt;
&lt;br /&gt;
== System layers ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Layer&lt;br /&gt;
! Role in the desktop&lt;br /&gt;
|-&lt;br /&gt;
| Applications&lt;br /&gt;
| Create windows, controls, text, panels, lists, and other interface content&lt;br /&gt;
|-&lt;br /&gt;
| PlexyDesk client libraries&lt;br /&gt;
| Help applications describe UI, render it locally, and submit finished surfaces&lt;br /&gt;
|-&lt;br /&gt;
| PlexyDesk compositor and shell&lt;br /&gt;
| Combine application surfaces with shell elements such as the dock, menubar, wallpaper, chrome, and transitions&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Source tree components ==&lt;br /&gt;
=== Compositor and shell runtime ===&lt;br /&gt;
The runtime lives primarily under &amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt;. This is where window presentation, rendering, shell behaviour, backend integration, and input flow are managed.&lt;br /&gt;
&lt;br /&gt;
=== Client libraries ===&lt;br /&gt;
The supporting libraries under &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt; provide application-facing helpers so client programs can participate in the PlexyDesk environment without duplicating shell responsibilities.&lt;br /&gt;
&lt;br /&gt;
=== Public interface headers ===&lt;br /&gt;
The public headers under &amp;lt;code&amp;gt;include/plexy/&amp;lt;/code&amp;gt; define the interface surface exposed to clients. The most visible reference is [[PlexyUI API]].&lt;br /&gt;
&lt;br /&gt;
=== Examples and applications ===&lt;br /&gt;
The &amp;lt;code&amp;gt;examples/&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;apps/&amp;lt;/code&amp;gt; directories show how the runtime and toolkit are exercised in practice, from small UI samples to larger application experiments.&lt;br /&gt;
&lt;br /&gt;
== Further reading ==&lt;br /&gt;
* [[Architecture]]&lt;br /&gt;
* [[Developer Guide]]&lt;br /&gt;
* [[Examples]]&lt;br /&gt;
* [[Development]]&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=MediaWiki:Wiki-tools&amp;diff=27</id>
		<title>MediaWiki:Wiki-tools</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=MediaWiki:Wiki-tools&amp;diff=27"/>
		<updated>2026-03-21T21:36:32Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Rename editorial site tools section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Site Tools&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Development&amp;diff=26</id>
		<title>Development</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Development&amp;diff=26"/>
		<updated>2026-03-21T21:36:31Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Add development hub page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Development =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Development&#039;&#039;&#039; collects the engineering view of PlexyDesk: what areas are active, where the important subsystems live, and which reference pages should be consulted while the project evolves.&lt;br /&gt;
&lt;br /&gt;
== Current engineering themes ==&lt;br /&gt;
PlexyDesk development is focused on making the compositor, shell, and toolkit behave like one deliberate desktop environment. That means work tends to concentrate on:&lt;br /&gt;
&lt;br /&gt;
* compositor and surface management behaviour&lt;br /&gt;
* shell-owned UI such as the dock, menubar, and window framing&lt;br /&gt;
* renderer and visual effect consistency&lt;br /&gt;
* growth and clarification of the PlexyUI toolkit&lt;br /&gt;
* source-backed documentation that stays close to the code&lt;br /&gt;
&lt;br /&gt;
== Source map ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Area&lt;br /&gt;
! Why it matters&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Core compositor, backend, renderer, protocol, input, and shell implementation&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Client-side support libraries and event loop code used by applications&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;include/plexy/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Public API headers, including the current PlexyUI interface surface&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;examples/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Small reference programs that demonstrate application patterns&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;apps/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Application experiments that exercise the runtime and UI toolkit&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;tasks/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Engineering notes, implementation summaries, and optimisation work&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Development references ==&lt;br /&gt;
* [[Development Status]] for the current implementation record&lt;br /&gt;
* [[Developer Guide]] for a guided source-tree tour&lt;br /&gt;
* [[PlexyUI API]] for the toolkit API reference&lt;br /&gt;
* [[Architecture]] for the system-level design picture&lt;br /&gt;
* [[News]] for the public-facing chronicle of progress&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=MediaWiki:Plexydesk-nav&amp;diff=25</id>
		<title>MediaWiki:Plexydesk-nav</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=MediaWiki:Plexydesk-nav&amp;diff=25"/>
		<updated>2026-03-21T21:36:31Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Rename editorial reference section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reference Desk&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Documentation&amp;diff=24</id>
		<title>Documentation</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Documentation&amp;diff=24"/>
		<updated>2026-03-21T21:36:31Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Add editorial documentation hub&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Documentation =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Documentation&#039;&#039;&#039; is the central index for the PlexyDesk publication. It points to the pages that explain how the desktop is structured, how the source tree is arranged, and where the current API reference lives.&lt;br /&gt;
&lt;br /&gt;
== Core reading ==&lt;br /&gt;
* [[Architecture]] - a technical explanation of how the compositor, shell, and client stack fit together&lt;br /&gt;
* [[Components]] - a survey of the major subsystems and directories that make up the project&lt;br /&gt;
* [[Developer Guide]] - a guide to the main source areas and implementation landmarks&lt;br /&gt;
&lt;br /&gt;
== Practical references ==&lt;br /&gt;
* [[PlexyUI API]] - generated reference for the current PlexyUI surface&lt;br /&gt;
* [[Examples]] - small programs and UI samples that show how PlexyDesk applications are assembled&lt;br /&gt;
* [[Getting Started]] - current environment and setup notes for running or exploring the project locally&lt;br /&gt;
&lt;br /&gt;
== Project record ==&lt;br /&gt;
* [[Development]] - the working hub for engineering direction and subsystem notes&lt;br /&gt;
* [[Development Status]] - implementation coverage and current project shape&lt;br /&gt;
* [[News]] - the project chronicle and headline summary&lt;br /&gt;
* [[Community]] - editorial, contribution, and wiki participation pointers&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Main_Page&amp;diff=23</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Main_Page&amp;diff=23"/>
		<updated>2026-03-21T21:36:30Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Refresh main page for PlexyPress editorial layout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__lead&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Lead article&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The PlexyDesk desktop as one coherent system ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;pp-frontpage__deck&amp;quot;&amp;gt;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.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* [[Architecture|Read the architecture briefing]]&lt;br /&gt;
* [[Documentation|Open the documentation desk]]&lt;br /&gt;
* [[Components|Browse the component index]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Architecture spotlight&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Compositor, shell, and toolkit ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
See [[Architecture]] for the full technical model, or jump to [[PlexyUI API]] for the current toolkit surface.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Project features&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What the desktop already supports ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul class=&amp;quot;pp-frontpage__brief-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;GPU-driven window composition and desktop rendering.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Integrated dock and menubar owned by the shell.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Window movement, resize handling, depth styling, and smooth surface presentation.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Native UI controls through PlexyUI, including text, panels, lists, sliders, and drawers.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Wallpaper, theme, scale, and appearance configuration.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Multi-display layout awareness and desktop-space positioning.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Reference desk&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Essential reading ==&lt;br /&gt;
&lt;br /&gt;
* [[Documentation]] for the main documentation map&lt;br /&gt;
* [[Developer Guide]] for source tree orientation&lt;br /&gt;
* [[Examples]] for small application and UI samples&lt;br /&gt;
* [[Development Status]] for engineering notes and implementation coverage&lt;br /&gt;
* [[Getting Started]] for the current environment and setup notes&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Shell components&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Major building blocks ==&lt;br /&gt;
&lt;br /&gt;
PlexyDesk is made up of several layers that cooperate closely: compositor and backend code in &amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt;, client-facing libraries in &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt;, public headers in &amp;lt;code&amp;gt;include/plexy/&amp;lt;/code&amp;gt;, example programs in &amp;lt;code&amp;gt;examples/&amp;lt;/code&amp;gt;, and application experiments in &amp;lt;code&amp;gt;apps/&amp;lt;/code&amp;gt;. Each layer exists to explain one part of the system rather than hide it.&lt;br /&gt;
&lt;br /&gt;
The [[Components]] page gives a structured survey of the main areas and why they matter.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Development notes&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What the project is refining ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__story&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;pp-frontpage__label&amp;quot;&amp;gt;Community and record&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A working journal for the project ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=MediaWiki:Sidebar&amp;diff=22</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=MediaWiki:Sidebar&amp;diff=22"/>
		<updated>2026-03-21T21:36:29Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Update PlexyPress navigation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Documentation|Documentation&lt;br /&gt;
** Architecture|Architecture&lt;br /&gt;
** Development|Development&lt;br /&gt;
** Components|Components&lt;br /&gt;
** News|News&lt;br /&gt;
** Community|Community&lt;br /&gt;
* plexydesk-nav&lt;br /&gt;
** PlexyUI API|PlexyUI API&lt;br /&gt;
** Developer Guide|Developer Guide&lt;br /&gt;
** Examples|Examples&lt;br /&gt;
** Development Status|Development Status&lt;br /&gt;
** Getting Started|Getting Started&lt;br /&gt;
* wiki-tools&lt;br /&gt;
** Special:RecentChanges|Recent Changes&lt;br /&gt;
** Special:AllPages|All Pages&lt;br /&gt;
** Special:Upload|Upload file&lt;br /&gt;
** Special:SpecialPages|Special Pages&lt;br /&gt;
* TOOLBOX&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Developer_Guide&amp;diff=15</id>
		<title>Developer Guide</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Developer_Guide&amp;diff=15"/>
		<updated>2026-03-21T19:54:03Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Link generated PlexyUI API reference&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Developer Guide =&lt;br /&gt;
&lt;br /&gt;
This page is a practical map for engineers who want to read or modify the PlexyDesk source tree.&lt;br /&gt;
&lt;br /&gt;
== Read these first ==&lt;br /&gt;
* &amp;lt;code&amp;gt;tasks/README.md&amp;lt;/code&amp;gt; - current work areas and implementation notes&lt;br /&gt;
* &amp;lt;code&amp;gt;install-deps.sh&amp;lt;/code&amp;gt; - the fastest view of build and system dependencies&lt;br /&gt;
* &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt; - build modes, active runtime entry points, and source grouping&lt;br /&gt;
* &amp;lt;code&amp;gt;include/plexy/plexy_ui.h&amp;lt;/code&amp;gt; - public client API&lt;br /&gt;
* [[PlexyUI API]] - generated reference page built directly from &amp;lt;code&amp;gt;include/plexy/plexy_ui.h&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;examples/hello_uikit.c&amp;lt;/code&amp;gt; - smallest useful UI example&lt;br /&gt;
* &amp;lt;code&amp;gt;docker/README.md&amp;lt;/code&amp;gt; - package build workflow&lt;br /&gt;
* &amp;lt;code&amp;gt;plexyshell.conf.example&amp;lt;/code&amp;gt; - runtime configuration surface&lt;br /&gt;
&lt;br /&gt;
== Key source areas ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Path&lt;br /&gt;
! What you will find there&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/renderer/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Compositing, window effects, dock, menubar, shaders, async renderer, and GPU configuration&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/backend/&amp;lt;/code&amp;gt;&lt;br /&gt;
| DRM, X11-related display backend code, session management, and display backend selection&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/input/&amp;lt;/code&amp;gt;&lt;br /&gt;
| libinput integration, focus policy, and input coordination&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/core/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Shell runtime, event loop, dock manager, drag/resize state, and display layout state&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/server/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Compositor-side protocol server&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/wayland/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Wayland bridge and XWM interoperability work&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/canvas/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Canvas rendering, text, layout, styling, and animation support&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Client-side event loop and protocol support&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Build workflow ==&lt;br /&gt;
Standard release build:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verbose debug build:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BUILD_MODE=debug make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Public client API ==&lt;br /&gt;
The main client-facing API lives in &amp;lt;code&amp;gt;include/plexy/plexy_ui.h&amp;lt;/code&amp;gt;. It covers:&lt;br /&gt;
* application and window lifecycle&lt;br /&gt;
* widget creation&lt;br /&gt;
* layout primitives such as row, column, justify, align, padding, and gap&lt;br /&gt;
* state changes such as visibility, text, value, and enabled state&lt;br /&gt;
* styling helpers such as corner radius, fill color, elevation, and glass material&lt;br /&gt;
* event hooks for clicks, values, text changes, keys, and menus&lt;br /&gt;
&lt;br /&gt;
== Example-driven learning ==&lt;br /&gt;
The best small files to read early are:&lt;br /&gt;
* &amp;lt;code&amp;gt;examples/hello_uikit.c&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;examples/canvas_demo.c&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;examples/drawer_demo.c&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;examples/settings_panel.c&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;examples/showcase_demo.c&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Applications and experiments ==&lt;br /&gt;
The &amp;lt;code&amp;gt;apps/&amp;lt;/code&amp;gt; directory includes larger experiments such as:&lt;br /&gt;
* &amp;lt;code&amp;gt;plexy_term&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;plexy_browser&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;plexy_clock&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;fileman&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;pcalc&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;vim&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packaging and service helpers ==&lt;br /&gt;
* &amp;lt;code&amp;gt;docker/README.md&amp;lt;/code&amp;gt; explains the Ubuntu Docker package flow&lt;br /&gt;
* &amp;lt;code&amp;gt;scripts/systemd/&amp;lt;/code&amp;gt; contains the user slice, service, installer, starter, and status helpers&lt;br /&gt;
&lt;br /&gt;
== Good follow-up pages ==&lt;br /&gt;
* [[Architecture]]&lt;br /&gt;
* [[Getting Started]]&lt;br /&gt;
* [[Examples]]&lt;br /&gt;
* [[Development Status]]&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Main_Page&amp;diff=14</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Main_Page&amp;diff=14"/>
		<updated>2026-03-21T19:54:03Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Link PlexyUI API reference from front page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= PlexyDesk =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PlexyDesk&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ PlexyDesk at a glance&lt;br /&gt;
|-&lt;br /&gt;
! Focus&lt;br /&gt;
| GPU-accelerated compositor and desktop shell for Linux&lt;br /&gt;
|-&lt;br /&gt;
! Runtime&lt;br /&gt;
| &amp;lt;code&amp;gt;plexyshell&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Client stack&lt;br /&gt;
| &amp;lt;code&amp;gt;libplexy&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;libplexycanvas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;libplexyui&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| AGPL-3.0-only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== What PlexyDesk does ==&lt;br /&gt;
PlexyDesk combines three responsibilities into one system:&lt;br /&gt;
* it acts as the display server that decides what appears on screen&lt;br /&gt;
* it acts as the desktop shell that draws the dock, menubar, background, and window chrome&lt;br /&gt;
* it provides application-facing libraries so apps can create native PlexyDesk windows and controls&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Architecture in plain language ==&lt;br /&gt;
PlexyDesk is organised around three main layers:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Layer&lt;br /&gt;
! What it is responsible for&lt;br /&gt;
|-&lt;br /&gt;
| Applications&lt;br /&gt;
| Programs create windows, text, buttons, panels, lists, drawers, and other interface elements&lt;br /&gt;
|-&lt;br /&gt;
| PlexyDesk client libraries&lt;br /&gt;
| The libraries help apps describe their UI, render it locally, and send finished frames to the display server&lt;br /&gt;
|-&lt;br /&gt;
| PlexyDesk compositor and shell&lt;br /&gt;
| The compositor places windows on screen, draws the desktop shell, applies visual effects, handles input routing, and presents the final image&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Supported desktop features ==&lt;br /&gt;
=== Window presentation and motion ===&lt;br /&gt;
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:&lt;br /&gt;
* animated window movement&lt;br /&gt;
* resize handling&lt;br /&gt;
* window shadows and depth styling&lt;br /&gt;
* rounded corners and smooth surface edges&lt;br /&gt;
* minimise and transition effects&lt;br /&gt;
* focus-aware rendering and presentation&lt;br /&gt;
&lt;br /&gt;
=== Dock and menubar ===&lt;br /&gt;
PlexyDesk includes built-in desktop shell components instead of leaving those responsibilities to separate tools. Supported shell features include:&lt;br /&gt;
* a dock with launch feedback and running indicators&lt;br /&gt;
* icon magnification behaviour as the pointer moves across the dock&lt;br /&gt;
* a menubar that can show application menus, titles, and status information&lt;br /&gt;
* a desktop-level clock and shell-facing window metadata&lt;br /&gt;
&lt;br /&gt;
=== Visual materials and effects ===&lt;br /&gt;
The rendering system supports a polished visual layer throughout the shell and the UI toolkit. This includes:&lt;br /&gt;
* glass-style surfaces&lt;br /&gt;
* blur-based materials&lt;br /&gt;
* shader-driven lighting and depth cues&lt;br /&gt;
* smooth rounded geometry&lt;br /&gt;
* scalable vector-style shape rendering for interface elements&lt;br /&gt;
* consistent text and surface styling across windows and widgets&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Application UI toolkit ===&lt;br /&gt;
PlexyDesk includes a UI layer for building applications that look and behave like part of the environment. Supported interface building blocks include:&lt;br /&gt;
* labels and buttons&lt;br /&gt;
* text input and text areas&lt;br /&gt;
* sliders, switches, checkboxes, and progress controls&lt;br /&gt;
* separators, panels, rows, and columns&lt;br /&gt;
* list views and icon views&lt;br /&gt;
* sidebars, toolbars, breadcrumbs, status bars, and drawers&lt;br /&gt;
* menu integration for desktop menubars&lt;br /&gt;
&lt;br /&gt;
The toolkit also supports layout controls such as padding, spacing, alignment, flexible sizing, and batched updates for responsive interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Multi-display and layout awareness ===&lt;br /&gt;
PlexyDesk is built with display layout awareness in mind. The configuration and compositor layout model support:&lt;br /&gt;
* more than one monitor&lt;br /&gt;
* explicit placement of outputs in desktop space&lt;br /&gt;
* per-layout presets&lt;br /&gt;
* desktop-space positioning that keeps pointer movement and window placement coherent across screens&lt;br /&gt;
&lt;br /&gt;
=== Backgrounds and appearance ===&lt;br /&gt;
The shell supports desktop appearance controls such as:&lt;br /&gt;
* theme selection&lt;br /&gt;
* UI scale factor control&lt;br /&gt;
* wallpaper backgrounds&lt;br /&gt;
* animated background modes&lt;br /&gt;
* compositor tuning for chrome, blur, and window presentation&lt;br /&gt;
* dock and terminal appearance settings through configuration&lt;br /&gt;
&lt;br /&gt;
=== Stability through application isolation ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Internal building blocks ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Area&lt;br /&gt;
! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Compositor, backend, renderer, input, protocol, and shell code&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Client-side support libraries and event loop code&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;include/plexy/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Public API headers such as &amp;lt;code&amp;gt;plexy_ui.h&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;examples/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Small client and UI examples&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;apps/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Application experiments such as terminal, browser, clock, calculator, and file manager&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;tasks/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Engineering notes, implementation summaries, and optimization work&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Explore the project ==&lt;br /&gt;
* [[Architecture]] - a deeper technical explanation of how the compositor and client stack fit together&lt;br /&gt;
* [[PlexyUI API]] - generated reference for the UIKit application API&lt;br /&gt;
* [[Developer Guide]] - where the important source files and subsystems live&lt;br /&gt;
* [[Examples]] - small programs that show what PlexyDesk applications can look like&lt;br /&gt;
* [[Development Status]] - implementation notes and the current shape of the project&lt;br /&gt;
&lt;br /&gt;
== Current state ==&lt;br /&gt;
PlexyDesk already includes a functioning compositor shell, a built-in dock and menubar, a GPU-driven rendering path, and a native application UI toolkit. Work is ongoing across performance, compatibility, and broader desktop behaviour, 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.&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=PlexyUI_API&amp;diff=13</id>
		<title>PlexyUI API</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=PlexyUI_API&amp;diff=13"/>
		<updated>2026-03-21T19:54:02Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Publish generated PlexyUI API reference&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= PlexyUI API Reference =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Generated from &amp;lt;code&amp;gt;include/plexy/plexy_ui.h&amp;lt;/code&amp;gt; by &amp;lt;code&amp;gt;scripts/generate_plexy_uikit_docs.py&amp;lt;/code&amp;gt;. Do not edit this page by hand; regenerate it from the header instead.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PlexyUI — Client Library for PlexyDesk GPU-Accelerated Widgets&lt;br /&gt;
Renders widgets locally using libplexycanvas (SDF shaders, FreeType text,&lt;br /&gt;
flexbox layout) and submits DMA-BUF frames via the standard plexy protocol.&lt;br /&gt;
Client crash does not affect the compositor (plexyshell).&lt;br /&gt;
&lt;br /&gt;
== Opaque types ==&lt;br /&gt;
&lt;br /&gt;
=== PlexyApp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct PlexyApp PlexyApp;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Opaque handle for the lifetime of a PlexyDesk application.&lt;br /&gt;
&lt;br /&gt;
=== PlexyWindow ===&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct PlexyWindow PlexyWindow;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Opaque handle for a PlexyDesk window and its widget tree.&lt;br /&gt;
&lt;br /&gt;
== Callback types ==&lt;br /&gt;
&lt;br /&gt;
=== PlexyClickCallback ===&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef void (*PlexyClickCallback)(uint32_t widget_id, void* userdata);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Called when a widget reports a click-style activation.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;userdata&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;void*&amp;lt;/code&amp;gt; || Caller-provided context passed back into the callback.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== PlexyValueCallback ===&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef void (*PlexyValueCallback)(uint32_t widget_id, float value, void* userdata);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Called when a widget emits a numeric value change.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Numeric value to apply or report.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;userdata&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;void*&amp;lt;/code&amp;gt; || Caller-provided context passed back into the callback.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== PlexyTextCallback ===&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef void (*PlexyTextCallback)(uint32_t widget_id, const char* text, void* userdata);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Called when widget text content changes.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Text content to display or apply.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;userdata&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;void*&amp;lt;/code&amp;gt; || Caller-provided context passed back into the callback.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== PlexyKeyCallback ===&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef void (*PlexyKeyCallback)(uint32_t widget_id, uint32_t keycode, uint32_t mods, void* userdata);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Called when a widget receives keyboard input.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;keycode&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Key code supplied with a key event.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mods&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Modifier state supplied with a key event.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;userdata&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;void*&amp;lt;/code&amp;gt; || Caller-provided context passed back into the callback.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== PlexyMenuCallback ===&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef void (*PlexyMenuCallback)(uint32_t item_id, void* userdata);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Called when an application menubar item is chosen.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;item_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Identifier of a menu item.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;userdata&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;void*&amp;lt;/code&amp;gt; || Caller-provided context passed back into the callback.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== App lifecycle ==&lt;br /&gt;
&lt;br /&gt;
These functions manage the lifetime of a PlexyDesk application object and its main loop.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_app_create&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;PlexyApp* plexy_app_create(const char* name);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a top-level PlexyDesk application object.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Human-readable name used to identify the application.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A new &amp;lt;code&amp;gt;PlexyApp&amp;lt;/code&amp;gt; handle.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_app_run&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_app_run(PlexyApp* app);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Enter the application event loop and keep the UI running until it exits.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;app&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyApp*&amp;lt;/code&amp;gt; || Application handle that owns the operation.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_app_quit&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_app_quit(PlexyApp* app);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Request that the application event loop stops.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;app&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyApp*&amp;lt;/code&amp;gt; || Application handle that owns the operation.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_app_destroy&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_app_destroy(PlexyApp* app);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Release the application object and its remaining resources.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;app&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyApp*&amp;lt;/code&amp;gt; || Application handle that owns the operation.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Window ==&lt;br /&gt;
&lt;br /&gt;
These functions create, inspect, and destroy PlexyDesk windows.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_window_create&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;PlexyWindow* plexy_window_create(PlexyApp* app, uint32_t width, uint32_t height, const char* title);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a new window for an application.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;app&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyApp*&amp;lt;/code&amp;gt; || Application handle that owns the operation.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Requested width in pixels.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Requested height in pixels.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Human-readable label, title, or heading text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A new &amp;lt;code&amp;gt;PlexyWindow&amp;lt;/code&amp;gt; handle.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_window_root&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_window_root(PlexyWindow* win);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the root widget ID for the window&#039;s layout tree.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; The root widget ID for the window.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_window_destroy&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_window_destroy(PlexyWindow* win);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Destroy a window and release its widget tree.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Widget creation ==&lt;br /&gt;
&lt;br /&gt;
These functions create widgets and containers inside an existing window.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_label&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_label(PlexyWindow* win, uint32_t parent, const char* text);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a label and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Text content to display or apply.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_button&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_button(PlexyWindow* win, uint32_t parent, const char* text);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a button and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Text content to display or apply.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_text_input&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_text_input(PlexyWindow* win, uint32_t parent, const char* placeholder);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a text input and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;placeholder&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Placeholder text shown before the user enters content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_text_area&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_text_area(PlexyWindow* win, uint32_t parent, const char* initial_text);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a text area and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;initial_text&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Initial text content for the widget.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_checkbox&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_checkbox(PlexyWindow* win, uint32_t parent, const char* label);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a checkbox and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Display label shown with the widget.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_switch_widget&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_switch_widget(PlexyWindow* win, uint32_t parent, const char* label);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a switch widget and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Display label shown with the widget.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_slider&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_slider(PlexyWindow* win, uint32_t parent, float min, float max, float initial);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a slider and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;min&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Minimum allowed value for the control.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;max&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Maximum allowed value for the control.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;initial&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Initial numeric value for the control.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_progress&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_progress(PlexyWindow* win, uint32_t parent, float value);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a progress and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Numeric value to apply or report.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_separator&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_separator(PlexyWindow* win, uint32_t parent);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a separator and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_spacer&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_spacer(PlexyWindow* win, uint32_t parent);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a spacer and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_panel&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_panel(PlexyWindow* win, uint32_t parent);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a panel and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_scroll_view&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_scroll_view(PlexyWindow* win, uint32_t parent);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a scroll view and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_list_view&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_list_view(PlexyWindow* win, uint32_t parent, const char* items_text);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a list view and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;items_text&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Text payload describing the initial items for the view.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_icon_view&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_icon_view(PlexyWindow* win, uint32_t parent, const char* items_text);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a icon view and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;items_text&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Text payload describing the initial items for the view.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_list_clear&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_list_clear(PlexyWindow* win, uint32_t list_view_id);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Remove all items from a list view.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;list_view_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target list view.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_list_append&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_list_append(PlexyWindow* win, uint32_t list_view_id, const char* item_text);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Append a new item to a list view and return the new child widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;list_view_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target list view.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;item_text&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Text content for an inserted list or icon item.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_list_select&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_list_select(PlexyWindow* win, uint32_t list_view_id, int index);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Select an item in a list view by index.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;list_view_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target list view.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; || Zero-based item index.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_icon_clear&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_icon_clear(PlexyWindow* win, uint32_t icon_view_id);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Remove all items from an icon view.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;icon_view_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target icon view.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_icon_append&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_icon_append(PlexyWindow* win, uint32_t icon_view_id, const char* item_text);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Append a new item to an icon view and return the new child widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;icon_view_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target icon view.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;item_text&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Text content for an inserted list or icon item.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_icon_select&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_icon_select(PlexyWindow* win, uint32_t icon_view_id, int index);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Select an item in an icon view by index.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;icon_view_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target icon view.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; || Zero-based item index.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_destroy_widget&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_destroy_widget(PlexyWindow* win, uint32_t widget_id);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Remove a widget from the window and destroy it.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Layout containers (convenience) ==&lt;br /&gt;
&lt;br /&gt;
These helpers create common container shapes for arranging child widgets.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_row&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_row(PlexyWindow* win, uint32_t parent);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a row and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_column&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_column(PlexyWindow* win, uint32_t parent);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a column and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
== macOS-style widgets ==&lt;br /&gt;
&lt;br /&gt;
These widgets model shell-like controls, navigation elements, and drawers.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_toolbar&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_toolbar(PlexyWindow* win, uint32_t parent);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a toolbar and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_toolbar_item&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_toolbar_item(PlexyWindow* win, uint32_t parent, const char* label);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a toolbar item and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Display label shown with the widget.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_sidebar&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_sidebar(PlexyWindow* win, uint32_t parent);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a sidebar and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_sidebar_item&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_sidebar_item(PlexyWindow* win, uint32_t parent, const char* label);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a sidebar item and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Display label shown with the widget.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_sidebar_item_with_icon&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_sidebar_item_with_icon(PlexyWindow* win, uint32_t parent, const char* label, const char* icon_name);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a sidebar item with icon and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Display label shown with the widget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;icon_name&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Icon name value.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_sidebar_section&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_sidebar_section(PlexyWindow* win, uint32_t parent, const char* title);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a sidebar section and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Human-readable label, title, or heading text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_search_field&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_search_field(PlexyWindow* win, uint32_t parent, const char* placeholder);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a search field and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;placeholder&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Placeholder text shown before the user enters content.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_breadcrumb&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_breadcrumb(PlexyWindow* win, uint32_t parent, const char* path);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a breadcrumb and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Path text or breadcrumb string.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_split_view&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_split_view(PlexyWindow* win, uint32_t parent);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a split view and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_status_bar&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_status_bar(PlexyWindow* win, uint32_t parent, const char* text);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a status bar and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Text content to display or apply.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_drawer&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;uint32_t plexy_drawer(PlexyWindow* win, uint32_t parent, int edge, float size);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a drawer and return its widget ID.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Parent widget ID that will contain the new child widget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;edge&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; || Drawer edge constant indicating which side the drawer attaches to.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Generic size value or drawer size.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A widget ID for the created or referenced widget.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_drawer_set_open&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_drawer_set_open(PlexyWindow* win, uint32_t drawer_id, int open, int animated);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Open or close a drawer and optionally animate the change.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;drawer_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Drawer id value.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; || Whether the drawer should be open.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;animated&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; || Whether the state change should be animated.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_drawer_toggle&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_drawer_toggle(PlexyWindow* win, uint32_t drawer_id, int animated);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Toggle a drawer between open and closed states.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;drawer_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Drawer id value.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;animated&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; || Whether the state change should be animated.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_drawer_is_open&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;int plexy_drawer_is_open(PlexyWindow* win, uint32_t drawer_id);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Report whether a drawer is currently open.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;drawer_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Drawer id value.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; A non-zero value when the drawer is open, otherwise zero.&lt;br /&gt;
&lt;br /&gt;
== Layout properties ==&lt;br /&gt;
&lt;br /&gt;
These functions change how a widget is positioned, aligned, or sized inside its parent layout.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_flex_direction&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_flex_direction(PlexyWindow* win, uint32_t widget_id, int direction);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the flex direction property on an existing widget.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; 0=row, 1=column&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;direction&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; || Layout direction constant, such as row or column.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_justify&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_justify(PlexyWindow* win, uint32_t widget_id, int justify);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the justify property on an existing widget.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;justify&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; || Main-axis justification constant.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_align&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_align(PlexyWindow* win, uint32_t widget_id, int align);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the align property on an existing widget.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;align&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; || Cross-axis alignment constant.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_flex_grow&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_flex_grow(PlexyWindow* win, uint32_t widget_id, float grow);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the flex grow property on an existing widget.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;grow&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Flex growth factor used during layout.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_size&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_size(PlexyWindow* win, uint32_t widget_id, float width, float height);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the size property on an existing widget.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Requested width in pixels.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Requested height in pixels.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_margin&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_margin(PlexyWindow* win, uint32_t widget_id, float top, float right, float bottom, float left);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the margin property on an existing widget.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;top&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Top edge distance or coordinate.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;right&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Right edge distance.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;bottom&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Bottom edge distance.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;left&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Left edge distance.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_padding&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_padding(PlexyWindow* win, uint32_t widget_id, float top, float right, float bottom, float left);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the padding property on an existing widget.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;top&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Top edge distance or coordinate.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;right&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Right edge distance.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;bottom&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Bottom edge distance.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;left&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Left edge distance.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_gap&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_gap(PlexyWindow* win, uint32_t widget_id, float gap);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the gap property on an existing widget.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;gap&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Spacing inserted between child items.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Widget state ==&lt;br /&gt;
&lt;br /&gt;
These functions update widget content or toggle widget state after creation.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_set_text&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_set_text(PlexyWindow* win, uint32_t widget_id, const char* text);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Replace the text content of an existing widget.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Text content to display or apply.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_set_value&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_set_value(PlexyWindow* win, uint32_t widget_id, float value);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the numeric value of a widget.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Numeric value to apply or report.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_set_visible&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_set_visible(PlexyWindow* win, uint32_t widget_id, int visible);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Show or hide a widget.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;visible&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; || Visibility flag, typically non-zero for visible.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_set_enabled&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_set_enabled(PlexyWindow* win, uint32_t widget_id, int enabled);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Enable or disable user interaction for a widget.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;enabled&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; || Enabled flag, typically non-zero for enabled.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_set_readonly&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_set_readonly(PlexyWindow* win, uint32_t widget_id, int readonly);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Toggle whether a text-capable widget is read-only.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;readonly&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; || Read-only flag, typically non-zero to prevent editing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Style ==&lt;br /&gt;
&lt;br /&gt;
These functions control visual appearance such as color, corner radius, and surface material.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_set_corner_radius&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_set_corner_radius(PlexyWindow* win, uint32_t widget_id, float radius);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the widget corner radius.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;radius&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Corner radius value.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_set_elevation&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_set_elevation(PlexyWindow* win, uint32_t widget_id, float level);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the widget elevation or depth styling level.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;level&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Elevation level used to influence depth styling.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_set_fill_color&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_set_fill_color(PlexyWindow* win, uint32_t widget_id, float r, float g, float b, float a);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Apply a fill color using RGBA components.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Red color component.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Green color component.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Blue color component.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Alpha or opacity component.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_set_fill_color_hex&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_set_fill_color_hex(PlexyWindow* win, uint32_t widget_id, const char* hex);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Apply a fill color using a hex color string.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hex&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Hexadecimal color string.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_set_text_color&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_set_text_color(PlexyWindow* win, uint32_t widget_id, float r, float g, float b, float a);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Apply a text color using RGBA components.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Red color component.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Green color component.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Blue color component.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Alpha or opacity component.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_set_text_color_hex&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_set_text_color_hex(PlexyWindow* win, uint32_t widget_id, const char* hex);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Apply a text color using a hex color string.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hex&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Hexadecimal color string.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_set_font_size&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_set_font_size(PlexyWindow* win, uint32_t widget_id, float size);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the rendered font size for the widget.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Generic size value or drawer size.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_set_border&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_set_border(PlexyWindow* win, uint32_t widget_id, float r, float g, float b, float a, float width);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set border color and width for a widget.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Red color component.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Green color component.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Blue color component.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Alpha or opacity component.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Requested width in pixels.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_set_glass&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_set_glass(PlexyWindow* win, uint32_t widget_id, float opacity);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Apply a glass-style material effect with the given opacity.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;opacity&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Opacity amount for the material effect.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_set_glass_material&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_set_glass_material(PlexyWindow* win, uint32_t widget_id, float opacity);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Apply the full glass material treatment with the given opacity.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;opacity&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Opacity amount for the material effect.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_set_surface_material&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_set_surface_material(PlexyWindow* win, uint32_t widget_id);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Switch the widget back to an opaque surface-style material.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
&lt;br /&gt;
These functions register callbacks and direct focus for interactive widgets.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_on_click&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_on_click(PlexyWindow* win, uint32_t widget_id, PlexyClickCallback cb, void* userdata);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Register a click callback for a widget.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cb&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyClickCallback&amp;lt;/code&amp;gt; || Callback function invoked when the event fires.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;userdata&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;void*&amp;lt;/code&amp;gt; || Caller-provided context passed back into the callback.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_on_value_changed&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_on_value_changed(PlexyWindow* win, uint32_t widget_id, PlexyValueCallback cb, void* userdata);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Register a callback for value changes.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cb&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyValueCallback&amp;lt;/code&amp;gt; || Callback function invoked when the event fires.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;userdata&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;void*&amp;lt;/code&amp;gt; || Caller-provided context passed back into the callback.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_on_text_changed&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_on_text_changed(PlexyWindow* win, uint32_t widget_id, PlexyTextCallback cb, void* userdata);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Register a callback for text changes.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cb&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyTextCallback&amp;lt;/code&amp;gt; || Callback function invoked when the event fires.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;userdata&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;void*&amp;lt;/code&amp;gt; || Caller-provided context passed back into the callback.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_on_key&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_on_key(PlexyWindow* win, uint32_t widget_id, PlexyKeyCallback cb, void* userdata);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Register a callback for widget key events.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cb&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyKeyCallback&amp;lt;/code&amp;gt; || Callback function invoked when the event fires.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;userdata&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;void*&amp;lt;/code&amp;gt; || Caller-provided context passed back into the callback.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_set_focus&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_set_focus(PlexyWindow* win, uint32_t widget_id);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Move keyboard focus to the specified widget.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_on_menu&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_on_menu(PlexyWindow* win, PlexyMenuCallback cb, void* userdata);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Register a callback for desktop menubar item selections.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cb&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyMenuCallback&amp;lt;/code&amp;gt; || Callback function invoked when the event fires.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;userdata&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;void*&amp;lt;/code&amp;gt; || Caller-provided context passed back into the callback.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== App menubar model (desktop menubar integration) ==&lt;br /&gt;
&lt;br /&gt;
These functions describe an application menu structure for the desktop menubar.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_menu_begin&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;int plexy_menu_begin(PlexyWindow* win, int supported, const char* app_title);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Begin describing an application menu model for the desktop menubar.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;supported&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; || Flag indicating whether desktop menubar support is available.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;app_title&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Application title to expose through the menubar model.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; An integer status or result code.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_menu_add&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;int plexy_menu_add(PlexyWindow* win, uint32_t menu_id, const char* title);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a new menu within the current menubar model.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;menu_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Identifier of the target menu.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Human-readable label, title, or heading text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; An integer status or result code.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_menu_add_item&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;int plexy_menu_add_item(PlexyWindow* win, uint32_t menu_id, uint32_t item_id, const char* label, int enabled);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Add a menu item to an existing menu.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;menu_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Identifier of the target menu.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;item_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Identifier of a menu item.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;const char*&amp;lt;/code&amp;gt; || Display label shown with the widget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;enabled&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; || Enabled flag, typically non-zero for enabled.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; An integer status or result code.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_menu_commit&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;int plexy_menu_commit(PlexyWindow* win);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Submit the completed menubar model to the shell.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; An integer status or result code.&lt;br /&gt;
&lt;br /&gt;
== Batch updates (reduces IPC round-trips) ==&lt;br /&gt;
&lt;br /&gt;
These functions group a series of widget updates so they can be applied together.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_batch_begin&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_batch_begin(PlexyWindow* win);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Begin a batch of widget changes.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_batch_end&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_batch_end(PlexyWindow* win);&amp;lt;/pre&amp;gt;&lt;br /&gt;
End a batch of widget changes and flush the grouped update.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Retained Path Drawing (Bezier) ==&lt;br /&gt;
&lt;br /&gt;
These functions build retained vector paths and query rendered widget bounds.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_path_clear&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_path_clear(PlexyWindow* win);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Clear any retained path drawing commands.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_path_begin&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_path_begin(PlexyWindow* win);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Start defining a new retained path.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_path_move_to&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_path_move_to(PlexyWindow* win, float x, float y);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Move the current drawing cursor to a new position.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || X coordinate or output storage for the X position.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Y coordinate or output storage for the Y position.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_path_line_to&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_path_line_to(PlexyWindow* win, float x, float y);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Append a straight line segment to the current path.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || X coordinate or output storage for the X position.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Y coordinate or output storage for the Y position.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_path_bezier_to&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_path_bezier_to(PlexyWindow* win, float cp1x, float cp1y, float cp2x, float cp2y, float x, float y);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Append a cubic Bezier curve to the current path.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cp1x&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || First Bezier control point X coordinate.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cp1y&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || First Bezier control point Y coordinate.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cp2x&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Second Bezier control point X coordinate.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cp2y&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Second Bezier control point Y coordinate.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || X coordinate or output storage for the X position.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Y coordinate or output storage for the Y position.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_path_set_stroke&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_path_set_stroke(PlexyWindow* win, float r, float g, float b, float a, float width);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set stroke color and width for retained path drawing.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Red color component.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Green color component.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Blue color component.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Alpha or opacity component.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; || Requested width in pixels.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_path_stroke&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;void plexy_path_stroke(PlexyWindow* win);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Render the current retained path as a stroke.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;plexy_widget_bounds&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&amp;lt;pre&amp;gt;int plexy_widget_bounds(PlexyWindow* win, uint32_t widget_id, float* x, float* y, float* width, float* height);&amp;lt;/pre&amp;gt;&lt;br /&gt;
Query the current bounds of a widget.&lt;br /&gt;
&lt;br /&gt;
==== Parameters ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;win&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;PlexyWindow*&amp;lt;/code&amp;gt; || Window handle that owns or contains the widget tree.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; || Widget ID of the target control or container.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float*&amp;lt;/code&amp;gt; || X coordinate or output storage for the X position.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float*&amp;lt;/code&amp;gt; || Y coordinate or output storage for the Y position.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float*&amp;lt;/code&amp;gt; || Requested width in pixels.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;float*&amp;lt;/code&amp;gt; || Requested height in pixels.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Returns:&#039;&#039;&#039; An integer status or result code.&lt;br /&gt;
&lt;br /&gt;
== Constants ==&lt;br /&gt;
&lt;br /&gt;
=== Justify content ===&lt;br /&gt;
Constants used to choose how child widgets are distributed on the main layout axis.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Constant !! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PLEXY_JUSTIFY_START&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Pack items toward the start of the main axis.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PLEXY_JUSTIFY_END&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; || Pack items toward the end of the main axis.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PLEXY_JUSTIFY_CENTER&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; || Center items along the main axis.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PLEXY_JUSTIFY_SPACE_BETWEEN&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; || Distribute free space between items.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PLEXY_JUSTIFY_SPACE_AROUND&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; || Distribute free space around items.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PLEXY_JUSTIFY_SPACE_EVENLY&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; || Distribute free space evenly before, between, and after items.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Align items ===&lt;br /&gt;
Constants used to choose how child widgets align on the cross axis.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Constant !! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PLEXY_ALIGN_START&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Align items at the start of the cross axis.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PLEXY_ALIGN_END&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; || Align items at the end of the cross axis.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PLEXY_ALIGN_CENTER&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; || Center items on the cross axis.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PLEXY_ALIGN_STRETCH&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; || Stretch items to fill the cross axis.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Flex direction ===&lt;br /&gt;
Constants used to choose whether a layout flows as a row or a column.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Constant !! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PLEXY_FLEX_ROW&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Lay out children horizontally.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PLEXY_FLEX_COLUMN&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; || Lay out children vertically.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Drawer edges ===&lt;br /&gt;
Constants used to attach a drawer to a specific edge of its parent window.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Constant !! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PLEXY_DRAWER_LEFT&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || Attach the drawer to the left edge.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PLEXY_DRAWER_RIGHT&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; || Attach the drawer to the right edge.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PLEXY_DRAWER_TOP&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; || Attach the drawer to the top edge.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PLEXY_DRAWER_BOTTOM&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; || Attach the drawer to the bottom edge.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Main_Page&amp;diff=8</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Main_Page&amp;diff=8"/>
		<updated>2026-03-21T19:39:40Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Rewrite front page to focus on architecture and supported features&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= PlexyDesk =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PlexyDesk&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ PlexyDesk at a glance&lt;br /&gt;
|-&lt;br /&gt;
! Focus&lt;br /&gt;
| GPU-accelerated compositor and desktop shell for Linux&lt;br /&gt;
|-&lt;br /&gt;
! Runtime&lt;br /&gt;
| &amp;lt;code&amp;gt;plexyshell&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Client stack&lt;br /&gt;
| &amp;lt;code&amp;gt;libplexy&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;libplexycanvas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;libplexyui&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| AGPL-3.0-only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== What PlexyDesk does ==&lt;br /&gt;
PlexyDesk combines three responsibilities into one system:&lt;br /&gt;
* it acts as the display server that decides what appears on screen&lt;br /&gt;
* it acts as the desktop shell that draws the dock, menubar, background, and window chrome&lt;br /&gt;
* it provides application-facing libraries so apps can create native PlexyDesk windows and controls&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Architecture in plain language ==&lt;br /&gt;
PlexyDesk is organised around three main layers:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Layer&lt;br /&gt;
! What it is responsible for&lt;br /&gt;
|-&lt;br /&gt;
| Applications&lt;br /&gt;
| Programs create windows, text, buttons, panels, lists, drawers, and other interface elements&lt;br /&gt;
|-&lt;br /&gt;
| PlexyDesk client libraries&lt;br /&gt;
| The libraries help apps describe their UI, render it locally, and send finished frames to the display server&lt;br /&gt;
|-&lt;br /&gt;
| PlexyDesk compositor and shell&lt;br /&gt;
| The compositor places windows on screen, draws the desktop shell, applies visual effects, handles input routing, and presents the final image&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Supported desktop features ==&lt;br /&gt;
=== Window presentation and motion ===&lt;br /&gt;
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:&lt;br /&gt;
* animated window movement&lt;br /&gt;
* resize handling&lt;br /&gt;
* window shadows and depth styling&lt;br /&gt;
* rounded corners and smooth surface edges&lt;br /&gt;
* minimise and transition effects&lt;br /&gt;
* focus-aware rendering and presentation&lt;br /&gt;
&lt;br /&gt;
=== Dock and menubar ===&lt;br /&gt;
PlexyDesk includes built-in desktop shell components instead of leaving those responsibilities to separate tools. Supported shell features include:&lt;br /&gt;
* a dock with launch feedback and running indicators&lt;br /&gt;
* icon magnification behaviour as the pointer moves across the dock&lt;br /&gt;
* a menubar that can show application menus, titles, and status information&lt;br /&gt;
* a desktop-level clock and shell-facing window metadata&lt;br /&gt;
&lt;br /&gt;
=== Visual materials and effects ===&lt;br /&gt;
The rendering system supports a polished visual layer throughout the shell and the UI toolkit. This includes:&lt;br /&gt;
* glass-style surfaces&lt;br /&gt;
* blur-based materials&lt;br /&gt;
* shader-driven lighting and depth cues&lt;br /&gt;
* smooth rounded geometry&lt;br /&gt;
* scalable vector-style shape rendering for interface elements&lt;br /&gt;
* consistent text and surface styling across windows and widgets&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Application UI toolkit ===&lt;br /&gt;
PlexyDesk includes a UI layer for building applications that look and behave like part of the environment. Supported interface building blocks include:&lt;br /&gt;
* labels and buttons&lt;br /&gt;
* text input and text areas&lt;br /&gt;
* sliders, switches, checkboxes, and progress controls&lt;br /&gt;
* separators, panels, rows, and columns&lt;br /&gt;
* list views and icon views&lt;br /&gt;
* sidebars, toolbars, breadcrumbs, status bars, and drawers&lt;br /&gt;
* menu integration for desktop menubars&lt;br /&gt;
&lt;br /&gt;
The toolkit also supports layout controls such as padding, spacing, alignment, flexible sizing, and batched updates for responsive interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Multi-display and layout awareness ===&lt;br /&gt;
PlexyDesk is built with display layout awareness in mind. The configuration and compositor layout model support:&lt;br /&gt;
* more than one monitor&lt;br /&gt;
* explicit placement of outputs in desktop space&lt;br /&gt;
* per-layout presets&lt;br /&gt;
* desktop-space positioning that keeps pointer movement and window placement coherent across screens&lt;br /&gt;
&lt;br /&gt;
=== Backgrounds and appearance ===&lt;br /&gt;
The shell supports desktop appearance controls such as:&lt;br /&gt;
* theme selection&lt;br /&gt;
* UI scale factor control&lt;br /&gt;
* wallpaper backgrounds&lt;br /&gt;
* animated background modes&lt;br /&gt;
* compositor tuning for chrome, blur, and window presentation&lt;br /&gt;
* dock and terminal appearance settings through configuration&lt;br /&gt;
&lt;br /&gt;
=== Stability through application isolation ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Internal building blocks ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Area&lt;br /&gt;
! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Compositor, backend, renderer, input, protocol, and shell code&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Client-side support libraries and event loop code&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;include/plexy/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Public API headers such as &amp;lt;code&amp;gt;plexy_ui.h&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;examples/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Small client and UI examples&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;apps/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Application experiments such as terminal, browser, clock, calculator, and file manager&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;tasks/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Engineering notes, implementation summaries, and optimization work&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Explore the project ==&lt;br /&gt;
* [[Architecture]] - a deeper technical explanation of how the compositor and client stack fit together&lt;br /&gt;
* [[Developer Guide]] - where the important source files and subsystems live&lt;br /&gt;
* [[Examples]] - small programs that show what PlexyDesk applications can look like&lt;br /&gt;
* [[Development Status]] - implementation notes and the current shape of the project&lt;br /&gt;
&lt;br /&gt;
== Current state ==&lt;br /&gt;
PlexyDesk already includes a functioning compositor shell, a built-in dock and menubar, a GPU-driven rendering path, and a native application UI toolkit. Work is ongoing across performance, compatibility, and broader desktop behaviour, 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.&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Main_Page&amp;diff=7</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Main_Page&amp;diff=7"/>
		<updated>2026-03-21T19:32:57Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Set up PlexyDesk wiki landing page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= PlexyDesk =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PlexyDesk&#039;&#039;&#039; 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 &amp;lt;code&amp;gt;libplexycanvas&amp;lt;/code&amp;gt; and submit frames to the compositor using DMA-BUF-backed buffers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ PlexyDesk at a glance&lt;br /&gt;
|-&lt;br /&gt;
! Focus&lt;br /&gt;
| GPU-accelerated compositor and desktop shell for Linux&lt;br /&gt;
|-&lt;br /&gt;
! Runtime&lt;br /&gt;
| &amp;lt;code&amp;gt;plexyshell&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Client stack&lt;br /&gt;
| &amp;lt;code&amp;gt;libplexy&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;libplexycanvas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;libplexyui&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Build system&lt;br /&gt;
| GNU Make with C11 and C++20&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| AGPL-3.0-only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== What makes it interesting ==&lt;br /&gt;
* GPU-first desktop shell with compositor effects built into the core runtime&lt;br /&gt;
* Custom display protocol optimized for local client rendering and DMA-BUF frame handoff&lt;br /&gt;
* macOS-inspired polish including blur, glass materials, dock magnification, and animated window effects&lt;br /&gt;
* Multi-monitor oriented architecture with a built-in shell instead of a separate panel-and-window-manager stack&lt;br /&gt;
&lt;br /&gt;
== Core features ==&lt;br /&gt;
* Glass materials with blur, refraction, and shader-based visual effects&lt;br /&gt;
* Resolution-independent SDF rendering for chrome and widgets&lt;br /&gt;
* Built-in dock with hover magnification, launch animation, and running indicators&lt;br /&gt;
* Menubar integration with application title, menus, and clock&lt;br /&gt;
* PlexyUI widget toolkit with buttons, sliders, text input, sidebars, drawers, list views, and more&lt;br /&gt;
* Client isolation: applications render locally and submit frames to the compositor instead of drawing directly into the shell&lt;br /&gt;
* Native compositor work plus active bridge work around Wayland and X11 compatibility&lt;br /&gt;
&lt;br /&gt;
== Quick start ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Install dependencies on Debian/Ubuntu&lt;br /&gt;
./install-deps.sh&lt;br /&gt;
&lt;br /&gt;
# Build the compositor&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
# Run PlexyDesk&lt;br /&gt;
./plexyshell&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For debug builds:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BUILD_MODE=debug make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Documentation guide ==&lt;br /&gt;
* [[Getting Started]] - dependencies, build, run, systemd service, and package workflow&lt;br /&gt;
* [[Architecture]] - compositor model, client libraries, protocol flow, and repository layout&lt;br /&gt;
* [[Developer Guide]] - what to read first and where to work in the source tree&lt;br /&gt;
* [[Examples]] - minimal PlexyUI code plus example programs worth studying&lt;br /&gt;
* [[Development Status]] - current shape of the project and useful implementation notes&lt;br /&gt;
&lt;br /&gt;
== Repository map ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Area&lt;br /&gt;
! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Compositor, backend, renderer, input, protocol, and shell code&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Client-side support libraries and event loop code&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;include/plexy/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Public API headers such as &amp;lt;code&amp;gt;plexy_ui.h&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;examples/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Small client and UI examples&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;apps/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Application experiments such as terminal, browser, clock, calculator, and file manager&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;scripts/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Packaging, systemd, and development helpers&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;docker/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ubuntu container workflow for building &amp;lt;code&amp;gt;.deb&amp;lt;/code&amp;gt; packages&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;tasks/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Engineering notes, implementation summaries, and optimization work&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Project status ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Suggested next pages ==&lt;br /&gt;
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]].&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Development_Status&amp;diff=6</id>
		<title>Development Status</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Development_Status&amp;diff=6"/>
		<updated>2026-03-21T19:32:57Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Add development status page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Development Status =&lt;br /&gt;
&lt;br /&gt;
PlexyDesk is an active engineering project. It already contains a working compositor shell, rendering pipeline, widget toolkit, and supporting examples, but it should still be treated as a development platform rather than a finished consumer desktop.&lt;br /&gt;
&lt;br /&gt;
== Working areas already visible in the tree ==&lt;br /&gt;
* compositor runtime and shell rendering&lt;br /&gt;
* dock and menubar&lt;br /&gt;
* widget toolkit and retained layout API&lt;br /&gt;
* example applications and experiments&lt;br /&gt;
* packaging and systemd helpers&lt;br /&gt;
* bridge and compatibility work around Wayland and X11&lt;br /&gt;
&lt;br /&gt;
== Areas that still read as active work ==&lt;br /&gt;
* broader application compatibility&lt;br /&gt;
* input and clipboard edge cases&lt;br /&gt;
* bridge robustness and performance tuning&lt;br /&gt;
* memory, damage tracking, and async rendering refinement&lt;br /&gt;
&lt;br /&gt;
== Useful engineering notes in the repository ==&lt;br /&gt;
The &amp;lt;code&amp;gt;tasks/&amp;lt;/code&amp;gt; directory contains implementation notes and change summaries including:&lt;br /&gt;
* &amp;lt;code&amp;gt;ASYNC_RENDERING_COMPLETE.md&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;DAMAGE_TRACKING_IMPLEMENTATION.md&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;IMPLEMENTATION_COMPLETE.md&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;VRAM_LEAK_ANALYSIS.md&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;VRAM_LEAK_FIXES_APPLIED.md&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;X11_FLUSH_FIX_SUMMARY.md&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;WORLD_CLASS_OPTIMIZATION_STRATEGY.md&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suggested workflow for contributors ==&lt;br /&gt;
# Read [[Getting Started]]&lt;br /&gt;
# Build a debug tree&lt;br /&gt;
# Run and inspect the smallest examples&lt;br /&gt;
# Read [[Architecture]] and [[Developer Guide]]&lt;br /&gt;
# Use the task documents to understand current priorities before making larger changes&lt;br /&gt;
&lt;br /&gt;
== Related pages ==&lt;br /&gt;
* [[Main Page]]&lt;br /&gt;
* [[Getting Started]]&lt;br /&gt;
* [[Architecture]]&lt;br /&gt;
* [[Developer Guide]]&lt;br /&gt;
* [[Examples]]&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Examples&amp;diff=5</id>
		<title>Examples</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Examples&amp;diff=5"/>
		<updated>2026-03-21T19:32:56Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Add examples reference&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Examples =&lt;br /&gt;
&lt;br /&gt;
The repository includes a small collection of examples that are useful both as smoke tests and as reference code for application authors.&lt;br /&gt;
&lt;br /&gt;
== Minimal PlexyUI example ==&lt;br /&gt;
The following example is based on &amp;lt;code&amp;gt;examples/hello_uikit.c&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;amp;lt;plexy_ui.h&amp;amp;gt;&lt;br /&gt;
#include &amp;amp;lt;stdio.h&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
static void on_click(uint32_t widget_id, void* userdata) {&lt;br /&gt;
    printf(&amp;quot;Button clicked! (widget %u)\n&amp;quot;, widget_id);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
    PlexyApp* app = plexy_app_create(&amp;quot;Hello UIKit&amp;quot;);&lt;br /&gt;
    PlexyWindow* win = plexy_window_create(app, 400, 300, &amp;quot;Hello PlexyDesk&amp;quot;);&lt;br /&gt;
    uint32_t root = plexy_window_root(win);&lt;br /&gt;
&lt;br /&gt;
    plexy_padding(win, root, 24, 24, 24, 24);&lt;br /&gt;
    plexy_gap(win, root, 16);&lt;br /&gt;
    plexy_justify(win, root, PLEXY_JUSTIFY_CENTER);&lt;br /&gt;
    plexy_align(win, root, PLEXY_ALIGN_CENTER);&lt;br /&gt;
&lt;br /&gt;
    uint32_t title = plexy_label(win, root, &amp;quot;Welcome to PlexyDesk UIKit&amp;quot;);&lt;br /&gt;
    plexy_set_text_color_hex(win, title, &amp;quot;#1f2937&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    uint32_t btn = plexy_button(win, root, &amp;quot;Click Me&amp;quot;);&lt;br /&gt;
    plexy_set_fill_color_hex(win, btn, &amp;quot;#3b82f6&amp;quot;);&lt;br /&gt;
    plexy_set_text_color_hex(win, btn, &amp;quot;#ffffff&amp;quot;);&lt;br /&gt;
    plexy_on_click(win, btn, on_click, NULL);&lt;br /&gt;
&lt;br /&gt;
    plexy_app_run(app);&lt;br /&gt;
    plexy_app_destroy(app);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Build and run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gcc -o hello_uikit hello_uikit.c -L../lib -lplexyui&lt;br /&gt;
./hello_uikit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Useful example files ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File&lt;br /&gt;
! Why it is useful&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;examples/hello_uikit.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Smallest usable PlexyUI program&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;examples/hello_client.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Lightweight client-side entry point&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;examples/canvas_demo.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Canvas and rendering-oriented example&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;examples/drawer_demo.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Drawer and interaction example&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;examples/plexy_dock.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Dock-related shell UI ideas&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;examples/settings_panel.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Structured settings-style interface&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;examples/showcase_demo.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Broader demonstration page for the toolkit&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;examples/widget_demo.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Widget coverage and visual output&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== What to learn from the examples ==&lt;br /&gt;
* how to create an application and a root window&lt;br /&gt;
* how layout is controlled with padding, gap, justify, align, and rows or columns&lt;br /&gt;
* how to style widgets with color, radius, elevation, and glass-related helpers&lt;br /&gt;
* how to bind click and value callbacks&lt;br /&gt;
* how client programs fit into the compositor model&lt;br /&gt;
&lt;br /&gt;
== Next step ==&lt;br /&gt;
After reading the examples, continue with [[Developer Guide]] and [[Architecture]].&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Developer_Guide&amp;diff=4</id>
		<title>Developer Guide</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Developer_Guide&amp;diff=4"/>
		<updated>2026-03-21T19:32:55Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Add developer guide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Developer Guide =&lt;br /&gt;
&lt;br /&gt;
This page is a practical map for engineers who want to read or modify the PlexyDesk source tree.&lt;br /&gt;
&lt;br /&gt;
== Read these first ==&lt;br /&gt;
* &amp;lt;code&amp;gt;tasks/README.md&amp;lt;/code&amp;gt; - current work areas and implementation notes&lt;br /&gt;
* &amp;lt;code&amp;gt;install-deps.sh&amp;lt;/code&amp;gt; - the fastest view of build and system dependencies&lt;br /&gt;
* &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt; - build modes, active runtime entry points, and source grouping&lt;br /&gt;
* &amp;lt;code&amp;gt;include/plexy/plexy_ui.h&amp;lt;/code&amp;gt; - public client API&lt;br /&gt;
* &amp;lt;code&amp;gt;examples/hello_uikit.c&amp;lt;/code&amp;gt; - smallest useful UI example&lt;br /&gt;
* &amp;lt;code&amp;gt;docker/README.md&amp;lt;/code&amp;gt; - package build workflow&lt;br /&gt;
* &amp;lt;code&amp;gt;plexyshell.conf.example&amp;lt;/code&amp;gt; - runtime configuration surface&lt;br /&gt;
&lt;br /&gt;
== Key source areas ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Path&lt;br /&gt;
! What you will find there&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/renderer/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Compositing, window effects, dock, menubar, shaders, async renderer, and GPU configuration&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/backend/&amp;lt;/code&amp;gt;&lt;br /&gt;
| DRM, X11-related display backend code, session management, and display backend selection&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/input/&amp;lt;/code&amp;gt;&lt;br /&gt;
| libinput integration, focus policy, and input coordination&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/core/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Shell runtime, event loop, dock manager, drag/resize state, and display layout state&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/server/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Compositor-side protocol server&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/wayland/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Wayland bridge and XWM interoperability work&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/canvas/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Canvas rendering, text, layout, styling, and animation support&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Client-side event loop and protocol support&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Build workflow ==&lt;br /&gt;
Standard release build:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verbose debug build:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BUILD_MODE=debug make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Public client API ==&lt;br /&gt;
The main client-facing API lives in &amp;lt;code&amp;gt;include/plexy/plexy_ui.h&amp;lt;/code&amp;gt;. It covers:&lt;br /&gt;
* application and window lifecycle&lt;br /&gt;
* widget creation&lt;br /&gt;
* layout primitives such as row, column, justify, align, padding, and gap&lt;br /&gt;
* state changes such as visibility, text, value, and enabled state&lt;br /&gt;
* styling helpers such as corner radius, fill color, elevation, and glass material&lt;br /&gt;
* event hooks for clicks, values, text changes, keys, and menus&lt;br /&gt;
&lt;br /&gt;
== Example-driven learning ==&lt;br /&gt;
The best small files to read early are:&lt;br /&gt;
* &amp;lt;code&amp;gt;examples/hello_uikit.c&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;examples/canvas_demo.c&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;examples/drawer_demo.c&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;examples/settings_panel.c&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;examples/showcase_demo.c&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Applications and experiments ==&lt;br /&gt;
The &amp;lt;code&amp;gt;apps/&amp;lt;/code&amp;gt; directory includes larger experiments such as:&lt;br /&gt;
* &amp;lt;code&amp;gt;plexy_term&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;plexy_browser&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;plexy_clock&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;fileman&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;pcalc&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;vim&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packaging and service helpers ==&lt;br /&gt;
* &amp;lt;code&amp;gt;docker/README.md&amp;lt;/code&amp;gt; explains the Ubuntu Docker package flow&lt;br /&gt;
* &amp;lt;code&amp;gt;scripts/systemd/&amp;lt;/code&amp;gt; contains the user slice, service, installer, starter, and status helpers&lt;br /&gt;
&lt;br /&gt;
== Good follow-up pages ==&lt;br /&gt;
* [[Architecture]]&lt;br /&gt;
* [[Getting Started]]&lt;br /&gt;
* [[Examples]]&lt;br /&gt;
* [[Development Status]]&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Architecture&amp;diff=3</id>
		<title>Architecture</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Architecture&amp;diff=3"/>
		<updated>2026-03-21T19:32:55Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Add architecture overview&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Architecture =&lt;br /&gt;
&lt;br /&gt;
PlexyDesk combines a compositor, desktop shell, client libraries, and a custom display protocol into one system.&lt;br /&gt;
&lt;br /&gt;
== High-level model ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Layer&lt;br /&gt;
! Role&lt;br /&gt;
|-&lt;br /&gt;
| Client application&lt;br /&gt;
| Creates windows and widgets through PlexyDesk APIs&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;libplexyui&amp;lt;/code&amp;gt;&lt;br /&gt;
| High-level C API for widgets, layout, events, and styling&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;libplexycanvas&amp;lt;/code&amp;gt;&lt;br /&gt;
| Local rendering of widgets, text, layout, and GPU effects&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;libplexy&amp;lt;/code&amp;gt;&lt;br /&gt;
| Protocol and DMA-BUF frame handoff support&lt;br /&gt;
|-&lt;br /&gt;
| Unix socket protocol&lt;br /&gt;
| Communication path between clients and compositor&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;plexyshell&amp;lt;/code&amp;gt;&lt;br /&gt;
| Compositor and desktop shell runtime&lt;br /&gt;
|-&lt;br /&gt;
| Backend stack&lt;br /&gt;
| DRM/KMS, input handling, OpenGL, and compatibility bridge code&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Render flow ==&lt;br /&gt;
# A client creates UI using functions from &amp;lt;code&amp;gt;plexy_ui.h&amp;lt;/code&amp;gt;.&lt;br /&gt;
# The client renders its widget tree locally using &amp;lt;code&amp;gt;libplexycanvas&amp;lt;/code&amp;gt;.&lt;br /&gt;
# The rendered frame is handed to the compositor using the PlexyDesk protocol and DMA-BUF-backed buffers.&lt;br /&gt;
# The compositor composites all visible client surfaces, applies shell chrome and effects, and renders desktop elements such as the dock and menubar.&lt;br /&gt;
&lt;br /&gt;
== Design direction ==&lt;br /&gt;
PlexyDesk is not presented as a generic Wayland replacement. The codebase is built around a GPU-first rendering path and a project-specific display protocol, while also carrying active bridge work around Wayland and X11 interoperability.&lt;br /&gt;
&lt;br /&gt;
== Important runtime pieces ==&lt;br /&gt;
* &amp;lt;code&amp;gt;src/shells/gnu_liquid/main.cpp&amp;lt;/code&amp;gt; is the active compositor runtime entry point described in the Makefile&lt;br /&gt;
* &amp;lt;code&amp;gt;src/renderer/&amp;lt;/code&amp;gt; contains compositor rendering, background, dock, menubar, shader, and async rendering code&lt;br /&gt;
* &amp;lt;code&amp;gt;src/backend/&amp;lt;/code&amp;gt; contains DRM and display backend support&lt;br /&gt;
* &amp;lt;code&amp;gt;src/input/&amp;lt;/code&amp;gt; contains libinput integration and focus policy code&lt;br /&gt;
* &amp;lt;code&amp;gt;src/server/&amp;lt;/code&amp;gt; contains socket server code for the compositor side of the protocol&lt;br /&gt;
* &amp;lt;code&amp;gt;src/wayland/&amp;lt;/code&amp;gt; contains bridge and interoperability work including XWM-related files&lt;br /&gt;
* &amp;lt;code&amp;gt;src/core/&amp;lt;/code&amp;gt; contains shell runtime, event loop, dock manager, and display layout state&lt;br /&gt;
&lt;br /&gt;
== Public API surface ==&lt;br /&gt;
The public API is exposed through headers in &amp;lt;code&amp;gt;include/plexy/&amp;lt;/code&amp;gt;. In particular, &amp;lt;code&amp;gt;plexy_ui.h&amp;lt;/code&amp;gt; documents:&lt;br /&gt;
* application lifecycle&lt;br /&gt;
* window creation&lt;br /&gt;
* widget creation&lt;br /&gt;
* flexbox-like layout controls&lt;br /&gt;
* styling helpers&lt;br /&gt;
* event callbacks&lt;br /&gt;
* desktop menubar integration&lt;br /&gt;
&lt;br /&gt;
== Repository structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Path&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Main compositor, runtime, renderer, input, backend, and bridge code&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;lib/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Shared client-side support libraries&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;include/plexy/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Public headers for application authors&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;examples/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Small standalone sample applications&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;apps/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Larger experiments such as terminal, browser, clock, and utilities&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;tasks/&amp;lt;/code&amp;gt;&lt;br /&gt;
| Engineering notes and implementation logs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Development note ==&lt;br /&gt;
The Makefile notes that the old &amp;lt;code&amp;gt;src/uikit/&amp;lt;/code&amp;gt; code remains in the repository, but is no longer compiled into the compositor. The compositor now consumes the canvas library through the C API instead.&lt;br /&gt;
&lt;br /&gt;
== Related pages ==&lt;br /&gt;
* [[Getting Started]]&lt;br /&gt;
* [[Developer Guide]]&lt;br /&gt;
* [[Examples]]&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
	<entry>
		<id>https://plexydesk.org/index.php?title=Getting_Started&amp;diff=2</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="https://plexydesk.org/index.php?title=Getting_Started&amp;diff=2"/>
		<updated>2026-03-21T19:32:54Z</updated>

		<summary type="html">&lt;p&gt;Plexydesk: Add getting started guide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Getting Started =&lt;br /&gt;
&lt;br /&gt;
This page is the fastest path from a fresh clone to a running PlexyDesk build.&lt;br /&gt;
&lt;br /&gt;
== Recommended environment ==&lt;br /&gt;
PlexyDesk is currently easiest to build on Debian or Ubuntu style systems with a working GPU stack, DRM/KMS access, and a user session where you can start the compositor from a TTY.&lt;br /&gt;
&lt;br /&gt;
== Install dependencies ==&lt;br /&gt;
Run the dependency installer from the repository root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./install-deps.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The script installs:&lt;br /&gt;
* build tools such as &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;g++&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meson&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;ninja&amp;lt;/code&amp;gt;&lt;br /&gt;
* graphics libraries including DRM, GBM, EGL, OpenGL, GLEW, and related Mesa packages&lt;br /&gt;
* input and system libraries such as &amp;lt;code&amp;gt;libinput&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;libudev&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;libsystemd&amp;lt;/code&amp;gt;&lt;br /&gt;
* Wayland and X11/Xorg development packages&lt;br /&gt;
* font and text rendering packages including Pango, FreeType, and Fontconfig&lt;br /&gt;
* optional WebKitGTK support for browser-oriented examples&lt;br /&gt;
&lt;br /&gt;
== Build the project ==&lt;br /&gt;
Release build:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Debug build with verbose logging:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BUILD_MODE=debug make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Makefile defaults to a release build and applies aggressive optimization flags there. Debug mode keeps symbols and turns on additional logging macros.&lt;br /&gt;
&lt;br /&gt;
== Run PlexyDesk ==&lt;br /&gt;
The simplest direct launch is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./plexyshell&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Run with systemd user units ==&lt;br /&gt;
System installs and package installs place user units for the shell runtime:&lt;br /&gt;
* &amp;lt;code&amp;gt;plexy.slice&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;plexyshell.service&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typical flow:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make install&lt;br /&gt;
systemctl --user start plexyshell.service&lt;br /&gt;
./scripts/systemd/status-plexyshell-service.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a development machine where you do not want a system-wide install, use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./scripts/systemd/install-user-units.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build a .deb package ==&lt;br /&gt;
The repository includes a Docker-assisted package flow for Ubuntu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x scripts/docker-build-ubuntu-deb.sh&lt;br /&gt;
./scripts/docker-build-ubuntu-deb.sh 22.04 dist&lt;br /&gt;
# or&lt;br /&gt;
./scripts/docker-build-ubuntu-deb.sh 24.04 dist&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The package is written into &amp;lt;code&amp;gt;dist/&amp;lt;/code&amp;gt;. After installing it on a target machine, launch PlexyDesk with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
plexydesk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run it as your normal user from a TTY session, not as root.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
The example configuration file documents the supported sections and defaults. Expected locations are:&lt;br /&gt;
* &amp;lt;code&amp;gt;$XDG_CONFIG_HOME/plexyshell/plexyshell.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/plexyshell/plexyshell.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Common sections include:&lt;br /&gt;
* &amp;lt;code&amp;gt;[appearance]&amp;lt;/code&amp;gt; for theme and scale factor&lt;br /&gt;
* &amp;lt;code&amp;gt;[display]&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;[display_layout:...]&amp;lt;/code&amp;gt; for monitor placement&lt;br /&gt;
* &amp;lt;code&amp;gt;[background]&amp;lt;/code&amp;gt; for wallpaper or animated background&lt;br /&gt;
* &amp;lt;code&amp;gt;[compositor]&amp;lt;/code&amp;gt; for window chrome and effect tuning&lt;br /&gt;
* &amp;lt;code&amp;gt;[dock]&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;[menubar]&amp;lt;/code&amp;gt; for shell behavior&lt;br /&gt;
* &amp;lt;code&amp;gt;[terminal]&amp;lt;/code&amp;gt; for terminal fonts and colors&lt;br /&gt;
&lt;br /&gt;
== Basic controls ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Action&lt;br /&gt;
|-&lt;br /&gt;
| Mouse drag&lt;br /&gt;
| Move a window&lt;br /&gt;
|-&lt;br /&gt;
| Corner drag&lt;br /&gt;
| Resize a window&lt;br /&gt;
|-&lt;br /&gt;
| Tab&lt;br /&gt;
| Cycle windows&lt;br /&gt;
|-&lt;br /&gt;
| F6&lt;br /&gt;
| Toggle cylindrical desktop mode&lt;br /&gt;
|-&lt;br /&gt;
| W / Q&lt;br /&gt;
| Close focused window&lt;br /&gt;
|-&lt;br /&gt;
| Esc&lt;br /&gt;
| Exit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Where to go next ==&lt;br /&gt;
* [[Architecture]] for how the compositor and client stack fit together&lt;br /&gt;
* [[Developer Guide]] for the important source files and build entry points&lt;br /&gt;
* [[Examples]] for code you can compile and extend&lt;/div&gt;</summary>
		<author><name>Plexydesk</name></author>
	</entry>
</feed>