Files
virtualjaguar-libretro/app/packaging/linux/io.github.libretro.VirtualJaguar.xml
Joseph MattielloandClaude Sonnet 5.5 71a215f1ef feat(app): native OS integration - macOS menu bar and Dock menu, file types, tray, dark title bar
One menu model (app/src/platform/commands.cpp) feeds every native surface: the macOS menu bar
and Dock menu (Objective-C++, replacing SDL's default menu after init and leaving SDL's app
delegate alone), and an optional tray / menu-bar icon through SDL_tray. A click posts a command
event, so nothing runs inside Cocoa's menu-tracking loop.

macOS: native menu bar with Cmd shortcuts (the in-window bar is hidden), Dock menu with recent
games, NSDocumentController recents, App Nap held while a game runs, document types plus an
exported UTI.
Windows: dark title bar, AppUserModelID shared with the installer shortcuts, Explorer / Jump
List recents, per-monitor-v2 + long-path manifest, optional per-user file associations in the
installer.
Linux: shared-mime-info types, MimeType= and desktop Actions, app id as WM_CLASS / Wayland
app_id (was com.provenance-emu.virtualjaguar), mime XML in the .deb and Flatpak.
All: screensaver allowed in the library / while paused and blocked while a game runs
(SDL disables it for the whole run by default), fullscreen state follows the OS, Show in
Finder / Explorer, launcher-argument filter (-psn_).

Tests: platform_unit (model, dispatch, recents, associations, event round trip),
platform_assoc_sync (extension lists and the app id agree across C++, Info.plist, installer,
.desktop, mime XML), native_menu_dump (macOS: builds and checks the real NSMenu).

Refs #833

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-13 20:14:54 -04:00

26 lines
1.3 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!-- shared-mime-info types for Virtual Jaguar (installed to share/mime/packages).
KEEP IN SYNC with app/src/platform/commands.h (VJ_ASSOC_LIST), the .desktop file's MimeType=, Info.plist.in and the
Windows installer: the CTest platform_assoc_sync checks.
j64 / jag are Jaguar-specific and get the default weight. rom, abs, cof, cue, chd and cdi are generic: they are
given a LOWER weight (30) so a type some other package already defines for them keeps winning, and these only
claim files nothing else does. -->
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/x-atari-jaguar-rom">
<comment>Atari Jaguar ROM</comment>
<sub-class-of type="application/octet-stream"/>
<glob pattern="*.j64"/>
<glob pattern="*.jag"/>
<glob pattern="*.rom" weight="30"/>
<glob pattern="*.abs" weight="30"/>
<glob pattern="*.cof" weight="30"/>
</mime-type>
<mime-type type="application/x-atari-jaguar-cd-image">
<comment>Atari Jaguar CD image</comment>
<sub-class-of type="application/octet-stream"/>
<glob pattern="*.cue" weight="30"/>
<glob pattern="*.chd" weight="30"/>
<glob pattern="*.cdi" weight="30"/>
</mime-type>
</mime-info>