diff --git a/lain b/lain index c4c149d..f37a318 160000 --- a/lain +++ b/lain @@ -1 +1 @@ -Subproject commit c4c149d2dfd5e9434dc357b66da6f9d1747258f2 +Subproject commit f37a31878edfb59d56c2b0fde04ae80c46a8809e diff --git a/menugen/init.lua b/menugen/init.lua new file mode 100644 index 0000000..4c57c81 --- /dev/null +++ b/menugen/init.lua @@ -0,0 +1,62 @@ +--------------------------------------------------------------------------- +-- @author Harvey Mittens +-- @copyright 2014 Harvey Mittens +-- @email teknocratdefunct@riseup.net +-- @release v3.5.5 +--------------------------------------------------------------------------- + +local menu_gen = require("menubar.menu_gen") +local menu_utils = require("menubar.utils") +local pairs = pairs +local ipairs = ipairs +local table = table +local string = string +local next = next + +module("menugen") + +--Built in menubar should be checking local applications directory +menu_gen.all_menu_dirs = { '/usr/share/applications/', '/usr/local/share/applications/', '~/.local/share/applications' } + +--Expecting an wm_name of awesome omits too many applications and tools +menu_utils.wm_name = "" + +-- Use MenuBar Parsing Utils to build StartMenu for Awesome +-- @return awful.menu compliant menu items tree +function build_menu() + local result = {} + local menulist = menu_gen.generate() + + for k,v in pairs(menu_gen.all_categories) do + table.insert(result, {k, {}, v["icon"] } ) + end + + for k, v in ipairs(menulist) do + for _, cat in ipairs(result) do + if cat[1] == v["category"] then + table.insert( cat[2] , { v["name"], v["cmdline"], v["icon"] } ) + break + end + end + end + + -- Cleanup Things a Bit + for k,v in ipairs(result) do + -- Remove Unused Categories + if not next(v[2]) then + table.remove(result, k) + else + --Sort entries Alphabetically (by Name) + table.sort(v[2], function (a,b) return string.byte(a[1]) < string.byte(b[1]) end) + -- Replace Catagory Name with nice name + v[1] = menu_gen.all_categories[v[1]].name + end + end + + --Sort Categories Alphabetically Also + table.sort(result, function(a,b) return string.byte(a[1]) < string.byte(b[1]) end) + + return result +end + +