# drunkendotfiles

dissimulo's dotfiles. A fork of [skwp/dotfiles][yadr] (YADR) with personal
configs layered on top: a custom tmux setup, irssi, fonts, GTK themes, and
assorted `~/.local/bin/` helpers.

Upstream YADR hasn't been updated in a long time; this fork refreshes it and
adds machine-wide customizations.

## Install

One-liner:

```sh
curl -fsSL https://gitea.dlw.la/dissimulo/drunkendotfiles/raw/branch/drunkendotfiles/install.sh | bash
```

Or clone first:

```sh
git clone --recurse-submodules https://gitea.dlw.la/dissimulo/drunkendotfiles.git ~/.yadr
~/.yadr/install.sh
```

`--recurse-submodules` matters: Prezto lives in `zsh/prezto` as a git
submodule. Without it, `~/.zshrc` fails on startup with a missing
`~/.zprezto/runcoms/zshrc`. (If you already cloned without it,
`cd ~/.yadr && git submodule update --init --recursive` catches you up.)

The installer:

1. Clones this repo to `~/.yadr`
2. Runs YADR's native `rake install` for vim/prezto/plugins
3. Deploys the personal dotfiles on top of `$HOME`, moving any collisions to
   `~/.drunkendotfiles.bak.<timestamp>/`
4. Installs [Claude Code](https://claude.ai/code) (Anthropic's CLI) if it
   isn't already on the machine — set `DRUNKENDOTFILES_SKIP_CLAUDE=1` to
   skip this step

Requires `git`, `rake` (ruby), and `curl`.

## Upgrading

Two things can be refreshed independently.

### Pull new drunkendotfiles changes

```sh
cd ~/.yadr && git pull --recurse-submodules
```

That gets you any new config changes, tmux tweaks, helper scripts, etc.
pushed to this repo, plus any bumps to the Prezto submodule pointer.
Vim plugins are *not* touched — see below.

### Refresh YADR plugins

```sh
cd ~/.yadr && rake update
```

`rake update` walks through YADR's plugin managers (Vim-plug for vim, the
Prezto submodule for zsh) and pulls down the latest versions of each.
Run this every so often, or after pulling drunkendotfiles changes that
modify the plugin list (`vim/.vundles`, `vim/after/.vundles.after`, or
the `modules` list in `zsh/prezto-override/zpreztorc`).

### Redeploy personal dotfiles

If a `git pull` touched personal dotfiles at the repo root (e.g. a new
`.tmux.conf` or a new `.local/bin/` helper) and you want those changes
deployed to `$HOME`:

```sh
~/.yadr/install.sh
```

It's idempotent — any files in `$HOME` that would be overwritten get
moved to `~/.drunkendotfiles.bak.<timestamp>/` first.

### Full refresh in one shot

```sh
cd ~/.yadr && git pull && rake update && ./install.sh
```

## What's included

On top of stock YADR:

- **`.tmux.conf`** — real file (not the YADR symlink), with internal/public IP
  in the status bar and 80k-line scrollback
- **`.local/bin/tmux-ip`** — helper used by `.tmux.conf`; prefers a
  DigitalOcean reserved/floating IP if the host is a droplet with one
  attached, falls back to public egress (ipify) and then first local IP
- **`.irssi/`** — IRC client config (no credentials committed)
- **`.fonts/`** — Inconsolata, Menlo-Powerline, mensch-Powerline, monof55/56
- **`.themes/`** — BlackMATE v2 / v2.2 / "The Blues" GNOME metathemes
- Shell RCs (`.bashrc`, `.profile`, `.zshenv.backup`, `.zshrc.backup`, etc.)
- X/WM configs (`.xscreensaver`, `.xmodmap`, `.xsnowrc`, `.weatherspect`,
  `.fehbg`)
- Misc: `.rainbow_config.json` (rainbowstream), `.nanorc`, `.selected_editor`,
  `.mplayer/config`, `.jigdo-lite`

## Rainbow output (lolcat)

`zsh/lolcat.zsh` wires [lolcat](https://github.com/busyloop/lolcat) (Debian's
`/usr/games/lolcat`, busyloop's Ruby build — 24-bit truecolor) into a few shell
helpers. lolcat auto-detects a tty — it colorizes straight to the terminal but
passes text through plain when piped onward, so use `-f`/`--force` to colorize
mid-pipeline.

### Opt-in, per command

Prefix any command to rainbow its output:

```sh
lol fastfetch
lol git log --oneline
lol ls -C                 # -C keeps columns: a piped ls otherwise goes single-column
lolf git diff | less -R   # force color so it survives down a pipeline
```

### Shortcuts

```sh
rcat file.txt             # rainbow cat
rls -la                   # rainbow ls, columns preserved
some-cmd | rless          # rainbow + pager (less -R)
```

### Session toggle

Rainbow *all* shell stdout until you turn it off:

```sh
rainbow_on                # everything is rainbow now
...
rainbow_off               # back to normal
```

Novelty only: it garbles full-screen/interactive programs (vim, less, htop,
fzf, ssh) and the prompt, and buffers streaming output. Doesn't touch stderr.

## Upstream

Base is [skwp/dotfiles][yadr] (YADR — Yet Another Dotfiles Repo). All credit
for the vim/zsh/tmux/irb foundations goes to Yan Pritzker and YADR
contributors. This repo tracks a snapshot of upstream `master` at
`630d39f` (the last commit there as of this fork).

To refresh from upstream later:

```sh
cd ~/.yadr
git remote add upstream https://github.com/skwp/dotfiles.git
git fetch upstream
# then rebase or merge upstream/master into drunkendotfiles as needed
```

## License

YADR content is under [YADR's license](LICENSE) (upstream). Personal
additions in this fork are released under the same terms.

[yadr]: https://github.com/skwp/dotfiles
