My desktop configuration at present is semi-automated.
There are three kinds of configuration captured here:
- dotfiles in
dotfiles/
, - patches / source code mods in
depot/
(see below), and - custom scripts I have written over time.
For package management and source code management:
- GNU
stow
git
Utilities assumed by various scripts and configs:
fzf
rg
urlscan
w3m
and itsw3mimg
image loading extensionsnewsboat
- awk / grep / the usual gang
For each package $PKG
in dotfiles/
you install it by running:
> stow -t $HOME $PKG
The Firefox custom stylesheet is tricky to place automatically since once of
its enclosing directories is a "profile ID" which may change.
It will simply need to be placed in
$HOME/.mozilla/firefox/[PROFILEID]/chrome
.
Some applications such as dwm
, st
, slock
, and others are distributed as
source code with the intention that the end-user will build the package
manually.
The intended way to customize or extend them is to edit the code and apply
patches.
(Information about this way of doing things.)
Fortunately they almost all follow the same conventions.
Each $PKG
in depot/
corresponds to source code checked out at
$HOME/code/$PKG
.
To install a given $PKG
,
> stow -t $HOME/code/$PKG $PKG
> cd $HOME/code/$PKG
> # ... apply any patches ...
> make
> make PREFIX=/home/gcj/.local install # see note below
Note: different packages may require marginally different arguments to
make
so see their specific README first.
I have written helper scripts to assist with wifi and bluetooth connections,
generate passwords, and generate fullwidth text (among other
concerns).
Since .local/bin
is in my shell PATH all of my scripts are installed there
with one command:
> stow -t $HOME scripts