Fix Studio app metadata for Linux software stores#3335
Conversation
Pre-install previewers (PackageKit GetDetailsLocal) don't read embedded metainfo, and post-install AppStream merging didn't move the needle on the snap-store/gnome-software listing. Reverting to focus this PR on the description and StartupWMClass fixes alone.
| // 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.', |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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!
📊 Performance Test ResultsComparing 2ed197e vs trunk app-size
site-editor
site-startup
Results are median values from multiple test runs. Legend: 🟢 Improvement (faster) | 🔴 Regression (slower) | ⚪ No change (<50ms diff) |
ivan-ottinger
left a comment
There was a problem hiding this comment.
Thank you for the fix, Rahul! The changes look good and work as expected. 👍🏼
One thing I noticed is that the Developer website link does not work. What I think we could do is to use the Studio site link there:
--- a/apps/studio/package.json
+++ b/apps/studio/package.json
@@ -5,6 +5,7 @@
"productName": "Studio",
"version": "1.8.2",
"description": "Local WordPress development environment u
Playgrounds",
+ "homepage": "https://developer.wordpress.com/studio/",
"license": "GPL-2.0-or-later",
"main": "dist/main/index.js",I left two comments below as well.
| <% } %>Type=Application | ||
| StartupNotify=true | ||
| StartupWMClass=<%= productName %> | ||
| StartupWMClass=Studio |
There was a problem hiding this comment.
What if we added a short comment like this one? Just to ensure this won't get changed accidentally in the future:
| StartupWMClass=Studio | |
| # Must match package.json productName, or the launcher icon won't group with the running window. | |
| StartupWMClass=Studio |
There was a problem hiding this comment.
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
| // 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.', |
There was a problem hiding this comment.
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.
….com:Automattic/studio into rsm-1313-fix-studio-app-description-on-linux
|
Thanks for the updates, Rahul! What do you think about adding that Studio site link as well?
--- a/apps/studio/package.json
+++ b/apps/studio/package.json
@@ -5,6 +5,7 @@
"productName": "Studio",
"version": "1.8.2",
"description": "Local WordPress development environment u
Playgrounds",
+ "homepage": "https://developer.wordpress.com/studio/",
"license": "GPL-2.0-or-later",
"main": "dist/main/index.js", |
|
Thanks for spotting that, @ivan-ottinger — good catch, we missed it in the previous round. Applied in a5728af exactly as you suggested. Putting it in |

Related issues
How AI was used in this PR
Used AI to:
I reviewed each diff and pushed back on changes I didn't think were right (e.g. an earlier draft used
genericNameforName=, which mismatched the runtime WMClass).Proposed Changes
forge.config.tsMakerDeb options: set explicitproductName: 'WordPress Studio'anddescription(synopsis) +productDescription(long, mirrors MS Store copy in ASCII-safe punctuation). Without these, both fields fall back topackage.json.description, producing a duplicated Description block.desktop.ejs: hardcodeStartupWMClass=Studioso the launcher entry stays linked to Electron's runtime WMClass even thoughName=is nowWordPress Studio. Without this, the launcher icon would not group with the running window.Testing Instructions
On a Linux VM:
npm run make.sudo apt purge studio.dpkg-deb -I apps/studio/out/make/deb/<arch>/studio_*.debdpkg-deb --fsys-tarfile apps/studio/out/make/deb/<arch>/studio_*.deb | tar -xO ./usr/share/applications/studio.desktopDescription:— new synopsis ("Meet Studio - ...") followed by the 3-paragraph long description..desktop—Name=WordPress Studio,Comment=Meet Studio - ...,StartupWMClass=Studio.xdg-open apps/studio/out/make/deb/<arch>/studio_*.deb).Known limitation
The pre-install software-store preview shows the lowercase Debian package name (
studio) as the title, notWordPress Studio. PackageKit's local-deb plugin doesn't read AppStream metainfo from inside .deb files, only the control fields, andPackage:must be lowercase per Debian policy. Renaming the package towordpress-studiowould address this but cascades into install paths, postinst probes, andrc-state migrations for users with existingstudioinstalls — leaving for a follow-up issue.Pre-merge Checklist