openSUSE:Packaging desktop menu categories
Documentation relates to the Freedesktop Desktop Menu Specification, version 1.1-draft, dated 31 March 2011, with changes made up to Apr 4 April 2014.
For information about packaging desktop file in openSUSE, look at the Packaging Guidelines, section Desktop files.
Some of the categories were renamed in the past. The old names are additionally mentioned as 'obsoletes' in the lists below. They are automatically renamed by the %suse_update_desktop_file macro.
There is no strict hierarchy in the categories. You can list as many categories and subcategories as you want, using ; as a seperator. E.g. if your package is a printing utility, a text editor utility, and helps developing documentation, you could say Categories=Development;Utility;Documentation;Printing;TextEditor
Despite the above, /usr/lib/rpm/brp-suse.d/brp-30-desktop strictly enforces to always have *at least* one category followed by a subcategory. A correct minimal line looks like this:
Categories=Graphics;2DGraphics;
Note that there is no direct mapping from RPM Groups to XDG Categories.
Standard categories
Using recommended categories, you will get a desktop file, that is well sorted in all types of menus and in all GNU/Linux distributions.
Audio
Use these together with the Audio category as in Categories=Audio;Player;. Possible additional main category: AudioVideo. Obsoletes Multimedia.
AudioVideoEditingHamRadioMidiMixerPlayerRecorderSequencerTuner
AudioVideo
Use these together with the AudioVideo category as in Categories=AudioVideo;Player;. Possible additional main categories: Audio and/or Video. Obsoletes Multimedia.
AudioVideoEditingDatabaseDiscBurningMidiMixerMusicPlayerRecorderSequencerTVTuner
Development
Use these together with the Development category as in Categories=Development;IDE;.
BuildingDatabaseDebuggerDocumentation— upstream did not assign any main category, SUSE allows it hereGUIDesignerIDEProfilingProjectManagementRevisionControlTranslationWebDevelopmentX-SuSE-Design
Education
Use these together with the Education category, for example, Categories=Education;Astronomy;.
ArtArtificialIntelligenceAstronomyBiologyChemistryComputerScienceConstructionDataVisualizationEconomyElectricityEngineering— upstream did not assign any main category, SUSE allows it hereGeographyGeologyGeoscienceHistoryHumanitiesImageProcessingLanguages— obsoletesLanguageandX-KDE-Edu-LanguageLiteratureMapsMathMedicalSoftwareMusicNumericalAnalysiswith possible larger categoryMathParallelComputingwith possible larger categoryComputerSciencePhysicsRoboticsis now a main categoryScienceSpiritualitySportsTeaching— do not use, not part of upstream spec yet, outside SUSE, onlyX-KDE-Edu-Teachingis valid
Game
Use these together with the Game category, as in Categories=Game;ArcadeGame;.
ActionGameAdventureGameAmusement— upstream did not assign any main category, SUSE allows it hereArcadeGameBlocksGameBoardGameCardGameEmulatorKidsGameLogicGame— however SUSE allows it here, upstream allows onlyPlatformGameArcadeGameRolePlaying— obsoletesRolePlayingGameShooterSimulation— obsoletesSimulationGameSportsGameStrategyGame
Graphics
Use these together with the Graphics category, for example, Categories=Graphics;Viewer;.
2DGraphicswith allowed additional keywordsRasterGraphicsandVectorGraphics3DGraphicsOCRwith possible larger categoryScanningPhotographyPublishingRasterGraphicsScanningVectorGraphicsViewer
Internet
Do not use this category. Use Network instead. It is not part of upstream specification. It was used together with the Network category, as in Categories=Network;Email;.
— obsoletesDialupDialUpEmailFileTransferHamRadioInstantMessagingIRCClientMonitor— obsoletesNewsNewsreaderP2PRemoteAccess— obsoletesTelephonyTelephoneWebBrowserWebDevelopment
Multimedia
Do not use this category. Use Audio, Video and/or AudioVideo instead. It is not part of upstream specification. It was used together with the AudioVideo category, for example, Categories=AudioVideo;AudioMixer;.
Midi— obsoletesMixerAudioMixerMusicAudioVideoEditing— obsoletesPlayerAudioVideoPlayer— fix the bug that video player goes into audio player section in kickoff menuVideo;Player— obsoletesRecorderAudioVideoRecorder— obsoletesDiscBurningBurningCDJukeboxSequencerTunerTV
Network
Use these together with the Network category, for example, Categories=Network;Email;.
ChatDialupEmailFeedFileTransferHamRadioIRCClientInstantMessagingMonitorNewsP2PRemoteAccessTelephonyVideoConferenceWebBrowserWebDevelopment
Office
Use these together with the Office category, for example, Categories=Office;Presentation;.
CalendarChartContactManagement— obsoletesAddressBookDatabaseDictionarywith possible larger categoryTextToolsEmailFinanceFlowChartPDAPhotographyPresentationProjectManagementPublishingSpreadsheetViewerWordProcessor
Science
Use these together with the Science category, for example, Categories=Science;Geology;. In past, this main category was just a part of Education. Now it is main category.
ArtArtificialIntelligenceAstronomyBiologyChemistryComputerScienceConstructionDataVisualizationEconomyElectricityEngineering— upstream did not assign any main category, SUSE allows it hereGeographyGeologyGeoscienceHistoryHumanitiesImageProcessingLanguages— obsoletesLanguageandX-KDE-Edu-LanguageLiteratureMapsMathMedicalSoftwareNumericalAnalysiswith possible larger categoryMathParallelComputingwith possible larger categoryComputerSciencePhysicsRoboticsSpiritualitySports
Settings
Use these together with the Settings category, for example, Categories=Settings;HardwareSettings;.
AccessibilityDesktopSettingsHardwareSettingsPackageManagerPrintingSecurity
System
Use these together with the System category, for example, Categories=System;Emulator;.
— do not use, upstream proposesAppletUtility;Monitor;orUtility;Clock;for applets— do not use here, upstream proposesArchivingUtility;Archiving;— not supported any more, useBackupUtility;Archiving;, see below— do not use here, upstream proposes main categoriesDatabaseOffice,DevelopmentorAudioVideoDocumentation— upstream did not assign any main category, SUSE allows it hereEmulatorFileManagerFileToolsFilesystem— do not use here, upstream proposesHardwareSettingsSettings;HardwareSettings;Monitoris now a main categoryNetwork— do not use here, upstream proposesPackageManagerSystem;PackageManager;— do not use here, upstream proposesRemoteAccessNetwork;RemoteAccess;— do not use, not part of upstream specScreensaverSecurity— do not use, not part of upstream specSystemSetupTelephony— do not use, use eitherUtility;TelephonyTools;orNetwork;Telephony;; obsoletesTelephoneTerminalEmulator— do not use, not part of upstream specTrayIcon— SUSE specific, not upstreamable, useX-SuSE-BackupUtility;Archiving;
Utility
Use these together with the Utility category, as in Categories=Utility;TextEditor;.
Accessibility— however SUSE allows it here, upstream proposesAppletMonitororClockfor appletsArchivingwith allowed additional keywordCompressionCalculatorClockCompression— not supported any more, see belowDesktopUtilityFileToolsonly possible in combination withFileManager. When used alone it is removed automatically in the build process!— do not use here, upstream proposesPDAOffice;PDA;Printing— upstream is confusing, SUSE allows it hereMaps— do not use here, upstream proposesSecuritySettings;Security;orSystem;Security;— do not use; console implementations should useShellSystem;TerminalEmulator;, console only applications technology categoryConsoleOnlySpirituality— not supported any more, see belowSyncUtility— do not use in this way, use eitherTelephonyUtility;TelephonyTools;orNetwork;Telephony;TelephonyToolsTextEditor— now allowed by brp-30-desktopTextTools— not supported any more, see belowTimeUtility— not supported any more, see belowWebUtilityX-SUSE-DesktopUtility— SUSE specific, not upstreamableX-SUSE-TimeUtility— SUSE specific, not upstreamableX-SUSE-WebUtility— SUSE specific, not upstreamableX-SUSE-SyncUtility— SUSE specific, not upstreamable
Video
Use these together with the Video category as in Categories=Video;Player;. Possible additional main category: AudioVideo. Obsoletes Multimedia.
AudioVideoEditingPlayerRecorderTV
Special categories
These categories define additional information that can help to build better menu.
Adult— Application handles adult or explicit material.Core— Important application, core to the desktop such as a file manager or a help browser.
Technology categories
In difference to standard categories, technology categories define a technology used for the application (e. g. graphics toolkit). This additional information helps to the system with picking the best default application for particular environment.
GTKGTK;GNOMEGTK;XFCEQtQt;KDEMotifJavaConsoleOnly
SUSE categories enforcement
In addition to required desktop rules, upstream also proposes a rule, that each category from the main category has a corresponding additional category, and vice versa. SUSE enforces this rules, as it makes possible to create well structured menus, without items “hanging” in the first menu level.
Examples
Valid examples
Categories=Office;Spreadsheet;: Simple and straightforward. Office is a correct main category for Spreadsheet.
Categories=Office;Spreadsheet;Graphics;2DGraphics;: This is a set of categories for an application that is intended to appear twice in structured menus. Office is a correct main category for Spreadsheet. Graphics is a correct main category for 2DGraphics.
Categories=Audio;Video;Player;: This is a set of categories for an application that could appear twice in structured menus. Player is a correct additional category for both Audio and Video. Well, your could think about adding main category AudioVideo as well.
Invalid examples
: There is no relevant main category for Categories=Spreadsheet;Spreadsheet.
: Categories=Graphics;Spreadsheet;Graphics is an invalid main category for Spreadsheet.
: Two main categories were picked without any additional categories specified.
Categories=Graphics;Utility;
: Categories=Office;Graphics;Spreadsheet;Office is a correct main category for Spreadsheet. But there is no additional category for Graphics main category.
SUSE specific categories
In addition to the XDG Categories listed above, there are also some SUSE-specific categories that are not currently part of the specification. Those categories must be prefixed by "X-SuSE-". However, the prefix is not mentioned in the lists because the situation is evolving and the categories are becoming part of the specification. The %suse_update_desktop_file macro adds the prefix where needed.