Відновлення вікон додатків до їх оригінальних просторів


25

Після повторного відкриття програми всі його вікна закінчуються на першому просторі, незалежно від оригінального місця розташування:

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

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

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

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

Чи є налаштування чи додаток, який би дозволив додаткам відновити свої вікна в просторах, в яких вони були розташовані до того, як додаток було закрито?


Якщо ви збираєтеся виділити окремі пробіли для окремих вікон, чи не могли б ви просто використовувати режим повноекранного режиму, що по суті робить те саме?
Вільям Т Фроггард

4
Повноекранний - це не те, що я шукаю. Мій типовий робочий процес - це виділення місця для кожного проекту, над яким я працюю. Тому у мене є багато активних просторів, у кожному з яких зазвичай є вікно Chrome, вікно редактора, вікно терміналу тощо. І я не хочу витрачати час на розповсюдження вікон у просторах щоразу, коли перезавантажую, перезавантажую програму чи збої програми Тож мене дуже цікавить саме те, що ви бачите на діаграмі вище: щоб мати програми або ОС запам’ятати, який простір було у кожному окремому вікні до того, як додаток вийшов.
Якуб Розтоцил

11
Не впевнений, чому люди стикаються з питанням ОП. У мене складається враження, що люди не розуміють, як працюють простори та контроль місій. З моєї точки зору, я часто бачу проблему ОП, і поведінка є непослідовною у різних програмах, таких як вікна 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 and SizeUp. Змінення розміру вікна в просторі та екрані дійсно швидко, і це робиться за допомогою комбінації клавіш.

Програмне забезпечення постачається з пробною версією, щоб ви його протестували. http://www.irradiatedsoftware.com/sizeup/


0

Я не маю повної відповіді, але сьогодні я почав гідну проблему з цим питанням за допомогою яблучного сценарію. Наступний яблучний сценарій виконує приблизно половину роботи. Він повідомляє про всі вікна кожної програми, відкриті на кожному робочому столі. Наступний крок - записати все це у файл, а потім реалізувати сценарій для перерозподілу вікон після перезавантаження:

--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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.