Ini contoh spesifik masalah generik yang belum saya temukan solusinya.
Saya memiliki program (Android Virtual Device Manager) yang meluncurkan 'sub-program' (yaitu emulator atau perangkat virtual) dari dalam dirinya sendiri (juga dapat diluncurkan dari tempat lain di mana). Saya ingin contoh EITHER dari program ini dikelompokkan di bawah ikon Unity yang sama.
Saya telah membuat .desktop
file untuk mencoba dan menyelesaikan ini tetapi tidak tahu persis bagaimana cara melakukannya. File desktop adalah sebagai berikut:
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Name=Android Virtual Device
Icon=/home/ben/.icons/android.svg
Exec=/home/ben/usr/bin/android avd
StartupWMClass=Android Virtual Device Manager
Dari apa yang saya pahami, StartupWMClass
adalah apa yang perlu saya atur untuk mencapai ini dengan benar. Saya telah memperoleh dua nama kelas ('Android Virtual Device Manager' dan 'emulator64-arm') menggunakan xprop WM_CLASS
pada jendela repsective. Keduanya bekerja secara individual (ikon peluncur terpasang dengan benar ke program apa pun yang diluncurkan), tetapi saya tidak dapat membuatnya berfungsi untuk keduanya.
Saya berasumsi bahwa saya entah bagaimana perlu menetapkan dua nilai untuk StartupWMClass
tetapi belum dapat melakukannya dengan benar (atau tahu apakah itu operasi yang valid). Saya telah mencoba, yang dipisahkan oleh titik dua seperti variabel lingkungan, dipisahkan dengan koma, tanda kutip, dll dan saya tidak dapat menemukan petunjuk apa pun dalam dokumentasi resmi .
Ada saran?
EDIT:
Contoh lain, yang lebih bertele-tele, tetapi mungkin lebih bisa diidentifikasi adalah dengan Matlab
. Saya menjalankan 2013a dan layar splash yang awalnya ditampilkan dan program memiliki WM_CLASS
nilai yang sama sekali berbeda . Ini berarti, ketika saya mengklik peluncur saya StartupWMClass=com-mathworks-util-PostVMInit
di dalamnya, layar splash muncul dengan Unity
ikon (default tidak dikenal) yang berbeda , sedangkan sisanya muncul dikelompokkan di bawah peluncur saya.
Dengan menggunakan xprop WMCLASS
dan mengklik dulu layar splash, lalu mengulangi dengan Matlab
sesi aktif saya mendapatkan output terminal berikut:
ben@ben-OptiPlex-9010:~$ xprop WM_CLASS
WM_CLASS(STRING) = "MATLAB", "MATLAB"
ben@ben-OptiPlex-9010:~$ xprop WM_CLASS
WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "com-mathworks-util-PostVMInit"
Jika saya bisa menentukan sesuatu di sepanjang baris:
StartupWMClass=com-mathworks-util-PostVMInit&&MATLAB
Itu akan bekerja dengan sempurna (karena keduanya bekerja secara terpisah) tetapi saya tidak tahu sintaksnya, jika itu ada. Saya hanya tahu tidak ada yang saya coba sejauh ini.
Setiap bantuan atau jawaban pasti bagaimanapun akan menjadi hebat karena saya percaya ini adalah elemen yang cukup mendasar dari desktop yang berfungsi dengan baik.
Drawers
di tautan itu dan dari apa yang ditampilkan, itu hanya mengelompokkan tautan, ketika Anda mengklik setiap sub item, itu masih dibuat dengan ikonnya sendiri diUnity
peluncur yang sedang saya coba hentikanJawaban:
Masalah yang sama bagi saya dengan Starcraft II meluncurkan melempar playonlinux. Pertama ada peluncur aplikasi:
(WM_CLASS(STRING) = "Blizzard Launcher.exe", "Wine")
dan kemudian game itu sendiri:(WM_CLASS(STRING) = "SC2.exe", "Wine")
Saya kira anggur menetapkan kelas dengan biner yang dapat dieksekusi.
Saya telah melihat kode bamf (bamf_matcher.c, metode insert_desktop_file_class_into_table ()):
Dalam kasus saya, saya curang dengan membuat 2 file desktop dengan tombol yang sama tetapi StartupWMClass. Ini tidak sempurna karena saya masih memiliki 2 ikon Uniy ketika di peluncur tetapi yang penting adalah saya tahu mengapa :-).
sumber
Saya tahu pertanyaan ini benar-benar sudah tua, tetapi setelah melalui masalah yang sama, saya pikir saya akhirnya membuat solusi untuk ini, dan memutuskan untuk berbagi dengan siapa pun yang memiliki masalah ini:
Karena kita tidak dapat mengatur beberapa WMClasses untuk satu file .desktop, mengapa tidak mengatur semua windows ke satu WMClass?
Kami dapat melakukan sesuatu seperti ini (Jelas, ganti
Window 1
,Window 2
danpotatoes
dengan nama windows Anda dan WMClass yang diinginkan):Dan pada file .desktop kita dapat melakukan ini:
StartupWMClass=potatoes
Tadam! Semua jendela dikelompokkan sekarang.
Tapi hei, apakah kita melakukan ini secara manual setiap kali program dibuka? Tentu saja tidak.
Kita bisa pergi dan membuat skrip bash yang secara otomatis melakukannya setiap setengah detik:
Dan akhirnya, atur .sh yang kami buat untuk dijalankan setiap kali OS dijalankan:
Semoga jawaban saya bermanfaat bagi siapa pun yang menelusuri pertanyaan ini.
sumber