72 lines
1.8 KiB
Lua
72 lines
1.8 KiB
Lua
local constants = require 'constants'
|
|
local settings = require 'config.settings'
|
|
|
|
local maxItems <const> = 15
|
|
local menuItems = {}
|
|
local isShowingMenu = false
|
|
|
|
local frontAppWatcher = sbar.add('item', {
|
|
drawing = false,
|
|
updates = true,
|
|
})
|
|
|
|
local swapWatcher = sbar.add('item', {
|
|
drawing = false,
|
|
updates = true,
|
|
})
|
|
|
|
local function createPlaceholders()
|
|
for index = 1, maxItems, 1 do
|
|
local menu = sbar.add('item', constants.items.MENU .. '.' .. index, {
|
|
drawing = false,
|
|
icon = { drawing = false },
|
|
width = 'dynamic',
|
|
label = {
|
|
font = {
|
|
style = index == 1 and settings.fonts.styles.bold or settings.fonts.styles.regular,
|
|
},
|
|
},
|
|
click_script = 'sk-menus -s ' .. index,
|
|
})
|
|
menuItems[index] = menu
|
|
end
|
|
|
|
sbar.add('bracket', { '/' .. constants.items.MENU .. '\\..*/' }, {
|
|
background = {
|
|
color = settings.colors.bg1,
|
|
padding_left = settings.dimens.padding.item,
|
|
padding_right = settings.dimens.padding.item,
|
|
},
|
|
})
|
|
end
|
|
|
|
local function updateMenus()
|
|
sbar.set('/' .. constants.items.MENU .. '\\..*/', { drawing = false })
|
|
|
|
sbar.exec('sk-menus -l', function(menus)
|
|
local index = 1
|
|
for menu in string.gmatch(menus, '[^\r\n]+') do
|
|
if index < maxItems then
|
|
menuItems[index]:set {
|
|
width = 'dynamic',
|
|
label = menu,
|
|
drawing = isShowingMenu,
|
|
}
|
|
else
|
|
break
|
|
end
|
|
index = index + 1
|
|
end
|
|
end)
|
|
|
|
sbar.set(constants.items.MENU .. '.padding', { drawing = isShowingMenu })
|
|
end
|
|
|
|
frontAppWatcher:subscribe(constants.events.FRONT_APP_SWITCHED, updateMenus)
|
|
|
|
swapWatcher:subscribe(constants.events.SWAP_MENU_AND_SPACES, function(env)
|
|
isShowingMenu = env.isShowingMenu == 'on'
|
|
updateMenus()
|
|
end)
|
|
|
|
createPlaceholders()
|