Skip to content

MrPicklePinosaur/matsuba

Repository files navigation

松葉 matsuba

lightweight japanese IME written in rust

book build MIT/Apache 2.0

matsuba - a lightweight japanese ime for x written in rust. This project has three main components:

  1. kanji/word database
  2. conversion system (hiragana, katakana, kanji)
  3. graphical frontend for X

Each component should be separable as it's own library. Please see the documentation for detailed installation, configuration and usage instructions.

INSTALLATION

Currently matsuba only supports X11 (will expand to other platforms in future!). There are a couple of utilities that need to be installed for matsuba to interface with X properly.

  • xdotool
  • xmodmap
  • sqlite3

matsuba is packaged for the following linux distributions

  • arch linux (and friends) via AUR

FETCHING DICTIONARY

List of word conversions come from the EDICT/JMICT project. Specifically, the JMdict_e (JMdict english-japanese only) xml file is fetched. A script is provided to populate your dictionary, along with some options on what word lists to fetch (bio, sports, names etc), you can see a full list of 'filters' here.

TODO

Roadmap to 1.0 release

  • get keycodes from xmodmap
  • capture all keypresses (even when not focused)
  • figure out how to have floating window
  • fetch kanji data from EDICT
  • set up database (probably sqlite)
  • arg parsing
  • glyph rendering
  • make user type accepted string
  • henkan + muhenkan
  • conversion menu for kanji
  • refactor to daemon + cli to manage (rpc calls)
  • utility cli to do kana conversions + kanji conversions + fetch daemon state
  • rewrite matsuba-fetch script as a series of command calls in matsucli
  • pass through certain keys + general qol improvements
  • config file
  • systemd, openrc and runit services for matsubad
  • package for various linux distributions (could use workflow to automatically build and package)

CONTRIBUTING

Feel free to open any issues and pull requests to support development! Please see the Developer Guide (WIP) for contribution guidelines and an overview of the internals.