diff --git a/.config/git/ignore b/.config/git/ignore index e43b0f9..0cd2e7a 100644 --- a/.config/git/ignore +++ b/.config/git/ignore @@ -1 +1,3 @@ .DS_Store +.twig-cs-fixer.cache +.php-cs-fixer.cache diff --git a/.config/php-cs-fixer/php-cs-fixer.php b/.config/php-cs-fixer/php-cs-fixer.php new file mode 100644 index 0000000..bb7be38 --- /dev/null +++ b/.config/php-cs-fixer/php-cs-fixer.php @@ -0,0 +1,28 @@ + true, + 'braces_position' => [ + 'anonymous_classes_opening_brace' => 'same_line', + 'anonymous_functions_opening_brace' => 'same_line', + 'classes_opening_brace' => 'same_line', + 'control_structures_opening_brace' => 'same_line', + 'functions_opening_brace' => 'same_line', + ], + 'no_leading_import_slash' => false, + 'not_operator_with_space' => false, + 'not_operator_with_successor_space' => false, + 'constant_case' => [ + 'case' => 'upper' + ], +]; + +$finder = (new PhpCsFixer\Finder()) + ->in(__DIR__); + +return (new PhpCsFixer\Config()) + ->setRules($rules) + ->setFinder($finder) + ->setIndent(' ') + ->setLineEnding("\n") + ->setRiskyAllowed(true); diff --git a/.config/pint/pint.json b/.config/pint/pint.json new file mode 100644 index 0000000..4c46d36 --- /dev/null +++ b/.config/pint/pint.json @@ -0,0 +1,15 @@ +{ + "preset": "laravel", + "rules": { + "braces_position": { + "anonymous_classes_opening_brace": "same_line", + "anonymous_functions_opening_brace": "same_line", + "classes_opening_brace": "same_line", + "control_structures_opening_brace": "same_line", + "functions_opening_brace": "same_line" + }, + "no_leading_import_slash": false, + "not_operator_with_space": false, + "not_operator_with_successor_space": false + } +} diff --git a/.config/sketchybar/plugins/battery.sh b/.config/sketchybar/plugins/battery.sh new file mode 100755 index 0000000..9dd9627 --- /dev/null +++ b/.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/.config/sketchybar/plugins/clock.sh b/.config/sketchybar/plugins/clock.sh new file mode 100755 index 0000000..32e4252 --- /dev/null +++ b/.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 %m/%d %I:%M%p')" + diff --git a/.config/sketchybar/plugins/front_app.sh b/.config/sketchybar/plugins/front_app.sh new file mode 100755 index 0000000..fb6d0b3 --- /dev/null +++ b/.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/.config/sketchybar/plugins/space.sh b/.config/sketchybar/plugins/space.sh new file mode 100755 index 0000000..b8602b5 --- /dev/null +++ b/.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/.config/sketchybar/plugins/volume.sh b/.config/sketchybar/plugins/volume.sh new file mode 100755 index 0000000..6e69a5d --- /dev/null +++ b/.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/.config/sketchybar/sketchybarrc b/.config/sketchybar/sketchybarrc new file mode 100755 index 0000000..3a6292d --- /dev/null +++ b/.config/sketchybar/sketchybarrc @@ -0,0 +1,91 @@ +# 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=40 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="OperatorMono Nerd Font:Bold:16.0" + label.font="OperatorMono Nerd Font:Medium:18.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[@]}" + +##### 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 + +##### 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/.config/yabai/yabairc b/.config/yabai/yabairc new file mode 100755 index 0000000..3ae490b --- /dev/null +++ b/.config/yabai/yabairc @@ -0,0 +1,47 @@ +#!/usr/bin/env sh + +# +# for this to work you must configure sudo such that +# it will be able to run the command without password +# +# see this wiki page for information: +# - https://github.com/koekeishiya/yabai/wiki/Installing-yabai-(latest-release)#configure-scripting-addition +# +# yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa" +# sudo yabai --load-sa +# + +# global settings +yabai -m config \ + external_bar all:40:0 \ + menubar_opacity 1.0 \ + mouse_follows_focus off \ + focus_follows_mouse off \ + display_arrangement_order default \ + window_origin_display default \ + window_placement second_child \ + window_insertion_point focused \ + window_zoom_persist on \ + window_shadow on \ + window_animation_duration 0.0 \ + window_animation_easing ease_out_circ \ + window_opacity_duration 0.0 \ + active_window_opacity 1.0 \ + normal_window_opacity 0.90 \ + window_opacity off \ + insert_feedback_color 0xffd75f5f \ + split_ratio 0.50 \ + split_type auto \ + auto_balance off \ + top_padding 12 \ + bottom_padding 12 \ + left_padding 12 \ + right_padding 12 \ + window_gap 06 \ + layout bsp \ + mouse_modifier fn \ + mouse_action1 move \ + mouse_action2 resize \ + mouse_drop_action swap + +echo "yabai configuration loaded.." diff --git a/.gitconfig b/.gitconfig index b0457de..dce1595 100644 --- a/.gitconfig +++ b/.gitconfig @@ -1,12 +1,9 @@ -[gpg] - format = ssh [user] email = 2636402+wonderfulfrog@users.noreply.github.com name = Devin Haska - signingkey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMsHM+4BN+DKbEW3toSbQh60k3b5qYQOE5bo/6gIJ7Y1 [core] editor = nvim -[commit] - gpgsign = true [init] defaultBranch = main +[include] + path = .config/git/gpg diff --git a/.gitignore b/.gitignore index ee213d9..fb710ff 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,8 @@ +# This is not the global .gitignore, that lives inside +# `.config/git/ignore`. +# This .gitignore is for this repo only. .DS_Store +.zshcustom .vscode/ .config/tmux/plugins .config/git/gpg diff --git a/.zshrc b/.zshrc index 484939b..4ed81b6 100644 --- a/.zshrc +++ b/.zshrc @@ -3,12 +3,20 @@ ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit/zinit.git" [ ! -d $ZINIT_HOME/.git ] && git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME" source "${ZINIT_HOME}/zinit.zsh" +zinit light Aloxaf/fzf-tab zinit light zsh-users/zsh-syntax-highlighting zinit light zsh-users/zsh-autosuggestions -zinit light Aloxaf/fzf-tab + +zicompinit; zicdreplay source <(fzf --zsh) if [ "$TERM_PROGRAM" != "Apple_Terminal" ]; then eval "$(oh-my-posh init zsh --config $HOME/.config/ohmyposh/config.toml)" fi + +# Platform-specific configuration lives inside .zshcustom. +# The file is ignored by the dotfiles git repo. +if [ -f $HOME/.zshcustom ]; then + source $HOME/.zshcustom +fi