desktop (rozszerzenie pliku)

Z Wikipedii, wolnej encyklopedii

.desktop – rozszerzenie plików konfiguracyjnych używanych w graficznych interfejsach użytkownika do definiowania sposobu prezentacji elementów menu lub pulpitu. Pliki te są określane jako pliki typu desktop entry.

Tradycyjnie środowiska graficzne GNOME i KDE używały plików o podobnej funkcji i zbliżonym formacie. Obecnie (w roku 2007) oba projekty wykorzystują format zgodny ze specyfikacją w wersji 1.0[1].

Pojedynczy plik opisuje jedną aplikację: jej nazwę, ikonę, ścieżkę i parametry programu do uruchomienia, itp.

Specyfikacja plików desktop entry została zdefiniowana przez projekt freedesktop.org.

Nazwy[edytuj | edytuj kod]

Pliki desktop entry powinny posiadać rozszerzenie '.desktop', jednak w razie braku rozszerzenia środowisko graficzne powinno przeanalizować pliki na podstawie ich zawartości.

Pliki definiujące sposób prezentacji katalogów powinny posiadać rozszerzenie '.directory'.

Struktura pliku[edytuj | edytuj kod]

Plik składa się z linii zakończonych znakiem LF. Wielkość liter ma znaczenie.

Linie składające się z białych znaków oraz linie rozpoczynające się znakiem '#' (hasz) są ignorowane.

Grupy są definiowane przez nazwę otoczoną nawiasami kwadratowymi ('[' oraz ']'). Nazwa każdej grupy może wystąpić tylko raz w obrębie pliku.

Pierwszą grupą musi być grupa Desktop Entry. Jest to jedyna grupa wymagana specyfikacją. W pliku mogą wystąpić także grupy o innych nazwach, choć specyfikacja nie definiuje ich przeznaczenia.

Pozostałe linie definiują wartości poszczególnych kluczy w formacie:

 klucz = wartość

Odstępy po obu stronach znaku równości są ignorowane. Nazwy kluczy mogą się składać jedynie ze znaków ASCII a-z, A-Z oraz znaku '-'. Dany klucz może w obrębie grupy wystąpić najwyżej jeden raz, choć może ponownie pojawić się w innej grupie.

Dla wartości przewidziano cztery typy:

  • wartości typu string, które mogą zawierać wszystkie znaki ASCII oprócz znaków kontrolnych,
  • wartości typu localestring prezentowane użytkownikowi i zapisane w kodowaniu UTF-8,
  • wartości logiczne boolean reprezentowane słowami true (prawda) i false (fałsz)
  • oraz zmiennoprzecinkowe wartości liczbowe (numeric).

W wartościach typu string i localestring są rozpoznawane następujące sekwencje:

  • \s – spacja,
  • \n – znak końca linii,
  • \t – znak tabulatora,
  • \r – znak powrotu karetki,
  • \\ – backslash.

Niektóre klucze przyjmują listę wartości. Poszczególne elementy takiej listy są oddzielane średnikami, a cała lista wartości musi także być zakończona średnikiem. Każdy średnik występujący w tych wartościach musi zostać poprzedzony backslashem (\;). Przykładowy klucz z listą wartości:

Categories=GTK;GNOME;Application;Utility;

W kluczach typu localestring za nazwą klucza może pojawić się oznaczenie języka. Oznaczenie języka umieszcza się w nawiasach kwadratowych i jeżeli ono wystąpi wtedy w grupie musi pojawić się także klucz bez tego oznaczenia.

Np. jeżeli istnieje klucz 'Comment[pl]' wtedy musi także istnieć klucz 'Comment'.

Specyfikacja definiuje 3 rodzaje plików desktop entry:

  • Application (aplikacja),
  • Link (łącze),
  • Directory (katalog)

Zdefiniowane klucze[edytuj | edytuj kod]

Spośród zdefiniowanych przez specyfikację kluczy tylko dwa są wymagane: Type oraz Name.

Klucz Exec posiada dodatkowe sekwencje rozpoznawane w jego wartości.

Klucze ogólne[edytuj | edytuj kod]

  • Type (string) – nazwa typu pliku: 'Application', 'Link' lub 'Directory'. Pliki oznaczone nieznanym typem powinny być zignorowane przez środowisko graficzne.
  • Version (numeric) – wersja specyfikacji, np. '1.0'
  • Name (localestring) – nazwa programu, np. 'Mozilla'
  • GenericName (localestring) – ogólna nazwa programu, np. 'Przeglądarka internetowa'
  • NoDisplay (boolean) – wartość 'prawda' oznacza, że "ten program istnieje, ale nie wyświetlaj go w menu". Może być użyty do plików definiujących np. program obsługujący pewien typ MIME, nie przeznaczony do ręcznego uruchamiania przez użytkownika
  • Comment (localestring) – tekst podpowiedzi (ang. tooltip), np. 'Użyj do przeglądania stron internetowych'. Ten tekst nie powinien być powtórzeniem klucza Name lub GenericName
  • Icon (localestring) – nazwa ikony. Jeżeli nie jest to absolutna ścieżka do pliku wtedy użyty będzie algorytm opisany w Icon Theme Specification
  • Hidden (boolean) – wartość 'prawda' oznacza, że plik powinien być uznany za nieistniejący dla użytkownika w którego ścieżce został on znaleziony. W ten sposób użytkownik może ze swojego menu usunąć wpisy zdefiniowane ogólnie dla całego systemu.
  • OnlyShowIn albo NotShowIn (lista wartości typu string) – lista identyfikatorów środowisk w których dany obiekt powinien być pokazywany bądź ukrywany. Tylko jeden z tych kluczy może wystąpić w grupie. Format identyfikatorów jest zdefiniowany w Desktop Menu Specification

Klucze dotyczące plików typu Application[edytuj | edytuj kod]

  • TryExec (string) – ścieżka do programu używanego do określenia czy główny program jest zainstalowany
  • Exec (string) – program do wywołania wraz z parametrami
  • Path (string) – katalog w którym należy uruchomić program z klucza Exec
  • Terminal (boolean) – wartość 'true' oznacza, że program musi być uruchomiony w terminalu
  • MimeType (lista wartości typu string) – typy MIME obsługiwane przez program
  • Categories (lista wartości typu string) – kategorie menu, w których pozycja powinna być umieszczona. Dopuszczalne wartości są zdefiniowane w Desktop Menu Specification
  • StartupNotify (boolean) – wartość 'true' oznacza, że program wyśle sygnał "remove" (usuń) jeśli będzie uruchomiony w środowisku z ustawioną zmienną DESKTOP_LAUNCH_ID. Wartość 'false' oznacza, że program nie reaguje w żaden sposób na mechanizmy powiadamiania o uruchamianiu. Jeżeli klucz nie istnieje, wtedy środowisko graficzne może próbować zgadywać. Szczegóły są opisane w Startup Notification Protocol Specification
  • StartupWMClass (string) – istnienie tego klucza wskazuje, że program po uruchomieniu zarejestruje przynajmniej jedno okno z daną wartością jako jego klasą.

Klucz dotyczący plików typu Link[edytuj | edytuj kod]

  • URL (string) – Adres URL

Klucz Exec[edytuj | edytuj kod]

Wartością klucza Exec jest nazwa pliku programu, za którą mogą pojawić się parametry.

Jeżeli nazwa programu nie jest ścieżką bezwzględną, wtedy do odnalezienia pliku zostanie użyta zmienna PATH używana przez środowisko graficzne.

Dowolny argument może być, a każdy argument zawierający któryś ze znaków specjalnych musi być otoczony cudzysłowami. Występujące w takim argumencie znaki podwójnego cudzysłowu ("), gravis (`), dolara ($), oraz backslash (\) muszą być poprzedzone dodatkowym backslashem. Ta sama zasada dotyczy nazwy programu.

Znakami specjalnymi są:

  • odstęp ( ),
  • podwójny cudzysłów ("),
  • pojedynczy cudzysłów ('),
  • znak tabulacji,
  • znak nowej linii,
  • backslash (\),
  • znak większości (>),
  • znak mniejszości (<),
  • tylda (~),
  • pionowa kreska (|),
  • ampersand (&),
  • średnik (;),
  • znak dolara ($),
  • gwiazdka (*),
  • znak zapytania (?),
  • hasz (#),
  • nawiasy okrągłe,
  • gravis (`).

Sekwencje podwójnych znaków backslash są standardowo zwijane przy odczytywaniu wartości typu string. W przypadku klucza Exec będą one zwinięte po raz drugi podczas usuwania podwójnych cudzysłowów otaczających argumenty. Żeby umieścić jeden znak backslasha przekazany do programu należy w pliku użyć czterech takich znaków.

Dodatkowo rozwijane przez środowisko są specjalne dwuznakowe sekwencje: '%f', '%F', '%u', '%U', '%i', '%c' oraz '%k'. Aby uzyskać znak procenta należy użyć dwóch tych znaków (%%).

%f
jedna nazwa pliku. Jeżeli zaznaczono wiele plików, system obsługujący plik '.desktop' powinien wywołać wiele kopii programu, każdemu przekazując tylko jeden plik. Jeżeli pliki nie znajdują się w lokalnym systemie plików (np. znajdują się w lokalizacjach HTTP lub FTP) zostaną skopiowane do lokalnego systemu plików a sekwencja '%f' będzie zastąpiona nazwą odpowiedniego pliku tymczasowego.
%F
lista plików. Każda z nazw pliku jest przekazywana jako oddzielny argument.
%u
jeden URL. Nazwy lokalnych plików mogą być przekazane jako URL z rodzajem zasobu file lub jako 'zwykłe' ścieżki.
%U
lista URL.
%i
Wartość klucza Icon jako dwa argumenty: pierwszy to ciąg znaków '--icon', drugi to wartość klucza Icon. Jeżeli klucz Icon nie jest w pliku ustawiony sekwencja ta jest ignorowana.
%c
Wartość klucza Name w odpowiednim języku.
%k
lokalizacja pliku '.desktop'. Może być przekazana jako URL, lokalna ścieżka lub pusta wartość jeśli lokalizacja nie jest znana.

Sekwencje te nie mogą występować w argumentach otaczanych cudzysłowami.

W kluczu Exec może wystąpić najwyżej jedna z sekwencji '%f', '%F', '%u' albo '%U'.

Wyjątki[edytuj | edytuj kod]

Niestandardowe klucze oraz grupy powinny być poprzedzone przedrostkiem 'X-(produkt)-', np. 'X-NewDesktop-Foo'

Z powodów historycznych KDE używa specyficznych dla siebie rozszerzeń specyfikacji, które to rozszerzenia nie są poprzedzone przedrostkiem 'X-KDE-'.

Specyficzne dla KDE klucze to: ServiceTypes, DocPath, Keywords oraz InitialPreference.

Specyficzne dla KDE typy pliku (wartości klucza Type) to: ServiceType, Service oraz FSDevice.

Pliki typu FSDevice używają dodatkowo następujących kluczy:

  • Dev (string) – Urządzenie do zamontowania (np. /dev/hda)
  • FSType (string) – Typ systemu plików użyty do montowania (np. ext3)
  • MountPoint (string) – Punkt montowania (np. /mnt/cdrom)
  • ReadOnly (boolean) – wartość 'true' oznacza, że urządzenie powinno być montowane w trybie tylko do odczytu.
  • UnmountIcon (string) – Ikona używana kiedy urządzenie jest odmontowane. Zamontowane urządzenie używa ikony podanej w kluczu Icon. Ikona odmontowanego urządzenia może być lokalizowana przez użycie formy 'UnmountIcon[xx]= '.

Przykładowy plik *.desktop[edytuj | edytuj kod]

[Desktop Entry]
  Encoding=UTF-8
  Name=Calculator
  Name[fr]=Calculatrice
  Name[pl]=Kalkulator
  Comment=Perform calculations
  Comment[fr]=Effectue des calculs compliqués
  Comment[pl]=Program pomocny w arytmetyce
  Exec=gcalctool
  Icon=gnome-calculator
  Terminal=false
  Type=Application
  StartupNotify=true
  Categories=GTK;GNOME;Application;Utility;

Przypisy[edytuj | edytuj kod]

Bibliografia[edytuj | edytuj kod]