-- ███████╗ ██████╗ ██╗ ██████╗ ███████╗██████╗ -- ██╔════╝██╔═══██╗██║ ██╔══██╗██╔════╝██╔══██╗ -- █████╗ ██║ ██║██║ ██║ ██║█████╗ ██████╔╝ -- ██╔══╝ ██║ ██║██║ ██║ ██║██╔══╝ ██╔══██╗ -- ██║ ╚██████╔╝███████╗██████╔╝███████╗██║ ██║ -- ╚═╝ ╚═════╝ ╚══════╝╚═════╝ ╚══════╝╚═╝ ╚═╝ -- =================================================================== -- Initialization -- =================================================================== local awful = require("awful") local wibox = require("wibox") local clickable_container = require("widgets.clickable-container") local gears = require("gears") local dpi = require("beautiful").xresources.apply_dpi local HOME_DIR = os.getenv("HOME") local PATH_TO_ICONS = HOME_DIR .. "/.config/awesome/icons/folders/" -- define module table local folder = {} -- =================================================================== -- Helper Functions -- =================================================================== -- split a string into a list based on a deliminator local function split_string(inputstr, delim) if delim == nil then delim = "%s" end local t={} for str in string.gmatch(inputstr, "([^"..delim.."]+)") do table.insert(t, str) end return t end -- =================================================================== -- Functionality -- =================================================================== function folder.create(directory) local docu_widget = wibox.widget { { id = "icon", widget = wibox.widget.imagebox, resize = true }, layout = wibox.layout.align.horizontal } local docu_button = clickable_container(wibox.container.margin(docu_widget, dpi(8), dpi(8), dpi(8), dpi(8))) docu_button:buttons( gears.table.join( awful.button({}, 1, nil, function() awful.spawn.easy_async_with_shell(apps.filebrowser .. " " .. directory, function(stderr) end, 1) end ) ) ) -- determine hover name & icon to use -- icon name must correspond with name of folder local folder_name = "" if directory == HOME_DIR then folder_name = "Home" elseif directory == "trash://" then folder_name = "Trash" else local dir_list = split_string(directory, "/") folder_name = dir_list[#dir_list] end awful.tooltip({ objects = {docu_button}, mode = "outside", align = "right", timer_function = function() return folder_name end, preferred_positions = {"right", "left", "top", "bottom"} }) docu_widget.icon:set_image(PATH_TO_ICONS .. folder_name:lower() .. ".png") return docu_button end return folder