summaryrefslogtreecommitdiff
path: root/.config/sketchybar/items/menu_spaces_toggle.lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/sketchybar/items/menu_spaces_toggle.lua')
-rw-r--r--.config/sketchybar/items/menu_spaces_toggle.lua71
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()