bashrc/README.md
2023-03-19 23:55:52 +07:00

130 lines
6.2 KiB
Markdown

# [bashrc][bashrc_repo]
![Bash](https://img.shields.io/badge/bash-1f425f.svg?style=for-the-badge&logo=image%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw%2FeHBhY2tldCBiZWdpbj0i77u%2FIiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8%2BIDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkE3MDg2QTAyQUZCMzExRTVBMkQxRDMzMkJDMUQ4RDk3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkE3MDg2QTAzQUZCMzExRTVBMkQxRDMzMkJDMUQ4RDk3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTcwODZBMDBBRkIzMTFFNUEyRDFEMzMyQkMxRDhEOTciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTcwODZBMDFBRkIzMTFFNUEyRDFEMzMyQkMxRDhEOTciLz4gPC9yZGY6RGVzY3JpcHRpb24%2BIDwvcmRmOlJERj4gPC94OnhtcG1ldGE%2BIDw%2FeHBhY2tldCBlbmQ9InIiPz6lm45hAAADkklEQVR42qyVa0yTVxzGn7d9Wy03MS2ii8s%2BeokYNQSVhCzOjXZOFNF4jx%2BMRmPUMEUEqVG36jo2thizLSQSMd4N8ZoQ8RKjJtooaCpK6ZoCtRXKpRempbTv5ey83bhkAUphz8fznvP8znn%2B%2F3NeEEJgNBoRRSmz0ub%2FfuxEacBg%2FDmYtiCjgo5NG2mBXq%2BH5I1ogMRk9Zbd%2BQU2e1ML6VPLOyf5tvBQ8yT1lG10imxsABm7SLs898GTpyYynEzP60hO3trHDKvMigUwdeaceacqzp7nOI4n0SSIIjl36ao4Z356OV07fSQAk6xJ3XGg%2BLCr1d1OYlVHp4eUHPnerU79ZA%2F1kuv1JQMAg%2BE4O2P23EumF3VkvHprsZKMzKwbRUXFEyTvSIEmTVbrysp%2BWr8wfQHGK6WChVa3bKUmdWou%2BjpArdGkzZ41c1zG%2Fu5uGH4swzd561F%2BuhIT4%2BLnSuPsv9%2BJKIpjNr9dXYOyk7%2FBZrcjIT4eCnoKgedJP4BEqhG77E3NKP31FO7cfQA5K0dSYuLgz2TwCWJSOBzG6crzKK%2BohNfni%2Bx6OMUMMNe%2Fgf7ocbw0v0acKg6J8Ql0q%2BT%2FAXR5PNi5dz9c71upuQqCKFAD%2BYhrZLEAmpodaHO3Qy6TI3NhBpbrshGtOWKOSMYwYGQM8nJzoFJNxP2HjyIQho4PewK6hBktoDcUwtIln4PjOWzflQ%2Be5yl0yCCYgYikTclGlxadio%2BBQCSiW1UXoVGrKYwH4RgMrjU1HAB4vR6LzWYfFUCKxfS8Ftk5qxHoCUQAUkRJaSEokkV6Y%2F%2BJUOC4hn6A39NVXVBYeNP8piH6HeA4fPbpdBQV5KOx0QaL1YppX3Jgk0TwH2Vg6S3u%2BdB91%2B%2FpuNYPYFl5uP5V7ZqvsrX7jxqMXR6ff3gCQSTzFI0a1TX3wIs8ul%2Bq4HuWAAiM39vhOuR1O1fQ2gT%2F26Z8Z5vrl2OHi9OXZn995nLV9aFfS6UC9JeJPfuK0NBohWpCHMSAAsFe74WWP%2BvT25wtP9Bpob6uGqqyDnOtaeumjRu%2ByFu36VntK%2FPA5umTJeUtPWZSU9BCgud661odVp3DZtkc7AnYR33RRC708PrVi1larW7XwZIjLnd7R6SgSqWSNjU1B3F72pz5TZbXmX5vV81Yb7Lg7XT%2FUXriu8XLVqw6c6XqWnBKiiYU%2BMt3wWF7u7i91XlSEITwSAZ%2FCzAAHsJVbwXYFFEAAAAASUVORK5CYII%3D)
![Debian](https://img.shields.io/badge/Debian-D70A53?style=for-the-badge&logo=debian&logoColor=white)
![Ubuntu](https://img.shields.io/badge/Ubuntu-E95420?style=for-the-badge&logo=ubuntu&logoColor=white)
**bashrc** is a collection of dotfiles/[RUNCOM][RUNCOM] dedicated to environment setup for Debian based server/desktop systems.
- I use these files on my personal desktops and most semi-professional projects.
- The most powerful features are related to my own setup for tmux, ssh, nfty or keepassxc.
- It also contains many aliases and functions of interest.
----
## Features
- Include **[Liquid Prompt][liquidprompt_repo]**, an intelligent and non-intrusive prompt for Bash and zsh.
- Ready for **FZF bindings**.
- Full **TMUX experience**, even surviving desktop user reconnections.
- Ready to use **[KeePassXC][KeePassXC_website] as ssh-agent and keyring**.
- Advanced Command notifications with [NTFY][NTFY_repo], dunstify and sound.
- And many more **aliases and functions to discover**
## License
This repository includes some original lines of code and others gathered through many years and available publicly or known as best practices.
There will be no license attached to this code except for the content listed below and coming from a licensed source:
- [Liquid Prompt][liquidprompt_repo]: AGPL-3.0 license. Original source in file `.bashrc.d/22-prompt.bashrc`.
### Issues
- function `lf` (ls alternative with filters and sorting through fzf and exa): some outputs are broken, I will fix it soon.
## Requirements
- debian 10+ based distro
### Recommended
- bash 5+
- bash_completion
- systemd, systemd-container
- vim
- ncdu
- fzf 0.35+
- pipx
- keepassxc
- keyring (python3-keyring)
- tmux 3.3+
- [tmuxrc][tmuxrc_repo]
- fzf-tmux
- exa 10.1+
- fd (fd-find)
- xclip
- [MOTDfetch][MOTDfetch_repo]
- curl
- bat (get the latest release)
- dunstify
- wget2
- emoji-fzf (python)
- ssh
- ...
## Installation
### Current user
```bash
# backup current files
mkdir -p $HOME/.backups
cp -r --backup=t {"$HOME"/.bashrc,"$HOME"/.bashrc.d,"$HOME"/.bash_logout,"$HOME"/.bash_profile,"$HOME"/.profile} $HOME/.backups/
# download new files from repository
wget -c -nv https://git.tkapias.net/tkapias/bashrc/archive/master.tar.gz -O - \
| tar -xzv --strip-components=1 -C $HOME/ \
bashrc/.bash_logout \
bashrc/.bash_profile \
bashrc/.bashrc \
bashrc/.bashrc.d/ \
bashrc/.profile
chmod 700 ~/.bashrc.d
chmod 600 ~/.bashrc ~/.bashrc.d/* ~/.bash_logout ~/.bash_profile ~/.profile
# check if you need to customize the secrets file
cat ~/.bashrc.d/02-secrets.bashrc
```
### SKEL
If you want to get the same base for every new user on the system.
- Execute as root:
```bash
# backup current files
mkdir -p /root/.backups/skel
cp -r --backup=t /etc/skel $HOME/.backups/
# download new files from repository
wget -c -nv https://git.tkapias.net/tkapias/bashrc/archive/master.tar.gz -O - \
| tar -xzv --strip-components=1 -C /etc/skel/ \
bashrc/.bash_logout \
bashrc/.bash_profile \
bashrc/.bashrc \
bashrc/.bashrc.d/ \
bashrc/.profile
chmod 700 /etc/skel/.bashrc.d
chmod 600 /etc/skel/.bashrc /etc/skel/.bashrc.d/* /etc/skel/.bash_logout /etc/skel/.bash_profile /etc/skel/.profile
# check if you need to customize the secrets file
cat /etc/skel/.bashrc.d/02-secrets.bashrc
```
----
[//]: # (LINKS)
[bashrc_repo]: https://git.tkapias.net/tkapias/bashrc
[RUNCOM]: https://en.wikipedia.org/wiki/RUNCOM
[liquidprompt_repo]: https://github.com/nojhan/liquidprompt
[KeePassXC_website]: https://keepassxc.org
[NTFY_repo]: https://github.com/binwiederhier/ntfy
[MOTDfetch_repo]: https://git.tkapias.net/tkapias/MOTDfetch
[tmuxrc_repo]: https://git.tkapias.net/tkapias/tmuxrc