2011-08-13 11 views
9

Me gustaría escribir una pequeña utilidad que mueve una ventana de un espacio a otro en OS X Lion. No me importa si la utilidad está escrita en AppleScript u Objective-C. Lo que parece que no puedo entender tiene una ventana, ¿cómo puedo moverlo a un espacio diferente? He visto mucha información útil en el hilo this, pero nada acerca de cómo mover realmente la ventana. Si alguien tiene pensamientos o ideas, agradecería escucharlos. Gracias.Mover una ventana a un nuevo espacio en Mission Control

+0

Esto parece un poco demasiado útil para StackOverflow. ¿Es esto para uso personal o para el desarrollo real? –

+0

El plan era crear una aplicación que me ayudaría a manipular espacios con mayor facilidad en Lion. Hay algunas cosas que me hubiera gustado agregar a los espacios, como intercambiar fácilmente las ubicaciones de dos espacios o aplicaciones de pantalla completa. Incluso desarrollé un front-end con la idea de que Apple proporcionaría API para lograr esto. Iba a lanzar esta aplicación en la App Store. Lamentablemente, esto no parece ser posible utilizando las API proporcionadas. Me di por vencido después de leer esta publicación en el blog: http://thecocoabots.com/blog/post/377/. – LandonSchropp

+0

Estoy buscando una respuesta para esto también. ¿Lograste hacerlo? ¿Puedes actualizar? – SimonW

Respuesta

-1

Necesitará utilizar una biblioteca personalizada, que se puede encontrar aquí http://macscripter.net/viewtopic.php?id=23453, sin embargo, no estoy seguro de qué tipo de soporte tiene en lion.

+0

Desafortunadamente, esto no parece funcionar para Lion. Como no puede enviar una aplicación a la tienda de aplicaciones a menos que funcione para el sistema operativo X más reciente, me temo que esto no funcionará. Aún así, gracias. – LandonSchropp

3

Si está utilizando llamadas objetivo-c, moverse entre espacios en 10.7 es en realidad igual a 10.6 excepto por un problema. Las ID de espacio se basaban en el índice en 10.6, pero se basaban en otra cosa (no exactamente un GUID) en 10.7.

Si ya tiene una ventana en el espacio correcto, las soluciones in this question funcionarán (lo estoy usando en). Puede obtener el ID de espacio con CGSGetWindowWorkspace, y luego configurarlo en otra ventana usando CGSMoveWorkspaceWindowList.

Ahora, si no tiene el ID de espacio, p. solo quieres mover la ventana al segundo espacio, entonces estoy tan perplejo como tú. Estoy buscando la vinculación entre el id. De espacio y el número de índice. (Actualizaré esta respuesta si la encuentro)

Finalmente, mencionas App Store en el comentario anterior; esto no será adecuado ya que las llamadas CGS * usan marcos privados no documentados que te rechazarán.

+0

Es una pena que Apple no proporcione una API pública para lograr esto. Desafortunadamente, tengo el requisito de que esta aplicación debe poder ser lanzada en la App Store. Aún así, gracias por la sugerencia. – LandonSchropp

+0

Si necesita Frameworks oficiales, está atascado con [setCollectionBehavior] (http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSWindow_Class/Reference/Reference.html#//apple_ref/occ/instm/NSWindow/setCollectionBehavior :) llamada. –

+0

Nota para Lion: la ID de espacio que obtiene a través de los cambios de 'kCGWindowWorkspace' entre los inicios de sesión. – Mark

Cuestiones relacionadas