diff options
Diffstat (limited to 'sketchybar/.config')
| -rwxr-xr-x | sketchybar/.config/sketchybar/plugins/aerospace.sh | 10 | ||||
| -rwxr-xr-x | sketchybar/.config/sketchybar/plugins/battery.sh | 28 | ||||
| -rwxr-xr-x | sketchybar/.config/sketchybar/plugins/clock.sh | 8 | ||||
| -rwxr-xr-x | sketchybar/.config/sketchybar/plugins/front_app.sh | 10 | ||||
| -rwxr-xr-x | sketchybar/.config/sketchybar/plugins/network.sh | 36 | ||||
| -rwxr-xr-x | sketchybar/.config/sketchybar/plugins/space.sh | 7 | ||||
| -rwxr-xr-x | sketchybar/.config/sketchybar/plugins/volume.sh | 20 | ||||
| -rwxr-xr-x | sketchybar/.config/sketchybar/sketchybarrc | 92 |
8 files changed, 211 insertions, 0 deletions
diff --git a/sketchybar/.config/sketchybar/plugins/aerospace.sh b/sketchybar/.config/sketchybar/plugins/aerospace.sh new file mode 100755 index 0000000..6114c3d --- /dev/null +++ b/sketchybar/.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/sketchybar/.config/sketchybar/plugins/battery.sh b/sketchybar/.config/sketchybar/plugins/battery.sh new file mode 100755 index 0000000..9dd9627 --- /dev/null +++ b/sketchybar/.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/sketchybar/.config/sketchybar/plugins/clock.sh b/sketchybar/.config/sketchybar/plugins/clock.sh new file mode 100755 index 0000000..edb27d5 --- /dev/null +++ b/sketchybar/.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/sketchybar/.config/sketchybar/plugins/front_app.sh b/sketchybar/.config/sketchybar/plugins/front_app.sh new file mode 100755 index 0000000..fb6d0b3 --- /dev/null +++ b/sketchybar/.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/sketchybar/.config/sketchybar/plugins/network.sh b/sketchybar/.config/sketchybar/plugins/network.sh new file mode 100755 index 0000000..d2b02ce --- /dev/null +++ b/sketchybar/.config/sketchybar/plugins/network.sh @@ -0,0 +1,36 @@ +#!/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 + +# Initialize empty list of device names +DEVICES=() + +# get MacOS network service name: takes network device name as 1st arg +# source: https://apple.stackexchange.com/a/432170 +function get_service_name() { + /usr/sbin/networksetup -listnetworkserviceorder | awk -v DEV="$1" -F': |,' '$0~ DEV {print $2;exit;}' +} + +# add each device name to list of devices +for device in "${SERVICES[@]}"; do + DEVICES+=("$(get_service_name "$device")") +done + +echo "${DEVICES[@]}" + +sketchybar --set "$NAME" icon="$ICON" diff --git a/sketchybar/.config/sketchybar/plugins/space.sh b/sketchybar/.config/sketchybar/plugins/space.sh new file mode 100755 index 0000000..b8602b5 --- /dev/null +++ b/sketchybar/.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/sketchybar/.config/sketchybar/plugins/volume.sh b/sketchybar/.config/sketchybar/plugins/volume.sh new file mode 100755 index 0000000..6e69a5d --- /dev/null +++ b/sketchybar/.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/sketchybar/.config/sketchybar/sketchybarrc b/sketchybar/.config/sketchybar/sketchybarrc new file mode 100755 index 0000000..3f120c6 --- /dev/null +++ b/sketchybar/.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 |
