added sketchybar config

This commit is contained in:
Tyler Mayoff 2025-02-14 09:59:25 -05:00
parent 87bb07f015
commit 95ebd7af03
No known key found for this signature in database
GPG key ID: B62A5AFAD8E14845
38 changed files with 2329 additions and 0 deletions

View file

@ -0,0 +1,152 @@
local colors = require("colors")
local icons = require("icons")
local settings = require("settings")
local popup_width = 250
local volume_percent = sbar.add("item", "widgets.volume1", {
position = "right",
icon = { drawing = false },
label = {
string = "??%",
padding_left = -1,
font = { family = settings.font.numbers }
},
})
local volume_icon = sbar.add("item", "widgets.volume2", {
position = "right",
padding_right = -1,
icon = {
string = icons.volume._100,
width = 0,
align = "left",
color = colors.grey,
font = {
style = settings.font.style_map["Regular"],
size = 14.0,
},
},
label = {
width = 25,
align = "left",
font = {
style = settings.font.style_map["Regular"],
size = 14.0,
},
},
})
local volume_bracket = sbar.add("bracket", "widgets.volume.bracket", {
volume_icon.name,
volume_percent.name
}, {
background = { color = colors.bg1 },
popup = { align = "center" }
})
sbar.add("item", "widgets.volume.padding", {
position = "right",
width = settings.group_paddings
})
local volume_slider = sbar.add("slider", popup_width, {
position = "popup." .. volume_bracket.name,
slider = {
highlight_color = colors.blue,
background = {
height = 6,
corner_radius = 3,
color = colors.bg2,
},
knob= {
string = "􀀁",
drawing = true,
},
},
background = { color = colors.bg1, height = 2, y_offset = -20 },
click_script = 'osascript -e "set volume output volume $PERCENTAGE"'
})
volume_percent:subscribe("volume_change", function(env)
local volume = tonumber(env.INFO)
local icon = icons.volume._0
if volume > 60 then
icon = icons.volume._100
elseif volume > 30 then
icon = icons.volume._66
elseif volume > 10 then
icon = icons.volume._33
elseif volume > 0 then
icon = icons.volume._10
end
local lead = ""
if volume < 10 then
lead = "0"
end
volume_icon:set({ label = icon })
volume_percent:set({ label = lead .. volume .. "%" })
volume_slider:set({ slider = { percentage = volume } })
end)
local function volume_collapse_details()
local drawing = volume_bracket:query().popup.drawing == "on"
if not drawing then return end
volume_bracket:set({ popup = { drawing = false } })
sbar.remove('/volume.device\\.*/')
end
local current_audio_device = "None"
local function volume_toggle_details(env)
if env.BUTTON == "right" then
sbar.exec("open /System/Library/PreferencePanes/Sound.prefpane")
return
end
local should_draw = volume_bracket:query().popup.drawing == "off"
if should_draw then
volume_bracket:set({ popup = { drawing = true } })
sbar.exec("SwitchAudioSource -t output -c", function(result)
current_audio_device = result:sub(1, -2)
sbar.exec("SwitchAudioSource -a -t output", function(available)
current = current_audio_device
local color = colors.grey
local counter = 0
for device in string.gmatch(available, '[^\r\n]+') do
local color = colors.grey
if current == device then
color = colors.white
end
sbar.add("item", "volume.device." .. counter, {
position = "popup." .. volume_bracket.name,
width = popup_width,
align = "center",
label = { string = device, color = color },
click_script = 'SwitchAudioSource -s "' .. device .. '" && sketchybar --set /volume.device\\.*/ label.color=' .. colors.grey .. ' --set $NAME label.color=' .. colors.white
})
counter = counter + 1
end
end)
end)
else
volume_collapse_details()
end
end
local function volume_scroll(env)
local delta = env.INFO.delta
if not (env.INFO.modifier == "ctrl") then delta = delta * 10.0 end
sbar.exec('osascript -e "set volume output volume (output volume of (get volume settings) + ' .. delta .. ')"')
end
volume_icon:subscribe("mouse.clicked", volume_toggle_details)
volume_icon:subscribe("mouse.scrolled", volume_scroll)
volume_percent:subscribe("mouse.clicked", volume_toggle_details)
volume_percent:subscribe("mouse.exited.global", volume_collapse_details)
volume_percent:subscribe("mouse.scrolled", volume_scroll)