After a considerable amount of research, I finally understand how to use
chmod and what file permissions in linux actually mean.
It turns out that git can commit both regular files (644 permission) and
executable files (755 permission). This is great since changing file
permissions manually after a git clone is no longer needed.
This useful feature is enabled by default, however, it seems like I
disabled it a long time ago. If this is you, simply re-enable it by
setting `filemode` to true in your .git/config.
Previously I wanted to stow everything at once, but now that I know how
to use Makefiles a bit more, I can still stow everything at once with
multiple directories. Additionally, this allows people (myself included)
to only stow the dotfiles they want, such as only vim or only fish.
Instead of separating *every* file into its own directory, I've opted
instead to group common configs together and only use separate
directories where they make sense (e.g. a vim config).
Now that I've read the man pages for `stow` and actually know how to use
it properly, I can organize my repositiory by using a separate dots
directory specifically for my dotfiles.
Additionally, similar dotfiles are now grouped together. This means less
stow work for me with files that would otherwise only be used in one
environment (e.g. bspwm).
As much as one would like to show off browsing the internet with w3m,
such a setup is highly impractical for daily use. Remembering the
keybindings I set up was also becoming an issue, so I simply removed
them in favor of the defaults, assuming I ever need to use w3m at a
later date (probably not).
There are many dotfiles that we don't have to worry about when using a
desktop environment like Plasma or Xfce. These dotfiles are bspwm
specific and should all be stowed at the same time when stowing bspwm.