interactive shell navigation and history
  • Rust 81.9%
  • Shell 18.1%
mtmn 68bdcd545b
All checks were successful
ci/woodpecker/push/test/1 Pipeline was successful
ci/woodpecker/push/test/2 Pipeline was successful
ci/woodpecker/push/test/3 Pipeline was successful
fix: remove normalize_path and update deps
I am handling this in neovim instead.
2026-02-23 19:01:19 +01:00
.woodpecker feat(ci): run tests on multiple toolchains 2026-01-29 16:57:03 +01:00
db fix: set db_path to $HOME/.magnolia.db 2026-01-22 13:46:51 +01:00
docs docs: add better quality demo 2026-01-31 13:43:41 +01:00
shell chore: add shell 2026-01-23 11:22:20 +01:00
src fix: remove normalize_path and update deps 2026-02-23 19:01:19 +01:00
.gitignore chore: ignore test db 2025-09-30 18:04:46 +02:00
Cargo.lock fix: remove normalize_path and update deps 2026-02-23 19:01:19 +01:00
Cargo.toml chore: update deps 2026-01-30 13:49:21 +01:00
LICENSE add license 2025-09-28 23:08:22 +02:00
README.md chore: add build badge to readme 2026-01-31 13:58:03 +01:00

magnolia build status

Interactive shell navigation and history based on fzf and sqlite.

Motivation

My workflow resembles a squirrel trying to hide a hazelnut so I have declared bankruptcy on my mind and making this made sense.

Usage

usage example

Installation

# Install dependencies
sudo pacman -Sy fd fzf rustup sqlite3 --needed

# If you use Homebrew
brew install fd fzf rustup sqlite3

# Install Rust toolchain
rustup install stable

# Set default toolchain to stable
rustup default stable

# Build
cargo build --release

# Initialize database
./db/init

# Source shell integration
source ./shell/magnolia

Usage

magnolia [--db-path <path>] [--no-color] <command> [limit]

Commands

  • recent-dirs [500] - Recent directory visits
  • recent-files [500] - Recent file opens
  • change-to-dir [1000] - Interactive recent file opens
  • change-to-file [1000] - Interactive recent file opens
  • frequent-dirs [500] - Most visited directories
  • search <query> - Search history

Shell Functions

  • d - Fuzzy navigate to directory
  • f - Fuzzy open file
  • cd - Navigate to directory
  • rd - Interactive recent directories
  • rf - Interactive recent files
  • dg - Recent directories in fzf
  • fg - Recent files in fzf, open in vim

File Handling

The f() function opens files based on extension:

  • audio mpv
  • video mpv
  • other vim

Examples

# Navigate to directory
d

# Open recent file
f

# Interactively navigate to recent directory
dg

# Interactively open recent file (if you frequently use `fg`, consider a different function name)
fg

# Show frequently visited directories
magnolia frequent-dirs 10

# Search for rust files
magnolia search rust

# Interactively change to dir
magnolia change-to-dir

# Interactively change to file
magnolia change-to-file

Database

SQLite database with two tables:

  • directory_history - path, timestamp
  • file_history - path, file_type, action, timestamp

Default location: ~/.magnolia.db (configurable with --db-path)