桌面条目文件规范
原文鏈接
介紹
KDE和GNOME桌面環(huán)境都采用了類似的”桌面條目”格式,或描述特定程序如何啟動的配置文件,它在菜單中的顯示方式等。統(tǒng)一標(biāo)準(zhǔn)對更大的社區(qū)有利。 所有各方都同意這樣做,即兩個環(huán)境之間的互操作,以及實(shí)現(xiàn)規(guī)范的任何其他環(huán)境變得更加簡單。
文件命名
桌面條目文件應(yīng)具有.desktop擴(kuò)展名,但類型目錄的文件除外,該文件應(yīng)具有.directory擴(kuò)展名。基于擴(kuò)展確定文件類型使得確定文件類型非常容易和快速。當(dāng)沒有文件擴(kuò)展名時,桌面系統(tǒng)應(yīng)通過“魔術(shù)檢測”來后備識別。
對于應(yīng)用程序,.desktop擴(kuò)展名之前的桌面文件名稱部分應(yīng)該是有效的D-Bus知名名稱。這意味著它是由點(diǎn)(U+002E FULL STOP)分隔的非空元素序列,其中沒有一個以數(shù)字開頭,并且每個元素僅包含來自集合的字符[A-Za-z0-9- _]:ASCII字母,數(shù)字,短劃線(U+002D HYPHEN-MINUS)和下劃線(U+002D HYPHEN-MINUS)。
桌面條目的名稱應(yīng)遵循“反向DNS”約定:它應(yīng)以應(yīng)用程序作者控制的反向DNS域名開頭,小寫。域名后面應(yīng)該跟應(yīng)用程序的名稱,通常用合并的單詞和首字母大寫字母(CamelCase)編寫。例如,如果exam??ple.org的所有者編寫“Foo Viewer”,他們可能會選擇名稱org.example.FooViewer,結(jié)果是名為org.example.FooViewer.desktop的文件。
允許使用包含短劃線的已知名稱,但不建議這樣做,因為在反向DNS名稱的某些相關(guān)用途中不允許使用短劃線,例如D-Bus對象路徑和接口名稱以及Flatpak應(yīng)用程序ID。如果作者的域名包含短劃線,建議將其替換為下劃線:這不會導(dǎo)致歧義,因為DNS域名中不允許使用下劃線。
如果作者的域名包含以數(shù)字開頭的元素(在D-Bus知名名稱中不允許),建議在桌面條目名稱的該元素前加下劃線。例如,7-zip.org可能會發(fā)布名為org._7_zip.Archiver的應(yīng)用程序。
桌面文件 ID
表示應(yīng)用程序的每個桌面條目由其桌面文件ID標(biāo)識,該文件ID基于其文件名。
要確定桌面文件的ID,請相對于安裝桌面文件的$XDG_DATA_DIRS組件創(chuàng)建其完整路徑,刪除“applications/”前綴,然后將“/”變?yōu)椤?”。例如/usr/share/applications/foo/bar.desktop具有桌面文件ID foo-bar.desktop。
如果多個文件具有相同的桌面文件ID,則使用$XDG_DATA_DIRS優(yōu)先順序中的第一個。例如,如果$ XDG_DATA_DIRS包含默認(rèn)路徑/usr/local/share:/usr/share,那么/usr/local/share/applications/org.foo.bar.desktop和/usr/share/applications/org.foo.bar.desktop都具有相同的桌面文件ID org.foo.bar.desktop,但只會使用第一個。如果foo-bar.desktop和foo/bar.desktop都存在,則選擇未定義。
如果桌面文件未安裝在$XDG_DATA_DIRS組件之一的applications子目錄中,則它沒有ID。
文件的基本格式
桌面條目文件以UTF-8編碼。 文件被解釋為由換行符分隔的一系列行。 文件中字母大小寫是有意義的。
兼容的實(shí)現(xiàn)絕不能從文件中刪除任何字段,即使它們不支持它們。 這些字段必須保存在某個列表中,如果文件被“重寫”,它們將被包含在內(nèi)。 這可確保即使其他系統(tǒng)訪問和更改文件,也會保留任何特定于桌面的擴(kuò)展。
注釋
以#開頭的行被視為注釋,將被忽略,但是應(yīng)該在桌面條目文件的讀寫期間保留它們。
注釋行不被解析,可能包含任何字符(LF除外)。 但是,鼓勵將UTF-8用于包含非ASCII字符的注釋行。
組頭部
名稱為groupname的組頭部是以下格式的行:
[groupname]
組名可以包含除[和]和控制字符以外的所有ASCII字符。
多個組可能沒有相同的名稱。
在組頭部之后的所有{key,value}對,直到新的組頭部屬于該組。
桌面條目文件的基本格式要求有一個名為Desktop Entry的組頭部。 文件中可能存在其他組,但這是明確需要支持的最重要的組。 該組還應(yīng)該用作自動MIME類型檢測的“魔術(shù)鍵”。 桌面條目文件中此組之前應(yīng)該沒有任何內(nèi)容,但可能有一行或多行注釋。
條目
文件中的條目是{key,value}對,格式如下:
Key=Value
等號之前和之后的空格應(yīng)該被忽略; =符號是實(shí)際的分隔符。
在鍵名中只能使用字符A-Za-z0-9-。
由于大小寫是有意義的,鍵 Name 和 NAME 是不同的。
同一組中的多個鍵可能不具有相同的名稱。不同組中的鍵可能具有相同的名稱。
可能的值類型
識別的值類型是string,localestring,boolean和numeric。
-
string類型的值可以包含除控制字符之外的所有ASCII字符。
-
localestring類型的值是可向用戶顯示的,并以UTF-8編碼。
-
boolean類型的值必須是字符串true或false。
-
numeric類型的值必須是有效的浮點(diǎn)數(shù),由C語言環(huán)境中scanf的%f說明符識別。
轉(zhuǎn)義序列\(zhòng)s,\n,\t,\r和\支持string和localestring類型的值,分別表示ASCII空格,換行符,制表符,回車符和反斜杠。
某些鍵可以有多個值。在這種情況下,鍵的值被指定為復(fù)數(shù):例如,多個字符串。多個值應(yīng)該用分號分隔,鍵的值可以選擇用分號結(jié)束。尾隨空字符串必須始終以分號結(jié)束。這些值中的分號需要使用;進(jìn)行轉(zhuǎn)義。
鍵的本地化值
類型為localestring的鍵可以由[LOCALE]后綴,其中LOCALE是條目的語言環(huán)境類型。 LOCALE的格式必須為lang_COUNTRY.ENCODING@MODIFIER,其中可省略_COUNTRY,.ENCODING和@MODIFIER。如果出現(xiàn)加后綴的鍵,則必須同時存在不加后綴的相同的鍵。
在桌面條目文件中讀取時,通過將LC_MESSAGES類別的當(dāng)前POSIX語言環(huán)境與鍵的所有LOCALE后綴相匹配來選擇鍵的值。
匹配如下進(jìn)行。如果LC_MESSAGES的格式為lang_COUNTRY.ENCODING@MODIFIER,則它將匹配lang_COUNTRY@MODIFIER格式的鍵。如果這樣的鍵不存在,它將嘗試匹配lang_COUNTRY,然后是lang@MODIFIER。然后,將嘗試與lang本身進(jìn)行匹配。最后,如果未找到匹配的密鑰,則使用未指定區(qū)域設(shè)置的所需鍵。匹配時忽略LC_MESSAGES值的編碼。
如果LC_MESSAGES沒有MODIFIER字段,則不會匹配帶修飾符的鍵。同樣,如果LC_MESSAGES沒有COUNTRY字段,則不會匹配指定國家/地區(qū)的鍵。如果LC_MESSAGES只有一個lang字段,那么它將與具有相似值的鍵進(jìn)行直接匹配。下表按照匹配順序列出了各種LC_MESSAGES值的可能匹配項。請注意,未顯示ENCODING字段。
表1. 區(qū)域設(shè)置匹配
| lang_COUNTRY@MODIFIER | lang_COUNTRY@MODIFIER, lang_COUNTRY, lang@MODIFIER, lang, 默認(rèn)值 |
| lang_COUNTRY | lang_COUNTRY, lang, 默認(rèn)值 |
| lang@MODIFIER | lang@MODIFIER, lang, 默認(rèn)值 |
| lang | lang, 默認(rèn)值 |
例如,如果LC_MESSAGES類別的當(dāng)前值是sr_YU@Latn,并且桌面文件包括:
Name=Foo Name[sr_YU]=... Name[sr@Latn]=... Name[sr]=...則 Name 的值用[sr_YU]后綴的。
識別的桌面條目鍵
鍵是可選的或必需的。 如果鍵是可選的,則它可能存在也可能不存在于文件中。 但是,如果不是,標(biāo)準(zhǔn)的實(shí)現(xiàn)不應(yīng)該崩潰,它必須提供一些理智的默認(rèn)值。
某些鍵僅在上下文中另一個特定鍵也存在并設(shè)置為特定值才有效。 如果特定鍵不存在或未設(shè)置為特定值,則不應(yīng)使用這些鍵。 例如,只有在Type鍵的值為Application時才能使用Terminal鍵。
如果必需鍵僅在另一個設(shè)置為特定值的鍵的上下文中有效,則只有在另一個鍵設(shè)置為特定值時才必須存在。 例如,當(dāng)且僅當(dāng)Type鍵的值為Link時,必須存在URL鍵。
一些示例鍵:Name[C],Comment[it]。
| Type | 此規(guī)范定義了3種類型的桌面條目:Application(應(yīng)用程序,類型1),Link(鏈接,類型2)和Directory(目錄,類型3)。 為了允許將來添加新類型,實(shí)現(xiàn)應(yīng)忽略具有未知類型的桌面條目。 | string | 是 |
| Version | 桌面條目符合的桌面條目規(guī)范的版本。 使用此版本規(guī)范確認(rèn)的條目應(yīng)使用1.1。 請注意,不需要存在版本字段。 | string | 否 |
| Name | 應(yīng)用程序的特定名稱,例如“Mozilla”。 | localestring | 是 |
| GenericName | 應(yīng)用程序的通用名稱,例如“Web 瀏覽器”。 | localestring | 否 |
| NoDisplay | 表示“此應(yīng)用程序存在,但不在菜單中顯示”。 這可用于例如 將此應(yīng)用程序與MIME類型相關(guān)聯(lián),以便從文件管理器(或其他應(yīng)用程序)啟動它,而無需為其提供菜單條目(有很多很好的理由,包括例如netscape -remote或kfmclient openURL類型 的東西)。 | boolean | 否 |
| Comment | 該條目的工具提示,例如“查看Internet上的站點(diǎn)”。 該值不應(yīng)該和 Name和GenericName的值重復(fù)。 | localestring | 否 |
| Icon | 要在文件管理器,菜單等中顯示的圖標(biāo)。如果名稱是絕對路徑,則將使用給定文件。 如果名稱不是絕對路徑,則將使用圖標(biāo)主題規(guī)范中描述的算法來定位圖標(biāo)。 | localestring | 否 |
| Hidden | 隱藏應(yīng)該被稱為已刪除。 這意味著用戶刪除了(在他的級別)存在的東西(在較高級別,例如在系統(tǒng)目錄中)。 就用戶而言,它完全等同于根本不存在的.desktop文件。 這也可用于“卸載”現(xiàn)有文件(例如,由于重命名) - 讓make install安裝一個Hidden = true的文件。 | boolean | 否 |
| OnlyShowIn, NotShowIn | 標(biāo)識應(yīng)顯示/不顯示給定桌面條目的桌面環(huán)境的字符串列表。<br>默認(rèn)情況下,應(yīng)顯示桌面文件,除非存在OnlyShowIn鍵,在這種情況下,默認(rèn)情況下不顯示該文件。<br> 如果設(shè)置了$XDG_CURRENT_DESKTOP,則它包含以冒號分隔的字符串列表。 按順序,考慮每個字符串。 如果在OnlyShowIn中找到匹配的條目,則顯示桌面文件。 如果在NotShowIn中找到條目,則不顯示桌面文件。 如果沒有任何字符串匹配,則采用默認(rèn)操作(如上所述)。<br> $XDG_CURRENT_DESKTOP應(yīng)該由登錄管理器根據(jù)會話文件中找到的DesktopNames的值設(shè)置。 會話文件中的條目有多個值時通常以分號“:”分隔。<br> 相同的桌面名稱可能不會同時出現(xiàn)在組的OnlyShowIn和NotShowIn中。 | string(s) | 否 |
| DBusActivatable | 指定此應(yīng)用程序是否支持D-Bus激活。 如果缺少此鍵,則默認(rèn)值為false。 如果值為true,則實(shí)現(xiàn)應(yīng)忽略Exec鍵并發(fā)送D-Bus消息以啟動應(yīng)用程序。 有關(guān)其工作原理的詳細(xì)信息,請參閱D-Bus激活。 應(yīng)用程序仍應(yīng)在其桌面文件中包含Exec =行,以便與不理解DBusActivatable鍵的實(shí)現(xiàn)兼容。 | boolean | 否 |
| TryExec | 磁盤上可執(zhí)行文件的路徑,用于確定程序是否實(shí)際安裝。 如果路徑不是絕對路徑,則在$PATH環(huán)境變量中查找該文件。 如果文件不存在或者文件不可執(zhí)行,則可以忽略該條目(例如,不在菜單中使用)。 | string | 否 |
| Exec | 要執(zhí)行的程序,可能帶有參數(shù)。 有關(guān)此鍵如何工作的詳細(xì)信息,請參閱Exec鍵。 如果DBusActivatable未設(shè)置為true,則需要Exec鍵。 即使DBusActivatable為true,為了不理解DBusActivatable的實(shí)現(xiàn)的兼容性也應(yīng)指定Exec。 | ||
| Path | 如果條目是Application類型,則是運(yùn)行該程序的工作目錄。 | string | 否 |
| Terminal | 程序是否在終端窗口中運(yùn)行。 | boolean | 否 |
| Actions | 應(yīng)用程序操作的標(biāo)識符。 這可以用于告訴應(yīng)用程序進(jìn)行特定操作,與默認(rèn)行為不同。 應(yīng)用程序操作部分描述了操作的工作方式。 | string(s) | 否 |
| MimeType | 此應(yīng)用程序支持的MIME類型。 | string(s) | 否 |
| Categories | 應(yīng)在菜單中顯示條目的類別(有關(guān)可能的值,請參閱桌面菜單規(guī)范)。 | string(s) | 否 |
| Implements | 此應(yīng)用程序?qū)崿F(xiàn)的接口列表。 默認(rèn)情況下,桌面文件不實(shí)現(xiàn)任何接口。 有關(guān)其工作原理的詳細(xì)信息,請參閱接口。 | string(s) | 否 |
| Keywords | 除了描述此條目的其他元數(shù)據(jù)之外可以使用的字符串列表。 這可能是有用的,例如便于搜索條目。 這些值不用于顯示,并且不應(yīng)該與Name或GenericName的值重復(fù)。 | localestring(s) | 否 |
| StartupNotify | 如果為true,則表示應(yīng)用程序在使用DESKTOP_STARTUP_ID環(huán)境變量集啟動時將發(fā)送“刪除”消息。 如果為false,則表示該應(yīng)用程序根本不適用于啟動通知(未顯示任何窗口,即使在使用StartupWMClass時也會破壞等)。 如果不存在,則合理的處理取決于實(shí)現(xiàn)(假設(shè)為false,使用StartupWMClass等)。 (有關(guān)更多詳細(xì)信息,請參閱“啟動通知協(xié)議規(guī)范”)。 | boolean | 否 |
| StartupWMClass | 如果指定,則已知應(yīng)用程序?qū)成渲辽僖粋€具有給定字符串為其WM類或WM名稱提示的窗口(有關(guān)更多詳細(xì)信息,請參閱啟動通知協(xié)議規(guī)范)。 | string | 否 |
| URL | 如果條目是鏈接類型,則是要訪問的URL。 | string | 是 |
Exec 鍵
Exec鍵必須包含命令行。 命令行由可執(zhí)行程序組成,可選地后跟一個或多個參數(shù)。 可執(zhí)行程序可以使用其完整路徑指定,也可以僅使用可執(zhí)行文件的名稱指定。 如果未提供完整路徑,則在桌面環(huán)境使用的$PATH環(huán)境變量中查找可執(zhí)行文件。 可執(zhí)行程序的名稱或路徑可能不包含等號(“=”)。 參數(shù)由空格分隔。
參數(shù)可以全部引起來(后稱為引用)。 如果參數(shù)包含保留字符,則必須引用該參數(shù)。 引用參數(shù)的規(guī)則也適用于提供的可執(zhí)行程序的可執(zhí)行文件名或路徑。
引用必須通過在雙引號之間包含參數(shù)并轉(zhuǎn)義雙引號字符(“"”),反引號字符(“`”),美元符號(“$”)和反斜杠字符(“\”),并在其前面添加一個反斜杠字符來完成。 實(shí)現(xiàn)必須在擴(kuò)展字段代碼之前和將參數(shù)傳遞給可執(zhí)行程序之前解開引用。 保留字符為空格(“ ”),制表符,換行符,雙引號(“"”),單引號(“'”),反斜杠字符(“\”),大于號(“>”),小于號(“<” ),波浪號(“~”),豎條(“|”),and符號(“&”),分號(“;”),美元符號(“$”),星號(“*”),問號(“?“),哈希標(biāo)記(”#“),括號(”(“)和(”)“)和反引號字符(”`“)。
請注意,string類型值的常規(guī)轉(zhuǎn)義規(guī)則表明反斜杠字符也可以轉(zhuǎn)義為(“\”),并且在引用規(guī)則之前應(yīng)用此轉(zhuǎn)義規(guī)則。 因此,要明確表示桌面條目文件中帶引號的參數(shù)中的文字反斜杠字符,需要使用四個連續(xù)的反斜杠字符(“\\”)。 同樣,桌面條目文件中帶引號的參數(shù)中的文字美元符號用(“\$”)明確表示。
已經(jīng)定義了許多特殊的字段代碼,當(dāng)在命令行中遇到時,它們將由文件管理器或程序啟動器擴(kuò)展。 字段代碼由百分比字符(“%”)后跟字母字符組成。 必須將文字百分比字符轉(zhuǎn)義為%%。 應(yīng)從命令行中刪除不推薦使用的字段代碼并將其忽略。 字段代碼僅擴(kuò)展一次,不應(yīng)檢查用于替換字段代碼的字符串的字段代碼本身。
包含未在此規(guī)范中列出的字段代碼的命令行無效且不得處理,特別是實(shí)現(xiàn)可能不會引入對本規(guī)范中未列出的字段代碼的支持。 如果有的話,應(yīng)該通過新鍵引入擴(kuò)展。
除非本規(guī)范明確指示,否則實(shí)現(xiàn)必須注意不要將字段代碼擴(kuò)展為多個參數(shù)。 這意味著可以包含空格的名稱字段,文件名和其他替換項必須在擴(kuò)展后作為單個參數(shù)傳遞給可執(zhí)行程序。
盡管Exec鍵被定義為具有string類型的值(僅限于ASCII字符),但字段代碼擴(kuò)展可能會在參數(shù)中引入非ASCII字符。 實(shí)現(xiàn)必須注意傳遞給可執(zhí)行程序的參數(shù)中的所有字符都根據(jù)適用的語言環(huán)境設(shè)置進(jìn)行了正確編碼。
識別的字段代碼如下:
| %f | 單個文件名(包括路徑),即使選擇了多個文件也是如此。 讀取桌面條目的系統(tǒng)應(yīng)該識別出有問題的程序無法處理多個文件參數(shù),如果程序無法處理其他文件參數(shù),它應(yīng)該應(yīng)該為每個選定文件生成并執(zhí)行程序的多個副本。 如果文件不在本地文件系統(tǒng)上(即在HTTP或FTP位置),則文件將被復(fù)制到本地文件系統(tǒng),%f將擴(kuò)展為指向臨時文件。 用于不了解URL語法的程序。 |
| %F | 文件列表。 用于可以一次打開多個本地文件的應(yīng)用程序。 每個文件作為單獨(dú)的參數(shù)傳遞給可執(zhí)行程序。 |
| %u | 一個URL。 本地文件可以作為 file:// URL或文件路徑傳遞。 |
| %U | URL列表。 每個URL作為單獨(dú)的參數(shù)傳遞給可執(zhí)行程序。 本地文件可以作為file:// URL或文件路徑傳遞。 |
| %d | 廢棄 |
| %D | 廢棄 |
| %n | 廢棄 |
| %N | 廢棄 |
| %i | 桌面條目的Icon鍵擴(kuò)展為兩個參數(shù),首先是--icon,然后是Icon鍵的值。 如果Icon鍵為空或缺失,則不應(yīng)擴(kuò)展為任何參數(shù)。 |
| %c | 桌面條目中相應(yīng)Name鍵中列出的應(yīng)用程序的已翻譯名稱。 |
| %k | 桌面文件的位置為URI(例如,如果從vfolder系統(tǒng)獲取)或本地文件名,如果沒有不知到位置則為空。 |
| %v | 廢棄 |
| %m | 廢棄 |
命令行最多可包含一個%f,%u,%F或%U字段代碼。 如果應(yīng)用程序不應(yīng)打開任何文件,則必須從命令行中刪除%f,%u,%F和%U字段代碼并將其忽略。
不能在帶引號的參數(shù)內(nèi)使用字段代碼,引用參數(shù)內(nèi)的字段代碼擴(kuò)展的結(jié)果是未定義的。 %F和%U字段代碼只能單獨(dú)用作參數(shù)。
D-Bus 激活
支持由D-Bus啟動的應(yīng)用程序必須實(shí)現(xiàn)以下接口(以D-Bus內(nèi)省XML格式給出):
<interface name='org.freedesktop.Application'><method name='Activate'><arg type='a{sv}' name='platform_data' direction='in'/></method><method name='Open'><arg type='as' name='uris' direction='in'/><arg type='a{sv}' name='platform_data' direction='in'/></method><method name='ActivateAction'><arg type='s' name='action_name' direction='in'/><arg type='av' name='parameter' direction='in'/><arg type='a{sv}' name='platform_data' direction='in'/></method></interface>應(yīng)用程序必須根據(jù)介紹部分中的命名建議命名其桌面文件(例如,文件名必須類似于org.example.FooViewer.desktop)。 應(yīng)用程序必須具有可以使用已知名稱激活的D-Bus服務(wù),該名稱與刪除了.desktop部分的桌面文件名相同(對于我們的示例,org.example.FooViewer)。 上述接口必須在如下確定的對象路徑上實(shí)現(xiàn):從應(yīng)用程序的眾所周知的D-Bus名稱開始,將所有點(diǎn)更改為斜杠并添加前綴斜杠。 如果找到破折號('-'),將其轉(zhuǎn)換為下劃線('_')。 對于我們的示例,是/org/example/FooViewer。
當(dāng)啟動應(yīng)用程序時不打開任何文件將調(diào)用Activate方法。
當(dāng)啟動應(yīng)用程序時帶有文件,將調(diào)用Open方法。字符串?dāng)?shù)組是一個URI數(shù)組,采用UTF-8編碼。
激活桌面操作時會調(diào)用ActivateAction方法。 action-name參數(shù)是操作的名稱。
所有方法都接收platform-data參數(shù),該參數(shù)的使用方式與環(huán)境變量的使用方式類似。 目前,規(guī)范只定義了一個字段:desktop-startup-id。 這應(yīng)該是與存儲在DESKTOP_STARTUP_ID環(huán)境變量中的值相同的字符串,如啟動通知協(xié)議規(guī)范所指定的。
接口
Implements鍵可用于聲明桌面文件實(shí)現(xiàn)的一個或多個接口。
每個接口名稱必須遵循用于D-Bus接口名稱的規(guī)則,但除此之外,它們沒有特別的含義。 例如,在此列出接口并不一定意味著該應(yīng)用程序?qū)崿F(xiàn)了D-Bus接口,甚至不存在這樣的D-Bus接口。 完全由定義特定接口的實(shí)體來定義實(shí)現(xiàn)它的意義。
雖然完全取決于接口的設(shè)計者來決定給定的接口名稱的含義,但這里有一些推薦的“最佳實(shí)踐”:
- 接口應(yīng)該要求應(yīng)用程序是可以DBusActivatable的,包括使用D-Bus“反向DNS”約定命名應(yīng)用程序的桌面文件的要求
- 接口名稱應(yīng)對應(yīng)于應(yīng)用程序在導(dǎo)出org.freedesktop.Application接口時在同一對象路徑上導(dǎo)出的D-Bus接口
- 如果接口希望允許有關(guān)實(shí)現(xiàn)的詳細(xì)信息,則應(yīng)通過指定實(shí)現(xiàn)者在其桌面文件中添加與接口同名的組來實(shí)現(xiàn)(例如:[org.freedesktop.ImageAcquire])
盡管建議,接口可以指定幾乎任何可以想象的要求,包括這樣(荒謬)的事情,“當(dāng)通過Exec行啟動時,應(yīng)用程序應(yīng)該呈現(xiàn)一個設(shè)置了_FOO_IDENTIFIER屬性的窗口,此時將發(fā)送一個X客戶端消息到那個窗口“。 另一個例子是“此接口的所有實(shí)現(xiàn)都應(yīng)該標(biāo)記為NoDisplay,并且在啟動時,不會顯示任何窗口,并且將在不確認(rèn)的情況下刪除所有用戶的文件”。
接口定義者在設(shè)計接口時應(yīng)注意保持向后和向前兼容性問題。
注冊MIME類型
MimeType鍵用于指示應(yīng)用程序知道如何處理的MIME類型。 對于某些應(yīng)用程序,預(yù)計此列表可能會變長。 期望應(yīng)用程序能夠使用Exec鍵中列出的命令合理地打開這些類型的文件。
此字段中的MIME類型或桌面文件中的任何形式的優(yōu)先級都不應(yīng)該具有優(yōu)先級。 應(yīng)用程序的優(yōu)先級在.desktop文件之外處理。
附加應(yīng)用程序操作
Application類型的桌面條目可以包括一個或多個操作。 操作表示調(diào)用應(yīng)用程序的其他方法。 應(yīng)用程序啟動器應(yīng)該在應(yīng)用程序的上下文中將它們公開給用戶(例如,作為子菜單)。 這用于構(gòu)建所謂的“快速列表”或“跳轉(zhuǎn)列表”。
操作標(biāo)識符
每個操作都由一個字符串標(biāo)識,其格式與鍵名相同(請參閱“條目”一節(jié))。 每個標(biāo)識符都與必須存在于.desktop文件中的操作組相關(guān)聯(lián)。操作組是名為Desktop Action %s的組,其中%s是操作標(biāo)識符。
Actions鍵中未提及的操作標(biāo)識符的操作組無效。實(shí)現(xiàn)者必須忽略這樣的操作組。
操作的鍵
每個操作組中都支持以下鍵。 如果操作組中不存在必需鍵,則實(shí)現(xiàn)者應(yīng)忽略此操作。
表3.特定于操作的鍵
| Name | 將顯示給用戶的標(biāo)簽。 由于操作始終顯示在特定應(yīng)用程序的上下文中(即,作為啟動程序的子菜單),因此這只需要在應(yīng)用程序中明確,并且不應(yīng)包含應(yīng)用程序名稱。 | localestring | 是 |
| Icon | 與操作一起顯示的圖標(biāo)。 如果值是絕對路徑,則將使用給定文件。 如果值不是絕對路徑,則將使用圖標(biāo)主題規(guī)范中描述的算法來定位圖標(biāo)。 實(shí)現(xiàn)可能會選擇忽略它。 | localestring | 否 |
| Exec | 執(zhí)行此操作的程序,可能帶參數(shù)。有關(guān)此鍵如何工作的詳細(xì)信息,請參閱Exec鍵。 如果主桌面條目組中的DBusActivatable未設(shè)置為true,則需要Exec鍵。 即使DBusActivatable為true,為了不理解DBusActivatable的實(shí)現(xiàn)的兼容性也應(yīng)該指定Exec。 | string | 否 |
實(shí)施說明
應(yīng)用程序操作應(yīng)該由實(shí)現(xiàn)者支持。 但是,如果不支持它們,實(shí)現(xiàn)者可以簡單地忽略Actions鍵和關(guān)聯(lián)的Desktop Action操作組,并繼續(xù)使用Desktop Entry組:描述和調(diào)用應(yīng)用程序的主要方法是通過Desktop Entry組的Name,Icon和Exec鍵。
預(yù)計顯示應(yīng)用程序列表的其他桌面組件(例如軟件安裝程序)不會為這些操作提供任何用戶界面。 因此,應(yīng)用程序必須僅包含作為通用發(fā)·射器有意義的操作。
擴(kuò)展格式
如果要使用適用于所有支持方的新{key,value}對修改標(biāo)準(zhǔn),則將進(jìn)行小組討論。 這是引入更改的首選方法。 如果一個特定的一方希望添加一個供個人使用的字段,他們應(yīng)該在密鑰前面添加字符串X-PRODUCT,例如: X-NewDesktop-Foo,遵循其他IETF和RFC標(biāo)準(zhǔn)設(shè)定的先例。
或者,可以將字段放在它們自己的組中,然后它們可以具有任意鍵名。 如果是這種情況,該組應(yīng)遵循上述方案,即[X-PRODUCT GROUPNAME]或類似的東西。 這些步驟將避免不同但相似的環(huán)境之間的命名空間沖突。
示例桌面條目文件
[Desktop Entry] Version=1.0 Type=Application Name=Foo Viewer Comment=The best viewer for Foo objects available! TryExec=fooview Exec=fooview %F Icon=fooview MimeType=image/x-foo; Actions=Gallery;Create;[Desktop Action Gallery] Exec=fooview --gallery Name=Browse Gallery[Desktop Action Create] Exec=fooview --create-new Name=Create a new Foo! Icon=fooview-new轉(zhuǎn)載于:https://my.oschina.net/u/1248114/blog/3065631
總結(jié)
- 上一篇: 电路中极性与非极性电容并联的作用
- 下一篇: 独享云虚拟主机、共享云虚拟主机、云服务器