Desktop entries (简体中文)
.desktop 文件中还定义了数据文件的 MIME 类型关联。Default applications (简体中文) 介绍了它们的配置方法。
[Desktop Entry] # The type as listed above Type=Application # The version of the desktop entry specification to which this file complies Version=1.0 # The name of the application Name=jMemorize # A comment which can/will be used as a tooltip Comment=Flash card based learning tool # The path to the folder in which the executable is run Path=/opt/jmemorise # The executable of the application. Exec=jmemorize # The name of the icon that will be used to display this entry Icon=jmemorize # Describes whether this application needs to be run in a terminal or not Terminal=false # Describes the categories in which this entry should be shown Categories=Education;Languages;Java;
All Desktop recognized desktop entries can be found freedesktop.org.
For example, the
Type key defines three types of desktop entries: Application (type 1), Link (type 2) and Directory (type 3).
Versionkey does not stand for the version of the application, but for the version of the desktop entry specification to which this file complies.
Commentoften contain redundant values in the form of combinations of them, like:
Name=Pidgin Internet Messenger GenericName=Internet Messenger
Name=NoteCase notes manager Comment=Notes Manager
This should be avoided, as it will only be confusing to users. The
Name key should only contain the name, or maybe an abbreviation/acronym if available.
GenericNameshould state what you would generally call an application that does what this specific application offers (i.e. Firefox is a "Web Browser").
Commentis intended to contain any usefull additional information.
There are quite some keys that have become deprecated over time as the standard has matured. The best/simplest way is to use the tool
desktop-file-validate which is part of the package . To validate, run
$ desktop-file-validate <your desktop file>
This will give you very verbose and useful warnings and error messages.
|Extension||Full Name and/or Description||Graphics Type||Container Format||Supported|
|.png||Portable Network Graphics||Raster||No||Yes|
|.svg(z)||Scalable Vector Graphics||Vector||No||Yes (optional)|
|.xpm||X PixMap||Raster||No||Yes (deprecated)|
|.gif||Graphics Interchange Format||Raster||No||No|
|.ico||MS Windows Icon Format||Raster||Yes||No|
|.icns||Apple Icon Image||Raster||Yes||No|
If you stumble across an icon which is in a format that is not supported by the freedesktop.org standard (like
ico), you can use the convert tool (which is part of the package) to convert it to a supported/recommended format, e.g.:
$ convert <icon name>.gif <icon name>.png
If you convert from a container format like
ico, you will get all images that were encapsulated in the
ico file in the form
<icon name>-<number>.png. If you want to know the size of the image, or the number of images in a container file like
ico you can use the identify tool (also part of the package):
$ identify /usr/share/vlc/vlc48x48.ico
/usr/share/vlc/vlc48x48.ico ICO 32x32 32x32+0+0 8-bit DirectClass 84.3kb /usr/share/vlc/vlc48x48.ico ICO 16x16 16x16+0+0 8-bit DirectClass 84.3kb /usr/share/vlc/vlc48x48.ico ICO 128x128 128x128+0+0 8-bit DirectClass 84.3kb /usr/share/vlc/vlc48x48.ico ICO 48x48 48x48+0+0 8-bit DirectClass 84.3kb /usr/share/vlc/vlc48x48.ico ICO 32x32 32x32+0+0 8-bit DirectClass 84.3kb /usr/share/vlc/vlc48x48.ico ICO 16x16 16x16+0+0 8-bit DirectClass 84.3kb
As you can see, the example ico file, although its name might suggest a single image of size 48x48, contains no less than 6 different sizes, of which one is even greater than 48x48, namely 128x128.
Alternatively, you can use icotool (from) to extract png images from ico container:
$ icotool -x <icon name>.ico
For extracting images from .icns container, you can use icns2png (provided byAUR):
$ icns2png -x <icon name>.icns
Although packages that already ship with a .desktop-file most certainly contain an icon or a set of icons, there is sometimes the case when a developer has not created a .desktop-file, but may ship icons, nonetheless. So a good start is to look for icons in the source package. You can i.e. first filter for the extension with find and then use grep to filter further for certain buzzwords like the package name, "icon", "logo", etc, if there are quite a lot of images in the source package.
$ find /path/to/source/package -regex ".*\.\(svg\|png\|xpm\|gif\|ico\)$"
If the developers of an application do not include icons in their source packages, the next step would be to search on their web sites. Some projects, like i.e. tvbrowser have an artwork/logo page where additional icons may be found. If a project is multi-platform, there may be the case that even if the linux/unix package does not come with an icon, the Windows package might provide one. If the project uses a Version control system like CVS/SVN/etc. and you have some experience with it, you also might consider browsing it for icons. If everything fails, the project might simple have no icon/logo yet.
started as an Arch Linux-specific tool for generating .desktop files by fetching the needed information directly from PKGBUILD files. Now it is a general tool that takes command-line arguments.
Icons can be automatically downloaded from openiconlibrary, if available. (The source for icons can easily be changed in the future).
- Start the
gendesk --pkgname "$pkgname" --pkgdesc "$pkgdesc"
- Alternatively, if an icon is already provided ($pkgname.png, for instance). The
-nflag is for not downloading an icon or using the default icon. Example:
gendesk -n --pkgname "$pkgname" --pkgdesc "$pkgdesc"
$srcdir/$pkgname.desktopwill be created and can be installed in the
install -Dm644 "$pkgname.desktop" "$pkgdir/usr/share/applications/$pkgname.desktop"
- The icon can be installed with:
install -Dm644 "$pkgname.png" "$pkgdir/usr/share/pixmaps/$pkgname.png"
--name='Program Name'for choosing a name for the menu entry.
--exec='/opt/some_app/elf --with-ponies'for setting the exec field.
- See the gendesk project for more information.
# lsdesktopf # lsdesktopf --less # lsdesktopf --less gtk zh_TW,zh_CN,en_GB
List MIME-types or parts of MIME-types found in .desktop, and which desktop files shares same MIME-type, output is equal as in mimeapps.list for section
# lsdesktopf --gm # lsdesktopf --gm [options]
TheAUR bash script using command "which" to detect broken Exec that points to not existing path. Without any parameters it uses preset folders in "DskPath" array. It shows only broken *.desktop with full path and filename that is missing.
# fbrokendesktop # fbrokendesktop /usr # fbrokendesktop /usr/share/apps/kdm/sessions/icewm.desktop
desktop-name 可以是 GNOME, Xfce, KDE 等，指定多个桌面时用分号隔开。
兼容 XDG 的桌面环境例如s GNOME 或 KDE 会自动, 启动如下位置的 *.desktop 文件:
- GNOME 会启动
- GNOME 会启动
Exec=env LANG=he_IL.UTF-8 abiword %U