diff --git a/dot_config/aerospace/aerospace.toml b/dot_config/aerospace/aerospace.toml index 810dfbd..9ce4448 100644 --- a/dot_config/aerospace/aerospace.toml +++ b/dot_config/aerospace/aerospace.toml @@ -11,7 +11,16 @@ after-login-command = [] # You can use it to add commands that run after AeroSpace startup. # 'after-startup-command' is run after 'after-login-command' # Available commands : https://nikitabobko.github.io/AeroSpace/commands -after-startup-command = [] + +# Run Sketchybar together with AeroSpace +# sketchbar has a built-in detection of already running process, +# so it won't be run twice on AeroSpace restart +after-startup-command = ['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 start-at-login = false @@ -55,7 +64,7 @@ inner.horizontal = 20 inner.vertical = 20 outer.left = [{monitor."sidecar" = 0}, 20] outer.bottom = [{monitor."sidecar" = 0}, 20] -outer.top = [{monitor."sidecar" = 0}, 20] +outer.top = [{monitor."sidecar" = 0}, 40] outer.right = [{monitor."sidecar" = 0}, 20] # 'main' binding mode declaration @@ -111,23 +120,23 @@ alt-shift-equal = 'resize smart +50' alt-1 = 'workspace 1' alt-2 = 'workspace 2' alt-3 = 'workspace 3' -alt-4 = 'workspace 4' -alt-5 = 'workspace 5' -alt-6 = 'workspace 6' -alt-7 = 'workspace 7' -alt-8 = 'workspace 8' -alt-9 = 'workspace 9' +# alt-4 = 'workspace 4' +# alt-5 = 'workspace 5' +# alt-6 = 'workspace 6' +# alt-7 = 'workspace 7' +# alt-8 = 'workspace 8' +# alt-9 = 'workspace 9' # See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace alt-shift-1 = 'move-node-to-workspace 1' alt-shift-2 = 'move-node-to-workspace 2' alt-shift-3 = 'move-node-to-workspace 3' -alt-shift-4 = 'move-node-to-workspace 4' -alt-shift-5 = 'move-node-to-workspace 5' -alt-shift-6 = 'move-node-to-workspace 6' -alt-shift-7 = 'move-node-to-workspace 7' -alt-shift-8 = 'move-node-to-workspace 8' -alt-shift-9 = 'move-node-to-workspace 9' +# alt-shift-4 = 'move-node-to-workspace 4' +# alt-shift-5 = 'move-node-to-workspace 5' +# alt-shift-6 = 'move-node-to-workspace 6' +# alt-shift-7 = 'move-node-to-workspace 7' +# alt-shift-8 = 'move-node-to-workspace 8' +# alt-shift-9 = 'move-node-to-workspace 9' # See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth alt-tab = 'workspace-back-and-forth' diff --git a/dot_config/sketchybar/executable_sketchybarrc b/dot_config/sketchybar/executable_sketchybarrc new file mode 100644 index 0000000..97e500b --- /dev/null +++ b/dot_config/sketchybar/executable_sketchybarrc @@ -0,0 +1,107 @@ +# This is a demo config to showcase some of the most important commands. +# It is meant to be changed and configured, as it is intentionally kept sparse. +# For a (much) more advanced configuration example see my dotfiles: +# https://github.com/FelixKratz/dotfiles + +PLUGIN_DIR="$CONFIG_DIR/plugins" + +##### Bar Appearance ##### +# Configuring the general appearance of the bar. +# These are only some of the options available. For all options see: +# https://felixkratz.github.io/SketchyBar/config/bar +# 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=48 blur_radius=30 color=0x40000000 + +##### 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=( + padding_left=5 + padding_right=5 + icon.font="Symbols Nerd Font:Regular:14.0" + label.font=".AppleSystemUIFont:Medium:14.0" + icon.color=0xffffffff + label.color=0xffffffff + icon.padding_left=4 + icon.padding_right=4 + label.padding_left=4 + label.padding_right=4 + y_offset=6 +) +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=( +# space="$sid" +# icon="${SPACE_ICONS[i]}" +# icon.padding_left=7 +# icon.padding_right=7 +# background.color=0x40ffffff +# background.corner_radius=5 +# background.height=25 +# 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 + +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 + +##### 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 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=10 icon=" " 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 + +##### Force all scripts to run the first time (never do this in a script) ##### +sketchybar --update diff --git a/dot_config/sketchybar/plugins/executable_aerospace.sh b/dot_config/sketchybar/plugins/executable_aerospace.sh new file mode 100644 index 0000000..6114c3d --- /dev/null +++ b/dot_config/sketchybar/plugins/executable_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/executable_battery.sh b/dot_config/sketchybar/plugins/executable_battery.sh new file mode 100644 index 0000000..9dd9627 --- /dev/null +++ b/dot_config/sketchybar/plugins/executable_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/executable_clock.sh b/dot_config/sketchybar/plugins/executable_clock.sh new file mode 100644 index 0000000..6cc739b --- /dev/null +++ b/dot_config/sketchybar/plugins/executable_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 '+%d/%m %H:%M')" + diff --git a/dot_config/sketchybar/plugins/executable_front_app.sh b/dot_config/sketchybar/plugins/executable_front_app.sh new file mode 100644 index 0000000..fb6d0b3 --- /dev/null +++ b/dot_config/sketchybar/plugins/executable_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/executable_space.sh b/dot_config/sketchybar/plugins/executable_space.sh new file mode 100644 index 0000000..b8602b5 --- /dev/null +++ b/dot_config/sketchybar/plugins/executable_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/executable_volume.sh b/dot_config/sketchybar/plugins/executable_volume.sh new file mode 100644 index 0000000..6e69a5d --- /dev/null +++ b/dot_config/sketchybar/plugins/executable_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