SlideShare a Scribd company logo
Freedesktop XDG menu specification Raul Suarez Jul 9, 2006
License Freedesktop XDG menu specification by  Raul Suarez   is licensed under the  Creative Commons Attribution-Noncommercial-Share Alike 2.5 Canada License
Overview ,[object Object]
Implementing it in a Linux distribution
Taking advantage of this specification
What is Freedesktop's XDG menu specification? ,[object Object]
How does it work? ,[object Object]
One .desktop file per application
One .directory file per sub-menu
Menu file (simple) <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <!DOCTYPE xfdesktop-menu PUBLIC &quot;-//freedesktop//DTD Menu 0.8//EN&quot; &quot;http://www.freedesktop.org/standards/menu-spec/menu-0.8.dtd&quot;> <Menu>      <Name>Network</Name>      <Directory>Network.directory</Directory>      <Include>        <And>          <Category>Network</Category>          <Category>System</Category>        </And>      </Include>    </Menu>    <Menu>      <Name>Internet</Name>      <Directory>Internet.directory</Directory>      <Include>        <And>          <Category>Network</Category>          <Not>            <Category>System</Category>          </Not>        </And>      </Include>    </Menu>
Desktop file ,[object Object]
Directory file ,[object Object]
Menu file (Complex) <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <!DOCTYPE xfdesktop-menu PUBLIC &quot;-//freedesktop//DTD Menu 0.8//EN&quot; &quot;http://www.freedesktop.org/standards/menu-spec/menu-0.8.dtd&quot;> <Menu> <Name>FileSystem</Name> <DefaultAppDirs/> <DefaultDirectoryDirs/> <AppDir>/opt/kde/share/applications/kde</AppDir> <Directory>Puppy-FileSystem.directory</Directory> <Layout> <Filename>ROX-Filer-file-manager.desktop</Filename> <Menuname inline=&quot;true&quot; inline_limit=&quot;0&quot;>FileManagers</Menuname> <Separator/> <Filename>MUT-Media-Utility-Tool.desktop</Filename> <Filename>Pmount-mount-unmount-drives.desktop</Filename> <Filename>LinNeighborhood-Samba-client.desktop</Filename> <Separator/> <Menuname inline=&quot;true&quot; inline_limit=&quot;0&quot;>FileSystemUtilities</Menuname> <Merge type=&quot;all&quot; /> </Layout> Continues in next slide...
Menu file (Complex.. continues) <Include> <Filename>ROX-Filer-file-manager.desktop</Filename> <Filename>MUT-Media-Utility-Tool.desktop</Filename> <Filename>Pmount-mount-unmount-drives.desktop</Filename> <Filename>LinNeighborhood-Samba-client.desktop</Filename> </Include> <Menu> <Name>FileManagers</Name> <Directory>Puppy-FileManagers.directory</Directory> <OnlyUnallocated/> <Include> <Category>FileManager</Category> </Include> </Menu> <Menu> <Name>FileSystemUtilities</Name> <Directory>Puppy-FileSystemUtilities.directory</Directory> <OnlyUnallocated/> <Include> <Category>FileSystem</Category> </Include> </Menu> </Menu> Continued from previous slide
Where are the files? ,[object Object]

More Related Content

Viewers also liked

Hadoop Robot from eBay at China Hadoop Summit 2015
Hadoop Robot from eBay at China Hadoop Summit 2015Hadoop Robot from eBay at China Hadoop Summit 2015
Hadoop Robot from eBay at China Hadoop Summit 2015
polo li
 
aplication gogogo
aplication gogogoaplication gogogo
aplication gogogo
olusegun justus
 
William B White Cv Mar 2011
William B White Cv Mar 2011William B White Cv Mar 2011
William B White Cv Mar 2011
offwhite
 
Grm 201 project
Grm 201 projectGrm 201 project
Grm 201 project
nmjameson
 
Wxig points update
Wxig points updateWxig points update
Wxig points update
Steven Robertson
 
It’s all about sex
It’s all about sexIt’s all about sex
It’s all about sex
pvenglishteach
 
Luzis Proceso
Luzis ProcesoLuzis Proceso
Luzis Proceso
Rodrigo de Alday
 
Earned value management lecture 2009e my31
Earned value management lecture 2009e my31Earned value management lecture 2009e my31
Earned value management lecture 2009e my31
rongo620
 

Viewers also liked (8)

Hadoop Robot from eBay at China Hadoop Summit 2015
Hadoop Robot from eBay at China Hadoop Summit 2015Hadoop Robot from eBay at China Hadoop Summit 2015
Hadoop Robot from eBay at China Hadoop Summit 2015
 
aplication gogogo
aplication gogogoaplication gogogo
aplication gogogo
 
William B White Cv Mar 2011
William B White Cv Mar 2011William B White Cv Mar 2011
William B White Cv Mar 2011
 
Grm 201 project
Grm 201 projectGrm 201 project
Grm 201 project
 
Wxig points update
Wxig points updateWxig points update
Wxig points update
 
It’s all about sex
It’s all about sexIt’s all about sex
It’s all about sex
 
Luzis Proceso
Luzis ProcesoLuzis Proceso
Luzis Proceso
 
Earned value management lecture 2009e my31
Earned value management lecture 2009e my31Earned value management lecture 2009e my31
Earned value management lecture 2009e my31
 

Similar to Free desktop XDG menu Specification

Methods and Best Practices for High Performance eCommerce
Methods and Best Practices for High Performance eCommerceMethods and Best Practices for High Performance eCommerce
Methods and Best Practices for High Performance eCommerce
dmitriysoroka
 
Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM
Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM
Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM
Alfresco Software
 
Struts2 course chapter 2: installation and configuration
Struts2 course chapter 2: installation and configurationStruts2 course chapter 2: installation and configuration
Struts2 course chapter 2: installation and configuration
JavaEE Trainers
 
Krazykoder struts2 plugins
Krazykoder struts2 pluginsKrazykoder struts2 plugins
Krazykoder struts2 plugins
Krazy Koder
 
Creating Yahoo Mobile Widgets
Creating Yahoo Mobile WidgetsCreating Yahoo Mobile Widgets
Creating Yahoo Mobile Widgets
Ricardo Varela
 
An introduction to juice
An introduction to juice An introduction to juice
An introduction to juice
juiceproject
 
5 Reasons Why Maven Sux
5 Reasons Why Maven Sux5 Reasons Why Maven Sux
5 Reasons Why Maven Sux
Carlos Sanchez
 
Optimize Site Deployments with Drush (DrupalCamp WNY 2011)
Optimize Site Deployments with Drush (DrupalCamp WNY 2011)Optimize Site Deployments with Drush (DrupalCamp WNY 2011)
Optimize Site Deployments with Drush (DrupalCamp WNY 2011)
Jon Peck
 
Expanding a tree node
Expanding a tree nodeExpanding a tree node
Expanding a tree node
Hemakumar.S
 
Html5 Overview
Html5 OverviewHtml5 Overview
Html5 Overview
Owen Williams
 
Phing - A PHP Build Tool (An Introduction)
Phing - A PHP Build Tool (An Introduction)Phing - A PHP Build Tool (An Introduction)
Phing - A PHP Build Tool (An Introduction)
Michiel Rook
 
Php
PhpPhp
GTAC: AtomPub, testing your server implementation
GTAC: AtomPub, testing your server implementationGTAC: AtomPub, testing your server implementation
GTAC: AtomPub, testing your server implementation
David Calavera
 
JBoss AS 7
JBoss AS 7JBoss AS 7
JBoss AS 7
C2B2 Consulting
 
PHPTAL introduction
PHPTAL introductionPHPTAL introduction
PHPTAL introduction
'"">
 
Browser extension
Browser extensionBrowser extension
Browser extension
Cosmin Stefanache
 
Browser extension
Browser extensionBrowser extension
Browser extension
Cosmin Stefanache
 
Building apps for multiple devices
Building apps for multiple devicesBuilding apps for multiple devices
Building apps for multiple devices
Terry Ryan
 
C:\Users\User\Desktop\Eclipse Infocenter
C:\Users\User\Desktop\Eclipse InfocenterC:\Users\User\Desktop\Eclipse Infocenter
C:\Users\User\Desktop\Eclipse Infocenter
Suite Solutions
 
TagLoops
TagLoopsTagLoops
TagLoops
tagloops
 

Similar to Free desktop XDG menu Specification (20)

Methods and Best Practices for High Performance eCommerce
Methods and Best Practices for High Performance eCommerceMethods and Best Practices for High Performance eCommerce
Methods and Best Practices for High Performance eCommerce
 
Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM
Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM
Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM
 
Struts2 course chapter 2: installation and configuration
Struts2 course chapter 2: installation and configurationStruts2 course chapter 2: installation and configuration
Struts2 course chapter 2: installation and configuration
 
Krazykoder struts2 plugins
Krazykoder struts2 pluginsKrazykoder struts2 plugins
Krazykoder struts2 plugins
 
Creating Yahoo Mobile Widgets
Creating Yahoo Mobile WidgetsCreating Yahoo Mobile Widgets
Creating Yahoo Mobile Widgets
 
An introduction to juice
An introduction to juice An introduction to juice
An introduction to juice
 
5 Reasons Why Maven Sux
5 Reasons Why Maven Sux5 Reasons Why Maven Sux
5 Reasons Why Maven Sux
 
Optimize Site Deployments with Drush (DrupalCamp WNY 2011)
Optimize Site Deployments with Drush (DrupalCamp WNY 2011)Optimize Site Deployments with Drush (DrupalCamp WNY 2011)
Optimize Site Deployments with Drush (DrupalCamp WNY 2011)
 
Expanding a tree node
Expanding a tree nodeExpanding a tree node
Expanding a tree node
 
Html5 Overview
Html5 OverviewHtml5 Overview
Html5 Overview
 
Phing - A PHP Build Tool (An Introduction)
Phing - A PHP Build Tool (An Introduction)Phing - A PHP Build Tool (An Introduction)
Phing - A PHP Build Tool (An Introduction)
 
Php
PhpPhp
Php
 
GTAC: AtomPub, testing your server implementation
GTAC: AtomPub, testing your server implementationGTAC: AtomPub, testing your server implementation
GTAC: AtomPub, testing your server implementation
 
JBoss AS 7
JBoss AS 7JBoss AS 7
JBoss AS 7
 
PHPTAL introduction
PHPTAL introductionPHPTAL introduction
PHPTAL introduction
 
Browser extension
Browser extensionBrowser extension
Browser extension
 
Browser extension
Browser extensionBrowser extension
Browser extension
 
Building apps for multiple devices
Building apps for multiple devicesBuilding apps for multiple devices
Building apps for multiple devices
 
C:\Users\User\Desktop\Eclipse Infocenter
C:\Users\User\Desktop\Eclipse InfocenterC:\Users\User\Desktop\Eclipse Infocenter
C:\Users\User\Desktop\Eclipse Infocenter
 
TagLoops
TagLoopsTagLoops
TagLoops
 

Free desktop XDG menu Specification

  • 1. Freedesktop XDG menu specification Raul Suarez Jul 9, 2006
  • 2. License Freedesktop XDG menu specification by Raul Suarez is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 2.5 Canada License
  • 3.
  • 4. Implementing it in a Linux distribution
  • 5. Taking advantage of this specification
  • 6.
  • 7.
  • 8. One .desktop file per application
  • 9. One .directory file per sub-menu
  • 10. Menu file (simple) <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <!DOCTYPE xfdesktop-menu PUBLIC &quot;-//freedesktop//DTD Menu 0.8//EN&quot; &quot;http://www.freedesktop.org/standards/menu-spec/menu-0.8.dtd&quot;> <Menu>     <Name>Network</Name>     <Directory>Network.directory</Directory>     <Include>       <And>         <Category>Network</Category>         <Category>System</Category>       </And>     </Include>   </Menu>   <Menu>     <Name>Internet</Name>     <Directory>Internet.directory</Directory>     <Include>       <And>         <Category>Network</Category>         <Not>           <Category>System</Category>         </Not>       </And>     </Include>   </Menu>
  • 11.
  • 12.
  • 13. Menu file (Complex) <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <!DOCTYPE xfdesktop-menu PUBLIC &quot;-//freedesktop//DTD Menu 0.8//EN&quot; &quot;http://www.freedesktop.org/standards/menu-spec/menu-0.8.dtd&quot;> <Menu> <Name>FileSystem</Name> <DefaultAppDirs/> <DefaultDirectoryDirs/> <AppDir>/opt/kde/share/applications/kde</AppDir> <Directory>Puppy-FileSystem.directory</Directory> <Layout> <Filename>ROX-Filer-file-manager.desktop</Filename> <Menuname inline=&quot;true&quot; inline_limit=&quot;0&quot;>FileManagers</Menuname> <Separator/> <Filename>MUT-Media-Utility-Tool.desktop</Filename> <Filename>Pmount-mount-unmount-drives.desktop</Filename> <Filename>LinNeighborhood-Samba-client.desktop</Filename> <Separator/> <Menuname inline=&quot;true&quot; inline_limit=&quot;0&quot;>FileSystemUtilities</Menuname> <Merge type=&quot;all&quot; /> </Layout> Continues in next slide...
  • 14. Menu file (Complex.. continues) <Include> <Filename>ROX-Filer-file-manager.desktop</Filename> <Filename>MUT-Media-Utility-Tool.desktop</Filename> <Filename>Pmount-mount-unmount-drives.desktop</Filename> <Filename>LinNeighborhood-Samba-client.desktop</Filename> </Include> <Menu> <Name>FileManagers</Name> <Directory>Puppy-FileManagers.directory</Directory> <OnlyUnallocated/> <Include> <Category>FileManager</Category> </Include> </Menu> <Menu> <Name>FileSystemUtilities</Name> <Directory>Puppy-FileSystemUtilities.directory</Directory> <OnlyUnallocated/> <Include> <Category>FileSystem</Category> </Include> </Menu> </Menu> Continued from previous slide
  • 15.
  • 19.
  • 20. Pipe into the WM menu when possible
  • 21. Generate outside the WM when no Piping mechanism provided
  • 22. One generator per WM. Very simple C apps.
  • 24. Currently we have generators for blackbox, fbpanel, fluxbox, fvwm, hackedbox, icewm, jwm, openbox, windowmaker, xfce. (KDE and Gnome support it natively)
  • 25.
  • 27.
  • 28. Library still under development
  • 31.
  • 33.
  • 34. Desktop entry specification http://standards.freedesktop.org/desktop-entry-spec/latest/
  • 36. Other scripts mainly perl and python http://www.cl.cam.ac.uk/~pz215/automenus.html http://www.novell.com/products/linuxpackages/suselinux/xdg-menu.html
  • 37. Puppy XDG Subversion repository http://svn2.cvsdude.com/puppylinux/puppy-desktop/xdgmenus/trunk

Editor's Notes

  1. Actually the XDG menu standard is not too difficult. The devil is in the particular implementation details. The concept is very simple.
  2. So it actually solves two problems: Different menu managers (panels, window managers, desktops, etc) have their own way for defining their menu structure. Different users and distributions like their menus organized differently. Application installations &amp;quot;desktop agnostic&amp;quot;. This is, package installations that comply with the standard, just need to include one file and all compliant window managers and desktop managers will show it in the menu in the right place. The user can change the menu structure. Previously the installers must know the menu structure to know where to insert the new entry.
  3. The menu creation is non-deterministic. i.e. You don&apos;t know what applications will be under what menu when you create the menu structure.
  4. The menu describes what categories of entries should go under what menu Categorization is based on a combination of categories, not on a single category. How does the menu system know were to put the entry? This is done by assigning each application specific categories, e.g. Office;TextEditor;WordProcessor and organizing the menu based on those categories so applications with the same categories will end up under the same submenu. It is possible to have the same package under two different entries based on the rules.
  5. If you want to add an application to the menu, just create a .desktop file under $XDG_DATA_DIRS/applications/ assigning the appropriate categories. You can use any of the existing .desktop files as an example.
  6. Installations just need to include a .desktop file The menu generators can be used in any other desktop/distro The library is mean for Gnome so OnlyShowIn only works for Gnome All the applications must be repackaged There isn&apos;t a menu editor