Saya menjalankan Matlab
skrip di workspace 1
. Ini menghasilkan beberapa plot. Sementara itu saya beralih ke workspace 2
dan bekerja di sana. Masalah saya adalah bahwa plot muncul workspace 2
. Apakah mungkin untuk mengunci perangkat lunak ke ruang kerja. Jadi saat Matlab
membuat plot workspace 1
, saya dapat bekerja workspace 2
tanpa gangguan pada plot yang muncul?
14.04
unity
workspaces
matlab
OHLÁLÁ
sumber
sumber
xprop WM_CLASS
, dan kemudian klik pada jendela?) Silakan juga tambahkan WM_CLASS dari Matlab.Jawaban:
EDIT PENTING
Di bawah versi naskah yang ditulis ulang dari jawaban pertama (di bawah). Perbedaan:
WM_CLASS
dan ruang kerja yang ditargetkan sekarang menjadi argumen untuk menjalankan skrip. Gunakan hanya bagian pertama atau kedua (pengidentifikasi) dariWM_CLASS
(lihat lebih lanjut di bawah ini: cara menggunakan)Ketika skrip dimulai, itu menunjukkan pemberitahuan (contoh
gedit
):Naskah
Cara Penggunaan
Script membutuhkan keduanya
wmctrl
danxdotool
:Salin skrip di atas ke dalam file kosong, simpan sebagai
lock_towspace.py
Dari aplikasi spesifik Anda, cari tahu
WM_CLASS
: buka aplikasi Anda, jalankan di terminal:Outputnya akan terlihat seperti (dalam kasus Anda):
Gunakan bagian pertama atau kedua dalam perintah untuk menjalankan skrip.
Perintah untuk menjalankan skrip adalah:
Dalam perintah, bagian terakhir;
2,2
adalah ruang kerja tempat Anda ingin mengunci aplikasi ke (tanpa spasi: (!) kolom, baris ), dalam format "manusia"; kolom / baris pertama adalah1,1
JAWABAN KAKI:
(kedua) UJI VERSI
Skrip di bawah ini mengunci aplikasi tertentu ke ruang kerja awalnya. Jika skrip dimulai, ia menentukan ruang kerja tempat aplikasi berada. Semua jendela tambahan yang dihasilkan aplikasi akan dipindahkan ke ruang kerja yang sama dalam sepersekian detik.
Masalah fokus diselesaikan dengan secara otomatis memfokuskan kembali pada jendela yang difokuskan sebelum jendela tambahan diproduksi.
Naskah
Cara Penggunaan
Script membutuhkan keduanya
wmctrl
danxdotool
Salin skrip ke file kosong, simpan sebagai
keep_workspace.py
tentukan `WM_CLASS 'aplikasi Anda dengan membuka aplikasi, lalu buka terminal dan jalankan perintah:
Kemudian klik pada jendela aplikasi Anda. Salin hasilnya, terlihat seperti
"sun-awt-X11-XFramePeer", "MATLAB R2015a - academic use"
dalam kasus Anda, dan letakkan di antara tanda kutip tunggal di bagian kepala skrip, seperti yang ditunjukkan.Jalankan skrip dengan perintah:
Jika berfungsi sesuka Anda, saya akan menambahkan fungsi sakelar. Meskipun sudah berfungsi selama beberapa jam di sistem saya, tetapi mungkin perlu beberapa penyesuaian terlebih dahulu.
Catatan
Meskipun Anda tidak akan melihat itu, script tidak menambahkan beberapa beban prosesor ke sistem. Pada sistem lanjut usia saya, saya perhatikan peningkatan 3-10%. Jika Anda suka cara kerjanya, saya mungkin akan men-tweak lebih lanjut untuk mengurangi beban.
Script, seperti itu, mengasumsikan jendela sekunder dari kelas yang sama dengan jendela utama, seperti yang Anda tunjukkan dalam komentar. Dengan perubahan (sangat) sederhana, jendela sekunder dapat dari kelas lain.
Penjelasan
Meskipun mungkin tidak terlalu menarik untuk pembaca rata-rata, skrip bekerja dengan menghitung dalam vektor. Saat memulai, skrip menghitung:
wmctrl -d
wmctrl -lG
Sejak saat itu, skrip mencari jendela baru dari aplikasi yang sama, dengan output dari
xprop WM_CLASS
, mencari posisi mereka dengan cara yang sama seperti di atas dan memindahkannya ke ruang kerja "asli".Karena jendela yang baru dibuat "mencuri" fokus dari jendela yang terakhir digunakan pengguna, fokus kemudian diatur ke jendela yang sebelumnya fokus.
sumber
application
danworkspace
-set. Jika Anda menemukan kemungkinan bug, sebutkan itu!WM_CLASS
identik, yang kedua akan dipindahkan ke yang Anda atur di perintah.