Skip to content

fix(macos): don't show a second Dock icon while helper scripts run - #90

Merged
mcoliver merged 1 commit into
mainfrom
fix/macos-helper-dock-icon
Oct 2, 2026
Merged

mcoliver merged 1 commit into
mainfrom
fix/macos-helper-dock-icon

Conversation

@mcoliver

@mcoliver mcoliver commented Oct 2, 2026

Copy link
Copy Markdown
Collaborator

Summary

On every launch a second UTV icon bounced in the Dock for a few seconds. It is the startup update check: the app runs py-interp openutv-check-updates.py --startup, py-interp creates a QApplication, and because the executable lives inside UTV.app, macOS registers it as another foreground "UTV" application.

The helper scripts (update check, diagnostics, supercharge FFmpeg) show their UI on macOS through osascript, not Qt. They are now started with QT_QPA_PLATFORM=offscreen, which never registers with the Dock. Windows and Linux are unchanged.

Verification

  • Before (2026.10): lsappinfo lists UTV.app/Contents/MacOS/py-interp as a Foreground application while the helper runs. Setting QT_MAC_DISABLE_FOREGROUND_APPLICATION_TRANSFORM did not change that.
  • After: launching the app, the helper runs for the same time and is not registered with the Dock at any point.
  • The update check itself still works offscreen (--startup exits 0; with an older build it reaches the update prompt).
  • None of the helper scripts import PySide or Qt widgets.

🤖 Generated with Claude Code

The startup update check runs py-interp, which creates a QApplication and
lives inside UTV.app, so macOS showed a second UTV icon bouncing in the Dock
on every launch. The helper scripts show their UI through osascript, not Qt;
run them on Qt's offscreen platform, which never registers with the Dock.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Signed-off-by: Michael Oliver <mcoliver@gmail.com>
@mcoliver
mcoliver merged commit 54e49ef into main Oct 2, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant