From f1930f166deba5f45c502ccd6c60ff2fe41c5b92 Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sat, 21 Feb 2026 06:46:42 -0500 Subject: [PATCH 01/20] Update clang_complete. --- .vim/bundle/clang_complete | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vim/bundle/clang_complete b/.vim/bundle/clang_complete index 293a106..75946de 160000 --- a/.vim/bundle/clang_complete +++ b/.vim/bundle/clang_complete @@ -1 +1 @@ -Subproject commit 293a1062274a06be61797612034bd8d87851406e +Subproject commit 75946deff49f2bd70a8d1180c8e60a88aa056e47 -- 2.49.1 From c7f6c0b7918c3a99c29ab0ba8fdae4b51076edf3 Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sat, 21 Feb 2026 06:50:48 -0500 Subject: [PATCH 02/20] Add Qt assistant bash helper. --- .bash_aliases | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.bash_aliases b/.bash_aliases index 4fbf4f7..8d9e89e 100644 --- a/.bash_aliases +++ b/.bash_aliases @@ -25,9 +25,16 @@ else alias ,plasmashell='plasmashell --replace &> /dev/null &' alias ,swap='sudo swapoff -a && sudo swapon -a' alias ,vbox="ps aux www |grep 'VBoxClient --draganddrop' | awk '{print $2}' | xargs kill" - alias ,assistant="nohup $HOME/Qt/6.9.0/gcc_64/bin/assistant > /dev/null 2>&1 &" fi +# $1: Version +# $2: Path to Qt; defaults to $HOME/Qt +function assistant { + local version=${1:-6\.7\.3} + local path=${2:-$HOME/Qt} + nohup ${path%/}/$version/gcc_64/bin/assistant > /dev/null 2>&1 & +} + # colored GCC warnings and errors #export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' -- 2.49.1 From 288dc28e0759558ddfc4a7f33aeef5a70812bfab Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sat, 21 Feb 2026 06:51:54 -0500 Subject: [PATCH 03/20] Disable inputrc for now. Keeping it around in case a non-blesh option is wanted in the future. --- .inputrc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.inputrc b/.inputrc index 8638ed5..0bd50fd 100644 --- a/.inputrc +++ b/.inputrc @@ -1,2 +1,4 @@ -"\e[A": history-search-backward -"\e[B": history-search-forward +# This will automatically trigger reverse search when using up / down in bash +# However it doesn't feel natural with ble.sh, so it's commented out for now. +#"\e[A": history-search-backward +#"\e[B": history-search-forward -- 2.49.1 From dabfa780df359fa2b24f27e014b48acc1c5c0847 Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sat, 21 Feb 2026 07:58:17 -0500 Subject: [PATCH 04/20] Add bash.d. --- .bash.d/.bash_aliases | 28 +++++++++++++ .bash_aliases => .bash.d/.bash_exports | 55 +------------------------- .bash.d/.bash_functions | 8 ++++ .bash.d/.bash_sources | 15 +++++++ .bashrc | 11 +++++- setup.sh | 6 +-- 6 files changed, 65 insertions(+), 58 deletions(-) create mode 100644 .bash.d/.bash_aliases rename .bash_aliases => .bash.d/.bash_exports (51%) create mode 100644 .bash.d/.bash_functions create mode 100644 .bash.d/.bash_sources diff --git a/.bash.d/.bash_aliases b/.bash.d/.bash_aliases new file mode 100644 index 0000000..e861aba --- /dev/null +++ b/.bash.d/.bash_aliases @@ -0,0 +1,28 @@ +alias ,git='git config --global user.name "Shaun Reed" && git config --global user.email "shaunrd0@gmail.com"' +# Some aliases don't make sense in the docker image, like shortcuts to fix plasmashell. +if [ -f /.dockerenv ]; then + alias ,update='apt update -y && apt upgrade -y && apt upgrade --fix-broken --fix-missing --auto-remove' + alias ,init='apt update -y && apt install -y $DOT_PACKAGES' + alias ,swap='swapoff -a && swapon -a' +else + alias ,update='sudo apt update -y && sudo apt upgrade -y && sudo apt upgrade --fix-broken --fix-missing --auto-remove' + alias ,init='sudo apt update -y && sudo apt install -y $DOT_PACKAGES' + # Clear kscreen cached settings + alias ,kscreen='rm -rf ~/.local/share/kscreen/*' + # Restart plasmashell + alias ,plasmashell='plasmashell --replace &> /dev/null &' + alias ,swap='sudo swapoff -a && sudo swapon -a' + alias ,vbox="ps aux www |grep 'VBoxClient --draganddrop' | awk '{print $2}' | xargs kill" +fi + +# Add an "alert" alias for long running commands. Use like so: +# sleep 10; alert +alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' + +# Don't use tmux in vscode to avoid 'failure to resolve shell' errors. +if command -v tmux &> /dev/null && [ -n "$PS1" ] && [[ ! "$TERM" =~ screen ]] && [[ ! "$TERM" =~ tmux ]] && [ -z "$TMUX" ]; then + if ! pstree -s $$ | grep -wq code; then + exec tmux >/dev/null 2>&1 + fi +fi + diff --git a/.bash_aliases b/.bash.d/.bash_exports similarity index 51% rename from .bash_aliases rename to .bash.d/.bash_exports index 8d9e89e..3fbd30f 100644 --- a/.bash_aliases +++ b/.bash.d/.bash_exports @@ -1,46 +1,13 @@ -# Source ble.sh if installed. -if [ -f ~/.local/share/blesh/ble.sh ]; then - source -- ~/.local/share/blesh/ble.sh -fi - -# Source rust things if they exist -if [ -f ~/.cargo/env ]; then - . ~/.cargo/env -fi - -alias ,git='git config --global user.name "Shaun Reed" && git config --global user.email "shaunrd0@gmail.com"' -# Some aliases don't make sense in the docker image, like shortcuts to fix plasmashell. +# Used in setup script and dockerfile. if [ -f /.dockerenv ]; then export DOT_PACKAGES='git stow vim tmux ranger clang wget curl golang-go' - alias ,update='apt update -y && apt upgrade -y && apt upgrade --fix-broken --fix-missing --auto-remove' - alias ,init='apt update -y && apt install -y $DOT_PACKAGES' - alias ,swap='swapoff -a && swapon -a' else export DOT_PACKAGES='git stow vim vim-gtk3 xsel xclip tmux ranger clang yakuake wget curl golang-go gawk' - alias ,update='sudo apt update -y && sudo apt upgrade -y && sudo apt upgrade --fix-broken --fix-missing --auto-remove' - alias ,init='sudo apt update -y && sudo apt install -y $DOT_PACKAGES' - # Clear kscreen cached settings - alias ,kscreen='rm -rf ~/.local/share/kscreen/*' - # Restart plasmashell - alias ,plasmashell='plasmashell --replace &> /dev/null &' - alias ,swap='sudo swapoff -a && sudo swapon -a' - alias ,vbox="ps aux www |grep 'VBoxClient --draganddrop' | awk '{print $2}' | xargs kill" fi -# $1: Version -# $2: Path to Qt; defaults to $HOME/Qt -function assistant { - local version=${1:-6\.7\.3} - local path=${2:-$HOME/Qt} - nohup ${path%/}/$version/gcc_64/bin/assistant > /dev/null 2>&1 & -} - # colored GCC warnings and errors #export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' -# Add an "alert" alias for long running commands. Use like so: -# sleep 10; alert -alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' export EDITOR="vim" export VISUAL="vim" export LS_COLORS="di=1;34:ln=31;47:so=32:pi=33:ex=1;32:bd=34;46:cd=34;43:su=30;41:sg=30;46:tw=30;42:ow=30;43" @@ -50,17 +17,6 @@ export DOTNET_ROOT=$HOME/.dotnet # Example path for autocompletion using libclang-9-dev package, obtained by the following command export LIBCLANG="$(command -v clang &>/dev/null && ldconfig -p | sort | grep libclang-[0-9]. | awk -F "> " '{print$2}' | tail -n 1)" -# Source a top-secret alias file -if [ -e ~/.bash_secrets ]; then - . ~/.bash_secrets -fi - -if command -v tmux &> /dev/null && [ -n "$PS1" ] && [[ ! "$TERM" =~ screen ]] && [[ ! "$TERM" =~ tmux ]] && [ -z "$TMUX" ]; then - if ! pstree -s $$ | grep -wq code; then - exec tmux >/dev/null 2>&1 - fi -fi - # Set the default terminal to use konsole, with kapper profile # + Execute tmux on start if [ -e ~/.local/share/konsole/kapper.profile ]; then @@ -105,15 +61,6 @@ export LESS='--mouse --wheel-lines 2' # + -#2 to shift 2 columns horizontally when right / left arrow is pressed export LESS="$LESS -R -w -#2" - -if ! [ command -v conda &>/dev/null ] && [ -e ~/Code/Clones/mambaforge/bin/conda ] && ! grep -e conda ~/.bashrc &>/dev/null; then - if ! (~/Code/Clones/mambaforge/bin/conda init | awk -F "==>" '{print $1}'); then - echo "[dot] ERROR: Failed to initialize Conda." - fi - echo "[dot] WARN: Ran \`conda init\`; Conda was installed but not initialized" - source ~/.bashrc -fi - # For shared systems where history is not desired. # ln -sf /dev/null ~/.bash_history # HISTFILE=/dev/null diff --git a/.bash.d/.bash_functions b/.bash.d/.bash_functions new file mode 100644 index 0000000..e4efd33 --- /dev/null +++ b/.bash.d/.bash_functions @@ -0,0 +1,8 @@ +# $1: Version +# $2: Path to Qt; defaults to $HOME/Qt +function assistant { + local version=${1:-6\.7\.3} + local path=${2:-$HOME/Qt} + nohup ${path%/}/$version/gcc_64/bin/assistant > /dev/null 2>&1 & +} + diff --git a/.bash.d/.bash_sources b/.bash.d/.bash_sources new file mode 100644 index 0000000..0915545 --- /dev/null +++ b/.bash.d/.bash_sources @@ -0,0 +1,15 @@ +# Source ble.sh if installed. +if [ -f ~/.local/share/blesh/ble.sh ]; then + source -- ~/.local/share/blesh/ble.sh +fi + +# Source rust things if they exist +if [ -f ~/.cargo/env ]; then + . ~/.cargo/env +fi + +# Source a top-secret alias file +if [ -e ~/.bash_secrets ]; then + . ~/.bash_secrets +fi + diff --git a/.bashrc b/.bashrc index b488fcc..fce2fa8 100644 --- a/.bashrc +++ b/.bashrc @@ -100,11 +100,20 @@ alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo # You may want to put all your additions into a separate file like # ~/.bash_aliases, instead of adding them here directly. # See /usr/share/doc/bash-doc/examples in the bash-doc package. - if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi +# Source all files in ~/.bash.d, if it exists. +# This can contain .bash_aliases, or other configs to append to your shell. +if [ -d ~/.bash.d ]; then + for f in ~/.bash.d/.*; do + if [ -f $f ]; then + . $f + fi + done +fi + # enable programmable completion features (you don't need to enable # this, if it's already enabled in /etc/bash.bashrc and /etc/profile # sources /etc/bash.bashrc). diff --git a/setup.sh b/setup.sh index 1d8e11e..8d6b509 100755 --- a/setup.sh +++ b/setup.sh @@ -16,10 +16,10 @@ fi git submodule update --init --recursive # Use alias for installing packages so we don't maintain several dependency lists. -if ! [[ -f .bash_aliases ]]; then - fatal "Failed to locate .bash_aliases in path: $(pwd)" 3 +if ! [[ -f .bash.d/.bash_exports ]]; then + fatal "Failed to locate .bash.d/.bash_exports in path: $(pwd)" 3 fi -. .bash_aliases +. .bash.d/.bash_exports if [[ -z ${DOT_PACKAGES:-} ]]; then fatal "DOT_PACKAGES variable not found after sourcing $(pwd)/.bash_aliases" 4 -- 2.49.1 From e7c4fe36bc41c90aec946315db9978d9de4092e7 Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sat, 21 Feb 2026 08:22:47 -0500 Subject: [PATCH 05/20] Ignore blesh installations. --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 119fc93..8e1eab8 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,8 @@ .config/Code/Network* **/.config/.brightness .local/share/fonts/.uuid +.local/share/blesh +.local/share/doc # Byte-compiled / optimized / DLL files *__pycache__/ -- 2.49.1 From 99be1dfecd2e08843b1fc562fe86143aff0ac4d5 Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sat, 21 Feb 2026 08:36:12 -0500 Subject: [PATCH 06/20] Update bash stuff. --- .bash.d/.bash_functions | 2 +- .bash.d/.bash_sources | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.bash.d/.bash_functions b/.bash.d/.bash_functions index e4efd33..2dc2033 100644 --- a/.bash.d/.bash_functions +++ b/.bash.d/.bash_functions @@ -1,4 +1,4 @@ -# $1: Version +# $1: Version; defaults to 6.7.3 # $2: Path to Qt; defaults to $HOME/Qt function assistant { local version=${1:-6\.7\.3} diff --git a/.bash.d/.bash_sources b/.bash.d/.bash_sources index 0915545..d3d0ce1 100644 --- a/.bash.d/.bash_sources +++ b/.bash.d/.bash_sources @@ -9,7 +9,7 @@ if [ -f ~/.cargo/env ]; then fi # Source a top-secret alias file -if [ -e ~/.bash_secrets ]; then - . ~/.bash_secrets +if [ -f ~/.bash.d/.bash_secrets ]; then + . ~/.bash.d/.bash_secrets fi -- 2.49.1 From 1479f3ac372657f80e091ba8a9388b15ec2cb1ca Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sat, 21 Feb 2026 08:38:16 -0500 Subject: [PATCH 07/20] Relocate .bash_secrets. --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 8e1eab8..ecfd5ad 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -.bash_secrets +**/.bash_secrets .vim/.netrwhist .idea/ .config/Code/Backups/* -- 2.49.1 From f9163b626d94ee5c740917e1057c3800d9fa11af Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sat, 21 Feb 2026 08:42:15 -0500 Subject: [PATCH 08/20] Update setup script. --- setup.sh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/setup.sh b/setup.sh index 8d6b509..ba8a3e1 100755 --- a/setup.sh +++ b/setup.sh @@ -3,26 +3,28 @@ set -Eeuo pipefail # $1: Error message # $2: Error code +# $3: Error line function fatal() { local msg=${1:-"Unspecified error"} - echo "[Error:$LINENO] Could not install dotfiles: $msg" + local line=${3:-9} + echo "[Error:$line] Could not install dotfiles: $msg" exit ${2:-1} } -trap 'fatal "Trapped an unknown error" $?' ERR +trap 'fatal "Trapped an unknown error" $? $LINENO' ERR if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then - fatal "Run setup.sh from the root directory of the dotfiles repository." 2 + fatal "Run setup.sh from the root directory of the dotfiles repository." 2 $LINENO fi git submodule update --init --recursive # Use alias for installing packages so we don't maintain several dependency lists. if ! [[ -f .bash.d/.bash_exports ]]; then - fatal "Failed to locate .bash.d/.bash_exports in path: $(pwd)" 3 + fatal "Failed to locate .bash.d/.bash_exports in path: $(pwd)" 3 $LINENO fi . .bash.d/.bash_exports if [[ -z ${DOT_PACKAGES:-} ]]; then - fatal "DOT_PACKAGES variable not found after sourcing $(pwd)/.bash_aliases" 4 + fatal "DOT_PACKAGES variable not found after sourcing $(pwd)/.bash.d/.bash_aliases" 4 $LINENO fi sudo apt update -y && sudo apt install -y $DOT_PACKAGES go install github.com/arl/gitmux@latest -- 2.49.1 From 753dc4766608a160d7f1ecffdabfe96068fa0c22 Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sat, 21 Feb 2026 08:49:45 -0500 Subject: [PATCH 09/20] Update readme. --- README.md | 38 -------------------------------------- 1 file changed, 38 deletions(-) diff --git a/README.md b/README.md index 7481961..633bf68 100644 --- a/README.md +++ b/README.md @@ -20,20 +20,6 @@ mv ~/.bashrc ~/.bashrc.backup stow . -t ~ ``` -If you forget to clone recursively -```bash -git submodule update --init -Submodule path '.vim/bundle/Colorizer': checked out '53ada285f0acc171acda4280b6144e468dded89f' -Submodule path '.vim/bundle/ale': checked out '7265ceb6d050d1a4642741d248f11e4f2abd37e1' -Submodule path '.vim/bundle/clang_complete': checked out '0b98d7533ad967aac3fc4c1a5b0508dafa8a676f' -Submodule path '.vim/bundle/supertab': checked out '40fe711e088e2ab346738233dd5adbb1be355172' -Submodule path '.vim/bundle/unicode.vim': checked out '29f43f7b1be94dccfac461f4da0a34410408111f' -Submodule path '.vim/bundle/vim-airline': checked out '6d665580a3435f21ad560af192d854d4b608fff5' -Submodule path '.vim/bundle/vim-airline-themes': checked out '0d5c5c1e2995126e76606a628316c8e3f5efb37a' -Submodule path '.vim/bundle/vim-signify': checked out '16eee41d2b267523b84bd4ac111627588bfd1a47' -``` - - ### Docker You can run these dotfiles in a docker container - @@ -51,27 +37,3 @@ This container has the following packages installed and uses `ubuntu:latest` as git stow vim tmux ranger clang wget curl golang-go ``` - -### Install Clang Completion - -**These configurations require the installation of clang for clang completion** - -If you don't want clang completion, just remove the plugin directory from `~/.vim/bundle/`. - -If you don't remove clang completion and skip the following steps, vim will show errors when opening source code files. This is because these configurations use clang completion for source code auto completion and drop-down menus within vim. - -```bash -sudo apt install clang -source ~/.bashrc -``` - - -### Gitmux - -To enable the gitmux status bar in tmux sessions - -```bash -sudo apt install golang-go -go install github.com/arl/gitmux@latest -``` - -- 2.49.1 From 644fca32ed0ce25eda5501fbdf121c719a2b6240 Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sat, 21 Feb 2026 08:50:30 -0500 Subject: [PATCH 10/20] Update README. --- README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/README.md b/README.md index 633bf68..836477a 100644 --- a/README.md +++ b/README.md @@ -31,9 +31,3 @@ docker build -t dot . docker run -it dot bash ``` -This container has the following packages installed and uses `ubuntu:latest` as a base. - -``` -git stow vim tmux ranger clang wget curl golang-go -``` - -- 2.49.1 From 9dcdbf127527168d6d93a0dbda820239ed130980 Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sat, 21 Feb 2026 08:54:21 -0500 Subject: [PATCH 11/20] Move comment. --- .bash.d/.bash_exports | 1 + README.md | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.bash.d/.bash_exports b/.bash.d/.bash_exports index 3fbd30f..95f4834 100644 --- a/.bash.d/.bash_exports +++ b/.bash.d/.bash_exports @@ -2,6 +2,7 @@ if [ -f /.dockerenv ]; then export DOT_PACKAGES='git stow vim tmux ranger clang wget curl golang-go' else + # `vim-gtk3` is required to keep your system copy and paste buffers in sync with vim registers. export DOT_PACKAGES='git stow vim vim-gtk3 xsel xclip tmux ranger clang yakuake wget curl golang-go gawk' fi diff --git a/README.md b/README.md index 836477a..9541858 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,6 @@ Once installed, editing source code in vim supports features displayed in the sc ### Install -If you don't install `vim-gtk3`, vim will not have access to your system clipboard, and your copy and paste buffers will not stay in sync. - Installation instructions - ```bash -- 2.49.1 From 2efcfabb7be945f800852688b8bae01d499c8870 Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sat, 21 Feb 2026 09:08:25 -0500 Subject: [PATCH 12/20] Add configurations to README. --- README.md | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9541858..5412778 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,14 @@ ## Dotfiles -Dotfiles configurations for headless Kubuntu linux environments. Be sure to clone recursively if you want to grab updated plugins / submodules included. For example, using Pathogen with Vim to manage plugins requires that the plugin to be installed are cloned to the `~/.vim/bundle/` directory. Cloning recursively allows git to clone these same nested repositories/submodules within this directory so Pathogen can handle running the Vim plugins. +Dotfiles configurations for headless Kubuntu linux environments. Be sure to +clone recursively if you want to grab updated plugins / submodules included. For +example, using Pathogen with Vim to manage plugins requires that the plugin to +be installed are cloned to the `~/.vim/bundle/` directory. Cloning recursively +allows git to clone these same nested repositories/submodules within this +directory so Pathogen can handle running the Vim plugins. -Once installed, editing source code in vim supports features displayed in the screenshot below +Once installed, editing source code in vim supports features displayed in the +screenshot below ![Vim screenshot](VimScreenshot.png) @@ -29,3 +35,31 @@ docker build -t dot . docker run -it dot bash ``` +### Configurations + +| Plugin / Tool | Description | Repository | +|---------------------|--------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------| +| tmux | Terminal multiplexer configured within `.tmux.conf` and `.tmux.d/`. | [https://github.com/tmux/tmux](https://github.com/tmux/tmux) | +| tmux plugin manager | Manages tmux plugins directly from GitHub. | [https://github.com/tmux-plugins/tpm](https://github.com/tmux-plugins/tpm) | +| tmux-sensible | Provides improved sane defaults for tmux behavior and usability. | [https://github.com/tmux-plugins/tmux-sensible](https://github.com/tmux-plugins/tmux-sensible) | +| tmux-resurrect | Saves and restores tmux sessions, panes, and layouts between restarts. | [https://github.com/tmux-plugins/tmux-resurrect](https://github.com/tmux-plugins/tmux-resurrect) | +| tmux-continuum | Automatically saves tmux sessions and can restore them on system reboot. | [https://github.com/tmux-plugins/tmux-continuum](https://github.com/tmux-plugins/tmux-continuum) | +| xclip | Integrates tmux copy mode with the system clipboard under X11. | [https://github.com/astrand/xclip](https://github.com/astrand/xclip) | + +| Plugin | Description | Repository | +|--------------------|--------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------| +| Colorizer | Highlights color codes in Vim buffers (useful for CSS/ web). | [https://github.com/chrisbra/Colorizer](https://github.com/chrisbra/Colorizer) | +| ALE | Asynchronous Lint Engine – linting & fixing in Vim asynchronously. | [https://github.com/dense-analysis/ale](https://github.com/dense-analysis/ale) | +| clang_complete | Auto-completion support for C/C++ using libclang. | [https://github.com/xavierd/clang_complete](https://github.com/xavierd/clang_complete) | +| supertab | Expand completions using `` in insert mode. | [https://github.com/ervandew/supertab](https://github.com/ervandew/supertab) | +| unicode.vim | Unicode helpers (insert and inspect Unicode characters). | [https://github.com/chrisbra/unicode.vim](https://github.com/chrisbra/unicode.vim) | +| vim-airline | Lean and fast status/tabline for Vim. | [https://github.com/vim-airline/vim-airline](https://github.com/vim-airline/vim-airline) | +| vim-airline-themes | Additional themes for vim-airline. | [https://github.com/vim-airline/vim-airline-themes](https://github.com/vim-airline/vim-airline-themes) | +| vim-signify | Shows VCS (git/hg) changes in the sign column. | [https://github.com/mhinz/vim-signify](https://github.com/mhinz/vim-signify) | + +| Tool / File | Description | Repository | +|----------------------|------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------| +| ranger | Terminal file manager with Vim-like keybindings & previews. | [https://github.com/ranger/ranger](https://github.com/ranger/ranger) | +| GNU Stow | Manages dotfiles by symlinking grouped configurations. | [https://www.gnu.org/software/stow/](https://www.gnu.org/software/stow/) | +| `.stow-local-ignore` | Specifies files/patterns for Stow to skip when linking. | [https://www.gnu.org/software/stow/manual/stow.html](https://www.gnu.org/software/stow/manual/stow.html) | +| `setup.sh` | Bootstrap script to automate initial symlinking and environment setup. | (Repository-local script) | -- 2.49.1 From f90cb319ba3b1d877283b17297992099a992ca92 Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sat, 21 Feb 2026 09:11:56 -0500 Subject: [PATCH 13/20] Add sections to configs. --- README.md | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 5412778..5792db5 100644 --- a/README.md +++ b/README.md @@ -37,15 +37,18 @@ docker run -it dot bash ### Configurations -| Plugin / Tool | Description | Repository | +#### Vim + +| Plugin | Description | Repository | |---------------------|--------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------| -| tmux | Terminal multiplexer configured within `.tmux.conf` and `.tmux.d/`. | [https://github.com/tmux/tmux](https://github.com/tmux/tmux) | | tmux plugin manager | Manages tmux plugins directly from GitHub. | [https://github.com/tmux-plugins/tpm](https://github.com/tmux-plugins/tpm) | | tmux-sensible | Provides improved sane defaults for tmux behavior and usability. | [https://github.com/tmux-plugins/tmux-sensible](https://github.com/tmux-plugins/tmux-sensible) | | tmux-resurrect | Saves and restores tmux sessions, panes, and layouts between restarts. | [https://github.com/tmux-plugins/tmux-resurrect](https://github.com/tmux-plugins/tmux-resurrect) | | tmux-continuum | Automatically saves tmux sessions and can restore them on system reboot. | [https://github.com/tmux-plugins/tmux-continuum](https://github.com/tmux-plugins/tmux-continuum) | | xclip | Integrates tmux copy mode with the system clipboard under X11. | [https://github.com/astrand/xclip](https://github.com/astrand/xclip) | +#### Tmux + | Plugin | Description | Repository | |--------------------|--------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------| | Colorizer | Highlights color codes in Vim buffers (useful for CSS/ web). | [https://github.com/chrisbra/Colorizer](https://github.com/chrisbra/Colorizer) | @@ -57,9 +60,13 @@ docker run -it dot bash | vim-airline-themes | Additional themes for vim-airline. | [https://github.com/vim-airline/vim-airline-themes](https://github.com/vim-airline/vim-airline-themes) | | vim-signify | Shows VCS (git/hg) changes in the sign column. | [https://github.com/mhinz/vim-signify](https://github.com/mhinz/vim-signify) | -| Tool / File | Description | Repository | -|----------------------|------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------| -| ranger | Terminal file manager with Vim-like keybindings & previews. | [https://github.com/ranger/ranger](https://github.com/ranger/ranger) | -| GNU Stow | Manages dotfiles by symlinking grouped configurations. | [https://www.gnu.org/software/stow/](https://www.gnu.org/software/stow/) | -| `.stow-local-ignore` | Specifies files/patterns for Stow to skip when linking. | [https://www.gnu.org/software/stow/manual/stow.html](https://www.gnu.org/software/stow/manual/stow.html) | -| `setup.sh` | Bootstrap script to automate initial symlinking and environment setup. | (Repository-local script) | +#### Utilities + +| Tool | Description | Repository | +|----------------------|--------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------| +| ranger | Console-based file manager with Vim-like keybindings, previews, and customizable commands. | [https://github.com/ranger/ranger](https://github.com/ranger/ranger) | +| ble.sh | Advanced Bash line editor providing syntax highlighting, autosuggestions, and improved interactive shell behavior. | [https://github.com/akinomyoga/ble.sh](https://github.com/akinomyoga/ble.sh) | +| GNU Stow | Manages dotfiles using symlinks. Repository structure is organized for per-package Stow deployment. | [https://www.gnu.org/software/stow/](https://www.gnu.org/software/stow/) | +| `.stow-local-ignore` | Stow configuration file that excludes specific files or patterns from being symlinked during deployment. | [https://www.gnu.org/software/stow/manual/stow.html](https://www.gnu.org/software/stow/manual/stow.html) | +| `setup.sh` | Bootstrap script that automates symlink setup and environment initialization. | (Repository-local script) | + -- 2.49.1 From a4d2245b50ebcff27ff032a27f3b5547ea4bf76e Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sat, 21 Feb 2026 09:20:20 -0500 Subject: [PATCH 14/20] Enable some tmux plugins. --- .tmux/.tmux-gui.conf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.tmux/.tmux-gui.conf b/.tmux/.tmux-gui.conf index 140b750..f1c2cc2 100644 --- a/.tmux/.tmux-gui.conf +++ b/.tmux/.tmux-gui.conf @@ -16,6 +16,9 @@ set -g @scroll-speed-num-lines-per-scroll 2 set -g @plugin 'tmux-plugins/tpm' set -g @plugin 'tmux-plugins/tmux-yank' set -g @yank_action 'copy-pipe-no-clear' +set -g @plugin 'tmux-plugins/tmux-resurrect' +set -g @plugin 'tmux-plugins/tmux-continuum' +set -g @continuum-restore 'on' bind -T copy-mode C-c send -X copy-pipe-no-clear "xsel -i --clipboard" bind -T copy-mode-vi C-c send -X copy-pipe-no-clear "xsel -i --clipboard" # Other examples: -- 2.49.1 From c385d74cac0380b17c02f8067d7294f63ad6a77f Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sat, 21 Feb 2026 09:21:58 -0500 Subject: [PATCH 15/20] Remove sensible. --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 5792db5..b6a7c6f 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,6 @@ docker run -it dot bash | Plugin | Description | Repository | |---------------------|--------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------| | tmux plugin manager | Manages tmux plugins directly from GitHub. | [https://github.com/tmux-plugins/tpm](https://github.com/tmux-plugins/tpm) | -| tmux-sensible | Provides improved sane defaults for tmux behavior and usability. | [https://github.com/tmux-plugins/tmux-sensible](https://github.com/tmux-plugins/tmux-sensible) | | tmux-resurrect | Saves and restores tmux sessions, panes, and layouts between restarts. | [https://github.com/tmux-plugins/tmux-resurrect](https://github.com/tmux-plugins/tmux-resurrect) | | tmux-continuum | Automatically saves tmux sessions and can restore them on system reboot. | [https://github.com/tmux-plugins/tmux-continuum](https://github.com/tmux-plugins/tmux-continuum) | | xclip | Integrates tmux copy mode with the system clipboard under X11. | [https://github.com/astrand/xclip](https://github.com/astrand/xclip) | -- 2.49.1 From 7461098b1c81b5aa4c484c6f2fff1592914c2061 Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sat, 21 Feb 2026 09:23:01 -0500 Subject: [PATCH 16/20] Move tables. --- README.md | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index b6a7c6f..1bb9b48 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,16 @@ docker run -it dot bash ### Configurations +#### Utilities + +| Tool | Description | Repository | +|----------------------|--------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------| +| ranger | Console-based file manager with Vim-like keybindings, previews, and customizable commands. | [https://github.com/ranger/ranger](https://github.com/ranger/ranger) | +| ble.sh | Advanced Bash line editor providing syntax highlighting, autosuggestions, and improved interactive shell behavior. | [https://github.com/akinomyoga/ble.sh](https://github.com/akinomyoga/ble.sh) | +| GNU Stow | Manages dotfiles using symlinks. Repository structure is organized for per-package Stow deployment. | [https://www.gnu.org/software/stow/](https://www.gnu.org/software/stow/) | +| `.stow-local-ignore` | Stow configuration file that excludes specific files or patterns from being symlinked during deployment. | [https://www.gnu.org/software/stow/manual/stow.html](https://www.gnu.org/software/stow/manual/stow.html) | +| `setup.sh` | Bootstrap script that automates symlink setup and environment initialization. | (Repository-local script) | + #### Vim | Plugin | Description | Repository | @@ -58,14 +68,3 @@ docker run -it dot bash | vim-airline | Lean and fast status/tabline for Vim. | [https://github.com/vim-airline/vim-airline](https://github.com/vim-airline/vim-airline) | | vim-airline-themes | Additional themes for vim-airline. | [https://github.com/vim-airline/vim-airline-themes](https://github.com/vim-airline/vim-airline-themes) | | vim-signify | Shows VCS (git/hg) changes in the sign column. | [https://github.com/mhinz/vim-signify](https://github.com/mhinz/vim-signify) | - -#### Utilities - -| Tool | Description | Repository | -|----------------------|--------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------| -| ranger | Console-based file manager with Vim-like keybindings, previews, and customizable commands. | [https://github.com/ranger/ranger](https://github.com/ranger/ranger) | -| ble.sh | Advanced Bash line editor providing syntax highlighting, autosuggestions, and improved interactive shell behavior. | [https://github.com/akinomyoga/ble.sh](https://github.com/akinomyoga/ble.sh) | -| GNU Stow | Manages dotfiles using symlinks. Repository structure is organized for per-package Stow deployment. | [https://www.gnu.org/software/stow/](https://www.gnu.org/software/stow/) | -| `.stow-local-ignore` | Stow configuration file that excludes specific files or patterns from being symlinked during deployment. | [https://www.gnu.org/software/stow/manual/stow.html](https://www.gnu.org/software/stow/manual/stow.html) | -| `setup.sh` | Bootstrap script that automates symlink setup and environment initialization. | (Repository-local script) | - -- 2.49.1 From 4d62b10d002e66d65ce81f28ad7d97d670f0e26e Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sat, 21 Feb 2026 09:23:33 -0500 Subject: [PATCH 17/20] Move tables. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1bb9b48..d995ef1 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ docker run -it dot bash | `.stow-local-ignore` | Stow configuration file that excludes specific files or patterns from being symlinked during deployment. | [https://www.gnu.org/software/stow/manual/stow.html](https://www.gnu.org/software/stow/manual/stow.html) | | `setup.sh` | Bootstrap script that automates symlink setup and environment initialization. | (Repository-local script) | -#### Vim +#### Tmux | Plugin | Description | Repository | |---------------------|--------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------| @@ -56,7 +56,7 @@ docker run -it dot bash | tmux-continuum | Automatically saves tmux sessions and can restore them on system reboot. | [https://github.com/tmux-plugins/tmux-continuum](https://github.com/tmux-plugins/tmux-continuum) | | xclip | Integrates tmux copy mode with the system clipboard under X11. | [https://github.com/astrand/xclip](https://github.com/astrand/xclip) | -#### Tmux +#### Vim | Plugin | Description | Repository | |--------------------|--------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------| -- 2.49.1 From 7075151bf0eacfc662ceb36382e65ca636d2431b Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sat, 21 Feb 2026 10:03:24 -0500 Subject: [PATCH 18/20] Add uninstall instructions. --- README.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d995ef1..e5d19f4 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ screenshot below ### Install -Installation instructions - +Installation instructions ```bash git clone --recursive https://github.com/shaunrd0/dot @@ -24,6 +24,19 @@ mv ~/.bashrc ~/.bashrc.backup stow . -t ~ ``` +To uninstall + +```bash +stow -D . -t ~ +mv ~/.bashrc.backup ~/.bashrc +``` + +If you have files other than `~/.bashrc` that conflict with these +configurations, +be sure to back them up so you can restore to your original state. If you do not +provide the `-t` flag to stow, the files will be symlinked within the parent +of your current directory. + ### Docker You can run these dotfiles in a docker container - -- 2.49.1 From 080fa0894f1b9e1da0a4f25f543496a19b33c191 Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sat, 21 Feb 2026 10:07:13 -0500 Subject: [PATCH 19/20] Add note to docker container. --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index e5d19f4..11ac363 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,12 @@ docker build -t dot . docker run -it dot bash ``` +Note that some features may not work properly in the container, like system +clipboard integration with vim or certain font icons used in themes. Still, the +base configurations work, and using the container as a clean environment is +useful for testing things such as installation instructions for a personal +project. + ### Configurations #### Utilities -- 2.49.1 From 50571ed8d34038b12cca25361f331a8604570579 Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sat, 21 Feb 2026 10:10:13 -0500 Subject: [PATCH 20/20] No --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 11ac363..5ec9f66 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ project. | Plugin | Description | Repository | |--------------------|--------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------| | Colorizer | Highlights color codes in Vim buffers (useful for CSS/ web). | [https://github.com/chrisbra/Colorizer](https://github.com/chrisbra/Colorizer) | -| ALE | Asynchronous Lint Engine – linting & fixing in Vim asynchronously. | [https://github.com/dense-analysis/ale](https://github.com/dense-analysis/ale) | +| ALE | Asynchronous Lint Engine - linting & fixing in Vim asynchronously. | [https://github.com/dense-analysis/ale](https://github.com/dense-analysis/ale) | | clang_complete | Auto-completion support for C/C++ using libclang. | [https://github.com/xavierd/clang_complete](https://github.com/xavierd/clang_complete) | | supertab | Expand completions using `` in insert mode. | [https://github.com/ervandew/supertab](https://github.com/ervandew/supertab) | | unicode.vim | Unicode helpers (insert and inspect Unicode characters). | [https://github.com/chrisbra/unicode.vim](https://github.com/chrisbra/unicode.vim) | -- 2.49.1