# Gestion de 2 écrans, applescript ???



## vaiko666 (1 Janvier 2009)

Bonjour 

Sans réponse pour l'instant sur un autre forum, j'en appelle à vos lumières !!!

Voilà 3 mois que je suis dans le monde de la Pomme. Ma config en résumé, un Imac 24", 2.8, Ati Radeon 2600 HD, DD 320. 

Mon Imac, qui se trouve dans mon bureau, est en permanence connecté à ma TV HD, qui elle se trouve dans mon salon. L'image passe par un adaptateur DVI, puis HDMI. Le son est envoyé vers ma carte externe M-Audi Fire Wire Solo, puis relancé en SPIDF vers mon Home Cinema. 

Le but pour moi est d'utiliser ma machine (image et son) soit depuis le salon pour un usage familial, soit depuis mon bureau quand je veux avoir la paix. Les résolutions d'écrans n'étant pas les même, j'ai dû me rabattre sur le mode bureau étendu.

Au début, il me fallait donc à chaque fois que je switchais entre le bureau et le salon aller dans les préf. système, moniteurs, disposition, glisser la barre de menu sur l'autre écran, tout afficher, son, sorties, sélectionner la sortie intégrée ou FireWire Solo et refermé les préférences. Pour ceux qui suivent tjs, vous conviendrez que c'était un peu contraignant !!! lol

Autre problème, quand ma chérie regardait la télé et que l'Imac la définissait comme écran principal, il m'était impossible de ramener mon dock et mon menu vers l'écran de ma machine sans passer par le canal auxiliaire de ma télé (excuse chérie, deux minutes...).

Bref, après de nombreuses recherches vers un soft qui me simplifierai la vie, et que je n'ai pas trouvé, je me suis intéressé à Applescript et Automator. 

En piquant et remaniant des scripts trouvés sur le net, en les important ensuite dans automator et en les finalisant comme des "actions" (ce qui me permet de les retrouver ensuite à l'aide du clic droit de la souris, sous "plus", "automator" et mon action), j'en suis arrivé à un semblant de résultat. 

Semblant parce que 1. bien que ca fonctionne, j'ignore si c'est juste. 2. c'est incomplet pour l'instant. 

Pour l'instant, j'en ai créée trois. La première consiste à appeler les préférences systèmes, puis moniteur, puis disposition (la fenêtre s'ouvre sur les deux écrans et me permet de basculer le dock et le menu de l'un à l'autre). L'avantage est que j'arrive directement sur "disposition" qui s'affiche sur les deux écrans et donc, inutile de déranger ma chérie. L'inconvénient et que le processus n'est pas terminé puisque j'aimerai aller jusqu'au switch complet entre les écrans (là, je dois faire glisser la barre de menu vers l'autre écran et refermer les préférences). Pour la seconde et la troisième, elles me permettent de sélectionner ma sortie audio selon le même principe, soit du bureau ou du salon. 

Les trois scripts fonctionnent, mais j'aimerai qu'ils soient justes, raison pour laquelle je vous les soumets ci-après. C'est aussi l'occasion de les faire partager pour ceux qui pourraient avoir les mêmes besoin que moi. 

1. Pour arriver directement sur disposition.


```
on run {input, parameters}
    
    tell application "System Preferences"
        set current pane to pane "com.apple.preference.displays"
        activate
        
    end tell
    tell application "System Events"
        click radio button "Disposition" of tab group 1 of window "SONY TV" of application process "System Preferences" of application "System Events"
    end tell
    
    return input
end run
```
2. Sélectionner la sortie son intégrée.


```
on run {input, parameters}
    
    tell application "System Preferences" to reveal anchor "output" of pane id "com.apple.preference.sound"
    tell application "System Events" to tell table 1 of scroll area 1 of tab group 1 of window 1 of process "System Preferences"
        select (first row whose value of text field 1 is "Haut-parleurs internes")
    end tell
    quit application "System Preferences"
    
    return input
end run
```
La troisième comporte comme seule modification, en lieu et place de "Hauts-parleurs internes" ma sortie "FireWire Solo"

Bref et comme dit, si quelqu'un veut en profiter, servez-vous. Si quelqu'un y voit une quelconque erreur, merci de me le faire savoir. Si quelqu'un peut me proposer une solution pour me casser un peu moins la tête, merci !!!

Dans l'idéal, j'aimerai avoir un script qui définit l'écran un ou deux comme principal et définit également sa sortie son appropriée ou une solution software qui permette de le faire....

J'espère que c'est clair !!! lol


----------



## dmo95 (3 Janvier 2009)

Très bon choix que de se tourner vers Automator. 

Si j'ai bien compris actuellement, il te faut faire un click droit puis lancer le script qui fait tous les réglages nécessaire par lui même. Cependant cela se fait que dans un sens, lorsque tu souhaites rendre l'écran du salon en source principal, ainsi que le son ? 

Je maîtrise pas vraiment Apple Script mais, pour pouvoir réaliser ce dont tu souhaites, il faudrait pouvoir passer un paramètre _src_ qui définirait tel ou tel écran...

Peut être que mon post relancera un peu le sujet, mais très interessant comme problème. 

Hors Sujet : En tan que heureux possesseur d'un Philips 42" FullHD (merci papa noël), je souhaites également faire un montage pour pouvoir bénéficier de ma TV en tan qu'écran. Helas Philips est le seul fabricant de TV qui ne prévoit pas d'entré vidéo PC (VGA ou DVI...). Une solution serait de mettre un adaptateur DVI->HDMI avec les deux cables, mais j'ai peur de perdre de la qualité... J'ai vu qu'il existait des solutions avec des Disques durs multimedia, qui me permetteraient de tous faire, mais une solution un peu couteuse !!

Quel genre de montage me conseillerais tu ?


----------



## vaiko666 (4 Janvier 2009)

Merci Dmo95 pour ta réponse 

Comme dit, pour l'instant, j'ai trois commande via le menu contextuel (clic droit), puis automator (mes options en l'état : "gestion de l'affichage", "Son Imac" et "Son Home Cinema". 

Pour ce qui est du son, les scripts semblent ok dans la mesure où la commande "Son X" me permet de permuter d'un environnement audio à l'autre, sans autre manipulation. 

En revanche, concernant la gestion de l'affichage, l'applescript dont je me suis servi ne me permet que d'accéder à la fenêtre disposition des écrans, qui se trouve dans paramètres système, puis moniteurs. 

Je peux actionner ladite commande aussi bien de mon salon que de mon Imac, quelque soit l'affichage principal, vu que je peux y accéder via le clic droit. La fenêtre disposition s'affiche sur les deux écrans. Dès lors, il me reste à glisser la barre de menu de cette fenêtre vers l'affichage désiré. Puis, quitter les préférences systèmes. C'est cette dernière partie qui m'embête, j'aimerai que le tout soit automatisé, c'est à dire avoir par exemple une commande "basculer l'affichage vers l'autre écran" et que la totalité du processus soit faite sans intervention de ma part. Le must serait une commande qui basculerait affichage et son vers mon salon et une autre qui balancerait le tout sur mon mac 

Bref, pas évident pour l'instant et je n'ai pas avancé depuis mon post. Inutile de dire que j'ai cherché et cherché encore une soluce via un soft quelconque, sans succès. 

Je m'étonne qu'apparement, peu profitent des avantages des sorties vidéo et son de nos machines, c'est un régal de pouvoir passer par Itunes de son salon, sélectionner sa musique et l'écouter sur son installation de salon, de regarder directement et en famille un film stocké sur le disque dur, de surfer avec les copains sur le net quelque soit le délire, bref, que du bonheur !!!

Concernant ta question qui n'est pas du tout hors sujet, et pour ma part, j'ai commandé sur le site Apple un adaptateur sortie écran de mon Imac vers DVI, soit une trentaine d'EURO je crois. Puis, un câble DVI vers HDMI, pour le connecter sur ma télé. 

Question qualité, tu n'auras aucune perte à mon avis. En ce qui me concerne, c'est le top. Mon Imac a une résolution native à 1200 x 1920 et ma télé est en Full HD, soit 1080 x 1920. 

L'image est parfaite, les couleurs magnifiques.... Je précise qu'il y a environ 10 mètres entre l'Imac et la télé 

En revanche, j'imagine que tu auras également besoin du son  Dans ce cas, des câbles de sortie vers "optic" sont dispos sur l'apple store. Pour ma part, j'utilise une carte externe qui me permet de transporter le son vers mon home cinéma en SPIDF, également très utile pour me permettre de brancher ma guitare ou un micro (M-audio Fire Wire Solo). 

Un DD multimedia externe ne te permettra pas de surfer sur le net ou de profiter de la totalité des fonctions de ton Mac (j'ai essayé, c'est bien mais pas suffisant en ce qui me concerne). De plus, tu devras de toute façon mettre constamment à jour tes films, musiques, photos, etc. Résultat, une solution wifi est intéressante mais plus coûteuse encore. 

A bon compte, je pense qu'avec quelques câbles, tu dois t'en tirer à une centaine d'EURO.


----------



## dmo95 (8 Janvier 2009)

Je ne sais que répondre à ton problème...

Ceci étant, un cable DVI->HDMI existe ? A la Fnac m'a-t-on dit il fallait un intermédiaire adaptateur DVI/HDMI puis un cable HDMI->HDMI !?

Tu me confirmes que cela existe ?

Pour ce qui est de l'adaptateur Apple, je me le suis déjà proccuré


----------



## vaiko666 (8 Janvier 2009)

Hello, 

Je te rassure, le câble DVI to HDMI existe. Le vendeur de la FNAC qui t'a répondu ne devais pas être dans son rayon, si oui, c'est grave !!! Le mien, j'ai dû me le procurer à la FNAC sauf erreur... 

Pour la gestion des écrans, j'ai une réponse sur un autre forum où on me parle de cscreen, j'ignore ce que c'est pour l'instant... A suivre


----------



## two (11 Janvier 2009)

vaiko666 a dit:


> Pour la gestion des écrans, j'ai une réponse sur un autre forum où on me parle de cscreen, j'ignore ce que c'est pour l'instant... A suivre


a première vue c'est un petit utilitaire en ligne de commande... son développeur à abandonné tous ses projets de logiciel mais il est trouvable ici


```
[B]dans le terminal[/B]:~ utilisateur$  /Users/"chemin vers"/cscreen -h;
Usage: cscreen [-d <depth>] [-x <width>] [-y <height>] [-r <refresh>] [-s <display>] [-v] [-m] [-f] [-l] [-h]
  [-d <depth>]   : specifies the bit depth (bits per pixel)
  [-x <width>]   : specifies the width in pixels
  [-y <height>]  : specifies the height in pixels
  [-r <refresh>] : specifies the refresh rate in Hz
  [-s <display>] : specifies which display to use (defaults to main display)
           use a as the option to -s to specify the action on all displays
  [-v]         : display valid modes (use -s to specify display or nothing for the default)
  [-m]           : require an exact match
  [-f]         : forces settings (ignores safety mechanisms; USE AT YOUR OWN RISK)
  [-l]           : lists the current displays and modes
  [-p]           : sets the requested display to have the menu bar
  [-h]           : displays the usage
  
  Note: Using -p will change the display index so you will likely want to use -l again to show the current
  displays if you wish to use -p a second time.
```


----------



## two (11 Janvier 2009)

pour ton changement de barre de menu les commandes suivantes marchent...

```
[B]dans le terminal[/B]:~ utilisateur$  /Users/"chemin vers"/cscreen -s2 -p;
```
dans l'éditeur applescript

```
do shell script "/Users/"chemin vers"/cscreen -s2 -p;"
```
ceci naturellement aprés avoir téléchargé cscreen que tu trouvera en suivant le lien de mon message précédent


----------



## vaiko666 (14 Janvier 2009)

Merci Two pour tes recherches 

En revanche, et comme dit, débarquant dans le monde de la Pomme, pourrrais tu me donner une marche à suivre un peu plus précise pour utiliser ce cscreen avec applescript ??? 

Pas d'installation apparemment avec cscreen, il m'ouvre la ??? console ???

Faut il que je rajoute une ligne aux lignes existantes dans applescript ??? etc...

C'est très sympa dans tous les cas


----------



## two (14 Janvier 2009)

tu télécharge cscreen sur le lien donné plus haut...
tu dezippe et te le mets dans un dossier de ton choix... 
dans l'éditeur de script tu crée un script avec comme contenu 
	
	



```
do shell script "ton/chemin/vers/le/dossier/contenant/cscreen -s2 -p;"
```
tu remplace naturellement le ton/chemin/vers/le/dossier/contenant/ par l'emplacement ou tu auras mis cscreen (attention il faut garder les " ) 
tu clique sur exécuter pour le tester... 
tu rajoutes si tu veux les commandes pour le changement de son au script (ton script pour le changement d'écran principal n'est plus nécessaire tout est dans la commande cscreen) et tu enregistre le script.
Par la suite tu peux réutiliser le script dans automator et l'enregistrer comme action

de cette manière pas besoin du terminal... le do shell script s'en charge


----------



## vaiko666 (14 Janvier 2009)

Génial Two, you're the ONE !!!

Enfin, je commençais à désespérer  Venant de déménager mon installation, je ne peux pas essayer l'ensemble (son et écran) via une action automator, mais je confirme que l'action Applescript fonctionne pour le changement d'écran. Aucune autre manipulation à faire. 

Bref, merci !!!


----------



## two (15 Janvier 2009)

Hello  je me suis penché sur ton script un peu plus de manière a simplifier le changement écran/son. Au cas ou si quelqu'un de plus calé que moi voit comment améliorer ce que j'ai fait, qu'il n'hésite pas...  
dans l'éditeur de scripts : 
	
	



```
do shell script "/Users/Two/Downloads/cscreen  -s2 -p;"
display dialog "Utiliser la sortie son:" buttons {"Cancel", "Haut-parleurs internes", "Sound Blaster Extigy"}
set the button_pressed to the button returned of the result as string
tell application "System Preferences" to reveal anchor "output" of pane id "com.apple.preference.sound"
tell application "System Events" to tell table 1 of scroll area 1 of tab group 1 of window 1 of process "System Preferences"
    select (first row whose value of text field 1 is button_pressed)
end tell
quit application "System Preferences"
```
Dans automator : exécuter un script applescript : 

```
on run {input, parameters}
do shell script "/Users/Two/Downloads/cscreen  -s2 -p;"
display dialog "Utiliser la sortie son:" buttons {"Cancel", "Haut-parleurs internes", "Sound Blaster Extigy"}
set the button_pressed to the button returned of the result as string
tell application "System Preferences" to reveal anchor "output" of pane id "com.apple.preference.sound"
tell application "System Events" to tell table 1 of scroll area 1 of tab group 1 of window 1 of process "System Preferences"
    select (first row whose value of text field 1 is button_pressed)
end tell
quit application "System Preferences"

return input
end run
```
Tout ce que tu as a changer c'est le chemin vers cscreen (/Users/Two/Downloads/cscreen) par ton emplacement de cscreen et "Sound Blaster Extigy" par ta carte son externe.

Par contre je n'ai pas compris/ trouvé comment tu fais ceci : 





> En important le script dans automator et en le finalisant comme des "actions" (ce qui me permet de les retrouver ensuite à l'aide du clic droit de la souris, sous "plus", "automator" et mon action)


Peux tu m'expliquer? Je n'utilise pas automator habituellement et je n'ai pas trouvé  ce que tu appelle action - -  de manière a pouvoir l'utiliser moi aussi par clic droit sur mon bureau...

ai testé les 2 : script pur et automator... la version automator a un défaut par rapport au script : les boutons de la boite de dialogue n'affichent pas tout l'intitulé des cartes son.
(mais bon ai testé le truc a partir de la commande exécuter d'automator) :rateau:


----------



## vaiko666 (16 Janvier 2009)

Je ne suis pas sur mon Mac mais je vais néanmoins essayer de t'expliquer comment faire. Au besoin, si c'est incomplet, n'hésite pas à me le faire savoir et je ferai quelque chose de plus précis depuis mon Mac 

En premier lieu, ouvrir Automator, choisir nouvelle action (?nouveau processus?). Entrer dans l'outil de recherche "applescript", ce qui te proposera un truc genre "insérer un script automator". Tu sélectionnes l'action en question que tu glisses dans la fenêtre de droite. Là, tu verras une parenthèse avec écrit "Taper ici le script applescript". Copie et colle le scripte qui correspond à tes besoins. Tu peux l'essayer via les touches play, etc.

Ensuite "enregister comme module", du Finder. Dès lors, l'action est accessible via le clic droit, automator et ton action. 

Au besoin, il y a un super tuto sur automator dispo http://www.debutersurmac.com/tutoriels/z-automator1.html. 

Tout y est certainement plus clair que mon explication


----------



## vinz2k (16 Janvier 2009)

pas mal du tout la commande cscreen. Par contre, ayant 3 écrans, quand je fais la commande pour changer le finder de place ça me désordonne mes 3 écrans. 

Y en a 2 qui s'inverse. Donc je dois après manuellement les remettre dans leur bonne place. J'ai regardé sur les commandes cscreen mais j'ai pas trouver une commande qui permettrait de pas tout désordonner.

Je vais regardé sur les forum du coté de macosxhint il en parlait beaucoup de cscreen. Notammement la fonction pour, quand tu fait la touche menu de ta télécommande, FrontRow bascule directement sur ta télé ou ton videoproj 

Merci pour vos éclaircissements !!!! @+


----------



## two (16 Janvier 2009)

ok c'est le enregistrer comme module qui me manquait... Merci


----------



## vaiko666 (7 Décembre 2011)

Je remonte un vieux sujet, à savoir la gestion de deux écrans sous OSX. 

Depuis la MAJ sur Lion, impossible d'utiliser cscreen (ne fonctionnait qu'avec Rosetta). 

Je me suis penché sur SwitchresX pro qui proposait une fonctionnalité permettant de définir l'écran 1 ; 2, etc. comme étant l'écran principal. Appli très complète, peut-être trop. Je n'avais pas besoin d'autant de possibilités (notamment réglages de toutes les résolutions possibles, etc. De plus, elle coûte EUR 14.

Bref, en effectuant quelques recherches sur la toile aujourd'hui, j'ai finalement trouvé une alternative. Il s'agit d'une applet gratuite développée par un certain ericn (que je remercie au passage) et est disponible gratuitement sur la page http://modbookish.lefora.com/2010/04/29/an-applescript-for-switching-displays/

Le fichier à downloader est movemenubar.zip. 

Bête appli qui permet de déplacer la barre de menu d'un écran à l'autre. Et c'est tout ce que je lui demande  

Je lui ai attribué un raccourci clavier et c'est juste le bonheur pour switcher entre mes écrans. 

En espérant que ça puisse servir à d'autres


----------

