Repository navigation
Conversation
c72c0cc to
2bfde97
Compare
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a small, self-contained Linux desktop integration fix that aligns launcher metadata with the existing runtime app identity and validates the generated configuration with a test. Its impact is limited to correct dock/window grouping, with no schema, security, deployment, or static-analysis changes. Notes:
You can add or adjust custom eligibility rules. Learn more. |
2bfde97 to
532afb5
Compare
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Essentials Run ID: 📥 CommitsReviewing files that changed from the base of the PR and between e16b8b0 and e23c2b8b5686346bf351f379a4deb10de3e89ed1. 📒 Files selected for processing (4)
📝 WalkthroughWalkthroughLinux desktop entries now use ChangesLinux icon integration
Estimated code review effort: 3 (Moderate) | ~20 minutes Priority: ➖ Normal Severity of issue fixed: Low Suggested reviewers: Sequence Diagram(s)sequenceDiagram
participant DesktopPreReadyPlatform
participant linuxDesktopIconInstallOperations
participant APPDIR
participant UserHicolorTree
participant gtk-update-icon-cache
DesktopPreReadyPlatform->>linuxDesktopIconInstallOperations: Build icon installation operations
linuxDesktopIconInstallOperations-->>DesktopPreReadyPlatform: Return packaged and user icon paths
DesktopPreReadyPlatform->>APPDIR: Read packaged icon metadata
DesktopPreReadyPlatform->>UserHicolorTree: Copy changed icons
DesktopPreReadyPlatform->>gtk-update-icon-cache: Refresh the icon cache
Merge Risk: ⚪ Minimal · up to Linux AppImage startup now installs the lowercase desktop identity and icon aliases needed for Wayland compositor icon lookup. The desktop-entry and icon-copy behavior are covered, with no current merge-blocking risk identified. 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
Full details: Description checkExplanation The description is largely inconsistent with the changes. It states that the window identity and capture bindings are unchanged and describes StartupWMClass changes, while the changes update Linux app IDs, desktop entries, icon installation, and GNOME trust patterns. Resolution Rewrite the description to accurately document the lowercase com.t3tools.t3code app ID migration, renamed desktop entries, Icon=t3code metadata, packaged icon installation into the user theme, icon-cache refresh, affected Linux environments, and known limitations. Update the Why and UI Changes sections to match the actual implementation.
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
bc99164 to
b395768
Compare
b395768 to
fc4ce90
Compare
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
Dismissing prior approval to re-evaluate fc4ce90
a73be9a to
958ff97
Compare
958ff97 to
28ff6c3
Compare
d637097 to
e23c2b8
Compare
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
e23c2b8 to
7a18e2a
Compare
eliath
left a comment
There was a problem hiding this comment.
Reproduced on Ubuntu GNOME/X11 with nightly AppImage 0.0.41-nightly.20260911.1551
The root cause mentioned here matches my investigation: the generated com.t3tools.T3Code.desktop is rewritten on each launch without Icon=. This change fixes it.
|
Built and tested this branch on GNOME 46 with an AppImage. One finding. Ubuntu 24.04.5, GNOME Shell 46.0 on X11, Ubuntu Dock v90. I fetched the PR head, rebased onto current Everything the PR claims, it does. The entry it wrote carries GTK resolves them, so this is not just files in the right place: The finding is that third line. The window's identity is mixed-case Scope limits, so this isn't read as more than it is: the isolated Separately: I hit this bug independently before finding #10894 and reached the same diagnosis. Prepared with Claude Opus 5 via Claude Code. |
|
Confirmed this fixes the duplicate dock icon for the official I merged this branch onto current I then applied that same |
7a18e2a to
07f6c6c
Compare
07f6c6c to
0f9f287
Compare
|
Thanks for testing on GNOME 46. You're right that theme lookup is case-sensitive, and the branch now also installs Where the literal filename is used:
|
juliusmarminge
left a comment
There was a problem hiding this comment.
The code looks ready at this head. The 99 focused desktop/startup/packaging tests passed locally, and the earlier blocking-startup and same-size stale-icon findings are fixed. Electron's window identity behavior also supports the StartupWMClass change.
Please add before/after screenshots before merging, as required by this repository's UI-change instructions. Show the affected Linux dock/overview state, including the corrected icon and the running window grouped under the visible launcher. A short recording is useful if demonstrating pinning and relaunch rather than static screenshots. Existing reviewer reports are useful, but the PR currently explicitly omits visual evidence.
This request is for review evidence, not a code defect. I did not perform desktop visual verification.
Reviewed with GPT-6 in Codex.
Screenshots@juliusmarminge Added before/after screenshots, also inlined in the description. Ubuntu 26.04, GNOME Shell 50.1 on Wayland, Ubuntu Dock. T3 Code is pinned, launched from the pin, closed, and relaunched from it. Before is today's nightly Before: the running window appears as a second dock entry. After: the running window is grouped under the pinned launcher. After: relaunched from the pinned launcher, still one entry. |
juliusmarminge
left a comment
There was a problem hiding this comment.
The StartupWMClass=com.t3tools.T3Code change is correct: Electron derives the app id from setDesktopName, and electron-builder's desktop entry requires StartupWMClass to match. It is set everywhere it needs to be (the electron-builder entry for AppImage and .deb, plus both PKGBUILDs), and it fixes #13975 on its own. I'd happily merge that part now. Could you split it into its own PR? The icon-copy half needs changes first:
- Drop the
t3codeicon name (DesktopLinuxUrlHandler.ts#L94-L101). Stable and nightly both useexecutableName: "t3code". So running a nightly AppImage copies the nightly icon to~/.local/share/icons/hicolor/256x256/apps/t3code.png, which hides the stable .deb/AUR icon in/usr/share. Stable and nightly AppImages then overwrite each other's copy on every launch, and nothing removes the copies afterwards. The shells this targets look upcom.t3tools.t3codeorcom.t3tools.T3Code, nevert3code, and the hidden handler entry already has an absoluteIcon=since #8673. - Don't create a user icon cache (DesktopPreReadyPlatform.ts#L38-L54).
gtk-update-icon-cache -f -tusually creates~/.local/share/icons/hicolor/icon-theme.cachewhere none existed. Only T3 then keeps it current, so GTK apps can miss icons that other tools add later. Please drop the refresh, or only run it when the cache already exists. - Move the icon install out of pre-ready. The icons aren't needed until the window maps. Doing it next to the existing
update-desktop-databasecall inDesktopLinuxUrlHandlerlets it use EffectFileSystem/ChildProcessSpawnerwith a timeout. That also removes thenode:child_processimport, the rawsetTimeout, theglobalTimers:offopt-out andposixJoin, and takes the work off synchronous startup. - Tests: the new
DesktopPreReadyPlatformtests mockfsandchild_processwholesale, and the spawn mock'sondoes nothing, so the timeout, kill and error handling go untested. After the move, one or two tests against a real temp directory would cover more with less code.
Small follow-up, not blocking: --class=t3code / linuxWmClass no longer affects the window class and could be removed.
The running window's X11 class and Wayland app id come from
setDesktopName("com.t3tools.T3Code.desktop"), but the AppImage, .deb and
AUR launchers advertised StartupWMClass=t3code. GNOME, Cinnamon and
similar shells then matched the window to the hidden URL-handler entry,
showing a second dock icon that cannot be pinned.
Advertise StartupWMClass=com.t3tools.T3Code in the electron-builder
desktop entry and both AUR launchers.
0f9f287 to
473c734
Compare
|
Split as suggested. This PR is now only
One thing I hit on the way: I'll send the |
|
Following up on the |




What Changed
On Linux, the running T3 Code window now groups under its installed launcher
instead of showing up as a second dock icon that cannot be pinned. This covers
the AppImage,
.deband AUR packages.Fixes #13975 deb-duplicate-dock-icon and addresses #10894
linux-wayland-desktop-icon.
Why
The window's X11 class and Wayland app id come from
setDesktopName("com.t3tools.T3Code.desktop"), but the installed launchersadvertised
StartupWMClass=t3code. GNOME, Cinnamon and similar shellstherefore matched the window to the hidden URL-handler entry, which they will
not pin, and showed it next to the pinned launcher. The electron-builder
desktop entry and both AUR launchers now advertise
StartupWMClass=com.t3tools.T3Code. The window identity and capture bindingsare unchanged.
Theme icons named after the app id, the other half of the earlier version of
this PR, move to a follow-up PR.
UI Changes
The screenshots use Ubuntu 26.04 with GNOME Shell 50.1 on Wayland and Ubuntu
Dock. T3 Code is pinned, launched from the pin, closed, and relaunched from the
pin. Before is the
0.0.45-nightly.20260930.2493.deb; after is thischange's
.deb. The icon artwork differs only because the before build is aNightly. GNOME's window tracker assigned the window to the hidden
com.t3tools.T3Code.desktopentry before, and to the pinnedt3code.desktopafter, on both launches.Before: the running window appears as a second dock entry.
After: the running window is grouped under the pinned launcher.
After: relaunched from the pinned launcher, still one entry.
Reporters also confirmed the metadata change on Ubuntu GNOME/X11 with an
AppImage, Ubuntu 26.04 GNOME 50 Wayland with the
.deb, and Linux MintCinnamon on X11.
Known Limitations
Existing AppImageLauncher entries need re-integration to pick up the corrected
metadata. This does not migrate stale pinned IDs or remove entries for older
AppImages.
Checklist
Summary by CodeRabbit
New Features
Bug Fixes