No description
apps | ||
bin | ||
de | ||
doc | ||
scripts | ||
shell | ||
.editorconfig | ||
.gitignore | ||
Makefile | ||
readme.md | ||
setup | ||
sudo_setup |
My Dotfiles
This repository contains the majority of application or OS configuration files I use on a daily basis. I keep the here and public in an effort to inform others who may not know either how to go about organizing such files or to learn how to achieve certain behavior in their software and to have quick and easy access for myself when setting up a new machine.
Setup
- Clone the repo into
~/.config/dotfiles
- Run
~/.config/dotfiles/setup
- Read the warning, obey it, backup your files, then agree
- Optional: Reboot once the script finishes
Priorities
I have specific needs and desires (as does any developer) and I will lay those out in order of priority here:
- These files are primarily configured for Linux, (specifically, Arch Linux) but
I try to keep the OS-specific stuff in the
os-specific
directory. - I also prefer apps in my terminal. If I could, I would do everything that makes sense to do so in a terminal using only my keyboard. So if you know about really cool and usable terminal-based software, let me know!
- I prefer keeping my dotfiles as portable as possible (within reason) though this is obviously very difficult since I only run one OS.
- Setup should be very quick (downloading and installing packages aside).
- I aim to keep the dotfiles flexible and extendible, as I usually use them on multiple machines with specific use-cases. For example, a shared laptop should allow for other non-technical users ease-of-access, while my workstation should focus on being quick, powerful, and highly usable for me alone.
Applications
There are several types of applications I use every day, some more than others, and sometimes different applications that have the same purpose. Here are the applications I use:
- Terminal Emulator: Kitty
- Text Editor: Neovim
- Terminal Multiplexers: tmux
- Web Browser: Firefox
- Music: Google Play Music
- Email: Google Inbox, mutt
- Image Editing: GIMP, Inkscape, Krita, Aseprite
- Documents: Neovim + Markdown, sc-im, LibreOffice
- Gaming: Steam, various emulators
Workflow
Here are some bullet points on my workflow:
- Text Editing: I use
Neovim
in my terminal as my primary text editor. I usually run it in atmux
session alongside a few terminals to have a very flexible IDE-like development environment. More on that in other bullet points. I keep atmux
session for each project or group of terminals concerning a similar mind-space. - Version Control: I use
git
in the terminal and commit often. I work in feature branches that go to adev
branch as sort of a staging area for testing until it's time to go live, then I merge into master. - Compiler/Debugging: I rely heavily on auto-reloading and watch-and-test-and-compile features during development to iterate quickly. Language servers, linters, and simple file watches to trigger your tests are amazing tools to take care of the cruft of writing code and integrating them heavily into Neovim is my current top need/priority.
To Do and Improvements
- Add vim in the terminal as the handler for many MIME types (xdg-open and such) for the rare time I'm in a file manager or for opening easily from the browser.
- Unify all the common variables... somehow? (and use templates and
envsubst
?) - Makefile instead of setup script
- Vimux?
- Nerd Fonts with ligatures and icons for Kitty