wox.core/plugin/system/mediaplayer/woxmr/README.md
WoxMR (MediaRemote XS Bridge)
Why do we need WoxMR?
com.apple.* may call it.com.apple.*, so calls would be rejected even with dynamic loading from Go/CGO./usr/bin/perl process has the bundle id com.apple.perl, which is permitted to access MediaRemote.com.apple.perl process and pass results back to Wox.How it works
woxmr.bundle that is loaded and executed inside the Perl process.MRMediaRemoteGetNowPlayingInfoMRMediaRemoteGetNowPlayingApplicationIsPlayingMRMediaRemoteGetNowPlayingApplicationPIDWhy not Go/CGO directly?
com.apple.*) and will be denied by the system./usr/bin/perl (com.apple.perl) naturally bypasses the restriction with zero extra requirements on end‑user machines.Why not an external framework?
woxmr.bundle (XS) + WoxMR.pm + adapter.pl: small, stable, and maintainable.Build & distribution
resource/others/woxmr/woxmr.bundleresource/others/woxmr/WoxMR.pmresource/others/woxmr/adapter.plwoxmr-build:
make build.Runtime flow
/usr/bin/perl resource/others/woxmr/adapter.pl getWoxMR to load and execute the XS code inside Perl: