Przywróć okna aplikacji do ich oryginalnych przestrzeni

25

Po ponownym otwarciu aplikacji wszystkie jej okna kończą się na pierwszym Space, niezależnie od ich pierwotnego umiejscowienia:

Oryginalny układ: jedna aplikacja ma otwarte dwa okna, każde w osobnej przestrzeni

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

Niepoprawny układ po ponownym uruchomieniu aplikacji: oba okna znajdują się w pierwszej spacji

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

Czy istnieje ustawienie lub aplikacja, która umożliwiłaby aplikacjom przywracanie okien w przestrzeniach, w których pierwotnie się znajdowały przed zamknięciem aplikacji?

Jakub Roztocil
źródło
Jeśli masz zamiar nadać oddzielne spacje poszczególnym oknom, czy nie możesz po prostu użyć trybu pełnoekranowego, co w zasadzie robi to samo?
William T Froggard
4
Pełny ekran nie jest tym, czego szukam. Moim typowym obiegiem pracy jest posiadanie dedykowanej przestrzeni dla każdego projektu, nad którym pracuję. Mam więc wiele aktywnych Spacji, z których każda zwykle ma okno Chrome, okno edytora, okno terminala itp. I nie chcę tracić czasu na dystrybucję okien między Spacesami przy każdym ponownym uruchomieniu, ponownym uruchomieniu aplikacji lub awaria aplikacji. Tak więc naprawdę interesuje mnie to, co widzisz na powyższym schemacie: aby aplikacje lub system operacyjny pamiętały, które miejsce było w poszczególnych oknach przed zamknięciem aplikacji.
Jakub Roztocil
11
Nie jestem pewien, dlaczego ludzie mają problem z pytaniem OP. Mam wrażenie, że ludzie nie rozumieją, jak działa Spaces i Mission Control. Z mojego punktu widzenia często widzę problem PO, a zachowanie jest niespójne w różnych aplikacjach, takich jak Safari i okna Findera. Czasami okna przechodzą do różnych przestrzeni, a czasem nie.
Vzzdak
@Vzzdak Dobrze, że zachowanie jest niespójne. Zapomniałem o tym wspomnieć.
Jakub Roztocil
1
Chociaż pytanie pochodzi z 2015 r., Nadal jest całkowicie aktualne w 2019 r. To nie tylko Chrome. Widzę na przykład ten sam problem z oknami Findera.
Jamie Cox

Odpowiedzi:

8

W Chromium występuje błąd # 74812 . Głosuj na to!

To samo pytanie na temat Superużytkownika .

edycja : został zaimplementowany w najnowszej wersji programistycznej (Chrome 79)!

Chociaż domyślnie, zgodnie z wymaganiami interfejsu Apple, ta funkcja nadal nie przywraca obszarów roboczych, jeśli zamkniesz Chrome z Cmd-Q. Cytując sfyautor funkcji:

Dla osób, które chcą, aby Chrome zawsze przywracał okna do oryginalnych przestrzeni, możesz to ustawić, uruchamiając to polecenie w oknie terminala (w przypadku Canary użyj com.google.Chrome.canary:)

defaults write com.google.Chrome NSWindowRestoresWorkspaceAtLaunch -bool YES

Aby wrócić do domyślnego zachowania, uruchom:

defaults delete com.google.Chrome NSWindowRestoresWorkspaceAtLaunch
Victor Sergienko
źródło
0

Wiem, że moja odpowiedź nie dotyczy twojego problemu, ale jest to ścisłe obejście. Używam oprogramowania o nazwie Cinch i SizeUp do zmiany położenia okien. Zmiana rozmiaru okna w przestrzeni i na ekranie jest naprawdę szybka i odbywa się za pomocą skrótu klawiaturowego.

Oprogramowanie jest dostarczane z wersją próbną do przetestowania. http://www.irradiationsoftware.com/sizeup/

Florian Bidabe
źródło
0

Nie mam pełnej odpowiedzi, ale dzisiaj zacząłem porządne dźgnięcie tego problemu za pomocą AppleScript. Poniższy Applescript wykonuje mniej więcej połowę pracy. Raportuje wszystkie okna każdej aplikacji otwartej na każdym pulpicie. Następnym krokiem jest zapisanie tego wszystkiego w pliku, a następnie zaimplementowanie skryptu w celu redystrybucji systemu Windows po ponownym uruchomieniu:

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

Oto przykład wynikowego okna dialogowego, które otrzymuję:

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
źródło