From a1dfbf653d56130b4d00f82eddb475570b2ddea8 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Thu, 17 Sep 2026 21:58:24 -0700 Subject: [PATCH] Adds powerline stuff. --- .config/starship.toml | 285 ++++++++++++++++++++++++++++++++++++++++++ .rc.d/aliases.sh | 68 ++++++++++ .rc.d/cargo.sh | 4 + .rc.d/ls-colors.md | 1 + .rc.d/ls-colors.sh | 2 +- .rc.d/noop.bash | 0 .rc.d/noop.zsh | 0 .rc.d/starship.sh | 64 ++++++++++ .tmux.conf | 22 ++++ 9 files changed, 445 insertions(+), 1 deletion(-) create mode 100644 .config/starship.toml create mode 100755 .rc.d/cargo.sh create mode 100644 .rc.d/noop.bash create mode 100644 .rc.d/noop.zsh create mode 100644 .rc.d/starship.sh create mode 100644 .tmux.conf diff --git a/.config/starship.toml b/.config/starship.toml new file mode 100644 index 0000000..c8d9959 --- /dev/null +++ b/.config/starship.toml @@ -0,0 +1,285 @@ +"$schema" = 'https://starship.rs/config-schema.json' + +format = """ +[](red)\ +$os\ +$username\ +[](bg:peach fg:red)\ +$directory\ +[](bg:yellow fg:peach)\ +$git_branch\ +$git_status\ +[](fg:yellow bg:green)\ +$c\ +$rust\ +$golang\ +$nodejs\ +$bun\ +$php\ +$java\ +$kotlin\ +$haskell\ +$python\ +[](fg:green bg:sapphire)\ +$conda\ +[](fg:sapphire bg:lavender)\ +$time\ +[ ](fg:lavender)\ +$cmd_duration\ +$line_break\ +$character""" + +palette = 'catppuccin_mocha' + +[os] +disabled = false +style = "bg:red fg:crust" + +[os.symbols] +Windows = "" +Ubuntu = "󰕈" +SUSE = "" +Raspbian = "󰐿" +Mint = "󰣭" +Macos = "󰀵" +Manjaro = "" +Linux = "󰌽" +Gentoo = "󰣨" +Fedora = "󰣛" +Alpine = "" +Amazon = "" +Android = "" +AOSC = "" +Arch = "󰣇" +Artix = "󰣇" +CentOS = "" +Debian = "󰣚" +Redhat = "󱄛" +RedHatEnterprise = "󱄛" + +[username] +show_always = true +style_user = "bg:red fg:crust" +style_root = "bg:red fg:crust" +format = '[ $user]($style)' + +[directory] +style = "bg:peach fg:crust" +format = "[ $path ]($style)" +truncation_length = 3 +truncation_symbol = "…/" + +[directory.substitutions] +"Documents" = "󰈙 " +"Downloads" = " " +"Music" = "󰝚 " +"Pictures" = " " +"Developer" = "󰲋 " + +[git_branch] +symbol = "" +style = "bg:yellow" +format = '[[ $symbol $branch ](fg:crust bg:yellow)]($style)' + +[git_status] +style = "bg:yellow" +format = '[[($all_status$ahead_behind )](fg:crust bg:yellow)]($style)' + +[nodejs] +symbol = "" +style = "bg:green" +format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' + +[bun] +symbol = "" +style = "bg:green" +format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' + +[c] +symbol = " " +style = "bg:green" +format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' + +[rust] +symbol = "" +style = "bg:green" +format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' + +[golang] +symbol = "" +style = "bg:green" +format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' + +[php] +symbol = "" +style = "bg:green" +format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' + +[java] +symbol = " " +style = "bg:green" +format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' + +[kotlin] +symbol = "" +style = "bg:green" +format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' + +[haskell] +symbol = "" +style = "bg:green" +format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)' + +[python] +symbol = "" +style = "bg:green" +format = '[[ $symbol( $version)(\(#$virtualenv\)) ](fg:crust bg:green)]($style)' + +[docker_context] +symbol = "" +style = "bg:sapphire" +format = '[[ $symbol( $context) ](fg:crust bg:sapphire)]($style)' + +[conda] +symbol = "  " +style = "fg:crust bg:sapphire" +format = '[$symbol$environment ]($style)' +ignore_base = false + +[time] +disabled = false +time_format = "%R" +style = "bg:lavender" +format = '[[  $time ](fg:crust bg:lavender)]($style)' + +[line_break] +disabled = true + +[character] +disabled = false +success_symbol = '[❯](bold fg:green)' +error_symbol = '[❯](bold fg:red)' +vimcmd_symbol = '[❮](bold fg:green)' +vimcmd_replace_one_symbol = '[❮](bold fg:lavender)' +vimcmd_replace_symbol = '[❮](bold fg:lavender)' +vimcmd_visual_symbol = '[❮](bold fg:yellow)' + +[cmd_duration] +show_milliseconds = true +format = " in $duration " +style = "bg:lavender" +disabled = false +show_notifications = true +min_time_to_notify = 45000 + +[palettes.catppuccin_mocha] +rosewater = "#f5e0dc" +flamingo = "#f2cdcd" +pink = "#f5c2e7" +mauve = "#cba6f7" +red = "#f38ba8" +maroon = "#eba0ac" +peach = "#fab387" +yellow = "#f9e2af" +green = "#a6e3a1" +teal = "#94e2d5" +sky = "#89dceb" +sapphire = "#74c7ec" +blue = "#89b4fa" +lavender = "#b4befe" +text = "#cdd6f4" +subtext1 = "#bac2de" +subtext0 = "#a6adc8" +overlay2 = "#9399b2" +overlay1 = "#7f849c" +overlay0 = "#6c7086" +surface2 = "#585b70" +surface1 = "#45475a" +surface0 = "#313244" +base = "#1e1e2e" +mantle = "#181825" +crust = "#11111b" + +[palettes.catppuccin_frappe] +rosewater = "#f2d5cf" +flamingo = "#eebebe" +pink = "#f4b8e4" +mauve = "#ca9ee6" +red = "#e78284" +maroon = "#ea999c" +peach = "#ef9f76" +yellow = "#e5c890" +green = "#a6d189" +teal = "#81c8be" +sky = "#99d1db" +sapphire = "#85c1dc" +blue = "#8caaee" +lavender = "#babbf1" +text = "#c6d0f5" +subtext1 = "#b5bfe2" +subtext0 = "#a5adce" +overlay2 = "#949cbb" +overlay1 = "#838ba7" +overlay0 = "#737994" +surface2 = "#626880" +surface1 = "#51576d" +surface0 = "#414559" +base = "#303446" +mantle = "#292c3c" +crust = "#232634" + +[palettes.catppuccin_latte] +rosewater = "#dc8a78" +flamingo = "#dd7878" +pink = "#ea76cb" +mauve = "#8839ef" +red = "#d20f39" +maroon = "#e64553" +peach = "#fe640b" +yellow = "#df8e1d" +green = "#40a02b" +teal = "#179299" +sky = "#04a5e5" +sapphire = "#209fb5" +blue = "#1e66f5" +lavender = "#7287fd" +text = "#4c4f69" +subtext1 = "#5c5f77" +subtext0 = "#6c6f85" +overlay2 = "#7c7f93" +overlay1 = "#8c8fa1" +overlay0 = "#9ca0b0" +surface2 = "#acb0be" +surface1 = "#bcc0cc" +surface0 = "#ccd0da" +base = "#eff1f5" +mantle = "#e6e9ef" +crust = "#dce0e8" + +[palettes.catppuccin_macchiato] +rosewater = "#f4dbd6" +flamingo = "#f0c6c6" +pink = "#f5bde6" +mauve = "#c6a0f6" +red = "#ed8796" +maroon = "#ee99a0" +peach = "#f5a97f" +yellow = "#eed49f" +green = "#a6da95" +teal = "#8bd5ca" +sky = "#91d7e3" +sapphire = "#7dc4e4" +blue = "#8aadf4" +lavender = "#b7bdf8" +text = "#cad3f5" +subtext1 = "#b8c0e0" +subtext0 = "#a5adcb" +overlay2 = "#939ab7" +overlay1 = "#8087a2" +overlay0 = "#6e738d" +surface2 = "#5b6078" +surface1 = "#494d64" +surface0 = "#363a4f" +base = "#24273a" +mantle = "#1e2030" +crust = "#181926" diff --git a/.rc.d/aliases.sh b/.rc.d/aliases.sh index afa9438..ffdd3c1 100755 --- a/.rc.d/aliases.sh +++ b/.rc.d/aliases.sh @@ -210,3 +210,71 @@ alias wget-rip-lite='wget --page-requisites --convert-links --adjust-extension - alias mount-nas='mkdir -p ~/nas/tom && sshfs deepthought:/mnt/Data/Private/Homes/tom ~/nas/tom' alias installlocalbin='function f() { sudo install -m 755 -o root -g root "$1" /usr/local/bin ; unset -f f; } f' alias installuserbin='function f() { mkdir -p ~/bin ; cp "$1" ~/bin/ ; unset -f f; } f' + +packdir() { + # Check if an argument was provided + if [[ -z "$1" ]]; then + echo "Error: Missing folder name." >&2 + echo "Usage: packdir " >&2 + return 1 + fi + + # Strip any trailing slashes to prevent name formatting issues + local target="${1%/}" + + # Verify that the target exists and is a directory + if [[ ! -d "$target" ]]; then + echo "Error: Directory '$target' does not exist." >&2 + return 1 + fi + + # Prevent accidental destruction of root or parent references + if [[ "$target" == "." || "$target" == ".." || "$target" == "/" ]]; then + echo "Error: Refusing to compress critical path '$target'." >&2 + return 1 + fi + + local archive="${target}.tar.bz2" + + # Verify the archive file doesn't already exist to avoid accidental overwrite + if [[ -e "$archive" ]]; then + echo "Error: Archive '$archive' already exists." >&2 + return 1 + fi + + # Create archive and only remove the original folder if tar succeeds + tar -jcvf "$archive" "$target" && rm -rf "$target" +} + +clone() { + if [ -z "$1" -o "$1" = " " -o -z "$2" -o "$2" = " " ]; then + echo "Clones the repo into \$PROJECT_ROOT/" + echo "usage: clone " + return + fi + + git clone "$1" "$2" +} + +# Use like this +# some-command && sleep 1 ; alert-me -s -t -f --success-message --success-title --failure-message --failure-title --title +# osascript -e 'display notification "The command worked" with title "Success"' +# osascript -e 'display notification "The command failed" with title "Failed"' +alert-me(){ + local SUCCESS_MESSAGE="The command worked" + local SUCCESS_TITLE="Success" + local FAILURE_MESSAGE="The command failed" + local FAILURE_TITLE="Failed" + + if [ $? -eq 0 ]; then + + osascript -e "display notification \"$SUCCESS_MESSAGE\" with title \"$SUCCESS_TITLE\"" + else + + osascript -e "display notification \"$FAILURE_MESSAGE\" with title \"$FAILURE_TITLE\"" + fi +} + + +alias hermes-kanban="hermes dashboard --port 9229 --skip-build --host 127.0.0.1" + diff --git a/.rc.d/cargo.sh b/.rc.d/cargo.sh new file mode 100755 index 0000000..97ac0c2 --- /dev/null +++ b/.rc.d/cargo.sh @@ -0,0 +1,4 @@ +if [ -f "$HOME/.cargo/env" ]; then + # For sh/bash/zsh/ash/dash/pdksh + source "$HOME/.cargo/env" +fi diff --git a/.rc.d/ls-colors.md b/.rc.d/ls-colors.md index 132376e..7fb8815 100644 --- a/.rc.d/ls-colors.md +++ b/.rc.d/ls-colors.md @@ -194,5 +194,6 @@ These values are the same for foreground and background. The bright colors are o | Setgid (g+s) | Bright Yellow | Bright Red | DB | | SOW (+t,o+w) | Bright Red | Green | Bc | | Sticky (+t) | Bright Red | Yellow | Bd | +| Cloud Only | `export LSCOLORS=FxGxedGdCxxExFHBDBBcBd` diff --git a/.rc.d/ls-colors.sh b/.rc.d/ls-colors.sh index 3a2cf02..e3d59ef 100755 --- a/.rc.d/ls-colors.sh +++ b/.rc.d/ls-colors.sh @@ -2,5 +2,5 @@ if [ -n "$BASH_VERSION" ]; then export LS_COLORS="rs=0:di=95:ln=36:mh=00:pi=96;43:so=34;43:do=34;43:bd=104:cd=105:or=5;96;40:mi=5;30;46:su=97;101:sg=93;101:ca=00:tw=91;42:ow=91;43:st=42:ex=92:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.avif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:*~=00;90:*#=00;90:*.bak=00;90:*.crdownload=00;90:*.dpkg-dist=00;90:*.dpkg-new=00;90:*.dpkg-old=00;90:*.dpkg-tmp=00;90:*.old=00;90:*.orig=00;90:*.part=00;90:*.rej=00;90:*.rpmnew=00;90:*.rpmorig=00;90:*.rpmsave=00;90:*.swp=00;90:*.tmp=00;90:*.ucf-dist=00;90:*.ucf-new=00;90:*.ucf-old=00;90:" elif [ -n "$ZSH_VERSION" ]; then - export LSCOLORS=FxGxedGdCxxExFHBDBbcbd + export LSCOLORS=FxGxedGdCxxExFHBDBbcbdxx fi diff --git a/.rc.d/noop.bash b/.rc.d/noop.bash new file mode 100644 index 0000000..e69de29 diff --git a/.rc.d/noop.zsh b/.rc.d/noop.zsh new file mode 100644 index 0000000..e69de29 diff --git a/.rc.d/starship.sh b/.rc.d/starship.sh new file mode 100644 index 0000000..dc54677 --- /dev/null +++ b/.rc.d/starship.sh @@ -0,0 +1,64 @@ +# Setup starship shell integration (bash, zsh, and fallback paths) +_setup_starship() { + # Ensure starship binary is accessible if installed in common locations + if ! command -v starship >/dev/null 2>&1; then + for _starship_bin_dir in \ + "/opt/homebrew/bin" \ + "/usr/local/bin" \ + "$HOME/.starship/bin" \ + "$HOME/.local/bin" + do + if [ -x "$_starship_bin_dir/starship" ]; then + case ":$PATH:" in + *":$_starship_bin_dir:"*) ;; + *) PATH="$_starship_bin_dir:$PATH"; export PATH ;; + esac + break + fi + done + fi + + command -v starship >/dev/null 2>&1 || return 0 + + if [ -n "$BASH_VERSION" ]; then + if starship init bash >/dev/null 2>&1; then + eval "$(starship init bash)" + else + # Fallback for older starship versions + for _dir in \ + "/opt/homebrew/opt/starship/shell" \ + "/usr/local/opt/starship/shell" \ + "$HOME/.starship/shell" \ + "/usr/share/doc/starship/examples" \ + "/usr/share/starship" + do + if [ -d "$_dir" ]; then + [ -r "$_dir/completion.bash" ] && \. "$_dir/completion.bash" + [ -r "$_dir/key-bindings.bash" ] && \. "$_dir/key-bindings.bash" + break + fi + done + fi + elif [ -n "$ZSH_VERSION" ]; then + if starship init zsh >/dev/null 2>&1; then + eval "$(starship init zsh)" + else + # Fallback for older starship versions + for _dir in \ + "/opt/homebrew/opt/starship/shell" \ + "/usr/local/opt/starship/shell" \ + "$HOME/.starship/shell" \ + "/usr/share/doc/starship/examples" \ + "/usr/share/starship" + do + if [ -d "$_dir" ]; then + [ -r "$_dir/completion.zsh" ] && \. "$_dir/completion.zsh" + [ -r "$_dir/key-bindings.zsh" ] && \. "$_dir/key-bindings.zsh" + break + fi + done + fi + fi +} +_setup_starship +unset -f _setup_starship diff --git a/.tmux.conf b/.tmux.conf new file mode 100644 index 0000000..08daf6f --- /dev/null +++ b/.tmux.conf @@ -0,0 +1,22 @@ +# Ensure 24-bit TrueColor pass-through +set -g default-terminal "tmux-256color" +set -ag terminal-overrides ",xterm-256color:RGB" +set -g mouse on + +# Powerline Status Bar Styling +set -g status-interval 2 +set -g status-justify left +set -g status-style "bg=#1e1e2e,fg=#cdd6f4" + +# Left Status (Session Name with Powerline solid cap) +set -g status-left-length 40 +set -g status-left "#[bg=#89b4fa,fg=#11111b,bold] #S #[bg=#1e1e2e,fg=#89b4fa,nobold] " + +# Window Tab Styling +set -g window-status-format "#[fg=#6c7086]#I: #W #[fg=#45475a]" +set -g window-status-current-format "#[bg=#fab387,fg=#11111b,bold] #I: #W #[bg=#1e1e2e,fg=#fab387,nobold]" + +# Right Status (Host and Time with inverted Powerline wedges) +set -g status-right-length 80 +set -g status-right "#[fg=#313244]#[bg=#313244,fg=#cdd6f4] %Y-%m-%d  %H:%M #[fg=#a6e3a1]#[bg=#a6e3a1,fg=#11111b,bold] #h " +