{"id":306653,"date":"2026-05-07T10:33:51","date_gmt":"2026-05-07T10:33:51","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/desktop-mode\/"},"modified":"2026-05-07T19:37:26","modified_gmt":"2026-05-07T19:37:26","slug":"desktop-mode","status":"publish","type":"plugin","link":"https:\/\/tr.wordpress.org\/plugins\/desktop-mode\/","author":23490628,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"0.8.0","stable_tag":"0.8.0","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Desktop Mode","header_author":"Daniel L\u00f3pez S\u00e1nchez","header_description":"Renders the WordPress admin as a desktop OS. Admin screens become draggable, resizable, minimizable windows floating on a desktop with a dock. Purely opt-in per user.","assets_banners_color":"2c465a","last_updated":"2026-05-07 19:37:26","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/WordPress\/desktop-mode","header_author_uri":"https:\/\/github.com\/allterraindeveloper","rating":4,"author_block_rating":0,"active_installs":0,"downloads":276,"num_ratings":3,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.7.2":{"tag":"0.7.2","author":"allterraindeveloper","date":"2026-05-07 10:18:47"},"0.8.0":{"tag":"0.8.0","author":"allterraindeveloper","date":"2026-05-07 19:37:26"}},"upgrade_notice":{"0.5.1":"<p>Adds AI Copilot extensibility (server-side tools, multi-provider support) and a title-bar button registry. Backwards-compatible.<\/p>"},"ratings":{"1":0,"2":1,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3525342,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3525342,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3525342,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3525342,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3525923,"resolution":false,"location":"assets","locale":"","contents":"{\"landingPage\":\"\\\/desktop-mode\\\/\",\"steps\":[{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/github.com\\\/WordPress\\\/desktop-mode\\\/releases\\\/latest\\\/download\\\/desktop-mode.zip\"},\"options\":{\"activate\":true}},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"desktop-mode\"},\"options\":{\"activate\":true}}]}"}},"all_blocks":[],"tagged_versions":["0.7.2","0.8.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The desktop shell \u2014 wallpaper, dock, taskbar, and a window with the admin loaded inside it.","2":"Multiple windows open across virtual desktops (Spaces).","3":"The AI Copilot Cmd+K palette in action.","4":"Custom wallpapers and widgets registered by a plugin.","5":"The Arrange menu \u2014 Cascade, Tile, Overview, Snap to grid."},"jetpack_post_was_ever_published":false},"plugin_section":[61],"plugin_tags":[83,2353,2643,2345,566],"plugin_category":[],"plugin_contributors":[262157,262158],"plugin_business_model":[],"class_list":["post-306653","plugin","type-plugin","status-publish","hentry","plugin_section-featured","plugin_tags-admin","plugin_tags-ai","plugin_tags-desktop","plugin_tags-productivity","plugin_tags-ui","plugin_contributors-allterraindeveloper","plugin_contributors-epeicher","plugin_committers-allterraindeveloper","plugin_committers-epeicher"],"banners":{"banner":"https:\/\/ps.w.org\/desktop-mode\/assets\/banner-772x250.png?rev=3525342","banner_2x":"https:\/\/ps.w.org\/desktop-mode\/assets\/banner-1544x500.png?rev=3525342","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/desktop-mode\/assets\/icon-128x128.png?rev=3525342","icon_2x":"https:\/\/ps.w.org\/desktop-mode\/assets\/icon-256x256.png?rev=3525342","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Desktop Mode renders \/wp-admin as a desktop operating system. Admin screens open as draggable, resizable, minimizable windows on a desktop, with a left-edge dock built from the admin menu. The classic admin stays untouched for everyone else, and deactivating the plugin restores vanilla Core exactly.<\/p>\n\n<p>Zero Core patches. Every feature is wired through public WordPress hooks.<\/p>\n\n<h4>Highlights<\/h4>\n\n<ul>\n<li><strong>Per-user opt-in.<\/strong> An admin-bar toggle flips a user-meta flag; nobody else sees any change.<\/li>\n<li><strong>Window system.<\/strong> Iframe windows load admin pages chromelessly. Native windows render directly in the parent DOM via a public registration API. Both share drag, resize, minimize, maximize, fullscreen, and detach-to-new-tab.<\/li>\n<li><strong>Dock + taskbar.<\/strong> Left-edge dock for core menus; bottom macOS-style pill taskbar for plugin menus. Letter-badge icon fallback for plugins without icon art.<\/li>\n<li><strong>Virtual desktops (\"Spaces\").<\/strong> Multiple desktops per user, each with its own window set. Overview grid surfaces the Spaces switcher and thumbnails.<\/li>\n<li><strong>Arrange &amp; snap.<\/strong> Cascade, Tile, Overview, Snap-to-grid. Plugins contribute custom entries.<\/li>\n<li><strong>Wallpaper &amp; widget registries.<\/strong> Server- and client-side registration. CSS presets plus canvas (WebGL\/2D) wallpapers with collision-aware surface data for snow\/rain\/physics effects.<\/li>\n<li><strong>Desktop icons.<\/strong> Wallpaper-layer shortcuts that open native windows or admin URLs.<\/li>\n<li><strong>AI Copilot (optional).<\/strong> Cmd+K palette backed by an agentic loop with built-in search tools. Disabled until you supply an API key. See \"External services\" below.<\/li>\n<li><strong>Slash commands &amp; palettes.<\/strong> Public registration APIs for plugin authors.<\/li>\n<li><strong>Cross-frame drag bridge.<\/strong> Media-library attachments drag across iframe boundaries.<\/li>\n<li><strong>Session persistence.<\/strong> Window stack (including desktops, focus, state) restored across reloads.<\/li>\n<li><strong>i18n.<\/strong> Full gettext coverage across PHP and TypeScript; Spanish translation shipped.<\/li>\n<\/ul>\n\n<h4>For plugin authors<\/h4>\n\n<p>Desktop Mode is built to be extended. Every significant behavior is hookable \u2014 add a desktop icon, register a dock item, gate desktop mode by role, react to window events, or register a native window, all from your own plugin with zero patches here.<\/p>\n\n<p>Comprehensive PHP and JavaScript hook surface, plus stable <code>desktop_mode_register_*<\/code> functions for windows, widgets, wallpapers, icons, window tabs, commands, settings tabs, and AI tools. See the <a href=\"https:\/\/github.com\/WordPress\/desktop-mode\/tree\/trunk\/docs\">developer docs on GitHub<\/a>.<\/p>\n\n<h4>External services<\/h4>\n\n<p>This plugin's optional <strong>AI Copilot<\/strong> sends data to <strong>OpenAI<\/strong> (<code>https:\/\/api.openai.com\/v1\/responses<\/code>) when, and only when, an administrator configures an OpenAI API key in <strong>Settings \u2192 AI<\/strong>. With no key configured, no external requests are made.<\/p>\n\n<p>When the AI Copilot is enabled and a user invokes it (via Cmd+K or the slash-command palette):<\/p>\n\n<ul>\n<li><strong>What is sent:<\/strong> the user's prompt, the conversation history for the active session, the chosen model identifier (e.g. <code>gpt-4o-mini<\/code>), and tool-call metadata. The plugin's built-in tools (<code>search_posts<\/code>, <code>search_pages<\/code>, <code>search_comments<\/code>) may include excerpts of the matching posts\/pages\/comments in tool results, which are then sent back to OpenAI as part of the agentic loop.<\/li>\n<li><strong>When it is sent:<\/strong> on user-initiated AI requests, and (if enabled) on <code>save_post<\/code>, term-save, and comment-save hooks for auto-analysis. Auto-analysis runs server-side as part of the post-save flow.<\/li>\n<li><strong>Why it is sent:<\/strong> to obtain model completions and tool-call decisions that drive the AI Copilot.<\/li>\n<li><strong>Who provides the service:<\/strong> OpenAI, L.L.C. \u2014 see the <a href=\"https:\/\/openai.com\/policies\/row-terms-of-use\/\">OpenAI Terms of Use<\/a> and the <a href=\"https:\/\/openai.com\/policies\/row-privacy-policy\/\">OpenAI Privacy Policy<\/a>.<\/li>\n<\/ul>\n\n<p>The AI Copilot's provider layer is also extensible: third-party plugins may register additional providers via <code>desktop_mode_register_ai_provider()<\/code>. Those providers may send data to other endpoints; review each plugin's own privacy disclosure separately.<\/p>\n\n<p>No other external services are contacted by this plugin.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code>, or install via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Click the <strong>desktop<\/strong> icon in the admin bar's top-right corner. The admin reloads inside the desktop shell.<\/li>\n<li>Click the same icon again at any time to return to the classic admin.<\/li>\n<\/ol>\n\n<h4>Optional: enable the AI Copilot<\/h4>\n\n<ol>\n<li>Open <strong>Settings \u2192 AI<\/strong> inside desktop mode.<\/li>\n<li>Paste an OpenAI API key and pick a model.<\/li>\n<li>Press <strong>Cmd+K<\/strong> (or <strong>Ctrl+K<\/strong>) anywhere in desktop mode to open the AI palette.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20change%20anything%20for%20users%20who%20don%27t%20opt%20in%3F\"><h3>Does this change anything for users who don't opt in?<\/h3><\/dt>\n<dd><p>No. The classic admin is untouched until a user toggles desktop mode on for themselves. Deactivating the plugin restores vanilla Core exactly.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20require%20an%20external%20service%20to%20function%3F\"><h3>Does the plugin require an external service to function?<\/h3><\/dt>\n<dd><p>No. The desktop shell, windowing, dock, taskbar, virtual desktops, widgets, wallpapers, and all extension APIs work entirely on-site. The AI Copilot is the only feature that contacts an external service, and it is disabled until an administrator configures an API key. See \"External services\" in the description.<\/p><\/dd>\n<dt id=\"does%20it%20patch%20wordpress%20core%3F\"><h3>Does it patch WordPress core?<\/h3><\/dt>\n<dd><p>No. Every feature is wired through public WordPress actions and filters.<\/p><\/dd>\n<dt id=\"how%20do%20i%20disable%20desktop%20mode%20for%20my%20user%3F\"><h3>How do I disable desktop mode for my user?<\/h3><\/dt>\n<dd><p>Click the desktop icon in the admin bar a second time to flip the toggle off. The plugin can also be deactivated globally from the Plugins screen.<\/p><\/dd>\n<dt id=\"where%20is%20the%20developer%20documentation%3F\"><h3>Where is the developer documentation?<\/h3><\/dt>\n<dd><p>In <code>docs\/<\/code> inside the plugin, and on <a href=\"https:\/\/github.com\/WordPress\/desktop-mode\/tree\/trunk\/docs\">GitHub<\/a>. The hook reference, JavaScript reference, bridge protocol, and copy-paste examples all live there.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.5.1<\/h4>\n\n<ul>\n<li>Code editor and framework improvements.<\/li>\n<li>Enhanced AI provider integration: third-party providers may register through <code>desktop_mode_register_ai_provider()<\/code>.<\/li>\n<li>Title-bar button registry with icon painting for plugin authors.<\/li>\n<li>OS Settings tabs are now extensible via <code>desktop_mode_register_settings_tab_script()<\/code> \/ <code>desktop_mode_register_settings_tab()<\/code>.<\/li>\n<li>AI Copilot extensibility: server-side tool registry (<code>desktop_mode_register_ai_tool()<\/code>) and client-side <code>wp.desktop.ai.ask()<\/code> programmatic entry point.<\/li>\n<li>UI component kit expansion (~25 <code>&lt;wpd-*&gt;<\/code> web components).<\/li>\n<li>Backtick hotkey to cycle window focus.<\/li>\n<li>Unified command palettes via the palette registry.<\/li>\n<li>OS Settings Help tab.<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>Command registration APIs (<code>desktop_mode_register_command_script()<\/code> \/ <code>desktop_mode_register_command()<\/code>) with live install\/activate refresh.<\/li>\n<li>Media-library enhancement enabled by default, with opt-out.<\/li>\n<li>Dock CSS selectors updated; overflow handling improved.<\/li>\n<\/ul>\n\n<p>See the <a href=\"https:\/\/github.com\/WordPress\/desktop-mode\/releases\">GitHub releases page<\/a> for the full history.<\/p>","raw_excerpt":"Reimagines the WordPress admin as a desktop OS \u2014 draggable, resizable, minimizable windows on a desktop, with a dock. Purely opt-in per user.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/306653","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=306653"}],"author":[{"embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/allterraindeveloper"}],"wp:attachment":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=306653"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=306653"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=306653"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=306653"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=306653"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=306653"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}