Compare commits
9 Commits
blesh-time
...
updates
| Author | SHA1 | Date | |
|---|---|---|---|
| 5784d733d6 | |||
| 5d6db8b9be | |||
| 3c04a3a24a | |||
| 060dd0b44f | |||
| 72f807aaf0 | |||
| 6d59e72866 | |||
| 90f24b1edd | |||
| 4b41cbe467 | |||
| bb77a3a032 |
@@ -1,28 +0,0 @@
|
||||
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
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
# $1: Version; defaults to 6.7.3
|
||||
# $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 &
|
||||
}
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
# 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 [ -f ~/.bash.d/.bash_secrets ]; then
|
||||
. ~/.bash.d/.bash_secrets
|
||||
fi
|
||||
|
||||
@@ -1,14 +1,39 @@
|
||||
# Used in setup script and dockerfile.
|
||||
# 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.
|
||||
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
|
||||
# `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'
|
||||
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"
|
||||
alias ,assistant="nohup $HOME/Qt/6.9.0/gcc_64/bin/assistant > /dev/null 2>&1 &"
|
||||
fi
|
||||
|
||||
# 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"
|
||||
@@ -18,6 +43,17 @@ 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
|
||||
@@ -62,6 +98,15 @@ 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
|
||||
11
.bashrc
11
.bashrc
@@ -100,20 +100,11 @@ 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).
|
||||
|
||||
17
.blerc
17
.blerc
@@ -52,20 +52,3 @@ function blerc/define-sabbrev-commit {
|
||||
}
|
||||
blehook/eval-after-load complete blerc/define-sabbrev-commit
|
||||
|
||||
# Show the timestamp aligned to the right after each command is entered.
|
||||
show_timestamp() {
|
||||
# 17:10:00 EST-05
|
||||
local ts="$(date +'%H:%M:%S %Z%:::z')"
|
||||
# Column to show timestamp.(COLUMNS - length_of_timestamp)
|
||||
local col=$((COLUMNS - ${#ts}))
|
||||
# Save current cursor position.
|
||||
printf '\033[s'
|
||||
# Move cursor to desired column.
|
||||
printf "\033[${col}G"
|
||||
# Print timestamp in gray.
|
||||
printf '\e[90m%s\e[0m' "$ts"
|
||||
# Restore previous cursor position.
|
||||
printf '\033[u'
|
||||
}
|
||||
|
||||
blehook PREEXEC=show_timestamp
|
||||
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,4 +1,4 @@
|
||||
**/.bash_secrets
|
||||
.bash_secrets
|
||||
.vim/.netrwhist
|
||||
.idea/
|
||||
.config/Code/Backups/*
|
||||
@@ -14,8 +14,6 @@
|
||||
.config/Code/Network*
|
||||
**/.config/.brightness
|
||||
.local/share/fonts/.uuid
|
||||
.local/share/blesh
|
||||
.local/share/doc
|
||||
|
||||
# Byte-compiled / optimized / DLL files
|
||||
*__pycache__/
|
||||
|
||||
6
.inputrc
6
.inputrc
@@ -1,4 +1,2 @@
|
||||
# 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
|
||||
"\e[A": history-search-backward
|
||||
"\e[B": history-search-forward
|
||||
|
||||
@@ -16,9 +16,6 @@ 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:
|
||||
|
||||
Submodule .vim/bundle/clang_complete updated: 75946deff4...293a106227
88
README.md
88
README.md
@@ -1,20 +1,16 @@
|
||||
## Dotfiles
|
||||
|
||||
Dotfiles configurations for 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
|
||||
|
||||

|
||||
|
||||
### Install
|
||||
|
||||
Installation instructions
|
||||
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
|
||||
git clone --recursive https://github.com/shaunrd0/dot
|
||||
@@ -24,18 +20,19 @@ mv ~/.bashrc ~/.bashrc.backup
|
||||
stow . -t ~
|
||||
```
|
||||
|
||||
To uninstall
|
||||
|
||||
If you forget to clone recursively
|
||||
```bash
|
||||
stow -D . -t ~
|
||||
mv ~/.bashrc.backup ~/.bashrc
|
||||
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'
|
||||
```
|
||||
|
||||
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
|
||||
|
||||
@@ -48,42 +45,33 @@ 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.
|
||||
This container has the following packages installed and uses `ubuntu:latest` as a base.
|
||||
|
||||
### Configurations
|
||||
```
|
||||
git stow vim tmux ranger clang wget curl golang-go
|
||||
```
|
||||
|
||||
#### 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) |
|
||||
### Install Clang Completion
|
||||
|
||||
#### Tmux
|
||||
**These configurations require the installation of clang for clang completion**
|
||||
|
||||
| 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-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) |
|
||||
If you don't want clang completion, just remove the plugin directory from `~/.vim/bundle/`.
|
||||
|
||||
#### Vim
|
||||
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
|
||||
```
|
||||
|
||||
| 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 `<Tab>` 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) |
|
||||
|
||||
16
setup.sh
16
setup.sh
@@ -3,28 +3,26 @@ set -Eeuo pipefail
|
||||
|
||||
# $1: Error message
|
||||
# $2: Error code
|
||||
# $3: Error line
|
||||
function fatal() {
|
||||
local msg=${1:-"Unspecified error"}
|
||||
local line=${3:-9}
|
||||
echo "[Error:$line] Could not install dotfiles: $msg"
|
||||
echo "[Error:$LINENO] Could not install dotfiles: $msg"
|
||||
exit ${2:-1}
|
||||
}
|
||||
trap 'fatal "Trapped an unknown error" $? $LINENO' ERR
|
||||
trap 'fatal "Trapped an unknown error" $?' 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 $LINENO
|
||||
fatal "Run setup.sh from the root directory of the dotfiles repository." 2
|
||||
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 $LINENO
|
||||
if ! [[ -f .bash_aliases ]]; then
|
||||
fatal "Failed to locate .bash_aliases in path: $(pwd)" 3
|
||||
fi
|
||||
. .bash.d/.bash_exports
|
||||
. .bash_aliases
|
||||
|
||||
if [[ -z ${DOT_PACKAGES:-} ]]; then
|
||||
fatal "DOT_PACKAGES variable not found after sourcing $(pwd)/.bash.d/.bash_aliases" 4 $LINENO
|
||||
fatal "DOT_PACKAGES variable not found after sourcing $(pwd)/.bash_aliases" 4
|
||||
fi
|
||||
sudo apt update -y && sudo apt install -y $DOT_PACKAGES
|
||||
go install github.com/arl/gitmux@latest
|
||||
|
||||
Reference in New Issue
Block a user