Hello,

I just finished this replacement for the older awesome-freedesktop..
It runs allot faster and uses all the code from menubar(v3.5.5) to
generate a start menu in awesome. I think this would be a nice
integrated feature for new users..

tested and built on v3.5.5

If you use XDG start menus then please give it a try

Here is the lua attached to my feature request

https://awesome.naquadah.org/bugs/index.php?getfile=697
---------------------------------------------------------------------------
-- @author Harvey Mittens
-- @copyright 2014 Harvey Mittens
-- @email [email protected]
-- @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


Reply via email to