คืนค่าหน้าต่างแอปให้เป็น Spaces ดั้งเดิม


25

เมื่อเปิดแอปอีกครั้งหน้าต่างทั้งหมดของมันจะอยู่ใน Space แรกโดยไม่คำนึงถึงตำแหน่งเดิม:

รูปแบบดั้งเดิม: แอปหนึ่งมีหน้าต่างสองบานที่เปิดอยู่แต่ละอันใน Space ที่แยกต่างหาก

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

เลย์เอาต์ไม่ถูกต้องหลังจากรีสตาร์ทแอป: หน้าต่างทั้งสองอยู่ใน Space แรก

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

มีการตั้งค่าหรือแอพที่จะทำให้แอพสามารถกู้คืนหน้าต่างของพวกเขาใน Spaces ที่พวกเขาอยู่ในตอนแรกก่อนที่แอพจะหยุดทำงานหรือไม่?


ถ้าคุณจะให้ช่องว่างแยกกับแต่ละหน้าต่างคุณจะไม่สามารถใช้โหมดเต็มหน้าจอได้ซึ่งเป็นสิ่งเดียวกัน
William T Froggard

4
เต็มหน้าจอไม่ใช่สิ่งที่ฉันกำลังมองหา เวิร์กโฟลว์ทั่วไปของฉันคือการมีพื้นที่เฉพาะสำหรับแต่ละโครงการที่ฉันกำลังทำงาน ดังนั้นฉันจึงมี Spaces ที่ใช้งานอยู่จำนวนมากซึ่งแต่ละแห่งมักจะมีหน้าต่าง Chrome, หน้าต่างแก้ไข, หน้าต่างเทอร์มินัล ฯลฯ และฉันไม่ต้องการใช้เวลาในการแจกจ่าย windows ข้าม Spaces ทุกครั้งที่ฉันรีบูตแอปใหม่หรือ แอปขัดข้อง ดังนั้นฉันจึงสนใจจริงๆในสิ่งที่คุณเห็นในแผนภาพด้านบน: ให้แอพหรือระบบปฏิบัติการจดจำ Space ที่แต่ละหน้าต่างแต่ละหน้าต่างก่อนที่แอพจะหยุด
Jakub Roztocil

11
ไม่แน่ใจว่าทำไมคนถึงมีปัญหากับคำถามของ OP ฉันได้รับความประทับใจว่าผู้คนไม่เข้าใจวิธีการทำงานของ Spaces และ Mission Control จากมุมมองของฉันฉันเห็นปัญหาของ OP บ่อยครั้งและพฤติกรรมนั้นไม่สอดคล้องกันในแอพพลิเคชั่นต่าง ๆ เช่นหน้าต่าง Safari และ Finder บางครั้งหน้าต่างไปที่ช่องว่างต่าง ๆ และบางครั้งก็ไม่
Vzzdak

@Vzzdak เป็นจุดที่ดีเกี่ยวกับพฤติกรรมที่ไม่สอดคล้องกัน ลืมพูดถึงว่า
Jakub Roztocil

1
แม้ว่าคำถามนี้มาจากปี 2015 แต่ก็ยังมีความเกี่ยวข้องอย่างสมบูรณ์ในปี 2019 ไม่ใช่เฉพาะ Chrome ฉันเห็นปัญหาเดียวกันกับ Finder windows เช่น
Jamie Cox

คำตอบ:


8

มีข้อผิดพลาด # 74812ใน Chromium โหวตเลย!

คำถามเดียวกันใน Superuser

แก้ไข : มันถูกนำมาใช้ในรุ่นพัฒนาล่าสุด (Chrome 79)!

แม้ว่าตามค่าเริ่มต้นตามข้อกำหนด UI ของ Apple แล้วคุณลักษณะนี้จะไม่คืนค่าพื้นที่ทำงานหากคุณออกจาก Chrome ด้วย Cmd-Q Quoting sfyผู้เขียนคุณสมบัติ:

สำหรับผู้ที่ต้องการให้ Chrome กู้คืนหน้าต่างไปยังช่องว่างเดิมของตนเสมอคุณสามารถตั้งค่านั้นได้ด้วยการรันคำสั่งนี้ในหน้าต่างเทอร์มินัล (สำหรับ Canary, use com.google.Chrome.canary):

defaults write com.google.Chrome NSWindowRestoresWorkspaceAtLaunch -bool YES

ในการกลับไปสู่การทำงานปกติให้เรียกใช้:

defaults delete com.google.Chrome NSWindowRestoresWorkspaceAtLaunch

0

ฉันทราบว่าคำตอบของฉันไม่ได้แก้ปัญหาของคุณ แต่เป็นวิธีแก้ปัญหาอย่างใกล้ชิด ฉันใช้ซอฟต์แวร์ที่ชื่อว่า Cinch และ SizeUp เพื่อเปลี่ยนตำแหน่ง windows การปรับขนาดหน้าต่างข้ามพื้นที่และหน้าจอทำได้อย่างรวดเร็วและใช้แป้นพิมพ์ลัด

ซอฟต์แวร์มาพร้อมกับรุ่นทดลองให้คุณทดสอบ http://www.irradiatedsoftware.com/sizeup/


0

ฉันยังไม่มีคำตอบที่สมบูรณ์ แต่วันนี้ฉันเริ่มแทงที่ดีในปัญหานี้โดยใช้ applescript 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.