# NoSignal — fish → bash migration (Omarchy bash setup)

Switches this Caelestia/NoSignal box from the fish shell to **bash, configured to
match [Omarchy](https://github.com/basecamp/omarchy)**. Self-contained so it
survives a wipe — copy this folder back with the rest of Downloads and run the
installer.

## Install

```sh
sh ~/Downloads/fish-to-bash/install-fish-to-bash.sh
```

Idempotent. Open a **new** terminal afterwards to land in bash.

## What it does

| Step | Effect |
|------|--------|
| Vendor `bash/` tree | Copied verbatim from Omarchy to `~/.local/share/omarchy/default/bash/` (`rc`, `shell`, `aliases`, `envs`, `init`, `functions`, `inputrc`, `completions`, `fns/*`) |
| `~/.bashrc` | Omarchy's template; sources the tree above. Existing `~/.bashrc` backed up to `~/.bashrc.pre-omarchy` |
| kitty | `~/.config/kitty/kitty.conf`: `shell fish` → `shell bash` |
| foot | `~/.config/foot/foot.ini`: `shell=fish` → `shell=bash` |
| Hyprland helpers | `wsaction.fish` & `configs.fish` replaced with bash ports (same filenames, bash shebang) so the stock keybinds keep working |

## Why the layout matches Omarchy exactly

The vendored files are byte-for-byte Omarchy and live at Omarchy's own path
(`~/.local/share/omarchy/...`). That means: (a) the prompt/aliases/history/
completion behaviour is identical to Omarchy, and (b) you can refresh them from
upstream by re-copying `default/bash/` with no edits. `envs` sets
`OMARCHY_PATH` and prepends `~/.local/bin` to `PATH` (so the keybind-help
scripts resolve too). References to omarchy-only tools (`omarchy`, `mise`,
`opencode`, `tdl`, `gum`, …) are all guarded with `command -v` or are function
definitions, so missing tools are harmless until you actually call them.

## NoSignal-specific additions (the only deviations from stock Omarchy)

- `~/.bashrc` exports `EDITOR=nvim` if unset (Omarchy sets this in `uwsm/env`,
  which we don't manage here).
- `~/.bashrc` runs `cat ~/.local/state/caelestia/sequences.txt` so the terminal
  picks up Caelestia's dynamic colour scheme.

## Notes / things that changed from the old fish config

- **`ga` / `gd` now mean Omarchy's git-worktree helpers**, not the old fish
  abbreviations (`git add .` / `git diff`). Other git shortcuts: `g`, `gcm`,
  `gcam`, `gcad`.
- **direnv** was hooked in the old fish config; Omarchy's bash doesn't include
  it. Add `eval "$(direnv hook bash)"` to the bottom of `~/.bashrc` if you want
  it back.
- The **fish package is left installed** (it may be pulled in as a Caelestia
  dependency). Nothing interactive uses it anymore. Remove it only after
  confirming nothing else needs it: `sudo pacman -Rns fish`.
- The fish config dir (`~/.config/fish`, a Caelestia symlink) is left in place
  but unused.

## Requirements

`bash`, and ideally `starship`, `zoxide`, `eza`, `fzf`, `bat` for the full
Omarchy experience (all guarded — bash works without them).
