Ścieżka ikony w pliku .desktop

11

Na pulpicie mam plik .desktop. Jeśli napiszę:

Icon=/home/ianbell/Pictures/myLogo.png

ikona pliku .desktop zmienia się (oczekiwany wynik).

Ale jeśli napiszę:

Icon=~/Pictures/myLogo.png

to nie działa.

Czy nie ~/jest skrót /home/$USER?

Jacob Vlijm
źródło
1
~ jest skrótem dla twojego katalogu domowego tylko w powłoce.
user253751
@JacobVlijm: przepraszam, zasnąłem, programuję dzień i noc :-)
1
@IanBell Haha Znam to uczucie :)
Jacob Vlijm
/ home / $ USER nie będzie działać. Wygląda na to, że szukasz - / home / $ (whoami). Zobacz moje komentarze poniżej.
Ajay Kumar

Odpowiedzi:

10

Zastosowanie ścieżek w pliku .desktop

W .desktoppliku musisz użyć ścieżek bezwzględnych i pełnych . Dlatego ~nie jest rozwinięty.

To często popełniany błąd :)

Wyjątki dotyczące ikon opisano tutaj :

Ikona do wyświetlenia w menedżerze plików, menu itp. Jeśli nazwa jest ścieżką bezwzględną, użyty zostanie podany plik. Jeśli nazwa nie jest ścieżką bezwzględną, do zlokalizowania ikony zostanie użyty algorytm opisany w specyfikacji motywu ikony.

a tutaj :

Pole ikony to ikona, która powinna być używana przez program uruchamiający i reprezentuje aplikację. Wszystkie ikony znajdujące się w katalogu /usr/share/pixmapsnie muszą mieć pełnej ścieżki, ale nazwy pliku bez rozszerzenia. Na przykład, jeśli plik ikony to /usr/share/pixmaps/wallch.png, to pole Ikona powinno być po prostu „ściśnięciem”. Wszystkie inne ikony powinny mieć określoną pełną ścieżkę.

Więcej informacji

W .desktoppliku:

W Icon=linii, dopuszczone do użytkowania przestrzeni:

Icon=/home/jacob/Thema/icon/some folder/some icon.png

jest w porządku.

jednak

W Exec=wierszu nie wolno używać spacji, chyba że w przypadku argumentu . We wszystkich innych przypadkach musisz podać kroki ścieżki spacją:

Exec=/home/jacob/Bureaublad/some folder/application

zawiedzie, podczas gdy

Exec="/home/jacob/Bureaublad/some folder/application"

lub

Exec=/home/jacob/Bureaublad/"some folder"/application

będzie dobrze działać

Jacob Vlijm
źródło
Jak więc odwołać się do ścieżki względem „katalogu domowego użytkowników”?
Aaron Franke,
Aaron Franke, możesz użyć $ (whoami), aby uzyskać aktualną nazwę użytkownika. Nie próbowałem, ale to powinno działać - dla katalogu domowego dla bieżącego użytkownika - / home / $ (whoami).
Ajay Kumar
Próbowałem i działa Aaron.
Ajay Kumar
4

Krótko mówiąc, ścieżka .desktopdo pliku Icon=rozumie ścieżki bezwzględne, ale nie rozwija tyldy, ze względu na specyfikację, która określa, w jaki sposób .desktoppowinny działać pliki.

Rozszerzenie tyldy

  • Widoczne jest ~rozszerzenie funkcji tilde ( ) do $HOMEzmiennej środowiskowej, na przykład w bash, która jest zwykłą powłoką logowania, z którą użytkownik wchodzi w interakcję w wierszu polecenia
  • bash i inne powłoki zgodne z POSIX , wykonaj rozszerzenie tylda do $ HOME zgodne ze specyfikacją POSIX dla powłok

pliki .desktop

  • Jednak .desktopplik nie jest tym samym co powłoka, jest to zwykły tekstowy plik konfiguracyjny, więc niekoniecznie działałby w ten sam sposób, nawet jeśli .desktoppliki i powłoki można znaleźć w systemie Linux
  • sposób, w jaki .desktoppowinien działać plik, jest zdefiniowany w specyfikacji Freedesktop w Desktop Entry Specification

Specyfikacja dotycząca pozycji na pulpicie dotyczy Icons:

Jeśli nazwa jest ścieżką bezwzględną, użyty zostanie podany plik.

Dlatego mogłeś używać ścieżek bezwzględnych, ponieważ jest to objęte specyfikacją

Jeśli nazwa nie jest ścieżką bezwzględną, do zlokalizowania ikony zostanie użyty algorytm opisany w specyfikacji motywu ikony.

Kiedy sprawdzamy specyfikację motywu ikony , nic nie mówi, że musi ona w ogóle podążać za rozszerzeniem tyldy POSIX.

Podsumowanie

Tak więc, ze względu na specyfikacje Freedesktop dotyczących .desktop„s Icon=ustawienia ścieżki bezwzględne są obsługiwane, ale jak znaleźć, POSIX tyldy-to- $ HOME rozszerzenia nie są.

jasność123
źródło