Restaurer les fenêtres d'application dans leurs espaces d'origine

25

Lors de la réouverture d'une application, toutes ses fenêtres se retrouvent sur le premier espace, quel que soit leur emplacement d'origine:

Disposition originale: une application a deux fenêtres ouvertes, chacune dans un espace séparé

+-----[ Space 1 ]-----+  +-----[ Space 2 ]-----+
|                     |  |                     |
|  [Chrome window 1]  |  |  [Chrome window 2]  |
|                     |  |                     |
|                     |  |                     |
+---------------------+  +---------------------+

Disposition incorrecte après le redémarrage de l'application: les deux fenêtres sont dans le premier espace

+-----[ Space 1 ]-----+  +-----[ Space 2 ]-----+
|                     |  |                     |
|  [Chrome window 1]  |  |                     |
|  [Chrome window 2]  |  |                     |
|                     |  |                     |
+---------------------+  +---------------------+

Existe-t-il un paramètre ou une application qui permettrait aux applications de restaurer leurs fenêtres dans les espaces où elles se trouvaient à l'origine avant la fermeture de l'application?

Jakub Roztocil
la source
Si vous allez donner des espaces séparés à des fenêtres individuelles, ne pourriez-vous pas simplement utiliser le mode plein écran, qui fait essentiellement la même chose?
William T Froggard,
4
Le plein écran n'est pas ce que je recherche. Mon flux de travail typique est d'avoir un espace dédié pour chaque projet sur lequel je travaille. J'ai donc de nombreux espaces actifs, dont chacun a généralement une fenêtre Chrome, une fenêtre d'éditeur, une fenêtre de terminal, etc. l'application plante. Je suis donc vraiment intéressé par ce que vous voyez dans le diagramme ci-dessus: pour que les applications ou le système d'exploitation se souviennent de l'espace dans lequel chaque fenêtre était avant de quitter une application.
Jakub Roztocil
11
Je ne sais pas pourquoi les gens ont des problèmes avec la question de OP. J'ai l'impression que les gens ne comprennent pas comment fonctionne Spaces and Mission Control. De mon point de vue, je vois fréquemment le problème de l'OP et le comportement est incohérent dans diverses applications, telles que les fenêtres Safari et Finder. Parfois, les fenêtres vont à leurs différents espaces, et parfois non.
Vzzdak
@Vzzdak Bon point sur le comportement incohérent. J'ai oublié de le mentionner.
Jakub Roztocil
1
Bien que cette question date de 2015, elle est toujours tout à fait pertinente en 2019. Ce n'est pas seulement Chrome. Je vois le même problème avec les fenêtres du Finder, par exemple.
Jamie Cox

Réponses:

8

Il y a un bug # 74812 dans Chromium. Votez pour ça!

Même question sur Superuser .

edit : il a été implémenté dans la dernière version de développement (Chrome 79)!

Bien que, par défaut, conformément aux exigences de l'interface utilisateur d'Apple, cette fonctionnalité ne restaure toujours pas les espaces de travail si vous quittez Chrome avec Cmd-Q. Citant sfy, l'auteur de la fonctionnalité:

Pour les personnes qui souhaitent que Chrome restaure toujours les fenêtres dans leurs espaces d'origine, vous pouvez définir cela en exécutant cette commande dans une fenêtre de terminal (pour Canary, utilisez com.google.Chrome.canary):

defaults write com.google.Chrome NSWindowRestoresWorkspaceAtLaunch -bool YES

Pour revenir au comportement par défaut, exécutez:

defaults delete com.google.Chrome NSWindowRestoresWorkspaceAtLaunch
Victor Sergienko
la source
0

Je suis conscient que ma réponse ne répond pas à votre problème, mais il s'agit d'une solution de contournement étroite. J'utilise un logiciel appelé Cinch et SizeUp pour repositionner les fenêtres. Le redimensionnement d'une fenêtre sur l'espace et l'écran est très rapide et se fait à l'aide d'un raccourci clavier.

Le logiciel est livré avec une version d'essai pour que vous puissiez le tester. http://www.irradiatedsoftware.com/sizeup/

Florian Bidabe
la source
0

Je n'ai pas de réponse complète, mais aujourd'hui, j'ai commencé à essayer ce problème en utilisant applescript. L'Applescript suivant fait à peu près la moitié du travail. Il signale toutes les fenêtres de chaque application ouverte sur chaque bureau. L'étape suivante consiste à enregistrer tout cela dans un fichier puis à implémenter un script pour redistribuer les fenêtres après le redémarrage:

--This applescript reports a list of application windows present on each desktop
--This is only a sample script intended to eventually be used to restore all application windows to their pre-reboot desktops

tell application "System Events"

    set windows_string to ""
    set numDesktops to (first paragraph of (do shell script "strings ~/Library/Preferences/com.apple.spaces.plist | grep -c ^\\\\$")) + 1
    --the following tcsh command can determine the number of desktops:
    -- @ x = ( `strings ~/Library/Preferences/com.apple.spaces.plist | grep -c '^\$'` + 1 ); echo $x

    -- switch to the first desktop:
    repeat with aDesktop from 1 to numDesktops
        key code 123 using {control down}
    end repeat

    repeat with aDesktop from 1 to numDesktops

        set windows_string to windows_string & return & return & "Desktop " & (aDesktop as string) & return
        delay 1
        get (the name of every application process whose class of windows contains window)

        repeat with P in the result

            set windows_string to windows_string & return & return & P & return

            get (every window of process (contents of P) whose value of attribute "AXMinimized" is false)

            repeat with W in the result

                set window_name to ((name of W) as string)

                --Stickies window names can be multi-line, so this trims from the first hard return onward
                set better_window_name to (my replacePattern:"[\\n].*" inString:window_name usingThis:"")
                if window_name is not equal to "" then
                    try
                        set windows_string to windows_string & better_window_name & return
                    on error
                        set windows_string to windows_string & "couldn't get window name" & return
                    end try
                end if

            end repeat

        end repeat

        --switch to the next desktop
        key code 124 using {control down}

    end repeat

    display dialog "List of windows on this desktop: " & return & return & windows_string

end tell

--Call like this: set res to my replacePattern:"\\s+" inString:"1 subtratcing-these: -2 3 4" usingThis:"-"
use framework "Foundation"
use scripting additions

on replacePattern:thePattern inString:theString usingThis:theTemplate
    set theRegEx to current application's NSRegularExpression's regularExpressionWithPattern:thePattern options:0 |error|:(missing value)
    set theResult to theRegEx's stringByReplacingMatchesInString:theString options:0 range:{location:0, |length|:length of theString} withTemplate:theTemplate
    return theResult as text
end replacePattern:inString:usingThis:

Voici un exemple de la boîte de dialogue résultante que j'obtiens:

List of windows on this desktop: 



Desktop 1


iTunes
MiniPlayer


FluidApp
Found 626 tickets


Stickies
useful commands
System Config Notes
Special characters
Profile where a python scri…
XEMacs Tricks
Terminal Tips


Messages
Messages (3 unread)


FluidApp
Found 626 tickets


Slack
Slack - Princeton NPLC


FluidApp
Found 626 tickets


Desktop 2


iTunes
MiniPlayer


FluidApp
Found 626 tickets


Stickies
DAI


Messages
Messages (3 unread)


FluidApp
Found 626 tickets


Slack
Slack - Princeton NPLC


FluidApp
Found 626 tickets


Desktop 3


iTunes
MiniPlayer


Finder
Searching “Scripts”
Searching “Scripts”
Searching “Scripts”


FluidApp
Found 626 tickets


Stickies
RPST
Issues to resolve with RPST…


Messages
Messages (3 unread)


FluidApp
Found 626 tickets


Terminal
Terminal — -csh


TextEdit
Untitled 35.txt
Untitled 34.txt
Untitled 27.txt
Untitled 15.txt


Slack
Slack - Princeton NPLC


Safari
AppleScript: Essential Sub-Routines
Using Applescript to Execute a Complicated Keystroke - Stack Overflow
How to restore windows to their original desktops after reboot? - Ask Different


Script Editor
Untitled.scpt
Untitled 4.scpt
Untitled 3.scpt
paste_file_contents.scpt
Untitled 2.scpt


FluidApp
Found 626 tickets


Automator
Subtract.workflow (Quick Action)


Desktop 4


iTunes
MiniPlayer


FluidApp
Found 626 tickets


Stickies
GALAXY


Messages
Messages (3 unread)


FluidApp
Found 626 tickets


Terminal
Terminal — -bash
???c7??? 8yc`?h=??'?]b?c??k?k????Ԫ??m??d+ — -bash


Slack
Slack - Princeton NPLC


FluidApp
Found 626 tickets


Desktop 5


iTunes
MiniPlayer


FluidApp
Found 626 tickets


Stickies
TREEVIEW
When you start to work on a…
TreeView stats, legend, & d…
DATE OF SUBMISSION: 


Messages
Messages (3 unread)


FluidApp
Found 626 tickets


Slack
Slack - Princeton NPLC


FluidApp
Found 626 tickets


Desktop 6


iTunes
MiniPlayer


FluidApp
Found 626 tickets


Stickies
ALIZZI


Messages
Messages (3 unread)


FluidApp
Found 626 tickets


Slack
Slack - Princeton NPLC


FluidApp
Found 626 tickets


Desktop 7


iTunes
MiniPlayer


FluidApp
Found 626 tickets


Stickies
GARCIA


Messages
Messages (3 unread)


FluidApp
Found 626 tickets


Slack
Slack - Princeton NPLC


FluidApp
Found 626 tickets


Desktop 8


iTunes
MiniPlayer


FluidApp
Found 626 tickets


Stickies
EMILIA


Messages
Messages (3 unread)


FluidApp
Found 626 tickets


Slack
Slack - Princeton NPLC


FluidApp
Found 626 tickets
hepcat72
la source