Mémorisez la taille et l'emplacement des fenêtres lors du débranchement et du rebranchement du deuxième moniteur

99

Voici quelque chose qui craint:

  1. Branchez le moniteur externe à l'ordinateur portable (Mac OS X Leopard dans mon cas).
  2. Organisez vos fenêtres pour avoir l'IDE sur un écran et le navigateur sur un autre. (Etc etc. Redimensionner, réorganiser, agiter, agiter, agiter.)
  3. Débranchez le moniteur pour participer à une réunion ou autre.
  4. Aller à 1.

J'aimerais remplacer l'étape 2 par «l'ordinateur se souvient exactement de la façon dont je l'avais et le remettait simplement de cette façon».

(Personnellement, je n'ai besoin que d'une solution pour Mac, mais la collecte de solutions pour d'autres systèmes ici pourrait être utile à d'autres. Je suis sûr que c'est un problème courant.)

dreeves
la source

Réponses:

56

Jetez un coup d'œil à Stay by Cordless Dog. Je crois que cela fait exactement ce que vous recherchez.

Tony Arnold
la source
2
J'ai essayé ça. Cela ne fonctionne pas pour les fenêtres X11 mais semble autrement être comme annoncé. Merci pour le pointeur! Il se peut que ce soit le cas le plus proche d’une solution pour Mac pour le moment.
Dreeves
Les fenêtres X11 ne sont pas de "vraies" instances de NSWindow (du moins, elles ne l'étaient pas la dernière fois que j'ai vérifié), il n'est donc pas étonnant que Stay ne veuille rien avoir à faire avec elles :) Heureux que cela fonctionne autrement!
1
Cela a l'air bien, mais cela ne fonctionne pas avec les applications plein écran dans Lion. J'ai Safari en mode plein écran lorsque je n'ai qu'un seul écran et après avoir connecté le deuxième écran, je souhaite quitter le mode plein écran et déplacer Safari sur le deuxième écran. Restez ne déplace aucune application plein écran.
1
Cela semblait être un bon ajustement. Mais avec 3 écrans externes, il y avait souvent des problèmes de positions et le résolvait à 50%. Donc, je devais encore faire beaucoup de travail manuel. Je viens de le désinstaller. Oh, et c'est seulement 30 jours d'essai!
Ernst Ernst le
15

Slate est un très puissant sans application Mac qui fait exactement ce que vous voulez. Lorsque vous branchez votre moniteur secondaire, le nouveau moniteur est automatiquement détecté et toutes vos fenêtres sont déplacées et redimensionnées exactement comme vous les aimez. Vous pouvez définir des positions et des tailles personnalisées pour toutes vos applications, notamment en plein écran, en demi-écran et en grille.

L'un des aspects les plus intéressants de Slate est que vous pouvez définir différentes dispositions en fonction du nombre de moniteurs connectés . Par exemple, si vous utilisez votre ordinateur portable seul, vous voudrez peut-être que toutes vos applications remplissent tout l'écran. Mais lorsque vous avez un moniteur secondaire plus grand, vous pouvez diviser votre écran entre votre navigateur, votre courrier et votre musique. L'ardoise le fait facilement.

Vous pouvez également définir des raccourcis clavier pour des dispositions et des actions spécifiques telles que le décalage et le redimensionnement des fenêtres selon un certain pourcentage.

Ci-dessous, mon fichier de configuration. Je garde toutes mes applications en plein écran sur tous mes moniteurs, mais vous pouvez les modifier pour les réduire de moitié ou d'une autre taille:

# Monitor Aliases
alias mon-laptop    0    # variable for my laptop monitor
alias mon-hp        1    # my external HP monitor

# Window Position Regions
alias hp-full        move screenOriginX;screenOriginY screenSizeX;screenSizeY         ${mon-hp}
alias hp-left        move screenOriginX;screenOriginY screenSizeX/2;screenSizeY         ${mon-hp}
alias hp-right       move screenOriginX+screenSizeX/2;screenOriginY screenSizeX/2;screenSizeY         ${mon-hp}
alias laptop-full        move screenOriginX;screenOriginY screenSizeX;screenSizeY         ${mon-laptop}
alias laptop-left        move screenOriginX;screenOriginY screenSizeX/2;screenSizeY         ${mon-laptop}
alias laptop-right       move screenOriginX+screenSizeX/2;screenOriginY screenSizeX/2;screenSizeY         ${mon-laptop}
alias laptop-righttop    move screenOriginX+screenSizeX/2;screenOriginY screenSizeX/2;screenSizeY/2       ${mon-laptop}
alias laptop-rightbottom move screenOriginX+screenSizeX/2;screenOriginY+screenSizeY/2    screenSizeX/2;screenSizeY/2       ${mon-laptop}

# Window layouts for when I have 2 monitors
layout 2monitor 'Google Chrome':REPEAT ${hp-full}
layout 2monitor 'iCal':REPEAT ${hp-full}
layout 2monitor 'Coda':REPEAT ${hp-full}
layout 2monitor 'Mail':REPEAT ${laptop-full}
layout 2monitor 'Rdio':REPEAT ${laptop-full}
layout 2monitor 'Spotify':REPEAT ${laptop-full}
layout 2monitor 'Evernote':REPEAT ${laptop-full}

# Single monitor window layouts
layout 1monitor 'Google Chrome':REPEAT ${laptop-full}
layout 1monitor 'iCal':REPEAT ${laptop-full}
layout 1monitor 'Coda':REPEAT ${laptop-full}
layout 1monitor 'Mail':REPEAT ${laptop-full}
layout 1monitor 'Rdio':REPEAT ${laptop-full}
layout 1monitor 'Spotify':REPEAT ${laptop-full}
layout 1monitor 'Evernote':REPEAT ${laptop-full}

# Keyboard shortcuts for each layout
bind l:shift;ctrl layout 2monitor
bind g:shift;ctrl grid padding:5 0:2,1 1:2,2

# Auto-detect when a monitor is plugged in or out
default 2monitor count:2
default 1monitor count:1

Voici la liste des fonctionnalités de la page GitHub de Slate:

  • Hautement personnalisable
  • Lier les frappes au:
    • déplacer et / ou redimensionner les fenêtres
    • mise au point directionnelle des fenêtres
    • activer les dispositions prédéfinies
    • créer, supprimer et activer des instantanés de l'état actuel des fenêtres
  • Définissez les dispositions par défaut pour les différentes configurations de moniteur à activer lorsque cette configuration est détectée.
  • Conseils de fenêtre: un moyen intuitif de changer le focus de la fenêtre
  • [Bêta] Un meilleur sélecteur d’applications, plus personnalisable.

Voici un excellent tutoriel sur la façon de tirer le meilleur parti de Slate.

Ben
la source
Peut-il se rappeler comment les fenêtres étaient positionnées depuis la dernière connexion des moniteurs externes et simplement les restaurer? L'application "Stay" le fait presque, mais elle ne parvient pas à se souvenir de Windows (en particulier de Chrome), je recherche donc toujours quelque chose de mieux.
dreeves
@dreeves Oui, cela fonctionne pour moi. Je viens de le faire manuellement, en utilisant les éléments de menu de Slate «Take Snapshot» et «Activate Snapshot»; Si vous cliquez dessus avant et après avoir mis votre ordinateur en veille, vous enregistrez et restaurez toutes les positions de vos fenêtres. D'après les documents , il semble que Slate puisse effectuer automatiquement l’activation d’instantanés avec sa defaultdirective . Je ne sais pas si vous pouvez automatiser la partie «Prendre un instantané».
Rory O'Kane
2
Je tiens à souligner que, dans le cas d'utilisation d'un PO, ceux-ci peuvent simplement cliquer sur Enregistrer l'instantané et restaurer l'instantané dans le menu. Tant qu'il n'y a qu'une seule configuration de fenêtre que vous voulez, cela devrait fonctionner correctement sans vous occuper de rien d'autre.
Muhd
4
L'ardoise n'est plus maintenue, ils suggèrent d'utiliser Hammerspoon maintenant.
Certainement
8

J'ai résolu ce problème avec un petit AppleScript et le petit utilitaire gratuit Quicksilver.

  1. Enregistrez ce petit AppleScript dans un emplacement qui ne changera pas sur votre ordinateur:

    try
        tell application "Adium"
            activate
            tell window "contacts"
                set the bounds to {1281, 200, 1460, 850}
            end tell
            tell chat windows
                set the bounds to {1281, 800, 1800, 1200}
            end tell
        end tell
    end try
    
    try
        tell application "iTunes"
            activate
            set the bounds of the first window to {1750, 520, 2700, 1150}
        end tell
    end try
    
    try
        tell application "Terminal"
            activate
            set the bounds of the first window to {2450, 320, 3180, 950}
        end tell
    end try
    
    try
        tell application "Firefox"
            activate
            set the bounds of the first window to {1460, 20, 2800, 950}
        end tell
    end try
    
  2. Vous aurez besoin de personnaliser les applications que vous voulez sur votre moniteur et de lier la fenêtre à votre guise. Je suis un programmeur et la configuration ci-dessus est la façon dont je lance mon deuxième moniteur.

  3. Installez Quicksilver .

    J'ai choisi de le rendre non visible dans le Dock et de l'exécuter en tant que petit démon de la barre des tâches.

  4. Configurez un raccourci clavier dans Quicksilver, puis faites glisser votre AppleScript de l'étape 1 dans la fenêtre en tant qu'action à effectuer. Je l'ai lié à CommandShiftA. Fonctionne très bien!

utilisateur3439894
la source
3
Pas particulièrement évolutif si vous avez un bon nombre d'applications à gérer. Ce n'est pas facile à gérer! Coder en dur n'est vraiment pas amusant.
Fatuhoku
Pouvez-vous définir le bureau sur lequel l'application apparaît?
dangerousdave
3

Avant de débrancher le moniteur, fermez tout ce qui ne se trouve pas entièrement sur le moniteur principal. Les applications enregistrent généralement leur état (y compris le placement de la fenêtre) lors de la fermeture et le lisent lors de leur ouverture. Ainsi, si le second moniteur est présent à ces deux moments, tout va bien.

Vous pouvez tirer parti d'applications qui autorisent l'ouverture de plusieurs instances à la fois, mais enregistrez uniquement l'état à la fermeture. Fermez l'instance multi-moniteur (ce qui provoque la sauvegarde de l'état). Débranchez le deuxième moniteur. Si une deuxième instance est en cours d'exécution, il convient de la repositionner sur le moniteur principal ou de démarrer une autre instance. Ne fermez pas cette instance avant de rebrancher le deuxième moniteur et de démarrer une autre instance (qui lirait ensuite la configuration multi-moniteur au démarrage). Vous pouvez ensuite quitter l'instance à moniteur unique (en enregistrant cet état), puis l'instance à plusieurs moniteurs (écrasement de l'état à un seul moniteur).

Une option plus complexe pourrait inclure déterminer où l’état est sauvegardé, la sauvegarder et écrire un fichier de commandes / script pour le restaurer avant d’ouvrir l’application, ce qui vous permettrait de créer un lien pour le faire automatiquement au démarrage de l’application. .

Enfin, il peut y avoir un tel utilitaire pour votre plate-forme, ou en écrire un peut ne pas être trop complexe. Pour Windows, il existe un programme appelé ShiftWindow qui peut repositionner les fenêtres au démarrage de l'application ou sur une touche de raccourci spécifique . Je crains de ne pas connaître assez MacOS pour dire si un utilitaire similaire existe. C’est probablement la solution idéale, après que l’OS ait directement pris en charge une telle chose.


la source
1
Merci! Pas la réponse que j'espérais, mais une bonne avance!
Dreeves
3

Je viens de suivre http://cordlessdog.com/stay/ , fonctionne très bien pour moi, avec un peu de retard

Une fois installé sur votre mac, vous pouvez le lancer et stocker les fenêtres comme vous le souhaitez. Ainsi, chaque fois que vous déconnectez vos écrans et que vous vous reconnectez, toutes les fenêtres sont restaurées.

Vous devrez peut-être ajouter stay en tant qu'application de démarrage, car vous devrez le lancer à chaque fois que vous redémarrez votre Mac.

kvm006
la source
2

J'ai corrigé cela sans aucune application externe.

Tout ce que vous avez à faire est de vous assurer que votre ordinateur portable est "Desktop 1" et votre moniteur externe "Desktop 2"

Pour ce faire, déplacez la barre de menus blanche sur l'écran de l'ordinateur portable dans les préférences système> Moniteurs> Arrangement.

Moosa Ahmed
la source
1

Au moins sous Windows, de nombreuses applications se restaurent si vous les agrandissez avant de changer de moniteur. Laissez-les seuls pendant la réunion, puis restaurez-les après la reconnexion.

C'est toujours une solution incomplète (et compliquée), mais c'est la seule chose que je sache faire si je veux avoir une chance de ressusciter mes fenêtres soigneusement placées. ShiftWindow semble intriguant bien que ...

Et si vous passez de deux moniteurs à un, Alt + Espace + M, alors arrowkeys vous sauvera la vie (Windows encore, désolé) si vous "perdez" vos fenêtres.


la source
1

http://www.irradiatedsoftware.com/twoup/index.html

J'ai trouvé cela via Lifehacker, et cela fonctionne très bien pour moi. J'utilise la version professionnelle SizeUp, par opposition à la version gratuite TwoUp, et c'est parfait.


la source
Voulez-vous dire que cela résout le problème que j'ai posé cependant? La page que vous avez liée ne semble rien dire à ce sujet.
dreeves
1
Non, cela ne résout pas le problème du tout. SizeUp accélère le déplacement d’une fenêtre à l’intérieur de votre choix, mais vous devez tout de même basculer manuellement d’une fenêtre à l’autre et indiquer à SizeUp où vous souhaitez déplacer chacune d’elles.
Rory O'Kane
1

Je suis un utilisateur Windows et je cherchais un moyen de désactiver la nouvelle fonctionnalité Windows 7 pour écarter toutes les fenêtres du moniteur externe débranché. J'ai trouvé le reçu (pour les cartes vidéo ATI) définissant toutes les valeurs DMMEnableDDCPolling dans le registre sur 0. La vérification automatique désactive le contrôle de la désactivation du moniteur. Maintenant, si le moniteur est débranché et branché à nouveau, toutes les fenêtres restent dans la même position.

Voici la réponse qui m'a aidé: https://superuser.com/questions/120983/how-to-disable-monitor-auto-detection-in-windows-7 (réponse d'Alex)

Communauté
la source
1
Cela n'a rien à voir avec Mac?
5
Non .. mais la question a également été marquée comme "fenêtres" (bien que l'OP ait peut-être fait référence à des fenêtres de programme ;)). Quoi qu'il en soit, pour Windows, il existe plusieurs utilitaires pratiques pour la tâche. Personnellement, j'utilise Basta's ZMover et cela a bien fonctionné. Une autre alternative est WindowManager de DeskSoft . Mais cela ne va évidemment pas aider les utilisateurs d’OSX.
Ville