Восстановите окна приложения в их первоначальных пространствах

25

При повторном открытии приложения все его окна оказываются на первом месте, независимо от их исходного размещения:

Оригинальный макет: одно приложение имеет два открытых окна, каждое в отдельном пространстве

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

Неправильный макет после перезапуска приложения: оба окна находятся в первом пробеле

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

Есть ли параметр или приложение, которое позволяло бы приложениям восстанавливать свои окна в тех местах, в которых они находились до закрытия приложения?

Якуб Розтоцил
источник
Если вы собираетесь выделять отдельные окна отдельным окнам, не могли бы вы просто использовать полноэкранный режим, который по сути делает то же самое?
Уильям Т Фроггард
4
Полный экран это не то, что я ищу. Мой типичный рабочий процесс - выделение места для каждого проекта, над которым я работаю. Поэтому у меня есть много активных пространств, в каждом из которых обычно есть окно Chrome, окно редактора, окно терминала и т. Д. И я не хочу тратить время на распределение окон по пространствам при каждой перезагрузке, перезапуске приложения или приложение вылетает. Так что мне действительно интересно только то, что вы видите на диаграмме выше: чтобы приложения или операционная система помнили, какое пространство было в каждом отдельном окне до закрытия приложения.
Якуб Розтоцил
11
Не уверен, почему у людей возникают проблемы с вопросом ОП. У меня складывается впечатление, что люди не понимают, как работает Spaces и Mission Control. С моей точки зрения, я часто вижу проблему OP, и ее поведение несовместимо в различных приложениях, таких как окна Safari и Finder. Иногда окна выходят в их различные пространства, а иногда нет.
Vzzdak
@Vzzdak Хорошая мысль о непоследовательности поведения. Забыл упомянуть об этом.
Якуб Розтоцил
1
Хотя этот вопрос относится к 2015 году, он все еще актуален в 2019 году. Это не только Chrome. Например, я вижу ту же проблему с окнами Finder.
Джейми Кокс

Ответы:

8

В Chromium есть ошибка # 74812 . Проголосуй за это!

Тот же вопрос о суперпользователе .

редактировать : это было реализовано в последней версии разработки (Chrome 79)!

Хотя по умолчанию в соответствии с требованиями пользовательского интерфейса Apple эта функция по-прежнему не восстанавливает рабочие пространства, если вы вышли из Chrome с помощью Cmd-Q. Цитирую sfyавтора статьи:

Для людей, которые хотят, чтобы Chrome всегда восстанавливал окна в их исходное пространство, вы можете установить это, запустив эту команду в окне терминала (для Canary, используйте com.google.Chrome.canary):

defaults write com.google.Chrome NSWindowRestoresWorkspaceAtLaunch -bool YES

Чтобы вернуться к поведению по умолчанию, выполните:

defaults delete com.google.Chrome NSWindowRestoresWorkspaceAtLaunch
Виктор Сергиенко
источник
0

Я знаю, что мой ответ не касается вашей проблемы, но это обходной путь. Я использую программное обеспечение под названием Cinch и SizeUp для изменения положения окон. Изменение размера окна в пространстве и на экране происходит очень быстро и выполняется с помощью сочетания клавиш.

Программное обеспечение поставляется с пробной версией для тестирования. http://www.irradiatedsoftware.com/sizeup/

Флориан Бидабе
источник
0

У меня нет полного ответа, но сегодня я начал приличный удар по этому вопросу, используя applecript. Следующий Applescript выполняет примерно половину работы. Он сообщает обо всех окнах каждого приложения, открытого на каждом рабочем столе. Следующий шаг - записать все это в файл, а затем реализовать скрипт для перераспределения окон после перезагрузки:

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

Вот пример того, что я получаю в результате:

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
источник