summaryrefslogtreecommitdiff
path: root/.config/sketchybar/items/menus.lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/sketchybar/items/menus.lua')
-rw-r--r--.config/sketchybar/items/menus.lua102
1 files changed, 48 insertions, 54 deletions
diff --git a/.config/sketchybar/items/menus.lua b/.config/sketchybar/items/menus.lua
index 66cdd4a..805162a 100644
--- a/.config/sketchybar/items/menus.lua
+++ b/.config/sketchybar/items/menus.lua
@@ -1,78 +1,72 @@
-local colors = require("colors")
-local settings = require("settings")
-local sbar = require("sketchybar")
+local constants = require("constants")
+local settings = require("config.settings")
-local menu_watcher = sbar.add("item", {
+local maxItems <const> = 15
+local menuItems = {}
+local isShowingMenu = false
+
+local frontAppWatcher = sbar.add("item", {
drawing = false,
- updates = false,
+ updates = true,
})
-local space_menu_swap = sbar.add("item", {
+
+local swapWatcher = sbar.add("item", {
drawing = false,
updates = true,
})
-sbar.add("event", "swap_menus_and_spaces")
-local max_items = 15
-local menu_items = {}
-for i = 1, max_items, 1 do
- local menu = sbar.add("item", "menu." .. i, {
- padding_left = settings.paddings,
- padding_right = settings.paddings,
- drawing = false,
- icon = { drawing = false },
- label = {
- font = {
- style = settings.font.style_map[i == 1 and "Heavy" or "Semibold"],
+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,
+ },
},
- padding_left = 6,
- padding_right = 6,
+ click_script = "$CONFIG_DIR/bridge/menus/bin/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,
},
- click_script = "$CONFIG_DIR/helpers/menus/bin/menus -s " .. i,
})
-
- menu_items[i] = menu
end
-sbar.add("bracket", { "/menu\\..*/" }, {
- background = { color = colors.bg1 },
-})
-
-local menu_padding = sbar.add("item", "menu.padding", {
- drawing = false,
- width = 5,
-})
+local function updateMenus()
+ sbar.set("/" .. constants.items.MENU .. "\\..*/", { drawing = false })
-local function update_menus(env)
- sbar.exec("$CONFIG_DIR/helpers/menus/bin/menus -l", function(menus)
- sbar.set("/menu\\..*/", { drawing = false })
- menu_padding:set({ drawing = true })
- id = 1
+ sbar.exec("$CONFIG_DIR/bridge/menus/bin/menus -l", function(menus)
+ local index = 1
for menu in string.gmatch(menus, "[^\r\n]+") do
- if id < max_items then
- menu_items[id]:set({ label = menu, drawing = true })
+ if index < maxItems then
+ menuItems[index]:set({
+ width = "dynamic",
+ label = menu,
+ drawing = isShowingMenu,
+ })
else
break
end
- id = id + 1
+ index = index + 1
end
end)
+
+ sbar.set(constants.items.MENU .. ".padding", { drawing = isShowingMenu })
end
-menu_watcher:subscribe("front_app_switched", update_menus)
+frontAppWatcher:subscribe(constants.events.FRONT_APP_SWITCHED, updateMenus)
-space_menu_swap:subscribe("swap_menus_and_spaces", function(env)
- local drawing = menu_items[1]:query().geometry.drawing == "on"
- if drawing then
- menu_watcher:set({ updates = false })
- sbar.set("/menu\\..*/", { drawing = false })
- sbar.set("/space\\..*/", { drawing = true })
- sbar.set("front_app", { drawing = true })
- else
- menu_watcher:set({ updates = true })
- sbar.set("/space\\..*/", { drawing = false })
- sbar.set("front_app", { drawing = false })
- update_menus()
- end
+swapWatcher:subscribe(constants.events.SWAP_MENU_AND_SPACES, function(env)
+ isShowingMenu = env.isShowingMenu == "on"
+ updateMenus()
end)
-return menu_watcher
+createPlaceholders()