Ingat ukuran dan penempatan jendela saat mencabut dan memasang kembali monitor kedua

99

Ini sesuatu yang menyebalkan:

  1. Sambungkan monitor eksternal ke laptop (Mac OS X Leopard dalam kasus saya).
  2. Atur windows Anda untuk memiliki IDE di satu layar dan browser di layar lainnya. (Dll. Ubah ukuran, atur ulang, rewel, rewel, rewel.)
  3. Cabut monitor untuk lari ke rapat, atau apa pun.
  4. Kebagian 1.

Saya ingin mengganti langkah 2 dengan “komputer mengingat dengan tepat bagaimana saya memilikinya dan mengembalikannya seperti itu”.

(Saya pribadi hanya membutuhkan solusi untuk Mac tetapi mengumpulkan solusi untuk sistem lain di sini mungkin berguna bagi orang lain. Saya yakin itu masalah umum.)

Dreeves
sumber

Jawaban:

56

Lihatlah Stay by Cordless Dog. Saya yakin itu tepat seperti yang Anda cari.

Tony Arnold
sumber
2
Saya mencoba ini. Ini tidak berfungsi untuk windows X11 tetapi tampaknya seperti yang diiklankan. Terima kasih untuk penunjuknya! Mungkin ini yang terdekat dengan solusi untuk Mac saat ini.
Dreeves
Jendela X11 bukan contoh NSWindow "asli" (setidaknya itu bukan yang terakhir kali saya periksa) jadi bukan kejutan besar bahwa Stay tidak ingin melakukan apa-apa dengan mereka :) Senang itu berhasil sebaliknya!
1
Ini terlihat bagus, tetapi tidak bekerja dengan aplikasi layar penuh di Lion. Saya memiliki Safari dalam mode layar penuh ketika saya memiliki 1 tampilan dan setelah saya melampirkan layar ke-2, saya ingin keluar dari layar penuh dan memindahkan Safari ke tampilan kedua. Tetap tidak memindahkan aplikasi layar penuh apa pun.
1
Sepertinya cocok. Tetapi dengan 3 tampilan eksternal sering mengalami masalah dengan posisi dan hanya memecahkan masalah hingga 50%. Jadi saya masih harus melakukan banyak pekerjaan manual. Saya baru saja menghapusnya. Oh, dan uji coba hanya 30 hari!
Ernst Ernst
15

Slate adalahaplikasi Mac gratis yang sangat kuatyang melakukan persis apa yang Anda inginkan. Ketika Anda mencolokkan monitor sekunder Anda, monitor otomatis mendeteksi monitor baru , dan semua jendela Anda akan dipindahkan dan diubah ukurannya sesuai keinginan Anda. Anda dapat menentukan posisi dan ukuran khusus untuk semua aplikasi Anda, termasuk layar penuh, setengah layar, dan berbasis kisi.

Salah satu hal paling keren tentang Slate adalah Anda dapat menentukan tata letak yang berbeda berdasarkan berapa banyak monitor yang telah Anda sambungkan . Misalnya, jika Anda menggunakan laptop sendiri, Anda mungkin ingin semua aplikasi Anda mengisi seluruh layar. Tetapi ketika Anda memiliki monitor sekunder yang lebih besar, Anda mungkin ingin membagi layar antara browser, mail, dan musik. Slate melakukan ini dengan mudah.

Anda juga dapat menentukan pintasan keyboard untuk tata letak dan tindakan tertentu seperti menyenggol dan mengubah ukuran jendela dengan persentase tertentu.

Di bawah ini adalah file konfigurasi saya. Saya menyimpan semua aplikasi saya di layar penuh di semua monitor saya, tetapi Anda dapat mengubahnya untuk membuatnya setengah atau ukuran lain:

# 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

Berikut adalah daftar fitur dari halaman GitHub Slate:

  • Sangat dapat dikustomisasi
  • Ikat tombol untuk:
    • memindahkan dan / atau mengubah ukuran jendela
    • fokus ke arah windows
    • aktifkan tata letak yang telah ditetapkan
    • membuat, menghapus, dan mengaktifkan snapshot dari kondisi windows saat ini
  • Atur tata letak default untuk berbagai konfigurasi monitor yang akan diaktifkan ketika konfigurasi itu terdeteksi.
  • Petunjuk Jendela: cara intuitif untuk mengubah fokus jendela
  • [Beta] Pengalih aplikasi yang lebih baik, lebih dapat dikustomisasi.

Berikut adalah tutorial yang bagus tentang cara memaksimalkan Slate.

Ben
sumber
Dapatkah ia mengingat bagaimana jendela diposisikan dari ketika monitor eksternal di mana terakhir terhubung dan hanya mengembalikannya? Aplikasi "Tetap" hampir melakukan ini tetapi terus gagal mengingat windows (khususnya Chrome) jadi saya masih mencari sesuatu yang lebih baik.
Dreeves
@ tanggal Ya, itu bekerja untuk saya. Saya baru saja berhasil melakukannya secara manual, menggunakan item menu Slate "Ambil Foto" dan "Aktifkan Foto"; jika Anda mengkliknya sebelum dan setelah Anda mengaktifkan komputer, Anda akan menyimpan dan mengembalikan semua posisi jendela Anda. Dari dokumen , sepertinya Slate dapat melakukan "Activate Snapshot" secara otomatis dengan defaultarahannya . Saya tidak tahu apakah Anda dapat mengotomatiskan bagian "Ambil Foto".
Rory O'Kane
2
Saya ingin menunjukkan bahwa untuk kasus penggunaan OP, mereka cukup mengklik simpan snapshot dan mengembalikan snapshot di menu. Selama hanya ada satu jendela konfigurasi yang Anda inginkan, itu akan berfungsi dengan baik tanpa mengacaukan yang lain.
Muhd
4
Slate tidak dipertahankan lagi, mereka menyarankan untuk menggunakan Hammerspoon sekarang.
tentu saja
8

Saya telah memecahkan ini dengan AppleScript kecil dan Quicksilver utilitas freeware kecil.

  1. Simpan AppleScript kecil ini di lokasi yang tidak akan berubah di komputer Anda:

    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. Anda perlu menyesuaikan aplikasi mana yang Anda inginkan pada monitor Anda dan jendelanya sesuai keinginan Anda. Saya seorang programmer dan konfigurasi di atas adalah bagaimana saya menjalankan monitor kedua saya.

  3. Instal Quicksilver .

    Saya memilih untuk membuatnya tidak terlihat di Dock, dan jalankan sebagai daemon taskbar kecil

  4. Atur perintah kunci di Quicksilver, dan seret dan letakkan AppleScript Anda dari langkah 1 ke jendela sebagai tindakan yang harus dilakukan. Saya mengikatnya CommandShiftA. Bagus sekali!

pengguna3439894
sumber
3
Tidak terlalu skalabel jika Anda memiliki sejumlah aplikasi untuk dikelola. Juga tidak mudah untuk dikelola! Batas hard-coding sungguh tidak menyenangkan.
fatuhoku
Bisakah Anda mengatur desktop tempat aplikasi itu muncul?
berbahaya,
3

Sebelum Anda mencabut kabel monitor, tutup semua yang tidak sepenuhnya ada di monitor utama. Aplikasi umumnya menyimpan keadaan mereka (termasuk penempatan jendela) saat ditutup, dan membacanya saat dibuka, jadi jika monitor kedua hadir di kedua waktu tersebut Anda harus baik-baik saja.

Anda dapat memanfaatkan aplikasi yang memungkinkan lebih dari satu contoh terbuka pada satu waktu, tetapi hanya menyimpan keadaan saat tutup. Tutup instance multi-monitor (yang menyebabkan status disimpan). Cabut monitor kedua. Jika Anda menjalankan instance kedua, itu harus direposisi ke monitor utama, atau Anda dapat memulai instance lain. Jangan tutup instance ini sebelum menghubungkan monitor kedua lagi dan memulai instance lain (yang kemudian akan membaca konfigurasi multi-monitor saat startup). Kemudian Anda dapat keluar dari instance monitor tunggal (menyimpan status itu), dan kemudian instance multi-monitor (menimpa status monitor tunggal).

Opsi yang lebih kompleks mungkin termasuk mencari tahu di mana negara disimpan, mencadangkannya, dan menulis file batch / skrip untuk mengembalikannya sebelum membuka aplikasi, yang akan memungkinkan Anda membuat tautan untuk melakukan ini secara otomatis ketika Anda memulai aplikasi .

Akhirnya, mungkin ada utilitas seperti itu untuk platform Anda, atau menulis yang mungkin tidak terlalu rumit. Untuk Windows, ada program bernama ShiftWindow yang dapat memposisikan ulang windows baik pada saat startup aplikasi atau pada hot-key tertentu. Saya khawatir saya tidak tahu MacOS cukup baik untuk mengatakan jika ada utilitas serupa. Ini mungkin solusi yang ideal, yang kedua setelah OS mendukung hal seperti itu secara langsung.


sumber
1
Terima kasih! Bukan jawaban yang saya harapkan tetapi petunjuk yang bagus!
Dreeves
3

Saya hanya mengikuti http://cordlessdog.com/stay/ , bekerja sangat baik untuk saya, dengan sedikit lag

Setelah Anda tetap menginstal pada mac Anda, Anda dapat meluncurkan dan menyimpan windows seperti yang Anda inginkan. Jadi, setiap kali Anda melepas display Anda dan menghubungkan kembali, Anda akan memiliki semua jendela yang dipulihkan.

Anda mungkin harus menambahkan stay sebagai aplikasi startup Anda, karena Anda harus meluncurkannya setiap kali Anda me-restart mac Anda.

kvm006
sumber
2

Saya memperbaiki ini tanpa aplikasi eksternal.

Yang harus Anda lakukan adalah memastikan laptop Anda "Desktop 1" dan Monitor Eksternal Anda "Desktop 2"

Anda dapat melakukan ini dengan memindahkan bilah menu putih ke layar laptop di preferensi sistem> Layar> Pengaturan

Moosa Ahmed
sumber
1

Setidaknya pada Windows, banyak aplikasi akan memulihkan diri mereka sendiri jika Anda memaksimalkannya sebelum beralih monitor. Biarkan mereka sendirian saat Anda berada di rapat, lalu kembalikan setelah tersambung kembali.

Ini masih merupakan perbaikan yang tidak lengkap (dan merepotkan) tetapi itu adalah satu-satunya hal yang saya tahu harus dilakukan jika saya ingin beberapa kesempatan menghidupkan kembali windows saya yang ditempatkan dengan hati-hati. ShiftWindow terdengar menarik meskipun ...

Dan jika Anda beralih dari dua monitor ke satu, Alt + Spacebar + M maka tombol panah adalah penyelamat (Windows lagi, maaf) jika Anda "kehilangan" jendela Anda.


sumber
1

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

Saya menemukan ini melalui Lifehacker, dan itu sangat bagus untuk saya. Saya menggunakan SizeUp versi pro sebagai lawan dari TwoUp gratis, dan itu sempurna.


sumber
Apakah Anda mengatakan ini menyelesaikan masalah yang saya ajukan? Halaman yang Anda tautkan tampaknya tidak menyebutkan apa pun tentang itu.
Dreeves
1
Tidak, ini tidak menyelesaikan masalah sama sekali. SizeUp membuatnya lebih cepat untuk memindahkan jendela ke tempat yang Anda inginkan, tetapi Anda masih harus beralih secara manual di antara setiap jendela dan memberi tahu SizeUp ke mana Anda ingin memindahkan masing-masing.
Rory O'Kane
1

Saya pengguna Windows dan sedang mencari cara mematikan fitur Windows 7 baru untuk memindahkan semua jendela dari monitor eksternal yang dicabut. Saya menemukan tanda terima (untuk kartu video ATI) untuk mengatur semua nilai DMMEnableDDCPolling ke dalam registri menjadi 0. Ini menonaktifkan pemeriksaan otomatis jika monitor dimatikan. Sekarang jika monitor dicabut dan dicolokkan lagi, semua jendela tetap pada posisi yang sama.

Inilah jawaban yang membantu saya: https://superuser.com/questions/120983/how-to-disable-monitor-auto-detection-in-windows-7 (jawaban oleh Alex)

Komunitas
sumber
1
Ini tidak ada hubungannya dengan Mac?
5
Tidak .. tapi pertanyaannya juga ditandai sebagai "windows" (meskipun mungkin OP merujuk ke program windows;)). Bagaimanapun, untuk Windows ada beberapa utilitas berguna untuk tugas tersebut. Saya pribadi menggunakan Basta's ZMover dan sudah bekerja dengan baik. Alternatif lain adalah WindowManager DeskSoft . Tetapi ini tentu saja tidak akan membantu pengguna OSX.
Ville