From e92d9fb3728482882549a3ebfcfcc12de34ae2ba Mon Sep 17 00:00:00 2001 From: Badstagram Date: Fri, 9 Jan 2026 06:24:25 +0000 Subject: [PATCH] refactor(macos): refactor sketchybar config to use bash arrays --- .../sketchybar/executable_sketchybarrc | 63 +++++++++++-------- .../sketchybar/items/battery.sh | 35 ++++++----- .../sketchybar/items/calendar.sh | 31 +++++---- private_dot_config/sketchybar/items/clock.sh | 36 ++++++----- private_dot_config/sketchybar/items/cpu.sh | 32 +++++----- .../sketchybar/items/front_app.sh | 34 +++++----- private_dot_config/sketchybar/items/mem.sh | 23 +++++++ .../sketchybar/items/spotify.sh | 39 +++++++----- private_dot_config/sketchybar/items/user.sh | 25 ++++++++ private_dot_config/sketchybar/items/volume.sh | 31 +++++---- .../sketchybar/plugins/executable_mem.sh | 3 + .../sketchybar/plugins/executable_spotify.sh | 5 +- .../sketchybar/plugins/executable_user.sh | 3 + 13 files changed, 229 insertions(+), 131 deletions(-) create mode 100644 private_dot_config/sketchybar/items/mem.sh create mode 100644 private_dot_config/sketchybar/items/user.sh create mode 100644 private_dot_config/sketchybar/plugins/executable_mem.sh create mode 100644 private_dot_config/sketchybar/plugins/executable_user.sh diff --git a/private_dot_config/sketchybar/executable_sketchybarrc b/private_dot_config/sketchybar/executable_sketchybarrc index a1226eb..684463c 100644 --- a/private_dot_config/sketchybar/executable_sketchybarrc +++ b/private_dot_config/sketchybar/executable_sketchybarrc @@ -4,34 +4,41 @@ source "$HOME/.config/sketchybar/variables.sh" # Loads all defined colors # General bar and defaults -sketchybar --bar height=30 \ - color="$BAR_COLOR" \ - shadow="$SHADOW" \ - position=top \ - sticky=on \ - padding_right=0 \ - padding_left=3 \ - corner_radius="$CORNER_RADIUS" \ - y_offset=1 \ - margin=5 \ - blur_radius=20 \ - notch_width=200 \ - --default updates=when_shown \ - icon.font="$FONT:Bold:13.5" \ - icon.color="$ICON_COLOR" \ - icon.padding_left="$PADDINGS" \ - icon.padding_right="$PADDINGS" \ - label.font="$FONT:Bold:13.0" \ - label.color="$LABEL_COLOR" \ - label.padding_left="$PADDINGS" \ - label.padding_right="$PADDINGS" \ - background.padding_right="$PADDINGS" \ - background.padding_left="$PADDINGS" \ - popup.background.border_width=1 \ - popup.background.corner_radius=11 \ - popup.background.border_color="$POPUP_BORDER_COLOR" \ - popup.background.color="$POPUP_BACKGROUND_COLOR" \ +bar=( + height=30 + color="$BAR_COLOR" + shadow="$SHADOW" + position=top + sticky=on + padding_right=0 + padding_left=3 + corner_radius="$CORNER_RADIUS" + y_offset=1 + margin=5 + blur_radius=20 + notch_width=200 +) + +defaults=( + updates=when_shown + icon.font="$FONT:Bold:13.5" + icon.color="$ICON_COLOR" + icon.padding_left="$PADDINGS" + icon.padding_right="$PADDINGS" + label.font="$FONT:Bold:13.0" + label.color="$LABEL_COLOR" + label.padding_left="$PADDINGS" + label.padding_right="$PADDINGS" + background.padding_right="$PADDINGS" + background.padding_left="$PADDINGS" + popup.background.border_width=1 + popup.background.corner_radius=11 + popup.background.border_color="$POPUP_BORDER_COLOR" + popup.background.color="$POPUP_BACKGROUND_COLOR" popup.background.shadow.drawing="$SHADOW" +) + +sketchybar --bar "${bar[@]}" --default "${defaults[@]}" # Left # source "$ITEM_DIR/apple.sh" @@ -42,10 +49,12 @@ source "$ITEM_DIR/front_app.sh" source "$ITEM_DIR/spotify.sh" # Right +source "$ITEM_DIR/user.sh" source "$ITEM_DIR/clock.sh" source "$ITEM_DIR/calendar.sh" source "$ITEM_DIR/battery.sh" source "$ITEM_DIR/volume.sh" +source "$ITEM_DIR/mem.sh" source "$ITEM_DIR/cpu.sh" #################### Finalizing Setup #################### diff --git a/private_dot_config/sketchybar/items/battery.sh b/private_dot_config/sketchybar/items/battery.sh index 0414f3b..0b854c3 100644 --- a/private_dot_config/sketchybar/items/battery.sh +++ b/private_dot_config/sketchybar/items/battery.sh @@ -2,19 +2,24 @@ COLOR="$CYAN" -sketchybar --add item battery right \ - --set battery \ - update_freq=60 \ - icon.color="$COLOR" \ - icon.padding_left=10 \ - label.padding_right=10 \ - label.color="$COLOR" \ - background.height=26 \ - background.corner_radius="$CORNER_RADIUS" \ - background.padding_right=5 \ - background.border_width="$BORDER_WIDTH" \ - background.border_color="$COLOR" \ - background.color="$BAR_COLOR" \ - background.drawing=on \ +props=( + update_freq=60 + icon.color="$COLOR" + icon.padding_left=10 + label.padding_right=10 + label.color="$COLOR" + background.height=26 + background.corner_radius="$CORNER_RADIUS" + background.padding_right=5 + background.border_width="$BORDER_WIDTH" + background.border_color="$COLOR" + background.color="$BAR_COLOR" + background.drawing=on script="$PLUGIN_DIR/power.sh" \ - --subscribe battery power_source_change +) + +sketchybar --add item battery right \ + --subscribe battery power_source_change \ + --set battery \ + ${props[@]} + diff --git a/private_dot_config/sketchybar/items/calendar.sh b/private_dot_config/sketchybar/items/calendar.sh index 064a191..141995d 100644 --- a/private_dot_config/sketchybar/items/calendar.sh +++ b/private_dot_config/sketchybar/items/calendar.sh @@ -2,17 +2,22 @@ COLOR="$BLUE" -sketchybar --add item calendar right \ - --set calendar update_freq=15 \ - icon.color="$COLOR" \ - icon.padding_left=10 \ - label.color="$COLOR" \ - label.padding_right=10 \ - background.height=26 \ - background.corner_radius="$CORNER_RADIUS" \ - background.padding_right=5 \ - background.border_width="$BORDER_WIDTH" \ - background.border_color="$COLOR" \ - background.color="$BAR_COLOR" \ - background.drawing=on \ +props=( + update_freq=15 + icon.color="$COLOR" + icon.padding_left=10 + label.color="$COLOR" + label.padding_right=10 + background.height=26 + background.corner_radius="$CORNER_RADIUS" + background.padding_right=5 + background.border_width="$BORDER_WIDTH" + background.border_color="$COLOR" + background.color="$BAR_COLOR" + background.drawing=on script="$PLUGIN_DIR/calendar.sh" +) + +sketchybar --add item calendar right \ + --set calendar "${props[@]}"\ + diff --git a/private_dot_config/sketchybar/items/clock.sh b/private_dot_config/sketchybar/items/clock.sh index 48b9bc9..3b5de79 100644 --- a/private_dot_config/sketchybar/items/clock.sh +++ b/private_dot_config/sketchybar/items/clock.sh @@ -2,20 +2,24 @@ COLOR="$MAGENTA" -sketchybar --add item clock right \ - --set clock update_freq=1 \ - icon.padding_left=10 \ - icon.color="$COLOR" \ - icon="" \ - label.color="$COLOR" \ - label.padding_right=5 \ - label.width=78 \ - align=center \ - background.height=26 \ - background.corner_radius="$CORNER_RADIUS" \ - background.padding_right=2 \ - background.border_width="$BORDER_WIDTH" \ - background.border_color="$COLOR" \ - background.color="$BAR_COLOR" \ - background.drawing=on \ +props=( + update_freq=1 + icon.padding_left=10 + icon.color="$COLOR" + icon="" + label.color="$COLOR" + label.padding_right=5 + label.width=78 + align=center + background.height=26 + background.corner_radius="$CORNER_RADIUS" + background.padding_right=2 + background.border_width="$BORDER_WIDTH" + background.border_color="$COLOR" + background.color="$BAR_COLOR" + background.drawing=on script="$PLUGIN_DIR/clock.sh" +) + +sketchybar --add item clock right \ + --set clock "${props[@]}" diff --git a/private_dot_config/sketchybar/items/cpu.sh b/private_dot_config/sketchybar/items/cpu.sh index b4c6493..bce9c2b 100644 --- a/private_dot_config/sketchybar/items/cpu.sh +++ b/private_dot_config/sketchybar/items/cpu.sh @@ -2,18 +2,22 @@ COLOR="$YELLOW" -sketchybar --add item cpu right \ - --set cpu \ - update_freq=3 \ - icon.color="$COLOR" \ - icon.padding_left=10 \ - label.color="$COLOR" \ - label.padding_right=10 \ - background.height=26 \ - background.corner_radius="$CORNER_RADIUS" \ - background.padding_right=5 \ - background.border_width="$BORDER_WIDTH" \ - background.border_color="$COLOR" \ - background.color="$BAR_COLOR" \ - background.drawing=on \ +props=( + update_freq=3 + icon.color="$COLOR" + icon.padding_left=10 + label.color="$COLOR" + label.padding_right=10 + background.height=26 + background.corner_radius="$CORNER_RADIUS" + background.padding_right=5 + background.border_width="$BORDER_WIDTH" + background.border_color="$COLOR" + background.color="$BAR_COLOR" + background.drawing=on script="$PLUGIN_DIR/cpu.sh" +) + +sketchybar --add item cpu right \ + --set cpu ${props[@]}\ + diff --git a/private_dot_config/sketchybar/items/front_app.sh b/private_dot_config/sketchybar/items/front_app.sh index ecee1a8..8b27edf 100644 --- a/private_dot_config/sketchybar/items/front_app.sh +++ b/private_dot_config/sketchybar/items/front_app.sh @@ -2,19 +2,25 @@ COLOR="$WHITE" +props=( + icon.drawing=off + background.height=26 + background.padding_left=0 + background.padding_right=10 + background.border_width="$BORDER_WIDTH" + background.border_color="$COLOR" + background.corner_radius="$CORNER_RADIUS" + background.color="$BAR_COLOR" + label.color="$COLOR" + label.padding_left=10 + label.padding_right=10 + associated_display=active + script="$PLUGIN_DIR/front_app.sh" +) + sketchybar \ --add item front_app left \ - --set front_app script="$PLUGIN_DIR/front_app.sh" \ - icon.drawing=off \ - background.height=26 \ - background.padding_left=0 \ - background.padding_right=10 \ - background.border_width="$BORDER_WIDTH" \ - background.border_color="$COLOR" \ - background.corner_radius="$CORNER_RADIUS" \ - background.color="$BAR_COLOR" \ - label.color="$COLOR" \ - label.padding_left=10 \ - label.padding_right=10 \ - associated_display=active \ - --subscribe front_app front_app_switched + --subscribe front_app front_app_switched \ + --set front_app \ + "${props[@]}" \ + diff --git a/private_dot_config/sketchybar/items/mem.sh b/private_dot_config/sketchybar/items/mem.sh new file mode 100644 index 0000000..7de26d7 --- /dev/null +++ b/private_dot_config/sketchybar/items/mem.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +COLOR="$ORANGE" + +props=( + update_freq=3 + icon.color="$COLOR" + icon.padding_left=10 + label.color="$COLOR" + label.padding_right=10 + background.height=26 + background.corner_radius="$CORNER_RADIUS" + background.padding_right=5 + background.border_width="$BORDER_WIDTH" + background.border_color="$COLOR" + background.color="$BAR_COLOR" + background.drawing=on + script="$PLUGIN_DIR/mem.sh" +) + +sketchybar --add item mem right \ + --set mem \ + "${props[@]}" diff --git a/private_dot_config/sketchybar/items/spotify.sh b/private_dot_config/sketchybar/items/spotify.sh index 3e2be3d..3723c09 100644 --- a/private_dot_config/sketchybar/items/spotify.sh +++ b/private_dot_config/sketchybar/items/spotify.sh @@ -3,22 +3,27 @@ MUSIC_EVENT="com.spotify.client.PlaybackStateChanged" COLOR="$GREEN" + +props=( + scroll_texts=on + icon=󰎆 + icon.color="$COLOR" + icon.padding_left=10 + background.color="$BAR_COLOR" + background.height=26 + background.corner_radius="$CORNER_RADIUS" + background.border_width="$BORDER_WIDTH" + background.border_color="$COLOR" + background.padding_right=-5 + background.drawing=on + label.padding_right=10 + associated_display=active + updates=on + script="$PLUGIN_DIR/spotify.sh" +) + sketchybar --add event music_change $MUSIC_EVENT \ --add item music q \ - --set music ${bracket_defaults[@]}\ - scroll_texts=on \ - icon=󰎆 \ - icon.color="$COLOR" \ - icon.padding_left=10 \ - background.color="$BAR_COLOR" \ - background.height=26 \ - background.corner_radius="$CORNER_RADIUS" \ - background.border_width="$BORDER_WIDTH" \ - background.border_color="$COLOR" \ - background.padding_right=-5 \ - background.drawing=on \ - label.padding_right=10 \ - associated_display=active \ - updates=on \ - script="$PLUGIN_DIR/spotify.sh" \ - --subscribe music music_change + --subscribe music music_change \ + --set music ${bracket_defaults[@]} \ + "${props[@]}" \ No newline at end of file diff --git a/private_dot_config/sketchybar/items/user.sh b/private_dot_config/sketchybar/items/user.sh new file mode 100644 index 0000000..b3f38cb --- /dev/null +++ b/private_dot_config/sketchybar/items/user.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +COLOR="0xff565f89" + +props=( + update_freq=60 + icon.color="$COLOR" + icon.padding_left=10 + label.padding_right=10 + label.color="$COLOR" + background.height=26 + background.corner_radius="$CORNER_RADIUS" + background.padding_right=5 + background.border_width="$BORDER_WIDTH" + background.border_color="$COLOR" + background.color="$BAR_COLOR" + background.drawing=on + script="$PLUGIN_DIR/user.sh" + +) + +sketchybar --add item user right \ + --set user \ + "${props[@]}" + \ No newline at end of file diff --git a/private_dot_config/sketchybar/items/volume.sh b/private_dot_config/sketchybar/items/volume.sh index 77f746d..060d91c 100644 --- a/private_dot_config/sketchybar/items/volume.sh +++ b/private_dot_config/sketchybar/items/volume.sh @@ -2,19 +2,24 @@ COLOR="$GREEN" +props=( + icon.color="$COLOR" + icon.padding_left=10 + label.color="$COLOR" + label.padding_right=10 + background.height=26 + background.corner_radius="$CORNER_RADIUS" + background.padding_right=5 + background.border_width="$BORDER_WIDTH" + background.border_color="$COLOR" + background.color="$BAR_COLOR" + background.drawing=on + script="$PLUGIN_DIR/sound.sh" +) + sketchybar \ --add item sound right \ + --subscribe sound volume_change \ --set sound \ - icon.color="$COLOR" \ - icon.padding_left=10 \ - label.color="$COLOR" \ - label.padding_right=10 \ - background.height=26 \ - background.corner_radius="$CORNER_RADIUS" \ - background.padding_right=5 \ - background.border_width="$BORDER_WIDTH" \ - background.border_color="$COLOR" \ - background.color="$BAR_COLOR" \ - background.drawing=on \ - script="$PLUGIN_DIR/sound.sh" \ - --subscribe sound volume_change + "${props[@]}" + diff --git a/private_dot_config/sketchybar/plugins/executable_mem.sh b/private_dot_config/sketchybar/plugins/executable_mem.sh new file mode 100644 index 0000000..f603cf0 --- /dev/null +++ b/private_dot_config/sketchybar/plugins/executable_mem.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +sketchybar --set "$NAME" icon="" label="$(ps -A -o %mem | awk '{s+=$1} END {s /= 8} END {printf "%.1f%%\n", s}')" diff --git a/private_dot_config/sketchybar/plugins/executable_spotify.sh b/private_dot_config/sketchybar/plugins/executable_spotify.sh index 56ed4a3..4f66f44 100644 --- a/private_dot_config/sketchybar/plugins/executable_spotify.sh +++ b/private_dot_config/sketchybar/plugins/executable_spotify.sh @@ -9,14 +9,15 @@ update() { TRACK="$(echo "$INFO" | jq -r .Name | cut -c1-40)" ARTIST="$(echo "$INFO" | jq -r .Artist | cut -c1-20)" ALBUM="$(echo "$INFO" | jq -r .Album | cut -c1-20)" + FULL=$(echo "$ARTIST - $TRACK" | cut -c1-42) fi args=() if [ $PLAYING -eq 0 ]; then if [ "$ARTIST" == "" ]; then - args+=(--set music label="$ALBUM - $TRACK" drawing=on icon=􀊄) + args+=(--set music label="$FULL" drawing=on icon=􀊄) else - args+=(--set music label="$ARTIST - $TRACK" drawing=on icon=􀊄) + args+=(--set music label="$FULL" drawing=on icon=􀊄) fi else args+=(--set music icon=􀊆) diff --git a/private_dot_config/sketchybar/plugins/executable_user.sh b/private_dot_config/sketchybar/plugins/executable_user.sh new file mode 100644 index 0000000..acbe0fd --- /dev/null +++ b/private_dot_config/sketchybar/plugins/executable_user.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +sketchybar --set "$NAME" icon="" label="$(whoami)"