From 10734ba25648422f516569bf6f04a60cde06f91b Mon Sep 17 00:00:00 2001 From: Fabio Scotto di Santolo Date: Sun, 31 Aug 2025 23:56:43 +0200 Subject: [PATCH] Add Bash configuration with Oh My Bash --- bash/.bashrc | 171 ++++++++++++++++++++++++++++++++++++++ bash/.profile | 53 ++++++++++++ bash/.profile.d/cargo.sh | 5 ++ bash/.profile.d/golang.sh | 6 ++ bash/.profile.d/java.sh | 5 ++ bash/.profile.d/mise.sh | 5 ++ bash/.profile.d/tmux.sh | 5 ++ 7 files changed, 250 insertions(+) create mode 100644 bash/.bashrc create mode 100644 bash/.profile create mode 100755 bash/.profile.d/cargo.sh create mode 100755 bash/.profile.d/golang.sh create mode 100755 bash/.profile.d/java.sh create mode 100755 bash/.profile.d/mise.sh create mode 100755 bash/.profile.d/tmux.sh diff --git a/bash/.bashrc b/bash/.bashrc new file mode 100644 index 0000000..90fdddb --- /dev/null +++ b/bash/.bashrc @@ -0,0 +1,171 @@ +# Enable the subsequent settings only in interactive sessions +case $- in + *i*) ;; + *) return;; +esac + +# Path to your oh-my-bash installation. +export OSH='/home/fscotto/.oh-my-bash' + +# Set name of the theme to load. Optionally, if you set this to "random" +# it'll load a random theme each time that oh-my-bash is loaded. +OSH_THEME="robbyrussell" + +# If you set OSH_THEME to "random", you can ignore themes you don't like. +# OMB_THEME_RANDOM_IGNORED=("powerbash10k" "wanelo") +# You can also specify the list from which a theme is randomly selected: +# OMB_THEME_RANDOM_CANDIDATES=("font" "powerline-light" "minimal") + +# Uncomment the following line to use case-sensitive completion. +# OMB_CASE_SENSITIVE="true" + +# Uncomment the following line to use hyphen-insensitive completion. Case +# sensitive completion must be off. _ and - will be interchangeable. +# OMB_HYPHEN_SENSITIVE="false" + +# Uncomment the following line to disable bi-weekly auto-update checks. +# DISABLE_AUTO_UPDATE="true" + +# Uncomment the following line to change how often to auto-update (in days). +# export UPDATE_OSH_DAYS=13 + +# 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. +# 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 don't want the repository to be considered dirty +# if there are untracked files. +# SCM_GIT_DISABLE_UNTRACKED_DIRTY="true" + +# Uncomment the following line if you want to completely ignore the presence +# of untracked files in the repository. +# SCM_GIT_IGNORE_UNTRACKED="true" + +# Uncomment the following line if you want to change the command execution time +# stamp shown in the history command output. One of the following values can +# be used to specify the timestamp format. +# * 'mm/dd/yyyy' # mm/dd/yyyy + time +# * 'dd.mm.yyyy' # dd.mm.yyyy + time +# * 'yyyy-mm-dd' # yyyy-mm-dd + time +# * '[mm/dd/yyyy]' # [mm/dd/yyyy] + [time] with colors +# * '[dd.mm.yyyy]' # [dd.mm.yyyy] + [time] with colors +# * '[yyyy-mm-dd]' # [yyyy-mm-dd] + [time] with colors +# If not set, the default value is 'yyyy-mm-dd'. +# HIST_STAMPS='yyyy-mm-dd' + +# Uncomment the following line if you do not want OMB to overwrite the existing +# aliases by the default OMB aliases defined in lib/*.sh +# OMB_DEFAULT_ALIASES="check" + +# Would you like to use another custom folder than $OSH/custom? +# OSH_CUSTOM=/path/to/new-custom-folder + +# To disable the uses of "sudo" by oh-my-bash, please set "false" to +# this variable. The default behavior for the empty value is "true". +OMB_USE_SUDO=true + +# To enable/disable display of Python virtualenv and condaenv +# OMB_PROMPT_SHOW_PYTHON_VENV=true # enable +# OMB_PROMPT_SHOW_PYTHON_VENV=false # disable + +# To enable/disable Spack environment information +# OMB_PROMPT_SHOW_SPACK_ENV=true # enable +# OMB_PROMPT_SHOW_SPACK_ENV=false # disable + +# Which completions would you like to load? (completions can be found in ~/.oh-my-bash/completions/*) +# Custom completions may be added to ~/.oh-my-bash/custom/completions/ +# Example format: completions=(ssh git bundler gem pip pip3) +# Add wisely, as too many completions slow down shell startup. +completions=( + asdf + docker + docker-compose + gh + git + go + makefile + npm + pip3 + system + tmux + composer + ssh +) + +# Which aliases would you like to load? (aliases can be found in ~/.oh-my-bash/aliases/*) +# Custom aliases may be added to ~/.oh-my-bash/custom/aliases/ +# Example format: aliases=(vagrant composer git-avh) +# Add wisely, as too many aliases slow down shell startup. +aliases=( + general +) + +# Which plugins would you like to load? (plugins can be found in ~/.oh-my-bash/plugins/*) +# Custom plugins may be added to ~/.oh-my-bash/custom/plugins/ +# Example format: plugins=(rails git textmate ruby lighthouse) +# Add wisely, as too many plugins slow down shell startup. +plugins=( + bashmarks + bash-preexec + cargo + colored-man-pages + git + zoxide +) + +# Which plugins would you like to conditionally load? (plugins can be found in ~/.oh-my-bash/plugins/*) +# Custom plugins may be added to ~/.oh-my-bash/custom/plugins/ +# Example format: +# if [ "$DISPLAY" ] || [ "$SSH" ]; then +# plugins+=(tmux-autoattach) +# fi + +# If you want to reduce the initialization cost of the "tput" command to +# initialize color escape sequences, you can uncomment the following setting. +# This disables the use of the "tput" command, and the escape sequences are +# initialized to be the ANSI version: +# +#OMB_TERM_USE_TPUT=no + +source "$OSH"/oh-my-bash.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" + +# ssh +# export SSH_KEY_PATH="~/.ssh/rsa_id" + +# Set personal aliases, overriding those provided by oh-my-bash libs, +# plugins, and themes. Aliases can be placed here, though oh-my-bash +# users are encouraged to define aliases within the OSH_CUSTOM folder. +# For a full list of active aliases, run `alias`. +# +# Example aliases +# alias bashconfig="mate ~/.bashrc" +# alias ohmybash="mate ~/.oh-my-bash" diff --git a/bash/.profile b/bash/.profile new file mode 100644 index 0000000..58b227d --- /dev/null +++ b/bash/.profile @@ -0,0 +1,53 @@ +function appendpath() { + local location="${1}" + case ":$PATH:" in + *":$location:"*) ;; + *) export PATH="$PATH:$location" ;; + esac +} + +appendpath "$HOME/.local/bin" +appendpath "$HOME/.config/emacs/bin" +unset appendpath + +# XDG variables +export XDG_CONFIG_HOME=${HOME}/.config +export XDG_DATA_HOME=${HOME}/.local/share +export XDG_CACHE_HOME=${HOME}/.local/cache +export XDG_STATE_HOME=${HOME}/.local/state + +# Enable GTK themes +export GTK2_RC_FILES=${XDG_CONFIG_HOME}/gtk-2.0/gtkrc-2.0 + +# Enable QT apps to have gtk theme +export QT_QPA_PLATFORMTHEME=qt5ct + +# Make Qt apps honour DPI settings. +export QT_AUTO_SCREEN_SCALE_FACTOR=1 + +export ZSH_HOME="$HOME/.zsh" +export DOTFILES="$HOME/.dotfiles" +export EDITOR=nvim +export HELPDIR=/usr/share/zsh/"${ZSH_VERSION}"/help + +# SSH socket +export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gcr/ssh" + +export FZF_DEFAULT_COMMAND="fd --hidden --type file --strip-cwd-prefix --exclude .git" +export FZF_CTRL_T_COMMAND="fd --hidden --type file --strip-cwd-prefix --exclude .git" +export FZF_ALT_C_COMMAND="fd --hidden --type directory --strip-cwd-prefix --exclude .git" +# Export Catppuccin Mocha theme for FZF +export FZF_DEFAULT_OPTS=" \ +--height 60% --layout=reverse --border \ +--color=bg+:#313244,bg:#1E1E2E,spinner:#F5E0DC,hl:#F38BA8 \ +--color=fg:#CDD6F4,header:#F38BA8,info:#CBA6F7,pointer:#F5E0DC \ +--color=marker:#B4BEFE,fg+:#CDD6F4,prompt:#CBA6F7,hl+:#F38BA8 \ +--color=selected-bg:#45475A \ +--color=border:#313244,label:#CDD6F4" +export FZF_TMUX_OPTS=" -p90%,70%" +export VIRTUAL_ENV_DISABLE_PROMPT=1 + +source "$HOME/.profile.d/mise.sh" +source "$HOME/.profile.d/golang.sh" +source "$HOME/.profile.d/java.sh" + diff --git a/bash/.profile.d/cargo.sh b/bash/.profile.d/cargo.sh new file mode 100755 index 0000000..f6ec644 --- /dev/null +++ b/bash/.profile.d/cargo.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +if [ -e "$HOME/.cargo" ]; then + source "$HOME/.cargo/env" +fi diff --git a/bash/.profile.d/golang.sh b/bash/.profile.d/golang.sh new file mode 100755 index 0000000..d4a357a --- /dev/null +++ b/bash/.profile.d/golang.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +if command -v go > /dev/null 2>&1; then + export GOPATH="$HOME/.local/share/Go" + export GOBIN="$GOPATH/bin" +fi diff --git a/bash/.profile.d/java.sh b/bash/.profile.d/java.sh new file mode 100755 index 0000000..f6ad239 --- /dev/null +++ b/bash/.profile.d/java.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +if command -v java > /dev/null 2>&1; then + export JAVA_HOME="$(dirname $(mise bin-paths | grep -i java))" +fi diff --git a/bash/.profile.d/mise.sh b/bash/.profile.d/mise.sh new file mode 100755 index 0000000..1af6721 --- /dev/null +++ b/bash/.profile.d/mise.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +if command -v mise > /dev/null 2>&1; then + eval "$(mise activate zsh)" +fi diff --git a/bash/.profile.d/tmux.sh b/bash/.profile.d/tmux.sh new file mode 100755 index 0000000..bef9bbd --- /dev/null +++ b/bash/.profile.d/tmux.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env zsh + +if command -v tmux &> /dev/null && [ -z "$TMUX" ]; then + tmux attach-session -t default || tmux new-session -s default +fi