I'm retrieving the current track playing in iTunes, Mac OS X, with ScriptingBridge.
from ScriptingBridge import SBApplication
iTunes = SBApplication.applicationWithBundleIdentifier_("com.apple.iTunes")
print iTunes.currentTrack().name()
But when I run that last line, actually getting the track name, an application appears in the dock, and doesn't leave until I close my Python program, whether I'm running it in the REPL or as a script. The icon is this one, at least on my machine:
/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/Resources/PythonInterpreter.icns
The script works great, and I can get all the info I need from iTunes via SB. I would just like to keep the icon from popping up. Why does that particular method call invoke a dock icon?
A hacky way to get it off the dock is to prevent Python.app
from ever showing up on the dock:
Edit /System/Library/Frameworks/Python.framework/Versions/Current/Resources/Python.app/Contents/Info.plist
and add this key-value pair to the main <dict>
element:
<key>LSUIElement</key><string>1</string>
I wish there were another way to do this, because this change is global — no Python script (using the system Python) will ever show up on the dock with this setting. Since posting this question I have set my LSUIElement back to 0, because there's no other way to grab, for example, a matplotlib-produced window, unless it has an icon in the dock.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With