Commit Graph

48 Commits

Author SHA1 Message Date
rootiest b62c2476da feat(functions,bindings): add smart-execute, fast-cli; refactor qalc and rm
- Add _smart_execute: context-aware Ctrl+Enter that routes to qalc when
  the buffer ends with '=', or falls through to standard execute otherwise
- Refactor qalc_eval → _qalc_eval (private helper, same behavior)
- Bind Ctrl+Enter to _smart_execute in all vi modes
- Add fast-cli wrapper (fast.com speed test) and fast placeholder with
  a friendly ANSI redirect message
- Add speedtest-fast abbreviation expanding to fast-cli
- Enhance _replace_command_token to handle sudo-prefixed commands: places
  cursor at index 5 (between sudo and the replacement slot)
- Improve rm error reporting: colored output, culprit-path listing, and
  cleaned technical detail for non-missing-file errors
- Add SPDX copyright headers to cat, ld, claude-docs, claude-pr functions
- Update README: Ctrl+Enter binding, fast-cli/fast functions, speedtest-fast abbr
2026-05-10 01:36:14 -04:00
rootiest 4dff7632cd Merge pull request 'refactor(config): use $__fish_config_dir, quote paths, add dot_fish var' (#11) from refactor/config-path-quoting-portability into main
Reviewed-on: #11
2026-05-08 20:30:02 +00:00
rootiest f70dccdc65 refactor(config): use \$__fish_config_dir, quote paths, add dot_fish var
Replace hardcoded \$HOME/.config/fish paths with the canonical
\$__fish_config_dir variable for portability. Add proper quoting around
all path strings. Introduce a dot_fish local variable to reduce
repetition in user-dots sourcing blocks. Add LESS=-R for color support
in the pager.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 16:29:05 -04:00
rootiest 9f524694cb Merge pull request 'feat(functions): add claude-docs and claude-pr helper functions' (#10) from feat/claude-helper-functions into main
Reviewed-on: #10
2026-05-08 17:39:40 +00:00
rootiest 37f35ce0a0 feat(functions): add claude-docs and claude-pr helper functions
Add two Claude Code helper functions to streamline common dev workflows:
- `claude-docs`: triggers Claude to sync README.md with recent session changes
- `claude-pr`: triggers Claude to create a branch, commit, push, and open a PR

Also add `.claude` to .gitignore and document both functions in README.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 13:37:41 -04:00
rootiest b08a3d364e Merge pull request 'docs(readme): add Ctrl+Alt+= qalc_eval keybinding to User Bindings table' (#9) from docs/keymaps into main
Reviewed-on: #9
2026-05-08 04:59:44 +00:00
rootiest 95f26eadc1 docs(readme): add Ctrl+Alt+= qalc_eval keybinding to User Bindings table
Documents the new inline Qalculate! evaluator shortcut added in the
recent config refactor, so users know it exists and how to use it.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 00:57:38 -04:00
rootiest 337fb10cd4 Merge pull request 'feat(config): refactor config.fish, add XDG compliance, new functions, and keybindings' (#8) from feat/config-refactor-and-new-functions into main
Reviewed-on: #8
2026-05-08 04:52:49 +00:00
rootiest d8bd2b32ab feat(config): refactor config.fish, add XDG compliance, new functions, and keybindings
Restructure and expand the Fish shell configuration for better XDG compliance,
interactive-session gating, modularity, and ergonomics.

config.fish:
- Add full XDG Base Directory variable block (XDG_CONFIG_HOME, XDG_CACHE_HOME,
  XDG_DATA_HOME, XDG_STATE_HOME) and redirect tool caches/configs accordingly
  (cargo, rustup, go, bun, npm, gnupg, wakatime, wget, nvidia, codeium, etc.)
- Add editor setup with `type -q nvim` guard and NVIM_APPNAME
- Add CDPATH block (., ~/projects, ~) with explanatory comments
- Gate all interactive-only setup (key bindings, FZF, direnv, starship, secrets,
  local overrides, CLAUDE_CODE_NO_FLICKER) behind `status is-interactive`
- Guard FZF integration source behind a file-existence check
- Move secrets.fish and local.fish sourcing into the interactive block as overrides
- Remove obsolete universal `cdp` variable and duplicate PATH/editor blocks
- Update PATH entries to use XDG-resolved $CARGO_HOME and $BUN_INSTALL

conf.d/theme.fish:
- Move FZF_DEFAULT_OPTS (Catppuccin Mocha palette) from config.fish into theme.fish
  so all theming lives in one place
- Add section header for FZF colors; condense file header comment

conf.d/abbr.fish:
- Add `/exit` abbreviation as a vim-style alias for the `exit` builtin

conf.d/key_bindings.fish:
- Bind Ctrl+Alt+= to new `qalc_eval` function (inline Qalculate! evaluation)
- Add binding in both normal and all Vi modes
- Add descriptive comment block explaining the keybinding purpose

functions/bash.fish:
- Pass `--rcfile "$XDG_CONFIG_HOME/bash/bashrc"` so bash respects XDG config location

functions/cat.fish:
- Extend cat wrapper: detect directory arguments and delegate to `ls` instead of bat
- Preserve stdin-passthrough behavior when no arguments are provided

functions/__auto_source_fallback_venv.fish (new):
- Extract auto-venv PWD watcher from config.fish into its own autoloaded function file
- Skips activation when direnv manages the directory (.envrc present or DIRENV_DIR set)
- Deactivates venv when leaving its project tree

functions/ld.fish (new):
- Wrapper for lazydocker that injects the active Docker context's DOCKER_HOST,
  enabling correct context-aware operation

functions/joplin.fish (new):
- Joplin CLI wrapper function

functions/qalc_eval.fish (new):
- Inline Qalculate! evaluator: reads the current commandline buffer, passes it to
  `qalc`, prints the result, and clears the buffer for rapid-fire math in the shell

README.md:
- Remove stale `cdp` variable example from the local.fish documentation section

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 00:45:02 -04:00
rootiest a7833919a2 docs: update terminal, utility, and system function documentation in fish README 2026-04-30 23:36:29 -04:00
rootiest 0ab80b4716 Merge pull request 'Hotfix: split and y/cb functions' (#7) from fix/fallback-funcs into main
Reviewed-on: #7
2026-05-01 03:34:41 +00:00
rootiest bb681afa95 fix: ensure the split function handles other terminal emulators correctly 2026-04-30 23:33:00 -04:00
rootiest 85f45a9e8a refactor: properly alias cb to y
Instead of re-defining the same behavior, just write `cb` into the
y.fish function file as an alias for y
2026-04-30 23:32:37 -04:00
rootiest abc5379190 Merge pull request 'refactor(functions): standardize documentation, metadata, and wrappers' (#6) from feat/deps-fallbacks into main
Reviewed-on: #6
2026-05-01 03:18:34 +00:00
rootiest 084e6fb9ca refactor(functions): standardize documentation, metadata, and wrappers
- Add comprehensive `--description` flags to all fish functions for better `help` and `functions` output.
- Introduce and correct `--wraps` flags to ensure proper completions for aliased commands (e.g., `top` wrapping `btop`, `zellij`, `upgrade` wrapping `paru`).
- Prepend descriptive comments before function definitions for better source readability.
- Add standard copyright and SPDX license identifiers to shell scripts.
- Enhance script robustness by ensuring consistent terminal checks (Kitty, WezTerm) and graceful fallbacks in window/tab spawning functions (`spwin`, `tab`).
- Implement graceful fallbacks to basic core utilities when preferred modern alternatives are missing (e.g., `top` falling back to system `top` if `btop` is missing, `view` falling back to `less` or `cat` if `nvim` is unavailable).
- Improve overall code consistency across the `functions/` directory.
2026-04-30 23:16:28 -04:00
rootiest a4d8574f49 refactor: remove obsolete or private functions
Remove several functions that are either no longer relevant or belong in
.user-dots as local/machine-specific functions.
2026-04-30 23:13:44 -04:00
rootiest 0a89346a6c Merge pull request 'feat: harden terminal abbreviations, gracefully fallback missing integrations, and check deps' (#5) from feat/deps-fallbacks into main
Reviewed-on: #5
2026-05-01 01:18:19 +00:00
rootiest a39df3c466 feat(terminal): harden terminal abbreviations and functions
- Wrap Kitty-specific abbreviations and functions with $TERM checks

- Resurrect WezTerm abbreviations and wrap with $TERM_PROGRAM checks

- Add check_fish_deps function to list and verify all fish-related dependencies

- Update README to recommend Kitty and WezTerm and document requirements

- Improve fallback behavior for rg outside of Kitty
2026-04-30 20:44:58 -04:00
rootiest 8d1ab2eeb9 feat: gracefully fallback when integration dependencies are not met
If a dependency for an integration is missing, fallback gracefully so as
not to interrupt user experience
2026-04-30 20:11:50 -04:00
rootiest 7e1c727b69 docs: fisher and plugins are automatically installed
- A bootstrap script in the config.fish file handles automatic
installation of fisher and the included plugins upon launching the shell
for the first time
2026-04-30 20:04:36 -04:00
rootiest 5db7c938d1 Merge pull request 'Complete configuration update: docs, themes, keybindings, and zoxide integration' (#4) from docs/funcs into main
Reviewed-on: #4
2026-04-30 23:54:59 +00:00
rootiest 43264fc6de docs: add undocumented functions to documentation 2026-04-30 19:50:20 -04:00
rootiest f9c53926b9 refactor: clean up keybinding implementations
- Cleans and organizes key binding definitions for plugins and user
keybinds.

- Update documentation for keybindings
2026-04-30 19:49:31 -04:00
rootiest 3019fc6c61 refactor: implement global syntax highlighting theme 2026-04-30 19:46:23 -04:00
rootiest 0a238c84a1 feat: make zoxide the default cd provider
- `cd` is now essentially aliased to `z` allowing frecency matching for
`cd` commands.
- `cdi` is now aliased to `zi` allowing interactive frecency matching
for `cd` commands.
2026-04-30 19:44:26 -04:00
rootiest 9ff9e52a6e docs(readme): update table of contents with missing headings 2026-04-30 18:37:14 -04:00
rootiest 0df0edddff Merge pull request 'docs(readme): add history expansions and detailed substitution usage' (#3) from docs/sub-expand into main
Reviewed-on: #3
2026-04-30 22:32:39 +00:00
rootiest 47370c491d docs(readme): add history expansions and detailed substitution usage 2026-04-30 18:30:36 -04:00
rootiest 6397e10f2e Merge pull request 'feat(history): support N-th history index in substitution' (#2) from feat/hist-sub into main
Reviewed-on: #2
2026-04-30 22:27:29 +00:00
rootiest ed62c8c100 feat(history): add support for Nth history index in substitution
Extends the interactive history substitution function to support an
optional third field `old/new/index`.

- Keeps default behavior of targeting the most recent command (index 1).
- Allows targeting a specific history entry by appending a number.
- Validates that the index is a positive integer before attempting retrieval.
- Safely handles cases where the requested history index does not exist.

Example: 'cat/bat/5' now replaces 'cat' with 'bat' in the 5th previous command.
2026-04-30 18:18:31 -04:00
rootiest f6da342610 Merge pull request 'feat: add history expansions and interactive keybindings' (#1) from feat/bangs-and-subs into main
Reviewed-on: #1
2026-04-30 05:04:01 +00:00
rootiest ada58e8818 feat(shell): add bash-style history expansions and interactive keybindings
- Replicate bash bang-operations (!^, !*, !string, etc.) via abbreviations
- Add Ctrl+G for previous path head insertion
- Add Ctrl+F for interactive history substitution
- Add Ctrl+Alt+U to quickly replace command tokens
- Update README documentation for all new features
2026-04-30 01:03:13 -04:00
rootiest 6722deea3c feat: add git and history utility functions
- Add branch, fc, and gitup functions
- Update README documentation for new functions and abbreviations
- Remove obsolete push-vim function
2026-04-29 17:23:13 -04:00
rootiest dc212ec704 feat: add ~/.local/bin to PATH
This is a commonly used PATH for user binaries but Arch doesn't include
it by default.
2026-04-29 17:21:16 -04:00
rootiest 5c6691c32c fix: correct sort direction
Use reverse sorting by time for eza in `ltr` function.

Note: eza sorts oldest-to-newest by default, while lsd requires the
--reverse flag.
When the --reverse flag is used in eza the listing is done
newest-to-oldest which is not the intended direction.
2026-04-27 13:28:14 -04:00
rootiest bc9cbb22fc refactor: consolidate and expand ls function family
- Upgrade ls to long listing (-l -a) and drop the standalone l and lS functions in favor of abbreviations
- Remove llm (ambiguous name, redundant with ltr)
- Add lsr (reversed time oneline), lss (size-sorted), lD (dirs-only), lx (extension-sorted)
- Enhance ltr with --all and age color-scale gradient
- Wire up ls abbreviations: l, lS, lsR, lX, lT, lsT
- Update README functions table and add Listing abbreviations section

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 13:21:05 -04:00
rootiest 636c31bf9e feat: auto-bootstrap Fisher and Catppuccin theme on first launch
Add a Fisher install prompt to config.fish so new installs require only
cloning the repo — plugins and theme are applied automatically on first
shell open. Simplify README installation steps accordingly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 03:27:10 -04:00
rootiest 0a578e7b09 fix: move shebang above copyright header in scripts 2026-04-26 03:15:54 -04:00
rootiest 73c3bbd291 fix: scope CachyOS override inside its if block; update README for eza preference 2026-04-26 03:11:23 -04:00
rootiest 01c22e7a4d feat: prefer eza over lsd in all ls-related functions
fix: clean stale wraps metadata
fix: ensure user functions take precedence over CachyOS overrides
2026-04-26 03:07:51 -04:00
rootiest 9008e7b5ae docs: use repo url in installation documentation 2026-04-26 02:28:39 -04:00
rootiest 9f72897072 refactor: move machine-specific abbreviations to local.fish 2026-04-26 02:20:14 -04:00
rootiest 36aacc6a50 feat(functions): adds a function for generating .gitignore patterns
command: gi

This tool generates .gitignore patterns for specified languages.
2026-04-26 02:04:49 -04:00
rootiest f1b1b04299 chore: add standard gitignore patterns
Add .gitignore patterns for:
- Fish
- Linux

Generated using the gitignore.io API.
2026-04-26 02:03:18 -04:00
rootiest 4e696f6a06 refactor: move VI key bindings to config.fish, remove bobthefish 2026-04-26 01:52:10 -04:00
rootiest e9ae94b6cf fix(keybindings): preserve space after command token on Ctrl+Alt+U 2026-04-26 01:48:55 -04:00
rootiest c26db619ac feat(keybindings): add Ctrl+Alt+U to replace first command token 2026-04-26 01:45:56 -04:00
rootiest 4c1e7a7eb9 feat: initial fish shell configuration
- Core config layered on CachyOS base with Catppuccin Mocha theming
- Fisher plugins: fzf.fish, catppuccin, autopair, replay, puffer-fish, magic-enter, spark
- Smart CLI wrappers with fallbacks (bat, lsd, btop, dust, prettyping)
- Custom functions: git, docker, network, kitty, AI session management
- Extensive abbreviation system for keyboard-driven workflows
- Secrets/local sourcing pattern for private and machine-specific config
- README with full documentation and personalization guide
- AGPLv3+ license with copyright headers on all source files
2026-04-26 01:37:38 -04:00