Restaurar ventanas de aplicaciones a sus espacios originales

25

Al volver a abrir una aplicación, todas sus ventanas terminan en el primer espacio, independientemente de su ubicación original:

diseño original: una aplicación tiene dos ventanas abiertas, cada una en un espacio separado

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

la disposición incorrecta después de reiniciar la aplicación: las dos ventanas están en el primer espacio

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

¿Existe una configuración o una aplicación que permita que las aplicaciones restauren sus ventanas en los espacios donde se ubicaron originalmente antes de que se cerrara la aplicación?

Jakub Roztocil
fuente
Si va a dar espacios separados a ventanas individuales, ¿no podría simplemente usar el modo de pantalla completa, que esencialmente hace lo mismo?
William T Froggard
44
La pantalla completa no es lo que estoy buscando. Mi flujo de trabajo típico es tener un espacio dedicado para cada proyecto en el que estoy trabajando. Por lo tanto, tengo muchos espacios activos, cada uno de los cuales generalmente tiene una ventana de Chrome, una ventana de editor, una ventana de terminal, etc. Y no quiero pasar tiempo distribuyendo ventanas a través de espacios cada vez que reinicio, reinicio una aplicación o un la aplicación se bloquea. Así que estoy realmente interesado en lo que ves en el diagrama anterior: para que las aplicaciones o el sistema operativo recuerden en qué espacio estaba cada ventana individual antes de que se cerrara una aplicación.
Jakub Roztocil
11
No estoy seguro de por qué las personas tienen problemas con la pregunta de OP. Tengo la impresión de que las personas no entienden cómo funciona Spaces and Mission Control. Desde mi perspectiva, veo el problema del OP con frecuencia, y el comportamiento es inconsistente en varias aplicaciones, como las ventanas Safari y Finder. A veces las ventanas van a sus diversos espacios, y a veces no.
Vzzdak
@Vzzdak Buen punto sobre el comportamiento inconsistente. Olvidé mencionar eso.
Jakub Roztocil
1
Aunque esta pregunta es de 2015, sigue siendo completamente relevante en 2019. No es solo Chrome. Veo el mismo problema con las ventanas del Finder, por ejemplo.
Jamie Cox

Respuestas:

8

Hay un error # 74812 en Chromium. ¡Vota por ello!

La misma pregunta sobre el superusuario .

editar : se implementó en la última versión de desarrollo (Chrome 79).

Sin embargo, de forma predeterminada, de conformidad con los requisitos de la interfaz de usuario de Apple, esta función aún no restaurará los espacios de trabajo si saliste de Chrome con Cmd-Q. Citando sfy, el autor de la característica:

Para las personas que desean que Chrome siempre restaure las ventanas a sus espacios originales, puede configurarlo ejecutando este comando en una ventana de terminal (para Canary, use com.google.Chrome.canary):

defaults write com.google.Chrome NSWindowRestoresWorkspaceAtLaunch -bool YES

Para volver al comportamiento predeterminado, ejecute:

defaults delete com.google.Chrome NSWindowRestoresWorkspaceAtLaunch
Victor Sergienko
fuente
0

Soy consciente de que mi respuesta no aborda su problema, pero es una solución alternativa. Estoy usando un software llamado Cinch y SizeUp para reposicionar ventanas. Cambiar el tamaño de una ventana a través del espacio y la pantalla es realmente rápido y se hace usando el atajo de teclado.

El software viene con una versión de prueba para que pueda probarlo. http://www.irradiatedsoftware.com/sizeup/

Florian Bidabe
fuente
0

No tengo una respuesta completa, pero hoy, comencé una puñalada decente sobre este problema usando AppleScript. El siguiente Applescript realiza aproximadamente la mitad del trabajo. Informa todas las ventanas de cada aplicación abierta en cada escritorio. El siguiente paso es registrar todo esto en un archivo y luego implementar un script para redistribuir las ventanas después de reiniciar:

--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:

Aquí hay un ejemplo de cuál es el diálogo resultante que obtengo:

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
fuente