diff --git a/src/mpd_now_playable/receivers/cocoa/now_playing.py b/src/mpd_now_playable/receivers/cocoa/now_playing.py index 4e60ff3..83ba472 100644 --- a/src/mpd_now_playable/receivers/cocoa/now_playing.py +++ b/src/mpd_now_playable/receivers/cocoa/now_playing.py @@ -1,6 +1,7 @@ from collections.abc import Callable, Coroutine from typing import Literal +from AppKit import NSApplication, NSApplicationActivationPolicyAccessory from MediaPlayer import ( MPChangePlaybackPositionCommandEvent, MPMusicPlaybackStatePlaying, @@ -42,6 +43,9 @@ class CocoaNowPlayingReceiver(Receiver): pass async def start(self, player: Player) -> None: + NSApplication.sharedApplication().setActivationPolicy_( + NSApplicationActivationPolicyAccessory + ) self.cmd_center = MPRemoteCommandCenter.sharedCommandCenter() self.info_center = MPNowPlayingInfoCenter.defaultCenter() diff --git a/stubs/AppKit/__init__.pyi b/stubs/AppKit/__init__.pyi index e21476e..50b8fcc 100644 --- a/stubs/AppKit/__init__.pyi +++ b/stubs/AppKit/__init__.pyi @@ -2,6 +2,16 @@ from typing import Final, Literal from Foundation import CGSize +NSApplicationActivationPolicyRegular: Final = 0 +NSApplicationActivationPolicyAccessory: Final = 1 +NSApplicationActivationPolicyProhibited: Final = 2 +NSApplicationActivationPolicy = Literal[0, 1, 2] + +class NSApplication: + @staticmethod + def sharedApplication() -> NSApplication: ... + def setActivationPolicy_(self, policy: NSApplicationActivationPolicy) -> bool: ... + # There are many other operations available but we only actually use copy, so we don't need all of them here. NSCompositingOperationClear: Final = 0 NSCompositingOperationCopy: Final = 1