358 votes

Remettre une fenêtre hors écran à l'écran sous Mac OS X

Il semble que Mac OS X 10.6.1 Snow Leopard ait parfois tendance à laisser certaines fenêtres hors écran, notamment lorsque je déconnecte un moniteur externe de mon MacBook. Comment puis-je ramener la fenêtre à l'écran lorsqu'il n'est pas possible de saisir la barre de titre et de la faire glisser sur l'écran ?

XvsXP.com recommande d'ajuster votre résolution d'écran vers le bas pour que les fenêtres hors écran " reviennent à l'écran ", puis d'ajuster à nouveau votre résolution d'écran à son paramètre d'origine. Dans OS X 10.4 Tiger, j'avais un script qui ramenait toutes les fenêtres hors écran à l'écran, mais dans mes mises à niveau vers Leopard et maintenant Snow Leopard, je ne semble pas avoir ce script.

Y a-t-il de meilleures solutions ?

0 votes

0 votes

J'ai constaté que la suppression des éléments de référence incriminés de la liste de contrôle d'Interface Builder peut parfois aider. J'ai même essayé de définir la position de la fenêtre via AppleScript, sans succès.

0 votes

J'ai réussi à récupérer une fenêtre x11 en déplaçant l'écran qui s'est créé de l'autre côté d'un écran adjacent. En d'autres termes, j'avais la disposition suivante avec mes moniteurs [ 2 ][1], et la fenêtre x11 apparaissait hors de l'écran à la gauche apparente de [1]. En réarrangeant : [1][ 2 ], ma fenêtre x11 apparaissait correctement sur la fenêtre [1]. Je suis sous OS X 10.10.

6voto

Justin Points 255

Tenir option + cliquez deux fois sur l'icône de l'application dans le dock et elle sera d'abord réduite, puis restaurée en plein écran sur votre bureau.

0 votes

Cela ne semble pas fonctionner dans macOS 10.14 Mojave.

0 votes

Il fonctionne toujours pour moi dans Mojave v10.14.6.

5voto

Aucune des méthodes ci-dessus n'a fonctionné pour moi sur OSX 10.7.4. J'essayais d'accéder à KeePassX, qui était complètement absent de l'écran. (Je l'avais déplacé sur un deuxième écran à la maison, mais j'étais maintenant au bureau, sans deuxième écran).

Le changement de résolution en avant et en arrière n'a eu aucun effet. Fermer l'application et la rouvrir n'a eu aucun effet.

Cependant, lorsque J'ai fermé la base de données et j'ai demandé à en ouvrir une nouvelle. La fenêtre a été déplacée pour que je puisse accéder à la liste déroulante pour sélectionner un fichier. . (yay !)

3voto

killerovsky Points 31

La position des vues est enregistrée dans les fichiers nib eux-mêmes. La façon dont j'ai résolu ce problème a été d'apporter une modification à la vue, puis de l'enregistrer. J'ai fermé Interface Builder et je l'ai relancé. Ma fenêtre et ma vue ont été ramenées à l'écran principal. Je dois dire que j'ai essayé toutes les options avant de faire cela. C'est le Zoom, la suppression du .plist de Library/Preferences, F8, Gather Windows... Aucune d'entre elles n'a fonctionné. J'espère que cela vous aidera.

3voto

DustinB Points 151

J'ai essayé à peu près tout ce qui précède pour une application à jeton appelée SecurID que nous utilisons pour l'accès VPN au travail. Cet AppleScript a finalement résolu le problème (avec l'aimable autorisation de http://www.leonamarant.com/2008/04/02/how-to-get-off-screen-Windows-back-on-your-mac-os-x-v105/ )

-- Example list of processes to ignore: {"xGestures"} or {"xGestures", "OtherApp", ...}
property processesToIgnore : {}

-- Get the size of the Display(s), only useful if there is one display
-- otherwise it will grab the total size of both displays
tell application "Finder"
    set _b to bounds of window of desktop
    set screen_width to item 3 of _b
    set screen_height to item 4 of _b
end tell

tell application "System Events"
    set allProcesses to application processes
    set _results to ""
    repeat with i from 1 to count allProcesses
        set doIt to 1
        repeat with z from 1 to count processesToIgnore
            if process i = process (item z of processesToIgnore) then
            set doIt to 0
            end if
        end repeat

        if doIt = 1 then
            tell process i
                repeat with x from 1 to (count windows)
                    set winPos to position of window x
                    set _x to item 1 of winPos
                    set _y to item 2 of winPos

                    if (_x < 0 or _y < 0 or _x > screen_width or _y > screen_height) then
                        set position of window x to {0, 22}
                    end if
                end repeat
            end tell
        end if
    end repeat
end tell

0 votes

J'ai eu le même problème avec la stupide petite application SecureID. Ce post m'a sauvé, merci !

2voto

Allez dans Préférences système " Affichages " Détecter les affichages.

Cela forcera le système à rescanner, et à détecter le moniteur manquant... Cela résout généralement le problème quand je le rencontre.

Si cela ne fonctionne pas et que votre système croit toujours que le moniteur est connecté, essayez deux choses :

  1. Si le câble est toujours connecté (mais non relié à un moniteur), débranchez-le.
  2. Dans l'onglet disposition du panneau d'affichage, essayez de "Rassembler les fenêtres". Cela devrait rassembler toutes les fenêtres sur le moniteur actif / primaire.

0 votes

J'ai essayé d'utiliser Detect Displays et ça n'a pas marché. Je n'ai pas essayé l'option "Gather Windows", mais je le ferai la prochaine fois.

0 votes

Cela peut ou ne peut pas fonctionner. J'ai découvert que Wireshark (une application X Windows), était désactivé à l'écran lorsqu'un second écran était connecté. C'était en fait un bug de XQuartz (reconnu). Il n'est pas clair s'il s'agit d'un bug Apple ou d'un bug XQuartz. Voir xquartz.macosforge.org/trac/ticket/797 .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X