summaryrefslogtreecommitdiff
path: root/awesome/lib/menubar/menu_gen.lua
diff options
context:
space:
mode:
Diffstat (limited to 'awesome/lib/menubar/menu_gen.lua')
-rw-r--r--awesome/lib/menubar/menu_gen.lua141
1 files changed, 0 insertions, 141 deletions
diff --git a/awesome/lib/menubar/menu_gen.lua b/awesome/lib/menubar/menu_gen.lua
deleted file mode 100644
index ed2aa14..0000000
--- a/awesome/lib/menubar/menu_gen.lua
+++ /dev/null
@@ -1,141 +0,0 @@
----------------------------------------------------------------------------
---- Menu generation module for menubar
---
--- @author Antonio Terceiro
--- @copyright 2009, 2011-2012 Antonio Terceiro, Alexander Yakushev
--- @module menubar.menu_gen
----------------------------------------------------------------------------
-
--- Grab environment
-local utils = require("menubar.utils")
-local icon_theme = require("menubar.icon_theme")
-local pairs = pairs
-local ipairs = ipairs
-local string = string
-local table = table
-
-local menu_gen = {}
-
--- Options section
-
-local data_dir = os.getenv("XDG_DATA_HOME")
-if not data_dir then
- data_dir = os.getenv("HOME") .. '/.local/share/'
-end
-
---- Specifies all directories where menubar should look for .desktop
--- files. The search is recursive.
-menu_gen.all_menu_dirs = { data_dir .. 'applications/', '/usr/share/applications/', '/usr/local/share/applications/' }
-
---- Specify the mapping of .desktop Categories section to the
--- categories in the menubar. If "use" flag is set to false then any of
--- the applications that fall only to this category will not be shown.
-menu_gen.all_categories = {
- multimedia = { app_type = "AudioVideo", name = "Multimedia",
- icon_name = "applications-multimedia", use = true },
- development = { app_type = "Development", name = "Development",
- icon_name = "applications-development", use = true },
- education = { app_type = "Education", name = "Education",
- icon_name = "applications-science", use = true },
- games = { app_type = "Game", name = "Games",
- icon_name = "applications-games", use = true },
- graphics = { app_type = "Graphics", name = "Graphics",
- icon_name = "applications-graphics", use = true },
- office = { app_type = "Office", name = "Office",
- icon_name = "applications-office", use = true },
- internet = { app_type = "Network", name = "Internet",
- icon_name = "applications-internet", use = true },
- settings = { app_type = "Settings", name = "Settings",
- icon_name = "applications-utilities", use = true },
- tools = { app_type = "System", name = "System Tools",
- icon_name = "applications-system", use = true },
- utility = { app_type = "Utility", name = "Accessories",
- icon_name = "applications-accessories", use = true }
-}
-
---- Find icons for category entries.
-function menu_gen.lookup_category_icons()
- for _, v in pairs(menu_gen.all_categories) do
- v.icon = icon_theme():find_icon_path(v.icon_name)
- end
-end
-
---- Get category key name and whether it is used by its app_type.
--- @param app_type Application category as written in .desktop file.
--- @return category key name in all_categories, whether the category is used
-local function get_category_name_and_usage_by_type(app_type)
- for k, v in pairs(menu_gen.all_categories) do
- if app_type == v.app_type then
- return k, v.use
- end
- end
-end
-
---- Remove CR\LF newline from the end of the string.
--- @param s string to trim
-local function trim(s)
- if not s then return end
- if string.byte(s, #s) == 13 then
- return string.sub(s, 1, #s - 1)
- end
- return s
-end
-
---- Generate an array of all visible menu entries.
--- @tparam function callback Will be fired when all menu entries were parsed
--- with the resulting list of menu entries as argument.
--- @tparam table callback.entries All menu entries.
-function menu_gen.generate(callback)
- -- Update icons for category entries
- menu_gen.lookup_category_icons()
-
- local result = {}
- local unique_entries = {}
- local dirs_parsed = 0
-
- for _, dir in ipairs(menu_gen.all_menu_dirs) do
- utils.parse_dir(dir, function(entries)
- entries = entries or {}
- for _, entry in ipairs(entries) do
- -- Check whether to include program in the menu
- if entry.show and entry.Name and entry.cmdline then
- local unique_key = entry.Name .. '\0' .. entry.cmdline
- if not unique_entries[unique_key] then
- local target_category = nil
- -- Check if the program falls into at least one of the
- -- usable categories. Set target_category to be the id
- -- of the first category it finds.
- if entry.categories then
- for _, category in pairs(entry.categories) do
- local cat_key, cat_use =
- get_category_name_and_usage_by_type(category)
- if cat_key and cat_use then
- target_category = cat_key
- break
- end
- end
- end
- if target_category then
- local name = trim(entry.Name) or ""
- local cmdline = trim(entry.cmdline) or ""
- local icon = entry.icon_path or nil
- table.insert(result, { name = name,
- cmdline = cmdline,
- icon = icon,
- category = target_category })
- unique_entries[unique_key] = true
- end
- end
- end
- end
- dirs_parsed = dirs_parsed + 1
- if dirs_parsed == #menu_gen.all_menu_dirs then
- callback(result)
- end
- end)
- end
-end
-
-return menu_gen
-
--- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80