jessebot / dot_files

Default dot files for onboardme including bash, neovim, powerline, neomutt, w3m, wezterm, and more :)
https://jessebot.github.io/onboardme
GNU Affero General Public License v3.0
5 stars 3 forks source link
bashrc dotfiles iterm2 lua neomutt neovim nvim powerline ranger terminal w3m wezterm-config

Dot Files for onboardme

These are the chosen defaults for onboardme, but also the personal dot files of @cloudymax and @jessebot. The directories/files are installed to your home directory and follow the XDG Base Directory Spec as closely as possible. We update these pretty regularly.

Sections for each config directory/file

.cache
File: [`~/.cache/wget/wget-hsts`](.cache/wget/wget-hsts) File to auto-generate location for wget cache to match [XDG Base Directory Spec]
.config
asciinema
File: [`~/.config/asciinema/config`](.config/asciinema/config) Config file for [`asciinema`][asciinema], a lightweight, purely text-based approach to terminal recording. Currently it just sets the shell command to be `/bin/bash --login`, which loads your bash variables. This could be changed to a different shell and their equivilent.
bat
File: [`~/.config/bat/config`](.config/bat/config) Config file for `bat`[bat], a `cat` replacement with sytax highlighting and git support. Currently the config file: - sets a default theme - enable italic text - maps Chart.lock files to YAML syntax (this is for the helm charts for k8s) The goal is to have a [spacechalk.nvim]-like theme soon :)
bash
Files - [`~/.config/bash/alias.sh`](.config/bash/alias.sh) - [`~/.config/bash/completion.sh`](.config/bash/completion.sh) - [`~/.config/bash/history.sh`](.config/bash/history.sh) - [`~/.config/bash/k8s.sh`](.config/bash/k8s.sh) - [`~/.config/bash/path.sh`](.config/bash/path.sh) - [`~/.config/bash/minimal.sh`](.config/bash/minimal.sh) - [`~/.config/bash/text_editing.sh`](.config/bash/text_editing.sh) #### [`~/.config/bash/alias.sh`](.config/bash/alias.sh) a config file to organize all our BASH aliases #### [`~/.config/bash/completion.sh`](.config/bash/completion.sh) enable tab completion for all common commands that support it. #### [`~/.config/bash/history.sh`](.config/bash/history.sh) - sets history to be in `~/.local/state/bash/history` - sets default history size - don't log duplicate history lines #### [`~/.config/bash/text_editing.sh`](.config/bash/text_editing.sh) sets [neovim] as default text editor, or [vim] if neovim is not present #### [`~/.config/bash/k8s.sh`](.config/bash/k8s.sh) kubernetes defaults: - set pathing for [`krew`][krew], a plugin manager for [`kubectl`][kubectl]. - helpful aliases and functions such as: - `k` is aliased to `kubecolor` (`kubectl` with colors) - `kg` for `kubecolor get` - `kgsdump` and `kgs` to dump the contents of a given secret in plain text (supports tab completion) - `kgall` to get pods, PVCs, secrets, and configmaps in one go #### [`~/.config/bash/path.sh`](.config/bash/path.sh) - set [XDG Base Directory Spec] - set pathing for golang and python - set pathing for home brew #### [`~/.config/bash/text_editing.sh`](.config/bash/text_editing.sh) - fix how less handles non-text input files - change the default colors for less used in man pages - changes default pagers used when file is too long for catting
fastfetch
File: [`~/.config/fastfetch/config.conf`](.config/fastfetch/config.conf) Config file for [fastfetch], is a neofetch-like tool for fetching system information and displaying them in a pretty way. It is written in pure c, with performance and customizability in mind. Currently, Linux, Android, FreeBSD, MacOS and Windows 7+ are supported. Our current configuration default prints a dog on a computer using the iterm2 image protocol, but you could also change that to be sixel if you wanted. We also provide a couple of basic presets in this dir: `$XDG_DATA_HOME/.local/share/fastfetch/presets` You can also change the configuration to show more data or less on the right side.
gh
File: [`~/.config/gh/config.yml`](.config/gh/config.yml) Config file for [`gh`][github-cli], the GitHub CLI. There's not a ton in there, but it uses [rich-cli] as a prettier pager, and firefox as a browser, and setting [neovim] as an editor. The rest is stock, and subject to change.
glab-cli
File: [`~/.config/glab-cli/config.yml`](.config/glab-cli/config.yml) Config file for [`glab`](https://glab-cli.io/), an open source GitLab CLI tool. There's not a ton in there, but it uses a dark theme, firefox as a browser, and [neovim] as an editor. The rest is stock, and subject to change.
git
File: [`~/.config/git/config`](.config/git/config) Default git config file. We set the following parameters: - Default branch for new repos is `main` - Push up to remote automatically if it's a new branch - color is always on - set specific terminal colors for: - `git branch` - `git status` - `git diff` We also include this block, which allows you to have a personal gitconfig file: ```gitconfig [includeIf "gitdit:~/"] path = ~/.config/git/personal ``` You can create a `~/.config/git/personal` file and store info such as: ```gitconfig [user] email = fido@coolemailproviderfordogs.com name = Fido Good-dog signingkey = gooddoggpgsigningkey [commit] gpgsign = true ```
gitui
File: [`~/.config/gitui/theme.ron`](.config/gitui/theme.ron) This just sets a basic colorscheme for gitui so it's readable with [spacechalk.nvim]-like colors :)
lsd
File: [`~/.config/lsd/config.yaml`](.config/lsd/config.yaml) Config file for [`lsd`][lsd], an [`ls`][ls] alternative with icons and pretty colors. There's an intension to write and release a [spacechalk.nvim]-like theme for lsd eventually.
lsimg
File: [`~/.config/lsimg/config.yaml`](.config/lsimg/config.yaml) This is a local project that I'm working on to rewrite a bash script in python, to do basic checking of images in the terminal. I might remove it though, because after discovering [ranger], it might not be really needed :shrug:
neomutt
Files: - [`~/.config/neomutt/mailcap`](.config/neomutt/mailcap) - [`~/.config/neomutt/neomuttrc`](.config/neomutt/neomuttrc) - [`~/.config/neomutt/themes/spacechalk/neomutt_spacechalk_colors.muttrc`](.config/neomutt/themes/spacechalk/neomutt_spacechalk_colors.muttrc) - [`~/.config/neomutt/themes/spacechalk/powerline.neomuttrc`](.config/neomutt/themes/spacechalk/powerline.neomuttrc) Config files for [NeoMutt], a terminal based email client. Config includes: - sets spacechalk theme, based on the [neonwolf colorscheme] and [neomutt powerline] - sets character set to be utf-8 (emojis 🧑‍💻) - sets basic SMTP settings (but use [offlineimap] to pull the imap backup) - sets tls by default - sets header_cache and message_cachedir to be `~/.cache/mutt` (must be a directory, NOT a file) - sets navigation keys similar to vim - set a key binding for `V` to be opening html attachments - removes the prompt of hitting enter after viewing an attachment You'll still need to create `~/.config/neomutt/keys` with the following info: ```ini set my_user=you@youremail.com set my_name="Your Name" # if you're using protonmail this is the password from protonmail-bridge, # after you login, not your actual email password set my_pass="areallycoolpasswordfordogs" ``` Config file for [NeoMutt's MIME Support], which is how [NeoMutt], a [TUI] email client, handles attachments e.g. html in an email body, PDFs, images... We currently open these applications for these file types: | file type | application | |:---------:|---------------| | html | [w3m] | | PDFs | macOS preview | | images | img2[sixel] |
nvim
[neovim] is a hyperextensible Vim-based text editor, which is in some ways a sucessor to [vim]. It's a lot faster, for one, and there's more support for more languages, which means more plugins. Uses [lazy.nvim] to manage neovim plugins. Each file explained below: ### [`init.lua`](.config/nvim/init.lua) The main global configuration changes are: - turning off mouse scrolling (might re-enable this 🤔) - enabling line numbers - adding a cursorline - enter folds the current code block - space is our leader key (a custom modifier key for neovim) - setting column 80 to be a different color for tidy code - searches are case insensitive - enabling gui colors so you aren't limited to like 16 colors - uses the [spacechalk.nvim] colorscheme - sources all the files in [`~/.config/nvim/lua`](.config/nvim/lua), including all our [plugin configs](.config/nvim/lua/user/lazy.lua). - adds a nice little terminal called [toggleterm.nvim] in [`toggleterm.lua`](.config/nvim/lua/user/toggleterm.lua) ### [`~/.config/nvim/lua/user/lazy.lua`](.config/nvim/lua/user/lazy.lua) This is the configuration for [`lazy.nvim`], our plugin manager for neovim. It installs lazy, and then all of our plugins. ### [`~/.config/nvim/lua/user/dashboard.lua`](.config/nvim/lua/user/dashboard.lua) config for a starting screen [dashboard] for neovim. You should just check out the file to see what's being done. It's cute ascii art, and utilizes [telescope] to open your recent files or search your files. ### [`~/.config/nvim/lua/user/folding.lua`](.config/nvim/lua/user/folding.lua) config file to enable folding, which is just vim speak for collapsing blocks of code. Sets some defaults. ### [`~/.config/nvim/lua/user/nvim-tree.lua`](.config/nvim/lua/user/nvim-tree.lua) config file for [nvim-tree], a neovim file explorer written in lua, with icons. Opens on opening of any file, and auto-adjusts its window size. ### [`~/.config/nvim/lua/user/tree-sitter.lua`](.config/nvim/lua/user/tree-sitter.lua) config file for the nvim [tree-sitter] plugin, which helps with syntax highlighting of various languages. currently installing syntax for: "lua", "yaml", "bash", "hcl"
offlineimap
File: [`~/.config/offlineimap/config`](.config/offlineimap/config) This is to sync your email from whereever, but it's default configured for protonmail right now :) You will need to export the following env variables: (if using protonmail bridge, these should be the credentials from there) - `MAIL_SERVER` - normally 127.0.0.1 for protonmail - `MAIL_USER` - normally youruser@protonmail.com for protonmail - `MAIL_PASS` - normally generated from the protonmail bridge app - `MAIL_PORT` - typically 1143 for protonmail Currently we import ALL folders except the "All Mail" folder, which is just all the mail from all the other folders (including inbox, sent, trash, etc)
onboardme
Files: - [`~/.config/onboardme/config.yml`](.config/onboardme/config.yml) - [`~/.config/onboardme/packages.yml`](.config/onboardme/packages.yml) These are config files for [onboardme], a tool to install dot files, packages, and setup neovim.
powerline
Configuration files for [powerline], a status line for [BASH] and [tmux]. We enable a [spacechalk.nvim]-like color theme as well as: - local IP address - hostname - current working directory - git status info - unread mail count - kubernetes info - laptop battery information - the time - status of last run command (only appears if exit code is not 0) Currently working on getting mail notifications working. Files for colors: - [`~/.config/powerline/colors.json`](.config/powerline/colors.json) - [`~/.config/powerline/colorschemes/default.json`](.config/powerline/colorschemes/default.json) - [`~/.config/powerline/colorschemes/shell/default.json`](.config/powerline/colorschemes/shell/default.json) Files for configuring powerline for a login shell, and the console shell: - [`~/.config/powerline/themes/shell/default.json`](.config/powerline/themes/shell/default.json) - [`~/.config/powerline/themes/powerline.json`](.config/powerline/themes/powerline.json) - [`~/.config/powerline/themes/powerline_terminus.json`](.config/powerline/themes/powerline_terminus.json) - [`~/.config/powerline/themes/unicode_terminus.json`](.config/powerline/themes/unicode_terminus.json) File for configuring [tmux] status line: - [`~/.config/powerline/themes/tmux/default.json`](.config/powerline/)
python
File: - [`~/.config/python/interactive_startup.py`](.config/python/interactive_startup.py) This file sets the default history location to `$XDG_STATE_HOME` (`~/.local/state/python/history`) It requires the following in your bash config: ```bash export PYTHONSTARTUP=$XDG_CONFIG_HOME/python/interactive_startup.py ```
ranger
Files: - [`~/.config/ranger/scope.sh`](.config/ranger/scope.sh) - [`~/.config/ranger/rc.conf`](.config/ranger/rc.conf) [ranger][ranger] is a [TUI] file manager. Current configurations: - enable file previews using [iterm2] image protocol - enable video previews using ffmpegthumbnailer - enable svg previews.
spotifyd
Files: - [`~/.config/spotifyd/spotifyd.conf`](.config/spotifyd/spotifyd.conf) [spotifyd] is a spotify daemon used in combination with [spotify-tui] or other alternative spotify frontends. Current settings are for Linux only. I will add a macOS file and appropriate aliases and docs soon :) For Linux, this still requires a premium account, but then you can follow the potify-tui api connection instructions]. (You also need to change your cache in spotifyd.conf to be your username) After that, just make sure you have your spotify credentials in bitwarden, and that you are logged into bitwarden via the [bw] cli. DON'T FORGET TO EXPORT YOUR SESSION ID! Then you HAVE TO RESTART SPOTIFYD! ```bash brew services restart spotifyd ``` **Linux Note:** If you did a `brew install spotifyd`, then you might have to `brew edit spotifyd`, and then fix the hardcoded macOS backend to be `alsa`. Then you need to do a `brew reinstall --build-from-source spotifyd`. After that, you can use commands such as `spt` (spotify-tui) to launch a lightweight terminal frontend. You can follow spotify-tui's instructions above, but the most important part is going to be creating your own little spotify app which you can do after logging into the [developer spotify dashboard](https://developer.spotify.com/dashboard/).
tmux
File: [`~/.config/tmux/tmux.conf`](.config/tmux/tmux.conf) Config file for [tmux]. Currently, it will: - Sets 256 colors - enable the [powerline] tmux status line
w3m
Files: - [`~/.config/w3m`](.config/w3m/config) - [`~/.config/w3m/keymap`](.config/w3m/keymap) - [`~/.config/w3m/mailcap`](.config/w3m/mailcap) Files for the [w3m] terminal based web browser. [`~/.config/w3m/config`](.config/w3m/config) sets: - set default mailcap file for MIME types - always display images - set the default keymap file (for mapping keys) - quit without asking [`~/.config/w3m/keymap`](.config/w3m/keymap) sets vim key bindings. [`~/.config/w3m/mailcap`](.config/w3m/mailcap) is supposed to set default MIMEtypes for w3m but does not :shrug:
wezterm
File: [`~/.config/wezterm/wezterm.lua`](.config/wezterm/wezterm.lua) This file is configuration for the terminal emulator [wezterm]: - disables bell noises - sets font face to [mononoki](https://madmalik.github.io/mononoki/) - sets font size to `15` - ignore warnings about missing glyphs - hides tab bar if only one tab - removes top title bar - set background opacity to `0.95` - change colors to a softer [spacechalk.nvim] aligned colorscheme - maps alt+⬅️ to go back a word on the command line - maps alt+➡️ to go forward a word on the command line - maps ctrl+s to open a split pane to the right - maps ctrl+S to open a split pane below the current pane - makes links clickable
.cron
local cron jobs for alarms, and package manager updates
.local
Directories:
bin
Files: - [`~/.local/bin/utc`](.local/bin/utc) - [`~/.local/bin/w3msplits`](.local/bin/w3m-splits) This is just where we throw a few really simple scripts like: | Command | Description | |-----------------|-------------------------------------------------------------| | `utc` | for ease of use printing the time in UTC | | `w3m-splits` | open split in iterm2 and send a website or HTML file to w3m | `w3m-splits` is mostly useful for [NeoMutt], but anything is possible :shrug: Directories:
iterm2
Directory: - [`~/.local/bin/iterm2`](.local/bin/iterm2) This is just for `imgcat`, for printing images in iterm2/wezterm.
share
Mostly READMEs to generate directory structure, but also some fastfetch preset configs.
state
This directory and the director[y/ies]/file(s) within it are specifically to auto-generate directory structure so that XDG spec is enforced with tools that only loosely enforce it.
.bash_profile, .bashrc
Configuration files for [BASH]. The `.bash_profile` just sources the `.bashrc`, since macOS default looks for `.bash_profile` instead of `.bashrc`. The `.bashrc` sets the following defaults: - turns off bells - enables 256 colors - sources all the files in `~/.config/bash` (see above under config > bash ) - sources personal file in `~/.config/bash/personal/bashrc` (this files is never checked in and is where you put sensitive host specific bash configs) - starts powerline daemon, which is used for our fancy status line for BASH - runs [fastfetch] when you source it
.gitignore
Git ignore file for all sorts of things in your home directory that should never get committed if this repo is used as your home directory dot files.
.hushlogin
This just silences the last login message of shells.
.zshrc
Recently started giving this some TLC, but still in it's infancy to be match the .bash configs. Currently we: - set some useful aliases - set the same powerline prompt as bash

Please feel free to fork this repo and make it your own. You can still use onboardme, but you'll want to pass in your git URL and branch.

Example via the CLI:

# this uses your personal git URL and makes sure to always pull from main
# if you want to overwrite your existing dot files, you can also add --overwrite to this command
onboardme --git_url https://github.com/your_username/dot_files --git_branch main

Example via the config file, ~/.config/onboardme/config.yaml:

# this uses your personal git URL and makes sure to always pull from main
dot_files:
  # your personal git repo URL for your dot files
  # defaults to https://github.com/jessebot/dot_files.git if not set
  git_url: "https://github.com/your_username/dot_files.git"
  # the branch to use for the git repo above, defaults to main
  git_branch: "main"
  # !!CAREFUL: runs a `git reset --hard`, which will overwrite/delete dot files in
  # $HOME that conflict with the above defined git repo url and branch.
  # Unless you know for sure you want to overwrite everytime you run onboardme, you
  # should run the following to get the files that would be overwritten before setting this:
  # onboardme -s dot_files
  # if set to true, then using onboardme -O will toggle it back to false
  overwrite: false

FAQ

Where are the config files for vim, iterm2, terminator, etc?
I've been moving all the configurations for apps I no longer use to [jessebot/old_dotfiles](https://github.com/jessebot/old_dotfiles).

RoadMap