Uygulama başlatıldığında simge eksik


12

/usr/share/applicationsRdesktop'u başlatan bir uygulama başlatıcısı oluşturdum . Dosya bir simge adı belirtir ve simgeleri:

/usr/share/icons/HighContrast/48x48/apps
/usr/share/icons/HighContrast/22x22/apps
/usr/share/icons/HighContrast/256x256/apps
/usr/share/icons/HighContrast/32x32/apps
/usr/share/icons/HighContrast/scalable/apps-extra
/usr/share/icons/HighContrast/24x24/apps
/usr/share/icons/HighContrast/16x16/apps
/usr/share/icons/hicolor/scalable/apps
/usr/share/icons/hicolor/128x128/apps
/usr/share/icons/hicolor/16x16/apps

Daha sonra başlatıcıyı görev çubuğuna uyuşturuyorum ve doğru logoya sahip başlatıcı görev çubuğunda görülebilir. Ancak, göreve başladığımda, görev çubuğunda, ortasında soru işareti bulunan bir kare olan yeni bir simge oluşturulur.

Görev çubuğunun başlatıldığında uygulama için doğru simgeyi göstermesi için hangi simgelere ve nereye ihtiyacım var?

.Desktop dosya içeriği:

[Masaüstü Girişi]
Versiyon = 1.0
Terminal = false
Simge = MSWindows
Tür = Uygulama
Kategoriler = Ağ;
Exec = rdesktop win7shared1 -g 1680x1000

Ad = win7shared1
GenericName = rdesktop
Comment = Windows masaüstünü aç

Anahtar kelimeler = Windows
StartupNotify = false

Yanıtlar:


15

Büyük olasılıkla sorununuzu çözecek olan aşağıdakileri yapmaktır:

  1. Uygulamayı aç
  2. Çalışırken bir terminal açın ve şunu yazın:

    xprop WM_CLASS
    
  3. Ardından açık uygulama penceresine tıklayın.

  4. Çıktı şöyle görünecektir (örnek gedit):

    WM_CLASS(STRING) = "gedit", "Gedit"
    
  5. Dosyanızda geditbir satır oluşturmak için ilk bölümü (bu durumda olurdu ) kullanın .desktop:

    StartupWMClass=<string>
    

    ( örneğin <string>, fiili (ilk kısmı) çıktı ile değiştirin xprop WM_CLASS, örn. StartupWMClass=gedit)

Şimdi tekrar deneyin (oturumu kapatıp oturum açmanız gerekebilir), büyük olasılıkla uygulama başlatıcıda kendi simgesinin altında görünecektir.

açıklama

  • Bir uygulama bir başlatıcıdan ( .desktopdosya) doğru bir şekilde başlatıldığında , ancak yalnızca genel bir simgeyle (soru işareti) başka bir simge göründüğünde , büyük olasılıkla uygulama penceresi ve başlatıcı bir nedenden dolayı bağlanmaz ve başlatıcı uygulamanın penceresini "onun" olarak tanır. Bu genellikle bir komut dosyası veya standart olmayan bir uygulama (-komut) kullanıldığında ortaya çıkar. Bu durumlarda, StartupWMClass=hat genellikle çözümdür.

Teşekkürler Jacob. Bu sorunu çözdü. Kayıt için WM_CLASS dizesi "rdesktop", "rdesktop" idi.
clayton

@clayton mükemmel, işe yaradı sevindim.
Jacob Vlijm

1
2. adımınız azaltılabilir, çünkü xprop geri dönmek istediğiniz atomu geçmenize izin verir, koşmak xprop WM_CLASSyeterlidir
johndrinkwater

@johndrinkwater Kesinlikle, ipucu için teşekkürler. Bir yıldan fazla bir süre önce, 14 aydan fazla bir kişi yazmış gibi :). Düzenleyecek ...
Jacob Vlijm

@ jacob-vlijm :) garip bir xprop davranışı araştırırken ortaya çıktı
johndrinkwater

2

benim için xprop|grep WM_CLASSverdi WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "jetbrains-pycharm-ce"(python için pycharm ile bu sorunu yaşıyordum)

sun-awt-X11-XFramePeerBen (tırnak işaretleri olmadan) benim .desktop dosyasında dize olarak gerekli oldu - Teşekkürler!


StartupWMClass=sun-awt-X11-XFramePeerBenimkine ekledim ve hiçbir şey olmadı! Mı .desktopev klasöründe bulunan dosya?
anon58192932

0

Simgeleri doğru yere yerleştirdikten sonra, xserver'ı yeniden başlatmanız (oturumu kapatıp tekrar oturum açmanız) yeterlidir.
Ayrıca simge önbelleğini güncellemeyi deneyin (aşağıdaki kodu terminale yapıştırmanız yeterlidir):

for d in ~/.icons/*; do gtk-update-icon-cache -f $d; done
for d in /usr/share/icons/*; do sudo gtk-update-icon-cache -f $d; done
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.