Jadi, saya punya 8 Desktop virtual di Unity (dengan Compiz) karena saya punya banyak proyek yang sedang saya kerjakan secara bersamaan.
Masalahnya adalah, setiap kali saya perlu me-reboot atau menutup Chrome secara tidak sengaja (yang merupakan bagian besar dari windows yang saya perlukan untuk bekerja), saya harus membuka jendela itu secara manual lagi dan kemudian mengaturnya (membuka file, buka yang benar url dll.).
Bagaimana Anda akan menulis skrip yang akan melakukan semua itu untuk saya? Yaitu: 1) Buka windows 2) Masukkan mereka ke dalam koordinat yang benar di layar virtual yang benar
(1) jelas, untuk Google Chrome Anda cukup menjalankan 'google-chrome'. Tapi bagaimana Anda menempatkannya di tempat yang tepat? (2)
Atau ada skrip / perangkat lunak yang sudah ada yang akan melakukannya untuk saya?
wmctrl
, yang seperti perangkat lunak untuk mengendalikan windows melalui skrip atau terminal. Tetapi untuk memulai kembali sebuah jendela, itu mungkin sesuatu yang sedikit lebih menantangJawaban:
Ini bisa dilakukan dengan sangat baik, tetapi Anda perlu pemahaman tentang Unity / viewports. Saya harap cerita di bawah ini bisa dimengerti, jika tidak, silakan tinggalkan komentar.
Skrip di bawah ini dapat digunakan untuk membuka jendela aplikasi apa pun di salah satu viewports Anda, pada posisi apa pun, jika Anda menjalankannya dengan argumen yang benar. Script adalah versi yang diedit dari yang satu ini , tetapi sekarang siap untuk menempatkan windows pada desktop virtual yang merentang .
1. Memahami viewports dan koordinat jendela
Ruang kerja di Unity
Di Unity, tidak seperti window manager lainnya, Anda sebenarnya hanya memiliki satu ruang kerja spanning, yang dibagi menjadi viewports. Dalam kasus Anda, ruang kerja Anda dibagi menjadi delapan viewports.
Bagaimana posisi jendela didefinisikan
Posisi jendela, sebagai output dari perintah:
digambarkan sebagai posisi, relatif terhadap sudut kiri atas viewport saat ini :
Jadi jika Anda berada di viewport
1
:sebuah jendela di viewport 2 dapat diposisikan pada mis. 1700 (x-bijaksana) x 500 (y-bijaksana)
(layar saya 1680x1050)
Namun, jika Anda berada di viewport 6:
jendela yang sama akan diposisikan pada 20 (x), -550 (y)
Menggunakan koordinat ini dengan benar adalah penting untuk menjalankan skrip dengan argumen yang benar, seperti dijelaskan di bawah ini:
2. Cara menggunakan skrip
Script di bawah ini dapat digunakan untuk menempatkan jendela aplikasi baru di ruang kerja virtual Anda (spanning).
Pastikan
wmctrl
sudah terpasang:Salin skrip di bawah ini ke file kosong, simpan sebagai
setwindow
(tanpa ekstensi) di~/bin
. Buat direktori jika belum ada. Jadikan skrip dapat dieksekusi .~/bin
, jalankan perintahsource ~/.profile
atau keluar / masuk untuk membuat direktori tersedia di$PATH
.Uji jalankan perintah:
misalnya
Jendela gedit akan muncul di viewport saat ini.
Catatan:
gedit
jendela pada sistem saya adalah mis. Appr. 470 px.<x_position>
untuk menempatkan jendela di sebelah kiri viewport saat ini<y_position>
untuk menempatkan jendela di atas viewport saat iniUntuk membuka jendela baru pada viewports yang berbeda sekaligus, Anda dapat dengan mudah mengaitkan perintah. Melihat pengaturan viewport dalam contoh "Panjang cerita", Jika saya di viewport 1, saya dapat membuka jendela gedit di viewport 1, 2, 3 dan 4 dengan perintah:
Naskah
EDIT: versi malas
Jika Anda lebih suka memasukkan koordinat dan ukuran, seperti seolah-olah Anda akan membuka jendela pada viewport saat ini, dan memberikan viewport yang ditargetkan sebagai argumen (tanpa harus menghitung apa pun), maka gunakan versi di bawah ini ...
Jika Anda mengaturnya seperti versi pertama skrip, Anda dapat menjalankannya dengan perintah:
Contoh: untuk membuka
Google-Chrome
jendela yang diposisikan pada20, 20
, ukuran300x300
, pada viewport5
:Penyiapannya hampir sama dengan skrip versi pertama.
Perhatikan bahwa skrip ini juga hanya berfungsi dengan benar jika jendela yang ditentukan (posisi / ukuran) cocok sepenuhnya dalam viewport yang ditargetkan.
Naskah:
Membuka jendela aplikasi dengan argumen
Untuk menyelesaikan pekerjaan, jawab pertanyaan Anda sepenuhnya:
Jika Anda menjalankan skrip seperti misalnya:
itu akan membuka jendela default pada desktop yang ditargetkan.
Namun, dengan skrip versi terbaru, Anda dapat menambahkan argumen tambahan untuk membuka jendela aplikasi, misalnya
url
:misalnya:
Jika argumen (ekstra) berisi spasi, gunakan tanda kutip. Contoh di atas akan membuka
google-chrome
jendela pada viewport 3, membuka jendelaurl
http://askubuntu.com
.Anda dapat mengaitkan perintah untuk membuka banyak jendela / url pada ruang kerja yang berbeda dalam satu perintah, misalnya:
sumber
Ini diperluas pada jawaban hebat @Jacob Vlijim di atas dengan
setwindow
skrip yang sedikit dimodifikasi :Deskripsi perubahan:
python3
kepython
(hanya preferensi pribadi)sys.argv
keargparse
untuk antarmuka baris perintah yang lebih baikwhile
loop 0,5 detik hingga 1 detik penuh waktu tidurxrandr
ketergantunganCATATAN: Ini adalah versi yang sedikit lebih baik yang saya tulis untuk penggunaan pribadi di Debian Jessie LXDE. Hasil Anda dapat bervariasi.
sumber
Bagi yang berminat, saya telah mengimplementasikan Desktopen: github.com/snitko/desktopen
Ini memungkinkan Anda untuk menulis skrip untuk membuka jendela pada berbagai viewports dan tampilan dengan cara yang sangat ramah.
sumber