sketchybar: init

This commit is contained in:
Nico 2025-10-04 13:45:49 +10:00
parent ded82a8f8b
commit ae71080920
Signed by: nico
SSH key fingerprint: SHA256:XuacYOrGqRxC3jVFjfLROn1CSvLz85Dec6N7O9Gwu/0
10 changed files with 182 additions and 96 deletions

View file

@ -1,7 +1,14 @@
# You can use it to add commands that run after AeroSpace startup.
# Available commands : https://nikitabobko.github.io/AeroSpace/commands
after-startup-command = [
'exec-and-forget borders active_color=0xfff74f9e inactive_color=0xffffa8f1 width=6.0'
'exec-and-forget borders active_color=0xfff74f9e inactive_color=0xffffa8f1 width=6.0',
'exec-and-forget sketchybar'
]
# Notify Sketchybar about workspace change
exec-on-workspace-change = ['/bin/bash', '-c',
'sketchybar --trigger aerospace_workspace_change FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE'
]
# Start AeroSpace at login - breaks nix darwin

View file

@ -53,3 +53,8 @@ output_path = '~/.config/hypr/hyprlock.conf'
[templates.vesktop]
input_path = './templates/discord.css'
output_path = '~/.config/vesktop/themes/midnight-discord.css'
[templates.sketchybar]
input_path = './templates/sketchybar.sh'
output_path = '~/.config/sketchybar/colours.sh'
post_hook = 'sketchybar --reload'

View file

@ -0,0 +1,3 @@
export PRIMARY_COLOUR=0xFF{{colors.primary.default.hex_stripped}}
export SECONDARY_COLOUR=0xFF{{colors.secondary.default.hex_stripped}}
export BACKGROUND_COLOUR=0xFF{{colors.background.default.hex_stripped}}

1
stow/.config/sketchybar/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
colours.sh

View file

@ -0,0 +1,14 @@
#!/usr/bin/env bash
# make sure it's executable with:
# chmod +x ~/.config/sketchybar/plugins/aerospace.sh
#
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
source $SCRIPT_DIR/../colours.sh
if [ "$1" = "$FOCUSED_WORKSPACE" ]; then
# If workspace is focused
sketchybar --set $NAME background.color=$PRIMARY_COLOUR label.color=$BACKGROUND_COLOUR
else
sketchybar --set $NAME background.color=$BACKGROUND_COLOUR label.color=$PRIMARY_COLOUR
fi

View file

@ -12,4 +12,4 @@ else
sketchybar --set "$NAME" label.padding_right=20
fi
sketchybar --set "$NAME" label="$(date +'%a %d %b')$(date +'%I:%M %p')"
sketchybar --set "$NAME" label="$(date +'%l:%M %p')"

View file

@ -0,0 +1,29 @@
#!/bin/sh
# from: https://apple.stackexchange.com/questions/251666/how-to-get-current-input-language-of-the-input-source
#!/usr/local/bin/bash
# Checks current keyboard input source (aka language)
#These are the strings that MacOS uses to identify the current input source
ENGLISH="Australian"
HIRIGANA="com.apple.inputmethod.Japanese"
KATANA="com.apple.inputmethod.Japanese.Katakana"
WESTERN_LANGUAGE=$(defaults read ~/Library/Preferences/com.apple.HIToolbox.plist AppleSelectedInputSources | grep 'KeyboardLayout Name' | sed -E 's/^.+ = \"?([^\"]+)\"?;$/\1/')
# If the current language is not western one, then check a different variable
EASTERN_LANGUAGE=$(defaults read ~/Library/Preferences/com.apple.HIToolbox.plist AppleSelectedInputSources | grep -w 'Input Mode' | head -1 | sed -E 's/^.+ = \"?([^\"]+)\"?;$/\1/')
if [ "$WESTERN_LANGUAGE" = "$ENGLISH" ]; then
LABEL="English"
ICON="🇬🇧"
elif [ "$EASTERN_LANGUAGE" = "$HIRIGANA" ]; then
LABEL="Japanese"
ICON="🇯🇵"
elif [ "$EASTERN_LANGUAGE" = "$KATANA" ]; then
LABEL="Katakana"
ICON="🈴"
fi
sketchybar --set "$NAME" label="$LABEL" icon="$ICON"

View file

@ -0,0 +1,10 @@
#!/bin/sh
# sketchybar doesn't like it when the line doesn't end with a carriage return
SONG="$(osascript -e 'tell application "Music" to if player state is playing then artist of current track & " - " & name of current track' | head -c 65 && echo '\r')"
if [[ "$(echo $SONG | wc -w | sed 's/ //g')" != "0" ]]; then
sketchybar --set "$NAME" label="${SONG}" background.drawing=true icon.drawing=true
else
sketchybar --set "$NAME" label="" background.drawing=false icon.drawing=false
fi

View file

@ -0,0 +1,8 @@
#!/bin/sh
ping -c 1 1.1.1.1 &> /dev/null
if [ "$?" = "0" ]; then
sketchybar --set $NAME icon=󰖩
else
sketchybar --set $NAME icon=󰖪
fi

View file

@ -4,7 +4,7 @@
# For a (much) more advanced configuration example see my dotfiles:
# https://github.com/FelixKratz/dotfiles
PLUGIN_DIR="$HOME/.config/sketchybar/plugins"
PLUGIN_DIR="$HOME/dots/stow/.config/sketchybar/plugins"
##### Bar Appearance #####
# Configuring the general appearance of the bar.
@ -13,120 +13,129 @@ PLUGIN_DIR="$HOME/.config/sketchybar/plugins"
# If you are looking for other colors, see the color picker:
# https://felixkratz.github.io/SketchyBar/config/tricks#color-picker
sketchybar --bar position=top \
height=32 \
blur_radius=30 \
color=0x00000000 \
padding_right=10 \
padding_left=10 \
y_offset=3
sketchybar --bar position=top height=42 blur_radius=0 color=0x00000000 padding_right=15 padding_left=15 y_offset=0 corner_radius=0
source $PLUGIN_DIR/../colours.sh
##### Changing Defaults #####
# We now change some default values, which are applied to all further items.
# For a full list of all available item properties see:
# https://felixkratz.github.io/SketchyBar/config/items
default=(
icon.font="ComicShannsMono Nerd Font:Regular:11.0"
label.font="ComicShannsMono Nerd Font:Bold:11.0"
icon.font="ComicShannsMono Nerd Font:Regular:16.0"
label.font="ComicShannsMono Nerd Font:Bold:12.0"
background.border_color=0x00000000
background.border_width=3
background.height=32
padding_left=1
padding_right=1
icon.color=$PRIMARY_COLOUR
label.color=$PRIMARY_COLOUR
icon.color=$SECONDARY_COLOUR
background.color=$BACKGROUND_COLOUR
icon.padding_left=10
icon.padding_right=1
label.padding_left=5
label.padding_right=10
background.padding_left=2
background.padding_right=2
background.corner_radius=10
label.padding_left=7
label.padding_right=7
background.corner_radius=5
)
sketchybar --default "${default[@]}"
##### 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.
SPACE_ICONS=("1" "2" "3" "4" "5" "6" "7" "8" "9" "10")
for i in "${!SPACE_ICONS[@]}"
do
sid="$(($i+1))"
space=(
icon.color=$PRIMARY_COLOUR
background.color=$BACKGROUND_COLOUR
space="$sid"
icon="${SPACE_ICONS[i]}"
icon.padding_left=12
icon.padding_right=12
background.height=32
background.padding_left=0
background.padding_right=0
label.drawing=off
script="$PLUGIN_DIR/space.sh"
click_script="yabai -m space --focus $sid"
)
sketchybar --add space space."$sid" left --set space."$sid" "${space[@]}"
done
##### 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 chevron left \
# --set chevron icon= label.drawing=off \
# --add item front_app left \
# --set front_app icon.drawing=off script="$PLUGIN_DIR/front_app.sh" \
# --subscribe front_app front_app_switched
#
# Adding Left Items
#
# Focused window title
sketchybar --add item front_app left \
--set front_app icon.drawing=off \
label.color=$PRIMARY_COLOUR \
padding_left=10 \
label.padding_left=10 \
background.color=$BACKGROUND_COLOUR \
background.height=32 \
--set front_app icon="󱂬 " \
script="$PLUGIN_DIR/front_app.sh" \
--subscribe front_app front_app_switched \
##### Adding Right Items #####
sketchybar --add item clock right \
--set clock \
update_freq=10 \
icon.color=$PRIMARY_COLOUR \
label.color=$PRIMARY_COLOUR \
# Aerospace workspace indicators
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=$BACKGROUND_COLOUR \
background.height=32 \
background.drawing=true \
icon.drawing=false \
background.height=28 \
background.border_width=0 \
background.padding_right=0 \
background.padding_left=0 \
background.corner_radius=0 \
label.color=$PRIMARY_COLOUR \
label="$sid" \
click_script="aerospace workspace $sid" \
script="$CONFIG_DIR/plugins/aerospace.sh $sid"
done
# Currently playing music status (only works for Music.app)
sketchybar --add item music left \
--set music icon="󰎇 " update_freq=10 \
script="$PLUGIN_DIR/music.sh" \
click_script="osascript -e 'tell application \"Music\" to playpause'" \
background.padding_right=0 \
background.padding_left=0 \
background.drawing=false \
background.color=$PRIMARY_COLOUR \
icon.color=$BACKGROUND_COLOUR \
label.color=$BACKGROUND_COLOUR \
icon.drawing=false
#
# Adding Right Items
#
# Clock
sketchybar --add item clock right \
--set clock icon=" " \
update_freq=10 \
background.padding_right=0 \
background.padding_left=0 \
label.padding_right=20 \
script="$PLUGIN_DIR/clock.sh"
# Input Method
sketchybar --add item input-method right \
--set input-method icon="" \
update_freq=1 \
background.padding_right=0 \
background.padding_left=0 \
script="$PLUGIN_DIR/input-method.sh"
# Battery
sketchybar --add item battery right \
--set battery update_freq=10 \
script="$PLUGIN_DIR/battery.sh" \
icon.color=$SECONDARY_COLOUR \
label.color=$SECONDARY_COLOUR \
background.color=$BACKGROUND_COLOUR \
background.height=32 \
background.padding_right=0 \
background.padding_left=0 \
# Backlight
sketchybar --add item backlight right \
--set backlight icon="" \
icon.color=$TERTIARY_COLOUR \
label.color=$TERTIARY_COLOUR \
background.color=$BACKGROUND_COLOUR \
background.height=32 \
background.padding_right=0 \
background.padding_left=0 \
script="$PLUGIN_DIR/backlight.sh" \
--subscribe backlight brightness_change \
# Volume
sketchybar --add item audio right \
--set audio icon = "" \
icon.color=$TERTIARY_COLOUR \
label.color=$TERTIARY_COLOUR \
background.color=$BACKGROUND_COLOUR \
background.height=32 \
--set audio \
background.padding_right=0 \
background.padding_left=0 \
script="$PLUGIN_DIR/volume.sh" \
--subscribe audio volume_change \
# Wifi
sketchybar --add item wifi right \
--set wifi script="$PLUGIN_DIR/wifi.sh" \
update_freq=60 \
background.padding_right=0 \
background.padding_left=0 \
label.padding_left=0
##### Force all scripts to run the first time (never do this in a script) #####
sketchybar --update