mirror of https://gitlab.com/dabruh/dotfiles.git
133 lines
3.9 KiB
Bash
133 lines
3.9 KiB
Bash
#!/bin/sh
|
|
|
|
# Default programs:
|
|
export BROWSER=firefox
|
|
export EDITOR=vim
|
|
export FILE=ranger
|
|
export IMAGES=feh
|
|
export PAGER=less
|
|
export TERMINAL=kitty
|
|
export VISUAL=code
|
|
|
|
# Misc vars
|
|
export CHROME_EXECUTABLE=chromium # For Flutter
|
|
|
|
# Set XDG directories:
|
|
export XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}"
|
|
export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
|
|
export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
|
|
|
|
# Clean home:
|
|
export ANDROID_HOME="$XDG_DATA_HOME/Android/Sdk"
|
|
export CARGO_HOME="$XDG_DATA_HOME/cargo"
|
|
export KREW_ROOT="$XDG_DATA_HOME/krew"
|
|
export FLUTTER_HOME="$XDG_DATA_HOME/flutter"
|
|
export GOPATH="$XDG_DATA_HOME/go"
|
|
export HISTFILE="$XDG_DATA_HOME/history"
|
|
export XINITRC="$XDG_CONFIG_HOME/x11/xinitrc"
|
|
export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
|
|
export NVM_DIR="$XDG_CONFIG_HOME/nvm"
|
|
export NUGET_PACKAGES="$XDG_DATA_HOME/nuget"
|
|
|
|
# Color man pages:
|
|
export LESS='-r'
|
|
export LESS_TERMCAP_mb
|
|
export LESS_TERMCAP_md
|
|
export LESS_TERMCAP_me
|
|
export LESS_TERMCAP_se
|
|
export LESS_TERMCAP_so
|
|
export LESS_TERMCAP_ue
|
|
export LESS_TERMCAP_us
|
|
LESS_TERMCAP_mb="$(printf '\033[01;32m')"
|
|
LESS_TERMCAP_md="$(printf '\033[01;32m')"
|
|
LESS_TERMCAP_me="$(printf '\033[0m')"
|
|
LESS_TERMCAP_se="$(printf '\033[0m')"
|
|
LESS_TERMCAP_so="$(printf '\033[01;47;34m')"
|
|
LESS_TERMCAP_ue="$(printf '\033[0m')"
|
|
LESS_TERMCAP_us="$(printf '\033[01;36m')"
|
|
|
|
# Other program settings:
|
|
export DISPLAY_DPI=96
|
|
|
|
_tr="$(which tr 2>/dev/null || echo /usr/bin/tr)"
|
|
_sed="$(which sed 2>/dev/null || echo /usr/bin/sed)"
|
|
|
|
# Trims the specified leading and trailing characters from the string
|
|
trim() {
|
|
string="${1:?Missing string}"
|
|
char="${2:?Missing trim character}"
|
|
echo "$string" | $_sed "s/^$char*//; s/$char*$//"
|
|
}
|
|
|
|
rm_env_path_entry() {
|
|
src_entries="${1:?Missing source entries}"
|
|
del_entry="${2:?Missing entry to delete}"
|
|
new_entries=""
|
|
|
|
echo "$src_entries" | $_tr ':' '\n' | while read -r entry; do
|
|
if [ "$entry" != "$del_entry" ]; then
|
|
new_entries="$new_entries:$entry"
|
|
fi
|
|
done
|
|
|
|
trim "$new_entries" ":"
|
|
}
|
|
|
|
modify_env_path() {
|
|
mode="${1:?Missing mode}"
|
|
entries="${2:?Missing entries}"
|
|
change="${3:?Missing change}"
|
|
|
|
entries="$(trim "$entries" ":")"
|
|
|
|
case "$mode" in
|
|
prepend)
|
|
temp_entries="" # Will hold the new entries in the correct order
|
|
echo "$change" | $_tr ':' '\n' | while read -r entry; do
|
|
[ -z "$entry" ] && continue # Skip empty entries
|
|
[ -d "$entry" ] || continue # Skip non-existent directories
|
|
temp_entries="$temp_entries:$entry"
|
|
done
|
|
|
|
# Merge the added entries to the existing entries
|
|
# Trim the leading colon and append the new entries
|
|
entries="${temp_entries#:}:$entries"
|
|
;;
|
|
append)
|
|
echo "$change" | $_tr ':' '\n' | while read -r entry; do
|
|
[ -z "$entry" ] && continue # Skip empty entries
|
|
[ -d "$entry" ] || continue # Skip non-existent directories
|
|
entries="$entries:$entry"
|
|
done
|
|
;;
|
|
delete)
|
|
echo "$change" | $_tr ':' '\n' | while read -r entry; do
|
|
[ -z "$entry" ] && continue # Skip empty entries
|
|
entries=$(rm_env_path_entry "$entries" "$entry")
|
|
done
|
|
;;
|
|
*)
|
|
echo "Invalid mode: $mode (choose 'append', 'prepend', 'delete')" >&2
|
|
return 1
|
|
;;
|
|
esac
|
|
|
|
trim "$entries" ":"
|
|
}
|
|
|
|
prepend_paths="$HOME/.local/bin:$HOME/.cargo/bin:$FLUTTER_HOME/bin:$GOPATH/bin:$KREW_ROOT/bin"
|
|
|
|
HOMEBREW_PREFIX="$XDG_DATA_HOME/homebrew"
|
|
if [ -x "$HOMEBREW_PREFIX/bin/brew" ]; then
|
|
eval "$("$HOMEBREW_PREFIX/bin/brew" shellenv)"
|
|
prepend_paths="$HOMEBREW_PREFIX/bin:$HOMEBREW_PREFIX/sbin:$prepend_paths"
|
|
fi
|
|
|
|
PATH="$(modify_env_path delete "$PATH" "$prepend_paths")"
|
|
PATH="$(modify_env_path prepend "$PATH" "$prepend_paths")"
|
|
|
|
|
|
# Add the profile-extras file yourself if you wish to override anything:
|
|
PROFILE_EXTRAS="$XDG_CONFIG_HOME/shell/profile-extras"
|
|
[ -f "$PROFILE_EXTRAS" ] && . "$PROFILE_EXTRAS" || true
|