2012-09-08 13 views
5

Estoy recuperando la pista actual que se reproduce en iTunes, Mac OS X, con ScriptingBridge.Ocultar el icono de Python rocket dock al usar ScriptingBridge

from ScriptingBridge import SBApplication 
iTunes = SBApplication.applicationWithBundleIdentifier_("com.apple.iTunes") 
print iTunes.currentTrack().name() 

Pero cuando corro la última línea, hacer llegar el nombre de la pista, una aplicación aparece en el muelle, y no se va hasta que cierro mi programa Python, si estoy corriendo en el REPL o como un guion El icono es éste, al menos en mi máquina:

/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/Resources/PythonInterpreter.icns 

El script funciona muy bien, y puede obtener toda la información que necesito de iTunes a través de SB. Me gustaría evitar que aparezca el ícono. ¿Por qué esa llamada de método particular invoca un icono de dock?

+1

Mi quickfix es cortarlo a cabo mediante la adición de ' LSUIElement ' ' a/System/Library/Frameworks/Python.framework/Versiones/2.7/Recursos/Python.app/Contenidos/Info.plist' , pero eso no es muy elegante, y no es un cambio que quisiera que otros usuarios tengan que hacer. – chbrown

+0

Vamos a obtener su respuesta en la sección de respuestas si no le importa. Si no, estaría feliz de hacerlo también. – bmike

Respuesta

4

Una manera hacky conseguirlo en el muelle es prevenir Python.app desde siempre a aparecer en el muelle:

Editar /System/Library/Frameworks/Python.framework/Versions/Current/Resources/Python.app/Contents/Info.plist y añade este par clave-valor a la principal <dict> elemento:

<key>LSUIElement</key><string>1</string> 

Ojalá hubiera otra forma de hacerlo, porque este cambio es global: ningún script de Python (usando el sistema Python) aparecerá alguna vez en el dock con esta configuración. Desde que publiqué esta pregunta, he vuelto a poner mi LSUIElement en 0, porque no hay otra manera de tomar, por ejemplo, una ventana producida por matplotlib, a menos que tenga un ícono en el dock.

+0

+1 para la creatividad! Pero ahora, después de haber pasado 2 horas buscando una respuesta que realmente funcione, me pregunto si realmente importa tanto. Es curioso que ahora que puedo ver fácilmente cuán muy accesible es la solución, me doy cuenta de que no me importa, aunque realicé una docena de búsquedas para aterrizar aquí. – ArtOfWarfare

Cuestiones relacionadas