Brak ikony po uruchomieniu aplikacji


12

Utworzyłem program uruchamiający aplikacje, /usr/share/applicationsktóry uruchamia rdesktop. Plik określa nazwę ikony i dodałem ikony do:

/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

Następnie dodam program uruchamiający do paska zadań, a program uruchamiający z prawidłowym logo jest widoczny na pasku zadań. Jednak gdy rozpoczynam zadanie, na pasku zadań tworzona jest nowa ikona, kwadrat ze znakiem zapytania na środku.

Jakich ikon potrzebuję i gdzie, aby pasek zadań wyświetlał poprawną ikonę aplikacji po uruchomieniu?

Zawartość pliku .desktop:

[Wpis na pulpicie]
Wersja = 1.0
Terminal = false
Ikona = mswindows
Typ = zastosowanie
Kategorie = sieć;
Exec = rdesktop win7shared1 -g 1680x1000

Nazwa = win7shared1
GenericName = rdesktop
Komentarz = Otwórz pulpit systemu Windows

Słowa kluczowe = Windows
StartupNotify = false

Odpowiedzi:


15

Co najprawdopodobniej rozwiąże Twój problem, wykonaj następujące czynności:

  1. Otwórz aplikację
  2. Gdy jest uruchomiony, otwórz terminal i wpisz:

    xprop WM_CLASS
    
  3. Następnie kliknij otwarte okno aplikacji.

  4. Wynik będzie wyglądał następująco (przykład gedit):

    WM_CLASS(STRING) = "gedit", "Gedit"
    
  5. Użyj pierwszej części (w tym przypadku byłoby gedit), aby utworzyć linię w swoim .desktoppliku:

    StartupWMClass=<string>
    

    (zamień <string>na rzeczywistą (pierwszą część) wyjście xprop WM_CLASSnp. StartupWMClass=gedit)

Teraz spróbuj ponownie (być może będziesz musiał się wylogować / zalogować), najprawdopodobniej aplikacja pojawi się w programie uruchamiającym pod własną ikoną.

Wyjaśnienie

  • Gdy aplikacja uruchamia się poprawnie z programu uruchamiającego ( .desktoppliku), ale inna ikona pojawia się tylko z ikoną ogólną (znak zapytania), najprawdopodobniej okno aplikacji i program uruchamiający nie łączą się z jakiegoś powodu, a program uruchamiający nie rozpoznaje okno aplikacji jako „jego”. Często dzieje się tak, gdy używany jest skrypt lub niestandardowa aplikacja (-polecenie). W takich przypadkach StartupWMClass=linia jest często rozwiązaniem.

Dzięki, Jacob. To rozwiązało problem. Dla przypomnienia ciąg WM_CLASS to „rdesktop”, „rdesktop”.
clayton

@clayton perfect, cieszę się, że zadziałało.
Jacob Vlijm,

1
Twój krok 2 może zostać zmniejszony, ponieważ xprop pozwala przekazać atom, który chcesz zwrócić, xprop WM_CLASSwystarczy bieg
johndrinkwater

@johndrinkwater Oczywiście, dzięki za podpowiedź. To już ponad rok temu, ponad 14 miesięcy to tak, jak napisała to inna osoba :). Edycja ...
Jacob Vlijm

@ jacob-vlijm :) właśnie natknąłem się na to, badając niezręczne zachowanie
xprop

2

dla mnie xprop|grep WM_CLASSdał WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "jetbrains-pycharm-ce"(miałem ten problem z pycharm dla python)

Właśnie sun-awt-X11-XFramePeertego potrzebowałem jako ciągu w pliku .desktop (bez cudzysłowów) - Dzięki!


Dodałem StartupWMClass=sun-awt-X11-XFramePeerdo mojego i nic się nie stało! Czy .desktopplik znajduje się w folderze domowym?
anon58192932,

0

Po umieszczeniu ikon we właściwym miejscu, powinieneś po prostu zrestartować Xserver (wyloguj się i zaloguj ponownie).
Spróbuj także zaktualizować pamięć podręczną ikon (po prostu wklej poniższy kod do terminala):

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.