Mengapa beberapa aplikasi terbuka muncul sebagai “tanda tanya” di peluncur Unity?

22

Saya mengalami masalah dengan beberapa program yang memiliki launcher dalam kesatuan tetapi kemudian membuat ikon terpisah setelah diluncurkan. Apakah mungkin bagi peluncur untuk melacak jendela yang ditimbulkannya untuk mengatur dengan lebih baik? Atau ini bug di Unity sendiri?

masukkan deskripsi gambar di sini

Mungkin tidak masalah, tetapi program khusus ini adalah program mono, dan ikon yang muncul terdaftar sebagai panel.

Andrew Redd
sumber
@ j-johan-edwards: Saya tidak yakin program apa yang harus ditautkan tetapi KeePass2 tersedia di Pusat Perangkat Lunak.
Andrew Redd
Dalam beberapa kasus, Anda dapat mengatasi ini dengan menetapkan StartupWMClassproperti di peluncur desktop aplikasi: askubuntu.com/questions/36434/…
Glutanimate

Jawaban:

23

Apa yang terjadi

Masalah seperti ini terkait dengan kerangka pencocokan aplikasi Unity. Untuk menyederhanakan detail teknis, program windows dan aplikasi adalah dua hal terpisah untuk Ubuntu. Ubuntu perlu 'menebak' aplikasi mana yang memiliki jendela tertentu. Dan terkadang tebakan itu gagal, dan tanda tanya muncul di peluncur.

Kegagalan mungkin disebabkan oleh:

  1. Bug di BAMF (kerangka pencocokan aplikasi yang disebutkan di atas).
  2. Deskripsi aplikasi yang salah (alias file .desktop ').
  3. Kurangnya deskripsi aplikasi sama sekali. File executable yang meluncurkan windows tidak memiliki metadata ini.

Aplikasi yang ditunjukkan dalam pertanyaan (KeePass2) menderita masalah tipe 1 yang telah dilaporkan ke pelacak bug yang sesuai .

Contoh masalah

Contoh di bawah ini bersifat teknis, ditujukan untuk programmer yang ingin aplikasi mereka sendiri ditampilkan dengan benar di peluncur Ubuntu.

Masalah 3 - Tidak ada deskripsi aplikasi

Agar aplikasi dapat diintegrasikan dengan Unity — artinya, dapat dicari di Dash dan ditempatkan di peluncur — aplikasi harus memiliki entri desktop. Entri tersebut ditempatkan di /usr/share/applications/, /usr/local/share/applications/, dan $HOME/.local/share/applications/(dua terakhir yang untuk perangkat lunak pihak ketiga, sistem dan user-hanya masing-masing). Mereka diakhiri dengan .desktopekstensi dan ikuti format dasar ini:

[Desktop Entry]
Type=Application
Name=My Application's Name
Icon=/file/path/of/my/icon
Exec=/file/path/of/my/executable

Entri ini memulai program dengan memanggil yang Execdapat dieksekusi. Setiap kali program itu menampilkan jendela atau dialog, Unity akan melihat bahwa executable-nya "milik" deskripsi aplikasi ini, dan menggunakan yang diberikan Namedan Icondi peluncur.

Ini adalah contoh tulang punggung. The spesifikasi formal mencakup banyak fitur-fitur canggih.

Masalah 2 - Deskripsi aplikasi salah

Mari kita asumsikan my_app.desktopada di direktori aplikasi yang valid, tetapi:

  • /file/path/of/my/icon tidak ada di sistem file.
  • /file/path/of/my/icon bukan gambar.
  • entri menggunakan beberapa sintaks yang salah atau tag yang tidak valid.

Dalam kasus mana pun di atas, Ubuntu tidak akan dapat mencantumkan jendela aplikasi dengan benar di peluncur.

Masalah 1 - Bug di BAMF

Pada Ubuntu 11.10, BAMF memiliki sejumlah bug yang mencegah pencocokan aplikasi yang benar. Jebakan (sementara) umum meliputi:

  • The Execpath menjadi link simbolik daripada file biasa
  • Eksekusi menjadi skrip yang meluncurkan executable utama.

Dalam kasus ini, programmer tidak memiliki pilihan selain menggunakan solusi, seperti menghapus abstraksi tautan simbolis, atau menghubungkan ke executable secara langsung. Tidak satu pun dari ini diperlukan oleh spesifikasi entri desktop itu sendiri.

Jjed
sumber
Satu hal lagi. Anda dapat memiliki .desktopfile untuk aplikasi yang sama di ~/.local/share/applications/dan /usr/share/applications/. File pertama menimpa yang kedua bahkan jika ikon tidak ditentukan di dalamnya.
1

Jendela hanya dapat dicocokkan dengan aplikasi jika properti WM_CLASS telah ditetapkan. Untuk melakukan ini di X11 Anda menggunakan:

XSetClassHint( display, window, &class_hints );

Anda perlu meneruskan pointer ke struktur XClassHint dengan bidang 'res_name' dan 'res_class'.

Bram
sumber
-1

Saya punya beberapa masalah dengan 16.04 termasuk ikon berwarna abu-abu dan kadang-kadang touchpad menjadi tidak menentu (Acer V15 nitro) juga pusat perangkat lunak (mungkin ikon lain juga) tidak akan terbuka dari ikon (hanya dari perintah terminal). Saya menemukan rekomendasi di suatu tempat untuk menghapus dan menginstal ulang perangkat lunak gnome. Sejak saya melakukan ini, seluruh sistem telah 100% stabil, tidak ada lagi ikon yang diklik dan berfungsi dengan sempurna. Awalnya tampak menakutkan ketika saya reboot setelah perubahan ini - banyak pesan sistem pada reboot - jadi lakukan dengan risiko Anda sendiri.

sudo apt-get autoremove gnome-software && sudo apt-get install gnome-software
Steve
sumber
2
Ini sama sekali tidak terkait dengan pertanyaan.
Martin Thornton