Afin de travailler plus aisément et plus rapidement en configuration multi-écran, j’ai pris le temps d’écrire quelques scripts en langage Applescript. J’ai décidé de les partager sur ce blog, j’ai par conséquent adapté les programmes afin de pouvoir les distribuer.
Ces scripts ont été réalisés pour une configuration ou le moniteur principal est en face et le moniteur secondaire sur la gauche. Si vous avez une autre configuration, il vous faudra les adapter.
Pour utiliser les raccourcis claviers (exemple : +1) pour lancer les scripts et déplacer les fenêtres, vous pouvez utiliser FastScripts ou Spark.
Pour ma part j’ai associé ces scripts aux boutons additionnels de la souris.
Important : il faut activer l’accès aux périphériques d’aide dans les préférences «Accès universel» de Mac OSX.
Contient 4 scripts Applescripts pour la gestion des fenêtres en configuration multi-écran.
Voici la liste des programmes :
MultiScreen Move
Programme actionscript qui permet de déplacer la fenêtre active sur le second moniteur en adaptant la largeur et la hauteur. Si la fenêtre est sur le second moniteur, le script la repositionne sur l’écran principal.
Vous pouvez utiliser ce programme pour déplacer les fenêtres des programmes de messagerie instantanée, si la fenêtre est trop haute, elle sera diminuée.
-- #Diminution# est la valeur à soustraire aux dimensions de la fenêtre set diminution to 50 -- Largeur & Hauteur du second moniteur set screen2_width to 1360 set screen2_height to 768 -- Si comme moi vous avez un second moniteur plus petit, entrez ici le décalage Y par rapport au moniteur principal set screen2_Yoffset to 68 -- Calcul de la position finale sur le second moniteur set screen2_pos to {-screen2_width + (diminution / 2), (diminution / 2) + screen2_Yoffset} -- Entrez ici la position de retour de la fenêtre sur l'écran principal set screen1_pos to {200, 100} tell application "System Events" set FrontApplication to (get name of every process whose frontmost is true) as string tell process FrontApplication set {winWidth, winHeight} to size of front window set {winX, winY} to position of front window if (winX < 0) then -- déplace la fenêtre située sur l'écran 2 > sur l'écran principal set position of window 1 to screen1_pos else if (winWidth > screen2_width - diminution) then -- Diminue la largeur set size of window 1 to {screen2_width - diminution, winHeight} set winWidth to (screen2_width - diminution) end if if (winHeight > screen2_height - diminution) then -- Diminue la hauteur set size of window 1 to {winWidth, screen2_height - diminution} end if set position of window 1 to screen2_pos end if end tell end tell
Move Full Screen
Programme actionscript qui permet de déplacer la fenêtre active sur le second moniteur en plein écran. Si la fenêtre est déjà sur le second moniteur, le script la repositionne sur l’écran principal.
-- Position sur l'écran Principal set screen1_pos to {200, 0} set screen1_size to {1200, 1050} -- Position sur l'écran secondaire (FullScreen) set screen2_pos to {-1360, 68} set screen2_size to {1360, 768} tell application "System Events" set FrontApplication to (get name of every process whose frontmost is true) as string tell process FrontApplication -- verifie la position de la fenêtre set {winX, winY} to position of front window if (winX < 0) then --move/return to principal screen 1 set position of window 1 to screen1_pos set size of window 1 to screen1_size else --fullscreen screen 2 set position of window 1 to screen2_pos set size of window 1 to screen2_size end if end tell end tell
MultiScreen Split 2 Finder Window
Programme actionscript qui permet de créer et d’ouvir deux fenêtres du Finder en mode liste
et de les positionner côte à côte sur le second moniteur.
-- Largeur & Hauteur du second moniteur set screen2_width to 1360 set screen2_height to 768 -- Si comme moi vous avez un second moniteur plus petit, entrez ici le décalage Y par rapport au moniteur principal set screen2_Yoffset to 68 -- Dossiers initiaux set workingFolder1 to "WD320:travaux" set workingFolder2 to "WD320:travaux" tell application "Finder" set windowNumber to 1 set Window1 to make new Finder window set target of Window1 to workingFolder2 set Window2 to make new Finder window set target of Window2 to workingFolder1 --Configuration de l'affichage des deux fenêtres repeat 2 times activate tell window windowNumber set current view to list view set toolbar visible to true set sidebar width to 0 end tell set windowNumber to windowNumber + 1 end repeat end tell --Déplacement des 2 fenêtres du Finder sur le deuxieme écran tell application "System Events" set FrontApplication to (get name of every process whose frontmost is true) as string tell process FrontApplication set position of window 1 to {-screen2_width, screen2_Yoffset} set size of window 1 to {screen2_width / 2, screen2_height} set position of window 2 to {-screen2_width / 2, screen2_Yoffset} set size of window 2 to {screen2_width / 2, screen2_height} end tell end tell
Position de la fenêtre active
Utilitaire qui permet d’obtenir la position de la fenêtre (offset). Pour cela, positionnez la fenêtre sur le second moniteur en plein écran et lancer ce script depuis le menu, vous devriez obtenir la position de celle-ci, ce qui vous permettra de configurer les autres programmes.
tell application "System Events" set theWindow to window 1 of (first process whose frontmost is true) set thePosition to position of theWindow display alert name of theWindow & " : " & ((first item of thePosition) as string) & ", " & ((second item of thePosition) as string) end tell
I share today some simple, but useful applescript to interact with windows on Mac OSX and multi-display configuration. If you search for simple scripts to move windows/programs and switch screen faster, you find it. I write 3 scripts : one to move and reduce the window on the second monitor, one to move and adapt full screen the window, and one who open two Finder windows and positionning them on the second monitor. Others ideas ?
![Agonia Studios [Blog]](http://www.agonia-studios.fr/blog/images/logo-weblog.png)











