Skip to content
12 changes: 11 additions & 1 deletion apps/studio/forge.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,20 @@ const config: ForgeConfig = {
new MakerZIP( {}, [ 'darwin' ] ),
new MakerDeb( {
options: {
genericName: 'WordPress Studio',
// Display name for app launchers and stores. Overrides
// package.json.productName ("Studio") so Linux users see the
// fully-qualified "WordPress Studio" in their menus.
productName: 'WordPress Studio',
categories: [ 'Utility' ],
name: 'studio',
bin: 'studio',
// Synopsis and extended description shown by package managers and
// software stores. Without these, electron-installer-debian falls
// back to package.json.description for both, producing a duplicated
// Description block. Copy mirrors the Microsoft Store listing.
description: 'Meet Studio - a fast, free way to develop locally with WordPress.',

@gavande1 gavande1 May 5, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that productName is WordPress Studio, should this open with "Meet WordPress Studio" for consistency with the launcher/store name? The counter-argument is keeping it verbatim with the Microsoft Store copy. No strong opinion — what do you think? cc @ivan-ottinger

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch!

I think for now we could keep Meet Studio - a fast, free way to develop locally with WordPress. - since otherwise we would have WordPress mentioned two times there:

Meet WordPress Studio - a fast, free way to develop locally with WordPress.

We could later decide to improve the description and change it on both Microsoft Store and App Center at once.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense — the doubled "WordPress" would read awkwardly. Happy to keep it as Meet Studio … and revisit alongside the MS Store copy when we next touch it. Thanks!

productDescription:
"Simplify WordPress site creation and management with Studio - WordPress.com's powerful, lightweight local development tool. Studio streamlines your workflow with instant WordPress setup, one-click WP Admin access, and a code-agnostic environment. No Docker, MySQL, or NGINX required. Get real-time feedback from clients or collaborators with easy-to-share demo sites. And with help from Studio Assistant, you can speed up plugin management, run WP-CLI commands, and automate tasks right from the intuitive chat interface.",
mimeType: [ 'x-scheme-handler/wp-studio' ],
icon: path.join( __dirname, 'assets', 'studio-app-icon.png' ),
desktopTemplate: path.join( __dirname, 'installers', 'desktop.ejs' ),
Expand Down
4 changes: 3 additions & 1 deletion apps/studio/installers/desktop.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
Icon=<%= name %>
<% } %>Type=Application
StartupNotify=true
StartupWMClass=<%= productName %>
# Must match Electron's runtime WMClass (derived from app.getName(), i.e. package.json.name).
# Don't template from productName — the launcher icon won't group with the running window.
StartupWMClass=Studio

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if we added a short comment like this one? Just to ensure this won't get changed accidentally in the future:

Suggested change
StartupWMClass=Studio
# Must match package.json productName, or the launcher icon won't group with the running window.
StartupWMClass=Studio

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good idea — pushed the comment on the branch. One small tweak to the wording: the value needs to match Electron's runtime WMClass (derived from app.getName(), which defaults to package.json.name), not productName. That's actually why this had to be hardcoded — when Name= flipped to WordPress Studio, templating from productName would have broken the launcher grouping.

Final form:

# Must match Electron's runtime WMClass (derived from app.getName(), i.e. package.json.name).
# Don't template from productName — the launcher icon won't group with the running window.
StartupWMClass=Studio
<% if (categories && categories.length) { %>Categories=<%= categories.join(';') %>;
<% } %><% if (mimeType && mimeType.length) { %>MimeType=<%= mimeType.join(';') %>;
<% } %>
1 change: 1 addition & 0 deletions apps/studio/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"productName": "Studio",
"version": "1.8.2",
"description": "Local WordPress development environment using Playgrounds",
"homepage": "https://developer.wordpress.com/studio/",
"license": "GPL-2.0-or-later",
"main": "dist/main/index.js",
"config": {
Expand Down
Loading