-- An applications menu -- Required depends: awesome-freedesktop local awful = require("awful") local gears = require("gears") local beautiful = require("beautiful") local apps = require('configuration.apps') local menubar = require("menubar") local hotkeys_popup = require('awful.hotkeys_popup').widget local terminal = apps.default.terminal local web_browser = apps.default.web_browser local file_manager = apps.default.file_manager local text_editor = apps.default.text_editor local editor_cmd = terminal .. " -e " .. (os.getenv("EDITOR") or "nano") local function is_module_available(name) if package.loaded[name] then return true else for _, searcher in ipairs(package.searchers or package.loaders) do local loader = searcher(name) if type(loader) == 'function' then package.preload[name] = loader return true end end return false end end -- Create a launcher widget and a main menu awesome_menu = { { "Hotkeys", function() hotkeys_popup.show_help(nil, awful.screen.focused()) end, menubar.utils.lookup_icon("keyboard") }, { "Edit config", editor_cmd .. " " .. awesome.conffile, menubar.utils.lookup_icon("accessories-text-editor") }, { "Restart", awesome.restart, menubar.utils.lookup_icon("system-restart") }, { "Quit", function() awesome.quit() end, menubar.utils.lookup_icon("system-log-out") } } local default_app_menu = { { "Terminal", terminal, menubar.utils.lookup_icon("utilities-terminal") }, { "Web browser", web_browser, menubar.utils.lookup_icon("webbrowser-app") }, { "File Manager", file_manager, menubar.utils.lookup_icon("system-file-manager") }, { "Text Editor", text_editor, menubar.utils.lookup_icon("accessories-text-editor") } } -- Screenshot menu local screenshot_menu = { { "Full", function() gears.timer.start_new( 0.1, function() awful.spawn.easy_async_with_shell(apps.bins.full_screenshot) end ) end, menubar.utils.lookup_icon("accessories-screenshot") }, { "Area", function() gears.timer.start_new( 0.1, function() awful.spawn.easy_async_with_shell(apps.bins.area_screenshot) end, menubar.utils.lookup_icon("accessories-screenshot") ) end, menubar.utils.lookup_icon("accessories-screenshot") } } local tools_menu = { { "Awesome", awesome_menu, beautiful.awesome_icon }, { "Take a Screenshot", screenshot_menu, menubar.utils.lookup_icon("accessories-screenshot") }, { "End Session", function() awesome.emit_signal("module::exit_screen_show") end, menubar.utils.lookup_icon("system-shutdown") } } -- A menu generated by awesome-freedesktop -- https://github.com/lcpz/awesome-freedesktop if is_module_available("freedesktop") then local freedesktop = require("freedesktop") mymainmenu = freedesktop.menu.build({ -- Not actually the size, but the quality of the icon icon_size = 48, before = default_app_menu, after = tools_menu }) mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon, menu = mymainmenu }) else mymainmenu = awful.menu({ items = { { "Instructions", function() local naughty = require('naughty') local open_github = naughty.action { name = 'Open Github Page', icon_only = false, } open_github:connect_signal('invoked', function() awful.spawn.easy_async_with_shell("xdg-open https://github.com/lcpz/awesome-freedesktop") end) local open_aur = naughty.action { name = 'Open AUR Page', icon_only = false, } open_aur:connect_signal('invoked', function() awful.spawn.easy_async_with_shell("xdg-open https://aur.archlinux.org/packages/awesome-freedesktop-git/") end) naughty.notification({ title = 'A dependency is missing!', message = "You need to install awesome-freedesktop. " .. "This will populate the menu with your installed applications automatically. " .. "It is also available in AUR, it is called awesome-freedesktop-git.", app_name = 'System Notification', timeout = 0, urgency = 'normal', actions = { open_github, open_aur } }) end, menubar.utils.lookup_icon("accessories-text-editor") }, { "Awesome", awesome_menu, beautiful.awesome_icon }, { "Take a Screenshot", screenshot_menu, menubar.utils.lookup_icon("accessories-screenshot") }, { "End Session", function() awesome.emit_signal("module::exit_screen_show") end, menubar.utils.lookup_icon("system-shutdown") } } }) end