{"id":28795899,"url":"https://github.com/audibleblink/y","last_synced_at":"2026-05-07T01:04:47.842Z","repository":{"id":299284637,"uuid":"1002549092","full_name":"audibleblink/y","owner":"audibleblink","description":" Because reading zsh documentation is apparently harder than writing Rust","archived":false,"fork":false,"pushed_at":"2025-06-15T18:31:37.000Z","size":11,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-28T14:17:45.649Z","etag":null,"topics":["dotfiles","joke","rtfm","shell","zsh","zsh-plugins"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/audibleblink.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-15T17:48:28.000Z","updated_at":"2025-06-15T18:31:40.000Z","dependencies_parsed_at":"2025-06-15T19:23:43.377Z","dependency_job_id":"12cecbe2-51b3-4f18-b107-c0900f1a08ce","html_url":"https://github.com/audibleblink/y","commit_stats":null,"previous_names":["audibleblink/y"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/audibleblink/y","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/audibleblink%2Fy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/audibleblink%2Fy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/audibleblink%2Fy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/audibleblink%2Fy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/audibleblink","download_url":"https://codeload.github.com/audibleblink/y/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/audibleblink%2Fy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272930002,"owners_count":25017057,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-30T02:00:09.474Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotfiles","joke","rtfm","shell","zsh","zsh-plugins"],"created_at":"2025-06-18T03:10:41.770Z","updated_at":"2026-05-07T01:04:47.814Z","avatar_url":"https://github.com/audibleblink.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003e \"What if zsh's built-in directory stack, hash -d bookmarks, and 40 years of shell history were good enough already... but with more GitHub stars?\"\n\n## Y?\n\nDid you know:\n- `dirs -v` has existed since before you were born\n- `hash -d` creates named directories without a 50MB rust binary\n- `pushd`/`popd` don't require a database\n- `$CDPATH` exists and does exactly what you think it does\n\nBut hey, why read `man zshoptions` when you can install yet another \"blazingly fast\" directory jumper written in a systems language by someone who just discovered what a symlink is?\n\n## What is y?\n\n`y` is what happens when you actually read the zsh manual and realize you don't need:\n- A SQLite database to remember where you've been\n- Machine learning algorithms to guess where you want to go  \n- A 10,000 line Rust codebase to implement `cd`\n- A \"frecency\" algorithm when `dirs` already orders by recency\n\nIt's just zsh. Using zsh features. That have existed since the 90s.\n\n## Features\n\n- **Zero dependencies** (unless you count zsh, which you already have)\n- **Blazingly adequate** (as fast as your shell, which is already fast)\n- **AI-free** (uses HI - Human Intelligence - to pick directories)\n- **Database-free** (your directory stack IS the database)\n- **Written in 100% organic, free-range shell script**\n- **Graceful degradation** (falls back to tab completion if fzf isn't installed, because we're not monsters)\n\n## Installation\n\n```bash\n# With your favorite plugin manager that definitely needed to exist\nzinit light \"your-username/y\"\n\n# Or just source it like a normal person\nsource /path/to/y/y.plugin.zsh\n```\n\n## Usage\n\n| Binding | What it does | What zoxide users think it does |\n|---------|--------------|----------------------------------|\n| `Ctrl+F` | Jump through directory history | \"Smart directory jumping with frecency\" |\n| `Ctrl+B` | Navigate bookmarks | \"Named directory aliases with fuzzy matching\" |\n| `Ctrl+O` | Jump back a directory | \"???\" |\n| `Ctrl+G` | Browse projects | \"Intelligent project detection and switching\" |\n\n## Configuration\n\n```bash\n# Change keybindings (because defaults are never good enough)\nexport Y_BIND_JUMP=\"^F\"        # default: ^F\nexport Y_BIND_BOOKMARKS=\"^B\"   # default: ^B  \nexport Y_BIND_PROJECTS=\"^G\"    # default: ^G\n\n# Change behavior\nexport Y_PROJECT_DIR=\"$HOME/code\"  # where your projects live\nexport Y_POPUP_ENABLED=true        # use tmux popups (fancy!)\n```\n\n## Advanced Configuration for Power Users Who Still Won't Read The Manual\n\n```bash\n# Add your own bookmarks (it's literally just hash -d)\nhash -d dots=$HOME/.dotfiles\nhash -d work=$HOME/work\nhash -d shame=$HOME/node_modules\n\n# Or source them from a file, because apparently that's innovative now\nexport Y_BOOKMARKS_FILE=\"$HOME/.config/y/bookmarks\"\n```\n\n## FAQ\n\n**Q: How does it compare to zoxide/z/autojump/fasd?**  \nA: It doesn't have a README with benchmarks, so it must be slower. But we know you love stats, so here we go:\n```\n❯❯ y-stats\ny statistics:\n  Directories in stack:   6\n  Named directories:      9\n  Project directory:      ~/code\n  Projects found:         26\n  Rust binaries used:     0\n  Databases corrupted:    0\n  Time saved by not reading docs: ∞\n```\n\n**Q: Does it use machine learning?**  \nA: No, it uses `fzf`, which is like machine learning but deterministic. If you don't have fzf, it uses tab completion, which is like machine learning but from 1978.\n\n**Q: What if I don't have fzf installed?**  \nA: Then it shows you what's available and sets up the command line for you to use zsh's built-in tab completion. You know, the tab completion that's been there since before fzf was a twinkle in a Rust developer's eye. Just press TAB like it's 1990.\n\n**Q: Can I import my zoxide database?**  \nA: Your zoxide database is just your shell history with extra steps. Just use your shell.\n\n**Q: Why doesn't it have [feature from other tool]?**  \nA: It probably does. Try reading about `setopt AUTO_PUSHD` or `$CDPATH`.\n\n**Q: Is it written in Rust?**  \nA: No, it's written in shell script, the language specifically designed for shell operations. Crazy, right?\n\n## License\n\nWTFPL - Because if you need a license for 50 lines of shell script, we need to have a different conversation.\n\n---\n\n*\"The best code is no code. The second best code is zsh code you didn't know already existed.\"* - Ancient Unix Proverb I just made up\n\n*Inspired by everyone who installed zoxide without trying `setopt AUTO_PUSHD` first.*\n\n\n## OK But Really...\nPut your pitchforks down. It's a joke repo I made for an event.\nClaude Code made this when I `cd`'d into my zsh dotfiles and gave it the prompt\n```\n│ \u003e create a zsh plugin called \"y\". the readme    │\n│   should make cheeky references to external cd  │\n│   replacements. take clever jabs at the idea    │\n│   that people would rather create whole-ass     │\n│   projects rather than read the docs of zsh.    │\n│   the 'y' plugin should encapsulate all the     │\n│   functionality here. Use the same bindings     │\n│   as defaults but make sure options are         │\n│   configurable via env vars (Y_CDJUMP,          │\n│   Y_HASH_BOOKMARK_FILE, Y_PROJECT_DIR, etc)     │\n│   Fall back to tab completion if fzf is missing │\n╰─────────────────────────────────────────────────╯\n  ⏵⏵ auto-accept edits on (shift+tab to cycle)\n```\n\nClaude's pretty sassy.\n\nBut since you're here: https://i.nit.gg/no-my-zsh\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faudibleblink%2Fy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faudibleblink%2Fy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faudibleblink%2Fy/lists"}