81 lines
2.0 KiB
Bash
81 lines
2.0 KiB
Bash
#!/bin/bash
|
|
|
|
window_state() {
|
|
source "$CONFIG_DIR/colors.sh"
|
|
source "$CONFIG_DIR/icons.sh"
|
|
|
|
WINDOW=$(yabai -m query --windows --window)
|
|
STACK_INDEX=$(echo "$WINDOW" | jq '.["stack-index"]')
|
|
|
|
COLOR=$BAR_BORDER_COLOR
|
|
ICON=""
|
|
|
|
if [ "$(echo "$WINDOW" | jq '.["is-floating"]')" = "true" ]; then
|
|
ICON+=$YABAI_FLOAT
|
|
COLOR=$MAGENTA
|
|
elif [ "$(echo "$WINDOW" | jq '.["has-fullscreen-zoom"]')" = "true" ]; then
|
|
ICON+=$YABAI_FULLSCREEN_ZOOM
|
|
COLOR=$GREEN
|
|
elif [ "$(echo "$WINDOW" | jq '.["has-parent-zoom"]')" = "true" ]; then
|
|
ICON+=$YABAI_PARENT_ZOOM
|
|
COLOR=$BLUE
|
|
elif [[ $STACK_INDEX -gt 0 ]]; then
|
|
LAST_STACK_INDEX=$(yabai -m query --windows --window stack.last | jq '.["stack-index"]')
|
|
ICON+=$YABAI_STACK
|
|
LABEL="$(printf "[%s/%s]" "$STACK_INDEX" "$LAST_STACK_INDEX")"
|
|
COLOR=$RED
|
|
fi
|
|
|
|
args=(--animate sin 10 --bar border_color=$COLOR
|
|
--set $NAME icon.color=$COLOR)
|
|
|
|
[ -z "$LABEL" ] && args+=(label.width=0) \
|
|
|| args+=(label="$LABEL" label.width=40)
|
|
|
|
[ -z "$ICON" ] && args+=(icon.width=0) \
|
|
|| args+=(icon="$ICON" icon.width=30)
|
|
|
|
sketchybar -m "${args[@]}"
|
|
}
|
|
|
|
windows_on_spaces () {
|
|
CURRENT_SPACES="$(yabai -m query --displays | jq -r '.[].spaces | @sh')"
|
|
|
|
args=(--set spaces_bracket drawing=off
|
|
--set '/space\..*/' background.drawing=on
|
|
--animate sin 10)
|
|
|
|
while read -r line
|
|
do
|
|
for space in $line
|
|
do
|
|
icon_strip=" "
|
|
apps=$(yabai -m query --windows --space $space | jq -r ".[].app")
|
|
if [ "$apps" != "" ]; then
|
|
while IFS= read -r app; do
|
|
icon_strip+=" $($CONFIG_DIR/plugins/icon_map.sh "$app")"
|
|
done <<< "$apps"
|
|
fi
|
|
args+=(--set space.$space label="$icon_strip" label.drawing=on)
|
|
done
|
|
done <<< "$CURRENT_SPACES"
|
|
|
|
sketchybar -m "${args[@]}"
|
|
}
|
|
|
|
mouse_clicked() {
|
|
yabai -m window --toggle float
|
|
window_state
|
|
}
|
|
|
|
case "$SENDER" in
|
|
"mouse.clicked") mouse_clicked
|
|
;;
|
|
"forced") exit 0
|
|
;;
|
|
"window_focus") window_state
|
|
;;
|
|
"windows_on_spaces") windows_on_spaces
|
|
;;
|
|
esac
|