diff --git a/.skhdrc b/.skhdrc index d266e91..a7afad4 100644 --- a/.skhdrc +++ b/.skhdrc @@ -163,6 +163,9 @@ cmd - return : /Applications/kitty.app/Contents/MacOS/kitty --single-instance -d # restart yabai shift + cmd - r: yabai --restart-service +# restart skhd +shift + cmd - s: skhd --restart-service + # send to next display cmd + shift - l : yabai -m window --display next; yabai -m display --focus next @@ -177,3 +180,11 @@ ctrl - right : yabai -m space --focus next; ctrl - left : yabai -m space --focus prev; +# Open dmenu +cmd - space: open -a dmenu-mac + +# Delete curr space +cmd + ctrl - backspace: yabai -m space --destroy + +# Open finder +cmd - e: open -a Finder \ No newline at end of file diff --git a/.yabairc b/.yabairc index bb466fc..9bb15e1 100755 --- a/.yabairc +++ b/.yabairc @@ -10,7 +10,7 @@ yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa" sudo yabai --load-sa # - +#open -a dmenu-mac # global settings yabai -m config \ mouse_follows_focus on \ diff --git a/.zshrc b/.zshrc new file mode 100644 index 0000000..8e65427 --- /dev/null +++ b/.zshrc @@ -0,0 +1,120 @@ +# If you come from bash you might have to change your $PATH. +# export PATH=$HOME/bin:/usr/local/bin:$PATH + +# Path to your oh-my-zsh installation. +export ZSH="$HOME/.oh-my-zsh" + +# Set name of the theme to load --- if set to "random", it will +# load a random theme each time oh-my-zsh is loaded, in which case, +# to know which specific one was loaded, run: echo $RANDOM_THEME +# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes +ZSH_THEME="robbyrussell" # set by `omz` + +# Set list of themes to pick from when loading at random +# Setting this variable when ZSH_THEME=random will cause zsh to load +# a theme from this variable instead of looking in $ZSH/themes/ +# If set to an empty array, this variable will have no effect. +# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) + +# Uncomment the following line to use case-sensitive completion. +# CASE_SENSITIVE="true" + +# Uncomment the following line to use hyphen-insensitive completion. +# Case-sensitive completion must be off. _ and - will be interchangeable. +# HYPHEN_INSENSITIVE="true" + +# Uncomment one of the following lines to change the auto-update behavior +# zstyle ':omz:update' mode disabled # disable automatic updates +# zstyle ':omz:update' mode auto # update automatically without asking +# zstyle ':omz:update' mode reminder # just remind me to update when it's time + +# Uncomment the following line to change how often to auto-update (in days). +# zstyle ':omz:update' frequency 13 + +# Uncomment the following line if pasting URLs and other text is messed up. +# DISABLE_MAGIC_FUNCTIONS="true" + +# Uncomment the following line to disable colors in ls. +# DISABLE_LS_COLORS="true" + +# Uncomment the following line to disable auto-setting terminal title. +# DISABLE_AUTO_TITLE="true" + +# Uncomment the following line to enable command auto-correction. +# ENABLE_CORRECTION="true" + +# Uncomment the following line to display red dots whilst waiting for completion. +# You can also set it to another string to have that shown instead of the default red dots. +# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f" +# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765) +# COMPLETION_WAITING_DOTS="true" + +# Uncomment the following line if you want to disable marking untracked files +# under VCS as dirty. This makes repository status check for large repositories +# much, much faster. +# DISABLE_UNTRACKED_FILES_DIRTY="true" + +# Uncomment the following line if you want to change the command execution time +# stamp shown in the history command output. +# You can set one of the optional three formats: +# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" +# or set a custom format using the strftime function format specifications, +# see 'man strftime' for details. +# HIST_STAMPS="mm/dd/yyyy" + +# Would you like to use another custom folder than $ZSH/custom? +# ZSH_CUSTOM=/path/to/new-custom-folder + +# Which plugins would you like to load? +# Standard plugins can be found in $ZSH/plugins/ +# Custom plugins may be added to $ZSH_CUSTOM/plugins/ +# Example format: plugins=(rails git textmate ruby lighthouse) +# Add wisely, as too many plugins slow down shell startup. +plugins=(git) + +source $ZSH/oh-my-zsh.sh + +# User configuration + +# export MANPATH="/usr/local/man:$MANPATH" + +# You may need to manually set your language environment +# export LANG=en_US.UTF-8 + +# Preferred editor for local and remote sessions +# if [[ -n $SSH_CONNECTION ]]; then +# export EDITOR='vim' +# else +# export EDITOR='mvim' +# fi + +# Compilation flags +# export ARCHFLAGS="-arch x86_64" + +# Set personal aliases, overriding those provided by oh-my-zsh libs, +# plugins, and themes. Aliases can be placed here, though oh-my-zsh +# users are encouraged to define aliases within the ZSH_CUSTOM folder. +# For a full list of active aliases, run `alias`. +# +# Example aliases +# alias zshconfig="mate ~/.zshrc" +# alias ohmyzsh="mate ~/.oh-my-zsh" + +eval $(/opt/homebrew/bin/brew shellenv) + + +export PATH="/opt/homebrew/opt/llvm/bin:$PATH" +export LDFLAGS="-L/opt/homebrew/opt/llvm/lib" +export CPPFLAGS="-I/opt/homebrew/opt/llvm/include" + +export CLANGPATH="" + +alias cat=bat + + + + + + +alias xo=open +alias em="emacs -nw" diff --git a/bottom_bar/#sketchybarrc# b/bottom_bar/#sketchybarrc# new file mode 100755 index 0000000..9addc8c --- /dev/null +++ b/bottom_bar/#sketchybarrc# @@ -0,0 +1,104 @@ +# This is a demo config to show some of the most important commands more easily. +# This is meant to be changed and configured, as it is intentionally kept sparse. +# For a more advanced configuration example see my dotfiles: +# https://github.com/FelixKratz/dotfiles +CONFIG_DIR="/Users/federico/.config/bottom_bar" +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 + +bottom_bar --bar height=28 \ + position=bottom \ + sticky=off \ + padding_left=10 \ + padding_right=10 \ + color=0x15ffffff + + + + +##### Changing Defaults ##### +# We now change some default values that are applied to all further items +# For a full list of all available item properties see: +# https://felixkratz.github.io/SketchyBar/config/items + +bottom_bar --default icon.font="Hack Nerd Font:Bold:17.0" \ + icon.color=0xffffffff \ + label.font="Hack Nerd Font:Regular:14.0" \ + label.color=0xffffffff \ + padding_left=5 \ + padding_right=5 \ + label.padding_left=4 \ + label.padding_right=4 \ + icon.padding_left=4 \ + icon.padding_right=4 + + + +##### Adding Mission Control Space Indicators ##### +# Now we 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)) + bottom_bar --add space space.$sid left \ + --set space.$sid space=$sid \ + icon=${SPACE_ICONS[i]} \ + icon.font="Hack Nerd Font:Regular:17.0" \ + background.color=0x44ffffff \ + background.height=20 \ + background.drawing=off \ + label.drawing=off \ + script="$PLUGIN_DIR/space.sh" \ + click_script="yabai -m space --focus $sid" +done + + + +##### 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 + +bottom_bar --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 script="$PLUGIN_DIR/battery.sh" \ + update_freq=120 \ + --subscribe battery system_woke power_source_change \ + --add item temp right \ + --set temp script="$PLUGIN_DIR/temperature.sh" \ + update_freq=10 \ + --add item wifi right \ + --set wifi script="$PLUGIN_DIR/wifi.sh" \ + --subscribe wifi wifi_change \ + --add item cpu right \ + --set cpu script="$PLUGIN_DIR/cpu.sh" \ + update_freq=10 \ +##### Finalizing Setup ##### +# The below command is only needed at the end of the initial configuration to +# force all scripts to run the first time, it should never be run in an item script. + +bottom_bar --update diff --git a/bottom_bar/plugins/battery.sh b/bottom_bar/plugins/battery.sh new file mode 100755 index 0000000..f960fa4 --- /dev/null +++ b/bottom_bar/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 +bottom_bar --set $NAME icon="$ICON" label="${PERCENTAGE}%" diff --git a/bottom_bar/plugins/battery.sh~ b/bottom_bar/plugins/battery.sh~ new file mode 100755 index 0000000..d29768b --- /dev/null +++ b/bottom_bar/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/bottom_bar/plugins/clock.sh b/bottom_bar/plugins/clock.sh new file mode 100755 index 0000000..1fce847 --- /dev/null +++ b/bottom_bar/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 + +bottom_bar --set $NAME label="$(date '+%d/%m %H:%M')" + diff --git a/bottom_bar/plugins/clock.sh~ b/bottom_bar/plugins/clock.sh~ new file mode 100755 index 0000000..1a99c61 --- /dev/null +++ b/bottom_bar/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 '+%d/%m %H:%M')" + diff --git a/bottom_bar/plugins/cpu.sh b/bottom_bar/plugins/cpu.sh new file mode 100755 index 0000000..5394d24 --- /dev/null +++ b/bottom_bar/plugins/cpu.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +cpu_percent=$(top -l 2 | grep -E "^CPU" | tail -1 | awk '{ print $3 + $5"%" }') + +bottom_bar --set $NAME icon=󰍛 label="${cpu_percent}" + + diff --git a/bottom_bar/plugins/cpu.sh~ b/bottom_bar/plugins/cpu.sh~ new file mode 100755 index 0000000..2264857 --- /dev/null +++ b/bottom_bar/plugins/cpu.sh~ @@ -0,0 +1,7 @@ +#!/bin/bash + +cpu_percent=$(top -l 2 | grep -E "^CPU" | tail -1 | awk '{ print $3 + $5"%" }') + +sketchybar --set $NAME icon=󰍛 label="${cpu_percent}" + + diff --git a/bottom_bar/plugins/front_app.sh b/bottom_bar/plugins/front_app.sh new file mode 100755 index 0000000..cdfc137 --- /dev/null +++ b/bottom_bar/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/bottom_bar/plugins/memory.sh b/bottom_bar/plugins/memory.sh new file mode 100755 index 0000000..1b3c6ce --- /dev/null +++ b/bottom_bar/plugins/memory.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +MEMORY=$(memory_pressure | tail -n 1 | awk '{print $5}') + +bottom_bar --set $NAME icon=󰍛 label="${MEMORY}" diff --git a/bottom_bar/plugins/memory.sh~ b/bottom_bar/plugins/memory.sh~ new file mode 100755 index 0000000..bbf812d --- /dev/null +++ b/bottom_bar/plugins/memory.sh~ @@ -0,0 +1,5 @@ +#!/bin/bash + +MEMORY=$(memory_pressure | tail -n 1 | awk '{print $5}') + +sketchybar --set $NAME icon=󰍛 label="${MEMORY}" diff --git a/bottom_bar/plugins/space.sh b/bottom_bar/plugins/space.sh new file mode 100755 index 0000000..2ac2248 --- /dev/null +++ b/bottom_bar/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 + +bottom_bar --set $NAME background.drawing=$SELECTED diff --git a/bottom_bar/plugins/space.sh~ b/bottom_bar/plugins/space.sh~ new file mode 100755 index 0000000..3ae63f9 --- /dev/null +++ b/bottom_bar/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/bottom_bar/plugins/temp_sensor b/bottom_bar/plugins/temp_sensor new file mode 100755 index 0000000..39ba823 Binary files /dev/null and b/bottom_bar/plugins/temp_sensor differ diff --git a/bottom_bar/plugins/temperature.sh b/bottom_bar/plugins/temperature.sh new file mode 100755 index 0000000..63b469b --- /dev/null +++ b/bottom_bar/plugins/temperature.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +TEMP=$(~/.config/sketchybar/plugins/temp_sensor) + +# The item invoking this script (name $NAME) will get its icon and label +# updated with the current battery status +bottom_bar --set $NAME icon= label="${TEMP}°" diff --git a/bottom_bar/plugins/temperature.sh~ b/bottom_bar/plugins/temperature.sh~ new file mode 100755 index 0000000..150d605 --- /dev/null +++ b/bottom_bar/plugins/temperature.sh~ @@ -0,0 +1,7 @@ +#!/bin/sh + +TEMP=$(~/.config/sketchybar/plugins/temp_sensor) + +# The item invoking this script (name $NAME) will get its icon and label +# updated with the current battery status +sketchybar --set $NAME icon= label="${TEMP}°" diff --git a/bottom_bar/plugins/volume.sh b/bottom_bar/plugins/volume.sh new file mode 100755 index 0000000..96df9f8 --- /dev/null +++ b/bottom_bar/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 + + bottom_bar --set $NAME icon="$ICON" label="$VOLUME%" +fi diff --git a/bottom_bar/plugins/volume.sh~ b/bottom_bar/plugins/volume.sh~ new file mode 100755 index 0000000..0c9c1b0 --- /dev/null +++ b/bottom_bar/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/bottom_bar/plugins/wifi.sh b/bottom_bar/plugins/wifi.sh new file mode 100755 index 0000000..4a721dc --- /dev/null +++ b/bottom_bar/plugins/wifi.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env sh + +CURRENT_WIFI="$(/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I)" +SSID="$(echo "$CURRENT_WIFI" | grep -o "SSID: .*" | sed 's/^SSID: //')" + + +if [ "$SSID" = "" ]; then + bottom_bar --set $NAME icon=󰤮 label="DISC" +else + bottom_bar --set $NAME icon= label="CONN" +fi diff --git a/bottom_bar/plugins/wifi.sh~ b/bottom_bar/plugins/wifi.sh~ new file mode 100755 index 0000000..bff433b --- /dev/null +++ b/bottom_bar/plugins/wifi.sh~ @@ -0,0 +1,11 @@ +#!/usr/bin/env sh + +CURRENT_WIFI="$(/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I)" +SSID="$(echo "$CURRENT_WIFI" | grep -o "SSID: .*" | sed 's/^SSID: //')" + + +if [ "$SSID" = "" ]; then + sketchybar --set $NAME icon=󰤮 label="DISC" +else + sketchybar --set $NAME icon= label="CONN" +fi diff --git a/bottom_bar/sketchybarrc b/bottom_bar/sketchybarrc new file mode 100755 index 0000000..8618d90 --- /dev/null +++ b/bottom_bar/sketchybarrc @@ -0,0 +1,104 @@ +# This is a demo config to show some of the most important commands more easily. +# This is meant to be changed and configured, as it is intentionally kept sparse. +# For a more advanced configuration example see my dotfiles: +# https://github.com/FelixKratz/dotfiles +CONFIG_DIR="/Users/federico/.config/bottom_bar" +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 + +bottom_bar --bar height=28 \ + position=bottom \ + sticky=off \ + padding_left=10 \ + padding_right=10 \ + color=0x15ffffff + + + + +##### Changing Defaults ##### +# We now change some default values that are applied to all further items +# For a full list of all available item properties see: +# https://felixkratz.github.io/SketchyBar/config/items + +bottom_bar --default icon.font="Hack Nerd Font:Bold:17.0" \ + icon.color=0xffffffff \ + label.font="Hack Nerd Font:Regular:14.0" \ + label.color=0xffffffff \ + padding_left=5 \ + padding_right=5 \ + label.padding_left=4 \ + label.padding_right=4 \ + icon.padding_left=4 \ + icon.padding_right=4 + + + +##### Adding Mission Control Space Indicators ##### +# Now we 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)) + bottom_bar --add space space.$sid left \ + --set space.$sid space=$sid \ + icon=${SPACE_ICONS[i]} \ + icon.font="Hack Nerd Font:Regular:17.0" \ + background.color=0x44ffffff \ + background.height=20 \ + background.drawing=off \ + label.drawing=off \ + script="$PLUGIN_DIR/space.sh" \ + click_script="yabai -m space --focus $sid" +done + + + +##### 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 + +bottom_bar --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 script="$PLUGIN_DIR/battery.sh" \ + update_freq=120 \ + --subscribe battery system_woke power_source_change \ + --add item temp right \ + --set temp script="$PLUGIN_DIR/temperature.sh" \ + update_freq=10 \ + --add item wifi right \ + --set wifi script="$PLUGIN_DIR/wifi.sh" \ + --subscribe wifi wifi_change \ + --add item cpu right \ + --set cpu script="$PLUGIN_DIR/cpu.sh" \ + update_freq=10 \ +##### Finalizing Setup ##### +# The below command is only needed at the end of the initial configuration to +# force all scripts to run the first time, it should never be run in an item script. + +bottom_bar --update diff --git a/sketchybar/sketchybarrc~ b/bottom_bar/sketchybarrc~ similarity index 72% rename from sketchybar/sketchybarrc~ rename to bottom_bar/sketchybarrc~ index 64663e6..0a91c26 100755 --- a/sketchybar/sketchybarrc~ +++ b/bottom_bar/sketchybarrc~ @@ -2,7 +2,7 @@ # This is meant to be changed and configured, as it is intentionally kept sparse. # For a more advanced configuration example see my dotfiles: # https://github.com/FelixKratz/dotfiles -CONFIG_DIR="/Users/federico/.config/sketchybar" +CONFIG_DIR="/Users/federico/.config/bottom_bar" PLUGIN_DIR="$CONFIG_DIR/plugins" ##### Bar Appearance ##### @@ -12,21 +12,24 @@ PLUGIN_DIR="$CONFIG_DIR/plugins" # If you are looking for other colors, see the color picker: # https://felixkratz.github.io/SketchyBar/config/tricks#color-picker -sketchybar --bar height=32 \ - position=top \ +bottom_bar --bar height=28 \ + position=bottom \ sticky=off \ padding_left=10 \ padding_right=10 \ color=0x15ffffff + + + ##### Changing Defaults ##### # We now change some default values that are applied to all further items # For a full list of all available item properties see: # https://felixkratz.github.io/SketchyBar/config/items -sketchybar --default icon.font="Hack Nerd Font:Bold:17.0" \ +bottom_bar --default icon.font="Hack Nerd Font:Bold:17.0" \ icon.color=0xffffffff \ - label.font="Hack Nerd Font:Bold:14.0" \ + label.font="Hack Nerd Font:Regular:14.0" \ label.color=0xffffffff \ padding_left=5 \ padding_right=5 \ @@ -35,6 +38,8 @@ sketchybar --default icon.font="Hack Nerd Font:Bold:17.0" \ icon.padding_left=4 \ icon.padding_right=4 + + ##### Adding Mission Control Space Indicators ##### # Now we add some mission control spaces: # https://felixkratz.github.io/SketchyBar/config/components#space----associate-mission-control-spaces-with-an-item @@ -45,32 +50,18 @@ SPACE_ICONS=("1" "2" "3" "4" "5" "6" "7" "8" "9" "10") for i in "${!SPACE_ICONS[@]}" do sid=$(($i+1)) - sketchybar --add space space.$sid left \ + bottom_bar --add space space.$sid left \ --set space.$sid space=$sid \ icon=${SPACE_ICONS[i]} \ background.color=0x44ffffff \ - background.corner_radius=5 \ - background.height=20 \ + background.height=20 \ background.drawing=off \ label.drawing=off \ script="$PLUGIN_DIR/space.sh" \ click_script="yabai -m space --focus $sid" done -##### Adding Left Items ##### -# We add some regular items to the left side of the bar -# only the properties deviating from the current defaults need to be set -sketchybar --add item space_separator left \ - --set space_separator icon= \ - padding_left=10 \ - padding_right=10 \ - label.drawing=off \ - \ - --add item front_app left \ - --set front_app script="$PLUGIN_DIR/front_app.sh" \ - icon.drawing=off \ - --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. @@ -83,7 +74,7 @@ sketchybar --add item space_separator left \ # 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 \ +bottom_bar --add item clock right \ --set clock update_freq=10 \ icon= \ script="$PLUGIN_DIR/clock.sh" \ @@ -95,10 +86,18 @@ sketchybar --add item clock right \ --add item battery right \ --set battery script="$PLUGIN_DIR/battery.sh" \ update_freq=120 \ - --subscribe battery system_woke power_source_change - + --subscribe battery system_woke power_source_change \ + --add item temp right \ + --set temp script="$PLUGIN_DIR/temperature.sh" \ + update_freq=10 \ + --add item wifi right \ + --set wifi script="$PLUGIN_DIR/wifi.sh" \ + --subscribe wifi wifi_change \ + --add item cpu right \ + --set cpu script="$PLUGIN_DIR/cpu.sh" \ + update_freq=10 \ ##### Finalizing Setup ##### # The below command is only needed at the end of the initial configuration to # force all scripts to run the first time, it should never be run in an item script. -sketchybar --update +bottom_bar --update diff --git a/sketchybar/plugins/cpu.sh b/sketchybar/plugins/cpu.sh new file mode 100755 index 0000000..2264857 --- /dev/null +++ b/sketchybar/plugins/cpu.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +cpu_percent=$(top -l 2 | grep -E "^CPU" | tail -1 | awk '{ print $3 + $5"%" }') + +sketchybar --set $NAME icon=󰍛 label="${cpu_percent}" + + diff --git a/sketchybar/plugins/memory.sh b/sketchybar/plugins/memory.sh new file mode 100755 index 0000000..bbf812d --- /dev/null +++ b/sketchybar/plugins/memory.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +MEMORY=$(memory_pressure | tail -n 1 | awk '{print $5}') + +sketchybar --set $NAME icon=󰍛 label="${MEMORY}" diff --git a/sketchybar/plugins/temp_sensor b/sketchybar/plugins/temp_sensor new file mode 100755 index 0000000..39ba823 Binary files /dev/null and b/sketchybar/plugins/temp_sensor differ diff --git a/sketchybar/plugins/temperature.sh b/sketchybar/plugins/temperature.sh index d29768b..150d605 100755 --- a/sketchybar/plugins/temperature.sh +++ b/sketchybar/plugins/temperature.sh @@ -1,28 +1,7 @@ #!/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 +TEMP=$(~/.config/sketchybar/plugins/temp_sensor) # 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}%" +sketchybar --set $NAME icon= label="${TEMP}°" diff --git a/sketchybar/plugins/wifi.sh b/sketchybar/plugins/wifi.sh new file mode 100755 index 0000000..bff433b --- /dev/null +++ b/sketchybar/plugins/wifi.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env sh + +CURRENT_WIFI="$(/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I)" +SSID="$(echo "$CURRENT_WIFI" | grep -o "SSID: .*" | sed 's/^SSID: //')" + + +if [ "$SSID" = "" ]; then + sketchybar --set $NAME icon=󰤮 label="DISC" +else + sketchybar --set $NAME icon= label="CONN" +fi diff --git a/sketchybar/plugins/windows.py b/sketchybar/plugins/windows.py new file mode 100755 index 0000000..d26ec2a --- /dev/null +++ b/sketchybar/plugins/windows.py @@ -0,0 +1,48 @@ +#!/opt/homebrew/bin/python3 + +import os +import json + +def get_current_space_index(): + space_obj = json.loads(os.popen("yabai -m query --spaces --space").read()) + return space_obj["index"] + +def get_space_windows(idx): + windows_obj = json.loads(os.popen("yabai -m query --windows --space "+str(idx)).read()) + return windows_obj + +def clear_sketchybar_items_string(): + bar_obj = json.loads(os.popen("sketchybar --query bar").read()) + bar_items = bar_obj["items"] + cmd = "" + for item in bar_items: + if item == "window_handler": + continue + cmd+=" --remove "+item + return cmd + + +def add_sketchybar_items(windows): + cmd = "sketchybar " + clear_sketchybar_items_string() + for i,w in enumerate(windows): + title = (w["title"][:28] + '..') if len(w["title"]) > 30 else w["title"] + cmd+=" --add item window_"+str(i)+" left" + cmd+=" --set window_"+str(i)+" label='"+title+"'" + cmd+=" click_script='yabai -m window --focus "+str(w["id"])+"'" + if w["has-focus"]: + cmd+=" label.color=0xff7ed321" + os.system(cmd) + + + + + +idx=get_current_space_index() +windows = get_space_windows(idx) +#windows = sorted(windows,key=lambda x: x["id"]) + +print("---") +add_sketchybar_items(windows) +print("---") + + diff --git a/sketchybar/sketchybarrc b/sketchybar/sketchybarrc index 7839df5..7c2948d 100755 --- a/sketchybar/sketchybarrc +++ b/sketchybar/sketchybarrc @@ -26,79 +26,30 @@ sketchybar --bar height=28 \ sketchybar --default icon.font="Hack Nerd Font:Bold:17.0" \ icon.color=0xffffffff \ - label.font="Hack Nerd Font:Bold:14.0" \ + label.font="Hack Nerd Font:Regular:14.0" \ label.color=0xffffffff \ - padding_left=5 \ padding_right=5 \ + padding_left=5 \ label.padding_left=4 \ label.padding_right=4 \ icon.padding_left=4 \ icon.padding_right=4 -##### Adding Mission Control Space Indicators ##### -# Now we 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)) - sketchybar --add space space.$sid left \ - --set space.$sid space=$sid \ - icon=${SPACE_ICONS[i]} \ - background.color=0x44ffffff \ - background.corner_radius=5 \ - background.height=20 \ - background.drawing=off \ - label.drawing=off \ - script="$PLUGIN_DIR/space.sh" \ - click_script="yabai -m space --focus $sid" -done + + + ##### Adding Left Items ##### # We add some regular items to the left side of the bar # only the properties deviating from the current defaults need to be set -sketchybar --add item space_separator left \ - --set space_separator icon= \ - padding_left=10 \ - padding_right=10 \ - label.drawing=off \ - \ - --add item front_app left \ - --set front_app script="$PLUGIN_DIR/front_app.sh" \ +sketchybar --add item window_handler left \ + --set window_handler script="$PLUGIN_DIR/windows.py" \ icon.drawing=off \ - --subscribe front_app front_app_switched + --subscribe window_handler front_app_switched space_windows_change space_change display_change -##### 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 script="$PLUGIN_DIR/battery.sh" \ - update_freq=120 \ - --subscribe battery system_woke power_source_change - -##### Finalizing Setup ##### -# The below command is only needed at the end of the initial configuration to -# force all scripts to run the first time, it should never be run in an item script. sketchybar --update