summaryrefslogtreecommitdiff
path: root/dot-config/sketchybar
diff options
context:
space:
mode:
authorJosé Juan Loeza Sierra <jj@xz6ze.com>2025-06-13 01:02:52 -0700
committerJosé Juan Loeza Sierra <jj@xz6ze.com>2025-06-13 01:02:52 -0700
commitef91c646f7d7ce5a2547ce9badae64572d6fa1f4 (patch)
treef7f9bebd062779c0acc4ae0a9172c08683c34da0 /dot-config/sketchybar
parente06462207c18f18e5926ff80869b8af5e4fdaf4a (diff)
move all into one single .config directory
Moves of the config files into a single dot-config directory, simplifying the structure and the usage of stow. dot-config gets processed into .config by stow. See the `--dotfiles` option at https://www.gnu.org/software/stow/manual/stow.html#Invoking-Stow for more information
Diffstat (limited to 'dot-config/sketchybar')
-rwxr-xr-xdot-config/sketchybar/plugins/aerospace.sh10
-rwxr-xr-xdot-config/sketchybar/plugins/battery.sh28
-rwxr-xr-xdot-config/sketchybar/plugins/clock.sh8
-rwxr-xr-xdot-config/sketchybar/plugins/front_app.sh10
-rwxr-xr-xdot-config/sketchybar/plugins/network.sh20
-rwxr-xr-xdot-config/sketchybar/plugins/space.sh7
-rwxr-xr-xdot-config/sketchybar/plugins/volume.sh20
-rwxr-xr-xdot-config/sketchybar/sketchybarrc92
8 files changed, 195 insertions, 0 deletions
diff --git a/dot-config/sketchybar/plugins/aerospace.sh b/dot-config/sketchybar/plugins/aerospace.sh
new file mode 100755
index 0000000..6114c3d
--- /dev/null
+++ b/dot-config/sketchybar/plugins/aerospace.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+
+# make sure it's executable with:
+# chmod +x ~/.config/sketchybar/plugins/aerospace.sh
+
+if [ "$1" = "$FOCUSED_WORKSPACE" ]; then
+ sketchybar --set $NAME background.drawing=on
+else
+ sketchybar --set $NAME background.drawing=off
+fi
diff --git a/dot-config/sketchybar/plugins/battery.sh b/dot-config/sketchybar/plugins/battery.sh
new file mode 100755
index 0000000..9dd9627
--- /dev/null
+++ b/dot-config/sketchybar/plugins/battery.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+PERCENTAGE="$(pmset -g batt | grep -Eo "\d+%" | cut -d% -f1)"
+CHARGING="$(pmset -g batt | grep 'AC Power')"
+
+if [ "$PERCENTAGE" = "" ]; then
+ exit 0
+fi
+
+case "${PERCENTAGE}" in
+ 9[0-9]|100) ICON=""
+ ;;
+ [6-8][0-9]) ICON=""
+ ;;
+ [3-5][0-9]) ICON=""
+ ;;
+ [1-2][0-9]) ICON=""
+ ;;
+ *) ICON=""
+esac
+
+if [[ "$CHARGING" != "" ]]; then
+ ICON=""
+fi
+
+# The item invoking this script (name $NAME) will get its icon and label
+# updated with the current battery status
+sketchybar --set "$NAME" icon="$ICON" label="${PERCENTAGE}%"
diff --git a/dot-config/sketchybar/plugins/clock.sh b/dot-config/sketchybar/plugins/clock.sh
new file mode 100755
index 0000000..edb27d5
--- /dev/null
+++ b/dot-config/sketchybar/plugins/clock.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# The $NAME variable is passed from sketchybar and holds the name of
+# the item invoking this script:
+# https://felixkratz.github.io/SketchyBar/config/events#events-and-scripting
+
+sketchybar --set "$NAME" label="$(date '+%a %b %d %I:%M %p')"
+
diff --git a/dot-config/sketchybar/plugins/front_app.sh b/dot-config/sketchybar/plugins/front_app.sh
new file mode 100755
index 0000000..fb6d0b3
--- /dev/null
+++ b/dot-config/sketchybar/plugins/front_app.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# Some events send additional information specific to the event in the $INFO
+# variable. E.g. the front_app_switched event sends the name of the newly
+# focused application in the $INFO variable:
+# https://felixkratz.github.io/SketchyBar/config/events#events-and-scripting
+
+if [ "$SENDER" = "front_app_switched" ]; then
+ sketchybar --set "$NAME" label="$INFO"
+fi
diff --git a/dot-config/sketchybar/plugins/network.sh b/dot-config/sketchybar/plugins/network.sh
new file mode 100755
index 0000000..e1790ae
--- /dev/null
+++ b/dot-config/sketchybar/plugins/network.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+NETWORK="$(scutil --nwi | awk -F': ' '/Network interfaces/ {print $2;}')"
+
+# Split devices into array
+IFS=' ' read -ra SERVICES <<< "$NETWORK"
+
+# Check the first device
+case "${SERVICES}" in
+ # check if no devices
+ "") ICON="󰤯"
+ ;;
+ # if en0, then wifi
+ "en0") ICON=""
+ ;;
+ # else, must be hardwired
+ *) ICON=""
+esac
+
+sketchybar --set "$NAME" icon="$ICON"
diff --git a/dot-config/sketchybar/plugins/space.sh b/dot-config/sketchybar/plugins/space.sh
new file mode 100755
index 0000000..b8602b5
--- /dev/null
+++ b/dot-config/sketchybar/plugins/space.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# The $SELECTED variable is available for space components and indicates if
+# the space invoking this script (with name: $NAME) is currently selected:
+# https://felixkratz.github.io/SketchyBar/config/components#space----associate-mission-control-spaces-with-an-item
+
+sketchybar --set "$NAME" background.drawing="$SELECTED"
diff --git a/dot-config/sketchybar/plugins/volume.sh b/dot-config/sketchybar/plugins/volume.sh
new file mode 100755
index 0000000..6e69a5d
--- /dev/null
+++ b/dot-config/sketchybar/plugins/volume.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+# The volume_change event supplies a $INFO variable in which the current volume
+# percentage is passed to the script.
+
+if [ "$SENDER" = "volume_change" ]; then
+ VOLUME="$INFO"
+
+ case "$VOLUME" in
+ [6-9][0-9]|100) ICON="󰕾"
+ ;;
+ [3-5][0-9]) ICON="󰖀"
+ ;;
+ [1-9]|[1-2][0-9]) ICON="󰕿"
+ ;;
+ *) ICON="󰖁"
+ esac
+
+ sketchybar --set "$NAME" icon="$ICON" label="$VOLUME%"
+fi
diff --git a/dot-config/sketchybar/sketchybarrc b/dot-config/sketchybar/sketchybarrc
new file mode 100755
index 0000000..3f120c6
--- /dev/null
+++ b/dot-config/sketchybar/sketchybarrc
@@ -0,0 +1,92 @@
+PLUGIN_DIR="$CONFIG_DIR/plugins"
+
+# https://felixkratz.github.io/SketchyBar/config/bar
+bar=(
+ position=top
+ height=30
+ blur_radius=30
+ color=0x10000000
+ sticky=on
+ font_smoothing=on
+ sticky=true
+ margin=0
+)
+
+# https://felixkratz.github.io/SketchyBar/config/items
+default=(
+ padding_left=5
+ padding_right=5
+ icon.font="Iosevka Nerd Font:Bold:18.0"
+ label.font="Atkinson Hyperlegible:Regular:17.0"
+ icon.color=0xffffffff
+ label.color=0xffffffff
+ icon.padding_left=4
+ icon.padding_right=4
+ label.padding_left=4
+ label.padding_right=4
+)
+
+sketchybar --default "${default[@]}" --bar "${bar[@]}"
+
+
+##### Adding Mission Control Space Indicators #####
+# Let's add some mission control spaces:
+# https://felixkratz.github.io/SketchyBar/config/components#space----associate-mission-control-spaces-with-an-item
+# to indicate active and available mission control spaces.
+
+##### Adding Left Items #####
+# We add some regular items to the left side of the bar, where
+# only the properties deviating from the current defaults need to be set
+
+sketchybar --add item apple left \
+ --set apple icon= label.drawing=off \
+
+##### Adding Right Items #####
+# In the same way as the left items we can add items to the right side.
+# Additional position (e.g. center) are available, see:
+# https://felixkratz.github.io/SketchyBar/config/items#adding-items-to-sketchybar
+
+# Some items refresh on a fixed cycle, e.g. the clock runs its script once
+# every 10s. Other items respond to events they subscribe to, e.g. the
+# volume.sh script is only executed once an actual change in system audio
+# volume is registered. More info about the event system can be found here:
+# https://felixkratz.github.io/SketchyBar/config/events
+
+sketchybar --add item clock right \
+ --set clock update_freq=1 script="$PLUGIN_DIR/clock.sh" \
+ --add item volume right \
+ --set volume script="$PLUGIN_DIR/volume.sh" \
+ --subscribe volume volume_change \
+ --add item battery right \
+ --set battery update_freq=120 script="$PLUGIN_DIR/battery.sh" \
+ --subscribe battery system_woke power_source_change
+
+## Network
+sketchybar --add item network right \
+ --set network script="$PLUGIN_DIR/network.sh" \
+ --subscribe network wifi_change
+
+## Aerospace
+sketchybar --add event aerospace_workspace_change
+
+for sid in $(aerospace list-workspaces --all); do
+ sketchybar --add item space.$sid left \
+ --subscribe space.$sid aerospace_workspace_change \
+ --set space.$sid \
+ background.color=0x44ffffff \
+ background.corner_radius=5 \
+ background.height=20 \
+ background.drawing=off \
+ label="$sid" \
+ click_script="aerospace workspace $sid" \
+ script="$CONFIG_DIR/plugins/aerospace.sh $sid"
+done
+
+## Current app
+sketchybar --add item front_app left \
+ --set front_app icon.drawing=off script="$PLUGIN_DIR/front_app.sh" \
+ --subscribe front_app front_app_switched
+
+##### Force all scripts to run the first time (never do this in a script) #####
+sketchybar --hotload true
+sketchybar --update