Ghi nhớ kích thước cửa sổ và vị trí khi rút và cắm lại màn hình thứ hai


99

Đây là một cái gì đó hút:

  1. Cắm màn hình ngoài vào máy tính xách tay (Mac OS X Leopard trong trường hợp của tôi).
  2. Sắp xếp các cửa sổ của bạn để có IDE trên một màn hình và trình duyệt trên một màn hình khác. (V.v. Thay đổi kích thước, sắp xếp lại, phiền phức, phiền phức, phiền phức.)
  3. Rút phích cắm màn hình để chạy đến một cuộc họp, hoặc bất cứ điều gì.
  4. Đi 1.

Tôi muốn thay thế bước 2 bằng máy tính của Cameron nhớ chính xác cách tôi có nó và chỉ cần đặt nó trở lại theo cách đó.

(Cá nhân tôi chỉ cần một giải pháp cho Mac nhưng việc thu thập các giải pháp cho các hệ thống khác ở đây có thể hữu ích cho những người khác. Tôi chắc chắn đó là một vấn đề phổ biến.)

Câu trả lời:


56

Có một cái nhìn tại Stay by Cordless Dog. Tôi tin rằng nó làm chính xác những gì bạn đang tìm kiếm.


2
Tôi đã thử điều này. Nó không hoạt động cho các cửa sổ X11 nhưng có vẻ như được quảng cáo. Cảm ơn con trỏ! Có thể đây là lần gần nhất chúng tôi có một giải pháp cho Mac.
dreeves

Các cửa sổ X11 không phải là trường hợp thực tế của NSWindow (ít nhất là lần cuối chúng tôi không kiểm tra lần trước) vì vậy không có gì đáng ngạc nhiên khi Ở lại không muốn làm gì với chúng :) Vui vì nó hoạt động khác!

1
Điều này có vẻ tốt, nhưng nó không hoạt động với các ứng dụng toàn màn hình trong Lion. Tôi có Safari ở chế độ toàn màn hình khi tôi có 1 màn hình và sau khi tôi gắn màn hình thứ 2, tôi muốn thoát toàn màn hình và chuyển Safari sang màn hình thứ hai. Ở lại không di chuyển bất kỳ ứng dụng toàn màn hình.

1
Nó có vẻ như là một phù hợp tốt. Nhưng với 3 màn hình bên ngoài, nó thường có vấn đề với các vị trí và chỉ giải quyết vấn đề tới 50%. Vì vậy, tôi vẫn phải làm rất nhiều công việc thủ công. Tôi chỉ cần cài đặt nó. Oh, và nó chỉ dùng thử 30 ngày!
Ernst Ernst

15

Slate là mộtứng dụng Mac miễn phí rất mạnh mẽ, thực hiện chính xác những gì bạn muốn. Khi bạn cắm vào màn hình phụ, nó sẽ tự động phát hiện màn hình mới và tất cả các cửa sổ của bạn sẽ được di chuyển và thay đổi kích thước theo cách bạn thích. Bạn có thể xác định vị trí và kích thước tùy chỉnh cho tất cả các ứng dụng của mình, bao gồm toàn màn hình, nửa màn hình và dựa trên lưới.

Một trong những điều thú vị nhất về Slate là bạn có thể xác định các bố cục khác nhau dựa trên số lượng màn hình bạn đã kết nối . Ví dụ: nếu bạn đang sử dụng máy tính xách tay của mình, bạn có thể muốn có tất cả các ứng dụng của mình lấp đầy toàn màn hình. Nhưng khi bạn có màn hình phụ lớn hơn, bạn có thể muốn tách màn hình giữa trình duyệt, thư và nhạc của mình. Slate làm điều này một cách dễ dàng.

Bạn cũng có thể xác định các phím tắt cho các bố cục và hành động cụ thể như khoả thân và thay đổi kích thước cửa sổ theo một tỷ lệ nhất định.

Dưới đây là tập tin cấu hình của tôi. Tôi giữ tất cả các ứng dụng của mình ở chế độ toàn màn hình trên tất cả các màn hình của mình, nhưng bạn có thể thay đổi nó để biến chúng thành một nửa hoặc một số kích thước khác:

# Monitor Aliases
alias mon-laptop    0    # variable for my laptop monitor
alias mon-hp        1    # my external HP monitor

# Window Position Regions
alias hp-full        move screenOriginX;screenOriginY screenSizeX;screenSizeY         ${mon-hp}
alias hp-left        move screenOriginX;screenOriginY screenSizeX/2;screenSizeY         ${mon-hp}
alias hp-right       move screenOriginX+screenSizeX/2;screenOriginY screenSizeX/2;screenSizeY         ${mon-hp}
alias laptop-full        move screenOriginX;screenOriginY screenSizeX;screenSizeY         ${mon-laptop}
alias laptop-left        move screenOriginX;screenOriginY screenSizeX/2;screenSizeY         ${mon-laptop}
alias laptop-right       move screenOriginX+screenSizeX/2;screenOriginY screenSizeX/2;screenSizeY         ${mon-laptop}
alias laptop-righttop    move screenOriginX+screenSizeX/2;screenOriginY screenSizeX/2;screenSizeY/2       ${mon-laptop}
alias laptop-rightbottom move screenOriginX+screenSizeX/2;screenOriginY+screenSizeY/2    screenSizeX/2;screenSizeY/2       ${mon-laptop}

# Window layouts for when I have 2 monitors
layout 2monitor 'Google Chrome':REPEAT ${hp-full}
layout 2monitor 'iCal':REPEAT ${hp-full}
layout 2monitor 'Coda':REPEAT ${hp-full}
layout 2monitor 'Mail':REPEAT ${laptop-full}
layout 2monitor 'Rdio':REPEAT ${laptop-full}
layout 2monitor 'Spotify':REPEAT ${laptop-full}
layout 2monitor 'Evernote':REPEAT ${laptop-full}

# Single monitor window layouts
layout 1monitor 'Google Chrome':REPEAT ${laptop-full}
layout 1monitor 'iCal':REPEAT ${laptop-full}
layout 1monitor 'Coda':REPEAT ${laptop-full}
layout 1monitor 'Mail':REPEAT ${laptop-full}
layout 1monitor 'Rdio':REPEAT ${laptop-full}
layout 1monitor 'Spotify':REPEAT ${laptop-full}
layout 1monitor 'Evernote':REPEAT ${laptop-full}

# Keyboard shortcuts for each layout
bind l:shift;ctrl layout 2monitor
bind g:shift;ctrl grid padding:5 0:2,1 1:2,2

# Auto-detect when a monitor is plugged in or out
default 2monitor count:2
default 1monitor count:1

Dưới đây là danh sách các tính năng từ trang GitHub của Slate:

  • Khả năng tùy biến cao
  • Bind tổ hợp phím để:
    • di chuyển và / hoặc thay đổi kích thước cửa sổ
    • cửa sổ tập trung hướng
    • kích hoạt bố trí đặt trước
    • tạo, xóa và kích hoạt ảnh chụp nhanh về trạng thái hiện tại của cửa sổ
  • Đặt bố cục mặc định cho các cấu hình màn hình khác nhau sẽ kích hoạt khi phát hiện cấu hình đó.
  • Gợi ý cửa sổ: một cách trực quan để thay đổi tiêu điểm cửa sổ
  • [Beta] Trình chuyển đổi ứng dụng tốt hơn, tùy biến hơn.

Đây là một hướng dẫn tuyệt vời về cách tận dụng tối đa Slate.


Nó có thể nhớ cách các cửa sổ được định vị từ khi màn hình ngoài cắm vào lần cuối và chỉ cần khôi phục chúng không? Ứng dụng "Ở lại" gần như làm điều này nhưng nó vẫn không nhớ các cửa sổ (đặc biệt là Chrome) vì vậy tôi vẫn đang tìm kiếm thứ gì đó tốt hơn.
dreeves

@dreeves Vâng, nó hoạt động với tôi. Tôi vừa thực hiện thành công điều đó bằng cách sử dụng các mục trong menu của Slate trong trò chơi Chụp ảnh chụp nhanh và Kích hoạt ảnh chụp nhanh; nếu bạn nhấp vào chúng trước và sau khi đặt máy tính vào chế độ ngủ, bạn sẽ lưu và khôi phục tất cả các vị trí cửa sổ của mình. Từ các tài liệu , có vẻ như Slate có thể tự động thực hiện Snapshot Snapshot chụp với defaultchỉ thị của nó . Tôi không biết liệu bạn có thể tự động hóa phần của Take Take Snapshot.
Rory O'Kane

2
Tôi muốn chỉ ra rằng đối với trường hợp sử dụng OP, họ có thể chỉ cần nhấp vào lưu ảnh chụp nhanh và khôi phục ảnh chụp nhanh trong menu. Miễn là chỉ có một cấu hình cửa sổ mà bạn muốn, nó sẽ hoạt động tốt mà không gây rối với bất cứ điều gì khác.
Muhd

3
Slate không còn được duy trì nữa, họ đề nghị sử dụng Hammerspoon ngay bây giờ.
chắc chắn

8

Tôi đã giải quyết điều này với một AppleScript nhỏ và tiện ích phần mềm miễn phí nhỏ Quicksilver.

  1. Lưu AppleScript nhỏ này vào một vị trí sẽ không thay đổi trên máy tính của bạn:

    try
        tell application "Adium"
            activate
            tell window "contacts"
                set the bounds to {1281, 200, 1460, 850}
            end tell
            tell chat windows
                set the bounds to {1281, 800, 1800, 1200}
            end tell
        end tell
    end try
    
    try
        tell application "iTunes"
            activate
            set the bounds of the first window to {1750, 520, 2700, 1150}
        end tell
    end try
    
    try
        tell application "Terminal"
            activate
            set the bounds of the first window to {2450, 320, 3180, 950}
        end tell
    end try
    
    try
        tell application "Firefox"
            activate
            set the bounds of the first window to {1460, 20, 2800, 950}
        end tell
    end try
    
  2. Bạn sẽ cần tùy chỉnh ứng dụng nào bạn muốn trên màn hình và cửa sổ giới hạn cách bạn thích chúng. Tôi là một lập trình viên và cấu hình trên là cách tôi chạy màn hình thứ hai.

  3. Cài đặt Quicksilver .

    Tôi đã chọn làm cho nó không hiển thị trong Dock và chỉ chạy như một daemon thanh tác vụ nhỏ

  4. Thiết lập lệnh chính trong Quicksilver và kéo và thả AppleScript của bạn từ bước 1 vào cửa sổ dưới dạng hành động để thực hiện. Tôi ràng buộc nó với CommandShiftA. Hoạt động tuyệt vời!


3
Không đặc biệt có thể mở rộng nếu bạn có số lượng ứng dụng tốt để quản lý. Cũng không dễ quản lý! Giới hạn mã hóa cứng thực sự là không vui.
fatuhoku

Bạn có thể đặt máy tính để bàn mà ứng dụng xuất hiện không?
nguy hiểm

3

Trước khi bạn rút phích cắm màn hình, hãy đóng mọi thứ không hoàn toàn trên màn hình chính. Các ứng dụng thường lưu trạng thái của chúng (bao gồm cả vị trí cửa sổ) khi chúng đóng và đọc nó khi chúng mở, vì vậy nếu màn hình thứ hai có mặt ở cả hai thời điểm đó thì bạn sẽ ổn.

Bạn có thể tận dụng các ứng dụng cho phép mở nhiều phiên bản cùng một lúc, nhưng chỉ lưu trạng thái đóng. Đóng phiên bản đa màn hình (khiến trạng thái được lưu). Rút phích cắm màn hình thứ hai. Nếu bạn có một phiên bản thứ hai đang chạy, nó sẽ được định vị lại trên màn hình chính hoặc bạn có thể bắt đầu một phiên bản khác. Không đóng phiên bản này trước khi cắm lại màn hình thứ hai và bắt đầu một phiên bản khác (sau đó sẽ đọc cấu hình đa màn hình khi khởi động). Sau đó, bạn có thể thoát khỏi phiên bản màn hình đơn (lưu trạng thái đó) và sau đó là phiên bản đa màn hình (ghi đè trạng thái màn hình đơn).

Một tùy chọn phức tạp hơn có thể bao gồm tìm ra trạng thái được lưu, sao lưu và viết một tập tin / tập lệnh bó để khôi phục nó trước khi mở ứng dụng, điều này sẽ cho phép bạn tạo liên kết để thực hiện việc này một cách tự động khi bạn khởi động ứng dụng .

Cuối cùng, có thể có một tiện ích như vậy cho nền tảng của bạn hoặc viết một tiện ích có thể không quá phức tạp. Đối với Windows, có một chương trình có tên ShiftWindow có thể định vị lại các cửa sổ khi khởi động ứng dụng hoặc trên một phím nóng nhất định. Tôi sợ rằng tôi không biết rõ về MacOS nếu có một tiện ích tương tự tồn tại. Đây có lẽ là giải pháp lý tưởng, chỉ đứng sau hệ điều hành hỗ trợ trực tiếp một thứ như vậy.


1
Cảm ơn! Không phải là câu trả lời tôi đã hy vọng nhưng một dẫn tốt!
dreeves

3

Tôi chỉ theo dõi http://cordlessdog.com/stay/ , hoạt động rất tốt cho tôi, với một chút chậm trễ

Khi bạn đã cài đặt trên máy Mac của mình, bạn có thể khởi chạy nó và lưu trữ các cửa sổ theo cách bạn muốn. Vì vậy, bất cứ khi nào bạn ngắt kết nối màn hình và kết nối lại, bạn sẽ khôi phục lại tất cả các cửa sổ.

Bạn có thể phải thêm ở lại làm ứng dụng khởi động của mình, bởi vì bạn sẽ phải khởi chạy nó mỗi khi bạn khởi động lại máy mac.


2

Tôi đã sửa lỗi này mà không cần bất kỳ ứng dụng bên ngoài nào.

Tất cả bạn phải làm là đảm bảo máy tính xách tay của bạn là "Máy tính để bàn 1" và Màn hình ngoài "Máy tính để bàn 2"

bạn có thể làm điều này bằng cách di chuyển thanh menu trắng sang màn hình máy tính xách tay trong tùy chọn hệ thống> Hiển thị> Sắp xếp


1

Ít nhất là trên Windows, nhiều ứng dụng sẽ tự khôi phục nếu bạn tối đa hóa chúng trước khi chuyển đổi màn hình. Để chúng một mình trong khi bạn đang họp, sau đó khôi phục chúng sau khi kết nối lại.

Đây vẫn là một sửa chữa chưa hoàn chỉnh (và rắc rối) nhưng đó là điều duy nhất tôi biết phải làm nếu tôi muốn có cơ hội phục hồi các cửa sổ được đặt cẩn thận của mình. ShiftWindow nghe có vẻ hấp dẫn mặc dù ...

Và nếu bạn chuyển từ hai màn hình xuống một, Alt + Phím cách + M thì mũi tên là một trình bảo vệ cuộc sống (một lần nữa, xin lỗi) nếu bạn "mất" cửa sổ của mình.


1

http://www.irradiatedsoftware.com/twoup/index.html

Tôi đã tìm thấy điều này qua Lifehacker và nó hoạt động rất tốt với tôi. Tôi đang sử dụng phiên bản pro SizeUp trái ngược với TwoUp miễn phí và nó hoàn hảo.


Bạn đang nói điều này giải quyết vấn đề tôi đặt ra mặc dù? Trang bạn liên kết đến dường như không đề cập bất cứ điều gì về điều đó.
dreeves

1
Không, điều này không giải quyết vấn đề gì cả. SizeUp giúp di chuyển nhanh hơn một cửa sổ nơi bạn muốn, nhưng bạn vẫn phải chuyển đổi thủ công giữa mỗi cửa sổ và báo cho SizeUp biết nơi bạn muốn di chuyển từng cửa sổ.
Rory O'Kane

1

Tôi là người dùng Windows và đang tìm cách tắt tính năng Windows 7 mới để di chuyển tất cả các cửa sổ ra khỏi màn hình ngoài không được cắm. Tôi đã tìm thấy biên nhận (đối với thẻ video ATI) để đặt tất cả các giá trị DMMEnableDDCPolling trong sổ đăng ký thành 0. Nó vô hiệu hóa kiểm tra tự động nếu màn hình bị tắt. Bây giờ nếu màn hình được rút ra và cắm lại, tất cả các cửa sổ sẽ giữ nguyên vị trí.

Đây là câu trả lời giúp tôi: https://superuser.com/questions/120983/how-to-disable-monitor-auto-detection-in-windows-7 (câu trả lời của Alex)


1
Điều này không liên quan gì đến Mac?

5
Không .. nhưng câu hỏi cũng được gắn thẻ là "cửa sổ" (mặc dù có thể OP đã đề cập đến cửa sổ chương trình ;)). Dù sao, đối với Windows, có một số tiện ích tiện dụng cho nhiệm vụ. Cá nhân tôi sử dụng ZMover của Basta và nó đã hoạt động tốt. Một cách khác là WindowManager của DeskSoft . Nhưng những điều này tất nhiên sẽ không giúp người dùng OSX.
Ville
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.