← 全部工具

yukimemi/todoke

热度 65 更新于 效率与自动化

A rule-driven file and URL dispatcher: hands incoming paths (or URLs) to the right handler based on TOML-defined rules.

githubauto-collected

安装

暂未验证可直接使用的安装命令,请查看项目官方文档或 Release。

<img src="assets/icon.png" width="32" align="left" alt="" / todoke

<p align="center" <img src="assets/logo.svg" width="560" alt="todoke — rule-driven file dispatcher" / </p

<p align="center" <bA rule-driven file dispatcher that hands incoming paths to the right editor or script — <i届け</i.</b </p

<p align="center" <a href="https://crates.io/crates/todoke"<img src="https://img.shields.io/crates/v/todoke.svg" alt="crates.io"/</a <a href="https://github.com/yukimemi/todoke/actions"<img src="https://github.com/yukimemi/todoke/actions/workflows/ci.yml/badge.svg" alt="CI"/</a <a href="./LICENSE"<img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License: MIT"/</a <a href="https://deepwiki.com/yukimemi/todoke"<img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki"/</a <a href="https://codewiki.google/github.com/yukimemi/todoke"<img src="https://img.shields.io/badge/View-CodeWiki-4285F4?logo=google" alt="View Code Wiki"/</a </p

todoke takes one or more file paths and decides what to do with each of them — by regex-matching the path against a TOML ruleset. A rule can target a long-running neovim (reused via msgpack-RPC), any generic CLI editor, or a raw shell script. Perfect as your OS default program for text files, as $EDITOR, or as a standalone file handler.

Features

  • Rule-based routing: regex patterns in TOML decide what handles each

file. Different paths → different handlers (VSCode for one project, nvim for another, a shell script for a third).

  • Single-instance neovim via named pipes / unix sockets: todoke

connects to a running nvim and sends :edit over msgpack-RPC. Works on Windows via \\.\pipe\... — no Deno, no plugin framework, no cold start.

  • Sync or async per rule: sync = true blocks until the handler exits

(perfect for git commit), sync = false fires and forgets (perfect for double-clicking files in the OS file explorer).

  • Tera templating throughout the config: {{ filepath }},

{{ env.HOME }}, {% if iswindows() %}…{% endif %}, structural conditionals that include whole editor / rule blocks, every Tera filter.

  • Generic CLI support: any command-line tool works (code, vim,

helix, subl, emacsclient, bat, pandoc, …) without custom code.

  • Fast: static Rust binary, cold start in milliseconds.

Install