diff options
Diffstat (limited to '.config/sketchybar/items/menu_spaces_toggle.lua')
| -rw-r--r-- | .config/sketchybar/items/menu_spaces_toggle.lua | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/.config/sketchybar/items/menu_spaces_toggle.lua b/.config/sketchybar/items/menu_spaces_toggle.lua new file mode 100644 index 0000000..0a49cce --- /dev/null +++ b/.config/sketchybar/items/menu_spaces_toggle.lua @@ -0,0 +1,71 @@ +local constants = require("constants") +local settings = require("config.settings") + +sbar.add("event", constants.events.SWAP_MENU_AND_SPACES) + +local function switchToggle(menuToggle) + local isShowingMenu = menuToggle:query().icon.value == settings.icons.text.switch.on + + menuToggle:set({ + icon = isShowingMenu and settings.icons.text.switch.off or settings.icons.text.switch.on, + label = isShowingMenu and "Menus" or "Spaces", + }) + + sbar.trigger(constants.events.SWAP_MENU_AND_SPACES, { isShowingMenu = isShowingMenu }) +end + +local function addToggle() + local menuToggle = sbar.add("item", constants.items.MENU_TOGGLE, { + icon = { + string = settings.icons.text.switch.on, + }, + label = { + width = 0, + color = settings.colors.bg1, + string = "Spaces", + }, + background = { + color = settings.colors.with_alpha(settings.colors.dirty_white, 0.0), + }, + }) + + sbar.add("item", constants.items.MENU_TOGGLE .. ".padding", { + width = settings.dimens.padding.label, + }) + + menuToggle:subscribe("mouse.entered", function(env) + sbar.animate("tanh", 30, function() + menuToggle:set({ + background = { + color = { alpha = 1.0 }, + border_color = { alpha = 0.5 }, + }, + icon = { color = settings.colors.bg1 }, + label = { width = "dynamic" }, + }) + end) + end) + + menuToggle:subscribe("mouse.exited", function(env) + sbar.animate("tanh", 30, function() + menuToggle:set({ + background = { + color = { alpha = 0.0 }, + border_color = { alpha = 0.0 }, + }, + icon = { color = settings.colors.white }, + label = { width = 0 }, + }) + end) + end) + + menuToggle:subscribe("mouse.clicked", function(env) + switchToggle(menuToggle) + end) + + menuToggle:subscribe(constants.events.AEROSPACE_SWITCH, function(env) + switchToggle(menuToggle) + end) +end + +addToggle() |
