This repository has been archived on 2024-03-28. You can view files and clone it, but cannot push or open issues or pull requests.
dotfiles/readme.md

98 lines
4.3 KiB
Markdown

# My Dotfiles
[🖥️ Upstream][upstream] • [🐙 GitHub Mirror][github]
![Desktop Screenshot][desktop-screenshot]
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.bash`
* Read the warning, obey it, backup your files, *then* agree
* **Optional**: Reboot once the script finishes
**NOTE**: I'm in the middle of migrating from urxvt+bash to kitty+fish (and
a less anything-dependent system in general). Lots of things are broken. The
setup script probably no longer sets up *absolutely everything*.
## 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 a `tmux` session alongside a few terminals to
have a very flexible IDE-like development environment. More on that in other
bullet points. I keep a `tmux` 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 a `dev` 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
+ `c` (and similar aliases) could utilize `CDPATH` envvar?
+ Better/more secure remote management configuration in dotfiles? [1][1]
+ Wayland stuff
+ Sway hotkey parity (as much as is possible) with sxhkd/bspwm
+ Clean out all the X11 cruft?
* 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](https://github.com/benmills/vimux)?
* Custom Iosevka font with kitty-compatible ligatures
* Setup network file sharing directory
+ Investigate some systemd services (homed,
[upstream]: https://git.faceless.lytedev.io/lytedev/dotfiles
[github]: https://github.com/lytedev/dotfiles
[desktop-screenshot]: https://lyte.dev/unix/desktop-screenshot.png
[1]: https://smallstep.com/blog/ssh-tricks-and-tips/