279 lines
5.8 KiB
Lua
Executable File
279 lines
5.8 KiB
Lua
Executable File
-- Main configuration file: sketchybar.lua
|
|
-- Save this in ~/.config/sketchybar/
|
|
|
|
-- SketchyBar Lua API
|
|
sbar = require("sketchybar")
|
|
|
|
-- Colors (Catppuccin Mocha theme)
|
|
local colors = {
|
|
text = 0xffcdd6f4,
|
|
bg = 0xff1e1e2e,
|
|
accent = 0xff74c7ec,
|
|
green = 0xffa6e3a1,
|
|
rosewater = 0xfff5e0dc,
|
|
flamingo = 0xfff2cdcd,
|
|
pink = 0xfff5c2e7,
|
|
mauve = 0xffcba6f7,
|
|
red = 0xfff38ba8,
|
|
maroon = 0xffeba0ac,
|
|
peach = 0xfffab387,
|
|
yellow = 0xfff9e2af,
|
|
teal = 0xff94e2d5,
|
|
sky = 0xff89dceb,
|
|
sapphire = 0xff74c7ec,
|
|
blue = 0xff89b4fa,
|
|
lavender = 0xffb4befe,
|
|
subtext1 = 0xffbac2de,
|
|
subtext0 = 0xffa6adc8,
|
|
overlay2 = 0xff9399b2,
|
|
overlay1 = 0xff7f849c,
|
|
overlay0 = 0xff6c7086,
|
|
surface2 = 0xff585b70,
|
|
surface1 = 0xff45475a,
|
|
surface0 = 0xff313244,
|
|
base = 0xff1e1e2e,
|
|
mantle = 0xff181825,
|
|
crust = 0xff11111b,
|
|
}
|
|
|
|
-- Default styles
|
|
sbar.default({
|
|
icon = {
|
|
color = colors.text,
|
|
font = "Hack Nerd Font:Bold:14.0",
|
|
padding_right = 4,
|
|
},
|
|
label = {
|
|
color = colors.text,
|
|
font = "Hack Nerd Font:Bold:14.0",
|
|
},
|
|
padding_right = 20,
|
|
popup = {
|
|
background = {
|
|
border_width = 2,
|
|
corner_radius = 9,
|
|
border_color = colors.accent,
|
|
color = colors.bg,
|
|
padding_right = 12,
|
|
},
|
|
},
|
|
})
|
|
|
|
-- Bar configuration
|
|
sbar.bar({
|
|
height = 32,
|
|
position = "top",
|
|
y_offset = 6,
|
|
padding_left = 12,
|
|
padding_right = 12,
|
|
margin = 12,
|
|
color = colors.bg,
|
|
border_color = colors.accent,
|
|
border_width = 2,
|
|
corner_radius = 60,
|
|
})
|
|
|
|
-- Apple logo menu
|
|
local apple_logo = sbar.add("item", "apple.logo", {
|
|
icon = {
|
|
string = " ",
|
|
padding_left = 6,
|
|
font = "Hack Nerd Font:Bold:20.0",
|
|
},
|
|
label = { drawing = false },
|
|
padding_left = 0,
|
|
click_script = "sketchybar -m --set $NAME popup.drawing=toggle",
|
|
popup = {
|
|
y_offset = 8,
|
|
},
|
|
})
|
|
|
|
sbar.add("item", "apple.about", {
|
|
position = "popup.apple.logo",
|
|
icon = " ",
|
|
label = "About",
|
|
click_script = 'osascript -e \'tell application "System Events" to tell process "Finder" to click menu item "About This Mac" of menu 1 of menu bar item "Apple" of menu bar 1\'; sketchybar -m --set apple.logo popup.drawing=off',
|
|
padding_left = 8,
|
|
padding_right = 8,
|
|
})
|
|
|
|
sbar.add("item", "apple.preferences", {
|
|
position = "popup.apple.logo",
|
|
icon = " ",
|
|
label = "Preferences",
|
|
click_script = "open -a 'System Preferences'; sketchybar -m --set apple.logo popup.drawing=off",
|
|
padding_left = 8,
|
|
padding_right = 8,
|
|
})
|
|
|
|
sbar.add("item", "apple.activity", {
|
|
position = "popup.apple.logo",
|
|
icon = " ",
|
|
label = "Activity",
|
|
click_script = "open -a 'Activity Monitor'; sketchybar -m --set apple.logo popup.drawing=off",
|
|
padding_left = 8,
|
|
padding_right = 8,
|
|
})
|
|
|
|
sbar.add("item", "apple.lock", {
|
|
position = "popup.apple.logo",
|
|
icon = " ",
|
|
label = "Lock Screen",
|
|
click_script = "pmset displaysleepnow; sketchybar -m --set apple.logo popup.drawing=off",
|
|
padding_left = 8,
|
|
padding_right = 8,
|
|
})
|
|
|
|
-- Spaces
|
|
local space_icons = { " ", " ", " ", " ", " ", " ", "7", "8", "9", "10" }
|
|
for i = 1, #space_icons do
|
|
local space = sbar.add("space", "space." .. i, {
|
|
space = i,
|
|
icon = {
|
|
string = space_icons[i],
|
|
padding_left = 2,
|
|
padding_right = 2,
|
|
highlight_color = colors.green,
|
|
},
|
|
label = { drawing = false },
|
|
padding_right = 4,
|
|
script = "$CONFIG_DIR/plugins/space.lua",
|
|
click_script = "yabai -m space --focus " .. i,
|
|
})
|
|
|
|
space:subscribe("space_change", function(env)
|
|
local selected = env.SELECTED == "true"
|
|
sbar.set(env.NAME, { icon = { highlight = selected } })
|
|
end)
|
|
end
|
|
|
|
-- Front app
|
|
local front_app = sbar.add("item", "front_app", {
|
|
position = "center",
|
|
icon = " ",
|
|
script = "$CONFIG_DIR/plugins/front_app.lua",
|
|
})
|
|
|
|
front_app:subscribe("front_app_switched", function(env)
|
|
sbar.set(env.NAME, { label = env.INFO })
|
|
end)
|
|
|
|
-- Clock
|
|
local clock = sbar.add("item", "clock", {
|
|
position = "right",
|
|
icon = " ",
|
|
padding_right = 0,
|
|
update_freq = 1,
|
|
script = "$CONFIG_DIR/plugins/clock.lua",
|
|
})
|
|
|
|
clock:subscribe("routine", function()
|
|
sbar.exec("date '+%a %d %b %H:%M:%S'", function(date)
|
|
sbar.set("clock", { label = date })
|
|
end)
|
|
end)
|
|
|
|
-- Battery
|
|
local battery = sbar.add("item", "battery", {
|
|
position = "right",
|
|
update_freq = 1,
|
|
script = "$CONFIG_DIR/plugins/battery.lua",
|
|
})
|
|
|
|
battery:subscribe({ "routine", "system_woke", "power_source_change" }, function()
|
|
sbar.exec("pmset -g batt", function(batt_info)
|
|
local percentage = batt_info:match("(%d+)%%")
|
|
local charging = batt_info:match("AC Power") ~= nil
|
|
|
|
if not percentage then
|
|
return
|
|
end
|
|
|
|
local icon = " "
|
|
local pct = tonumber(percentage)
|
|
|
|
if pct >= 90 then
|
|
icon = " "
|
|
elseif pct >= 60 then
|
|
icon = " "
|
|
elseif pct >= 30 then
|
|
icon = " "
|
|
elseif pct >= 10 then
|
|
icon = " "
|
|
else
|
|
icon = " "
|
|
end
|
|
|
|
if charging then
|
|
icon = ""
|
|
end
|
|
|
|
sbar.set("battery", {
|
|
icon = icon,
|
|
label = percentage .. "%",
|
|
})
|
|
end)
|
|
end)
|
|
|
|
-- Volume
|
|
local volume = sbar.add("item", "volume", {
|
|
position = "right",
|
|
script = "$CONFIG_DIR/plugins/volume.lua",
|
|
})
|
|
|
|
volume:subscribe("volume_change", function(env)
|
|
local vol = tonumber(env.INFO)
|
|
local icon = ""
|
|
|
|
if vol >= 60 then
|
|
icon = ""
|
|
elseif vol >= 30 then
|
|
icon = ""
|
|
elseif vol >= 1 then
|
|
icon = ""
|
|
end
|
|
|
|
sbar.set(env.NAME, {
|
|
icon = icon,
|
|
label = vol .. "%",
|
|
})
|
|
end)
|
|
|
|
-- WiFi
|
|
local wifi = sbar.add("item", "wifi", {
|
|
position = "right",
|
|
update_freq = 10,
|
|
})
|
|
|
|
wifi:subscribe("routine", function()
|
|
-- Check if WiFi is active
|
|
sbar.exec("ifconfig en0 | grep 'status: active'", function(status)
|
|
local icon = " " -- Off
|
|
|
|
if status and status ~= "" then
|
|
-- WiFi is active, check if connected to network
|
|
sbar.exec("ifconfig en0 | grep 'inet '", function(inet)
|
|
if inet and inet ~= "" then
|
|
icon = " " -- Connected
|
|
else
|
|
icon = " " -- Disconnected
|
|
end
|
|
sbar.set("wifi", {
|
|
icon = icon,
|
|
label = "",
|
|
})
|
|
end)
|
|
else
|
|
-- WiFi is off
|
|
sbar.set("wifi", {
|
|
icon = icon,
|
|
label = "",
|
|
})
|
|
end
|
|
end)
|
|
end)
|
|
|
|
-- Run the bar
|
|
sbar.hotload(true)
|
|
sbar.update()
|