menu and desktop files specifications support for the awesome window manager
Switch branches/tags
Nothing to show
Pull request Compare This branch is 18 commits behind terceiro:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



This project aims to add support for compliant desktop entries
and menu.


Just drop freedesktop/ folder in your ~/.config/awesome/ directory.

Main features

  * a (or almost) applications menu
  * a (or almost) desktop
  * a (yet limited) icon lookup function.

Icon themes

You can choose any icon theme that's installed in /usr/share/icons/. To define
your icon theme, you can do the following before you require
"", but after you require "frerdesktop.utils" (see example
usage below):

  freedesktop.utils.icon_theme = 'gnome'

You can also use more then one icon theme, by assigning a Lua table containing
a list of themes.

  freedesktop.utils.icon_theme = { 'Mist', 'gnome' }

When you use a list of icon themes, icons will be looked up in themes list in
the order you specified. The first theme containing the desired icon will be
usen (that happens once for each icon). Note that if the icon theme already
specifies another icon theme as fallback, that is already taken care of for

Usage example

You can use the frerdesktop module in your awesome configuration
(~/.config/awesome/rc.lua) like the example below. If you are a Debian user,
you can also uncomment the two lines that insert the Debian menu together with
the rest of the items.

  -- applications menu
  freedesktop.utils.terminal = terminal  -- default: "xterm"
  freedesktop.utils.icon_theme = 'gnome' -- look inside /usr/share/icons/, default: nil (don't use icon theme)
  -- require("")

  menu_items =
  myawesomemenu = {
     { "manual", terminal .. " -e man awesome", freedesktop.utils.lookup_icon({ icon = 'help' }) },
     { "edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua", freedesktop.utils.lookup_icon({ icon = 'package_settings' }) },
     { "restart", awesome.restart, freedesktop.utils.lookup_icon({ icon = 'gtk-refresh' }) },
     { "quit", awesome.quit, freedesktop.utils.lookup_icon({ icon = 'gtk-quit' }) }
  table.insert(menu_items, { "awesome", myawesomemenu, beautiful.awesome_icon })
  table.insert(menu_items, { "open terminal", terminal, freedesktop.utils.lookup_icon({icon = 'terminal'}) })
  -- table.insert(menu_items, { "Debian",, freedesktop.utils.lookup_icon({ icon = 'debian-logo' }) })

  mymainmenu ={ items = menu_items, width = 150 })

  mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,
                                     menu = mymainmenu })

  -- desktop icons
  for s = 1, screen.count() do
        freedesktop.desktop.add_applications_icons({screen = s, showlabels = true})
        freedesktop.desktop.add_dirs_and_files_icons({screen = s, showlabels = true})


Copyright © 2009-2011 Antonio Terceiro <>

This code is licensed under the same terms as Awesome itself.