Pisahkan WorkSpace untuk layar kedua

16

Saya ingin mencapai perilaku seperti ini: Ketika saya menggunakan layar laptop saya, ruang kerja pertama saya digunakan. Ketika saya mencolokkan layar kedua (melalui HDMI) ruang kerja kedua digunakan dan semua jendela yang baru dibuka pada layar kedua ini akan mendarat di ruang kedua, kecuali saya beralih ruang kerja di layar kedua ke ruang kerja lain.

Ketika saya mencabut layar kedua saya semua jendela akan tetap di ruang kerja mereka diciptakan dan saya dapat beralih ruang kerja di laptop saya untuk melihatnya.

Apakah perilaku ini sudah mungkin?

velop
sumber
Saya sudah berhasil mengaktifkan ruang kerja dengan Appearance -> Behvior dan menonaktifkan ruang kerja vertikal dengan CompizConfig Settings Manager. Ada juga Expo dan Viewport Switcher Plugins yang tampaknya dapat melakukan apa yang saya inginkan tetapi saya takut mengubah pengaturan tanpa pengetahuan di sana.
velop
Pertanyaan Anda agak membingungkan. Jika Anda meminta untuk menjadikan tampilan sebagai dua ruang kerja yang terpisah, maka jawabannya tidak, tidak mungkin. Jika Anda meminta untuk secara otomatis mengubah jumlah ruang kerja saat menghubungkan layar kedua, maka itu mungkin. Tolong jelaskan / sederhanakan apa yang Anda minta
Sergiy Kolodyazhnyy
2
Saya menemukan opsi Compiz -> Desktop Wall -> Viewport Switching -> Multimonitor bahvior -> Switch secara terpisah. Tetapi tampaknya ini tidak berhasil.
velop
@velop, bisakah Anda mengedit komentar ini menjadi pertanyaan?
SD

Jawaban:

1

Apakah perilaku ini sudah mungkin?

Segalanya mungkin di linux. Anda akan memerlukan beberapa pengetahuan dasar tentang Xserver , beberapa waktu dan sistem untuk mengujinya, karena Anda mengacaukan X Anda dan Anda tentu saja memerlukan browser yang berjalan jika Anda memerlukan bantuan :-)

Menurut saya ada tiga solusi yang mungkin:

  • Pengaturan multimonitor menggunakan Xinerama . Solusi paling sederhana yang dapat saya pikirkan adalah menambahkan layar virtual ketiga ke konfigurasi Anda dan cukup memindahkan windows ke sana menggunakan xdotool. Ada beberapa kerugian untuk solusi ini tetapi tidak memerlukan upaya untuk memindahkan windows antara Xservers yang berbeda yang secara umum tidak mungkin.

  • Karena tidak mungkin untuk memindahkan jendela antara yang berbeda Xservers , kita perlu semacam proxy seperti xmove atau Xpra untuk melakukan hal ini untuk kita. Saya pikir windows kemudian hidup dalam sesi Xfvb terpisah untuk menyembunyikan windows. Anda dapat melampirkan dan melepaskan ke sesi.

  • Terlepas dari metode apa yang Anda gunakan, Anda perlu acara ketika monitor dicabut. Acara harus dipicu ketika layar terputus dan juga saat terhubung kembali. Anda dapat mengubah naskah untuk menonton acara tersebut.

Saya lebih suka solusi menggunakan Xpra karena berbagai alasan. Saya hanya bisa memberi Anda beberapa petunjuk tentang cara melakukannya. Solusi tidak lengkap tetapi harus membantu Anda memulai.

Solusi Xinerama

Mempersiapkan

Pengaturan Xinerama harus diperluas untuk memiliki konfigurasi statis: Lihat https://help.ubuntu.com/community/XineramaHowTo

lihat juga layar ketiga palsu dan Xdummy

dapatkan windows yang terpengaruh

Kita dapat menggunakan xdotool untuk mencari windows. Setelah itu kita dapat memeriksa posisi mereka dan memindahkannya. Saya mengasumsikan dua monitor dengan 1920x1080konfigurasi. Berikut ini akan memindahkan semua jendela dari kanan ke layar xinerama kiri.

while read xwindowid; do
    eval $(xdotool getwindowgeometry --shell "$xwindowid")
    if (( X > 1920 && X <= (1920 * 2))); then
        xdotool windowmove --relative $WINDOW -1920 y
    fi
done <<< "$(xdotool search --screen 0 '.*')"

Sekarang Anda dapat memindahkan semua jendela dari layar laptop Anda (screen0) ke layar ketiga (virtual) jika monitor terpasang. Pada saat yang sama Anda dapat memindahkan jendela apa saja yang disimpan di layar ketiga ke layar pertama.

Solusi XPRA

Untuk menggunakan Xpra untuk memindahkan windows, semua windows harus dikelola oleh Xpra sebelumnya. Anda harus memulai seluruh desktop menggunakan Xpra pada startup sistem. Dua kali satu adalah desktop utama Anda di mana Anda bekerja dan yang lainnya adalah desktop virtual.

xpra start-desktop :99
xpra start-desktop :1 --exit-with-children −−attach

Sekarang Anda dapat memiliki Windows untuk layar terputus berjalan dalam sesi xpra yang terpisah dan lampirkan / lepaskan dari itu ketika monitor beralih.

xpra attach :99
xpra detatch :99

Ada juga ekstensi gnome shell yang dihentikan yang dapat berguna jika Anda ingin secara manual memindahkan jendela dari tersembunyi :99ke normal di :0antara tampilan xpra yang dimulai.

Acara

  • Anda dapat menonton untuk putuskan / sambung kembali dari tampilan tertentu

  • mungkin perhatikan dimensi xinerama Anda yang berubah menggunakan xwininfo agar bebas dari monitor yang tidak dicolokkan jika Anda ingin memperluas pengaturan Anda menjadi 3 monitor dan mencabut perangkat yang sewenang-wenang. Perhatikan bahwa ini hanya akan berfungsi untuk solusi xpra.

    xwininfo -display :0 -root | grep -e "-geometry"

    -geometry 5760x2160+0+0

ukos
sumber