https://github.com/barewalker/yuhitsu
local desktop GUI editor for Typst, with first-class Japanese typography support.
https://github.com/barewalker/yuhitsu
codemirror desktop-app editor gui japanese japanese-typography tauri tauri-app typesetting typst typst-editor
Last synced: 2 days ago
JSON representation
local desktop GUI editor for Typst, with first-class Japanese typography support.
- Host: GitHub
- URL: https://github.com/barewalker/yuhitsu
- Owner: barewalker
- License: apache-2.0
- Created: 2026-05-04T03:46:45.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-05-06T08:14:50.000Z (about 1 month ago)
- Last Synced: 2026-05-06T08:39:29.173Z (about 1 month ago)
- Topics: codemirror, desktop-app, editor, gui, japanese, japanese-typography, tauri, tauri-app, typesetting, typst, typst-editor
- Language: Svelte
- Homepage:
- Size: 1.41 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.en.md
- License: LICENSE
Awesome Lists containing this project
README
# Yuhitsu (ε³η)
**A local desktop GUI editor for [Typst](https://typst.app), with first-class Japanese typography support.**
> π―π΅ [ζ₯ζ¬θͺηγ―γγ‘γ](./README.md) / Japanese version
> π§ **Currently in development toward v0.1.0-alpha.** Early feedback is welcome, but not recommended for production use yet.
---
## What is this?
Yuhitsu is a desktop GUI editor for the [Typst](https://typst.app) typesetting system. It targets users who would benefit from Typst's quality but find IDE-style tools (VS Code + Tinymist) intimidating β office workers, business writers, technical authors who don't live in the terminal.
The name comes from **YΕ«hitsu** (ε³η), the title of professional scribes who drafted and copied official documents for daimyΕ and shoguns from the Muromachi to Edo periods of Japan.
## Why?
Typst is gaining traction as a modern LaTeX alternative, but the existing tooling has gaps:
| Tool | OSS | Local | GUI | First-class Japanese |
|---|---|---|---|---|
| Typst (web app) | β | β | β
| β |
| Typstify | β | β
| β
| β |
| Typstudio | β
| β
| β
| β (long-stalled) |
| VS Code + Tinymist | β
| β
| β (IDE) | β |
Yuhitsu fills the **OSS Γ Local Γ GUI Γ first-class Japanese Γ practical** quadrant. It is a general-purpose Typst editor that happens to invest heavily in the parts most other editors neglect: Japanese typography, ergonomic templates for business documents, and a UI that doesn't assume you live in a terminal.
## Features (v0.1 alpha)
### Typst editor
- **Live preview** β even unsaved buffer changes reflect in real time (via `tinymist preview`)
- **LSP integration** β completion, diagnostics, hover docs (via `tinymist lsp`)
- **Syntax highlighting** for Typst
- **PDF export** β Ctrl+E
- **Find / Replace** β Ctrl+F / Ctrl+H, regex / case / whole-word
- **Insert helpers** β bold / italic / heading / list / math / code / link / footnote / quote / image / table / bibliography (toolbar buttons)
### Editor modes (switchable)
- **Default** (OS-standard keybindings)
- **vim** (experimental β known issues with IME / WebKit, advanced users only)
- **emacs**
### Files & projects
- **Tabs** β multiple files at once, drag-reorder, hot exit (tabs restored on next launch)
- **Project sidebar** β file tree, git status badges, right-click menu (new / rename / delete)
- **Image / PDF tabs** β view `.png` / `.svg` / `.pdf` etc. directly in tabs (Typst can `#image()` them)
### Built-in templates (ja / en)
- Business report / Technical report / Meeting minutes / Slides / Empty
- **Form-based template editing (lite)** β template function arguments are exposed as input fields; typing fills the document
### UI / customization
- **Command palette** (Ctrl+Shift+P / F1) β fuzzy search across all commands
- **Hamburger menu** (top-left) β categorized access to every feature
- **Toolbar editor** β drag to reorder, add / remove items, presets (standard / minimal / academic)
- **Keybindings editor** β every command rebindable
- **Dark / light themes** β auto (follow OS) or manual
- **Japanese / English UI** β auto (`navigator.language`) or manual
- **Custom title bar (CSD)** β file name, cursor position, character count consolidated at the top
### Bundled fonts
- **Harano Aji Mincho / Gothic** (Regular + Bold) β [trueroad/HaranoAjiFonts](https://github.com/trueroad/HaranoAjiFonts), SIL Open Font License 1.1
For the full list and roadmap, see [PROGRESS.md](./PROGRESS.md) (Japanese only for now).
---
## Download & install
> π§ v0.1.0-alpha is being prepared. After release, binaries will be available on the [Releases](https://github.com/barewalker/yuhitsu/releases) page.
### Linux
`.AppImage` (works on any distro) or `.deb` (Debian / Ubuntu) from Releases.
```bash
# AppImage
chmod +x yuhitsu_*.AppImage
./yuhitsu_*.AppImage
# .deb
sudo dpkg -i yuhitsu_*.deb
```
> π‘ **If Japanese / CJK IME doesn't work**
>
> On Linux distros installed in a non-Japanese locale where fcitx5 / ibus was added later, the IME-bridge environment variables may not be set in your session, which can break kanji conversion in the editor. This is general WebKit2GTK + fcitx5 / ibus behavior, not Yuhitsu-specific.
>
> On Ubuntu, the standard fix is `im-config -n fcitx5` (or `ibus`). Alternatively, set the variables when launching:
>
> ```bash
> # fcitx5
> GTK_IM_MODULE=fcitx XMODIFIERS=@im=fcitx yuhitsu
> # ibus
> GTK_IM_MODULE=ibus XMODIFIERS=@im=ibus yuhitsu
> ```
>
> To persist them, add to `~/.profile` or `~/.config/environment.d/im.conf`.
### Windows
Download the `.msi` installer from Releases and run it.
> β οΈ **About the SmartScreen warning**
> Yuhitsu is an unfunded personal OSS project, so we don't carry a Microsoft code-signing certificate (which costs hundreds of USD per year). On first launch you'll see the blue SmartScreen warning β click **"More info" β "Run anyway"** to start. Helix, Alacritty, and many other OSS desktop apps work the same way.
> We're considering [SignPath.io's free OSS signing](https://signpath.io/) for the future.
### macOS
> π§ Not in distribution scope for alpha. The CI builds successfully but the maintainer doesn't have a Mac to test on. If you want to try it, see [Building from source](#building-from-source).
---
## Quick start
1. **Launch** β on first run, a template picker appears
2. Pick a template (business report / minutes / etc.) β content drops into the editor
3. **Top-left hamburger** β all commands by category
4. **F1** or **Ctrl+Shift+P** β command palette
5. **Ctrl+S** β save as `.typ`
6. **Ctrl+E** β export PDF
For more, open the **hamburger β Help β About Yuhitsu** dialog inside the app for documentation links.
---
## Building from source
### Prerequisites
- [Rust](https://www.rust-lang.org/) 1.77+
- [Node.js](https://nodejs.org/) 20+ + [pnpm](https://pnpm.io/) 10+
- Linux: `libwebkit2gtk-4.1-dev`, `libssl-dev`, `libgtk-3-dev`, etc. (Tauri's Linux build deps)
- macOS: Xcode CLT
- Windows: Microsoft C++ Build Tools + WebView2
`tinymist` is bundled as a sidecar binary, so contributors do not need to install it separately. `scripts/fetch-tinymist.sh` downloads the binary for your host target triple.
### Setup
```bash
git clone --recursive https://github.com/barewalker/yuhitsu.git
cd yuhitsu
./scripts/fetch-tinymist.sh # fetch the tinymist sidecar
cd app
pnpm install
pnpm tauri dev
```
> β οΈ **`--recursive` matters**: the bundled Harano Aji fonts are pulled in as a git submodule.
>
> π‘ **`fetch-tinymist.sh`** is idempotent (skips if already present). Override the pinned version with `TINYMIST_VERSION=v0.14.16 ./scripts/fetch-tinymist.sh`.
### Release build
```bash
cd app
pnpm tauri build
# Artifacts: app/src-tauri/target/release/bundle/
```
---
## Roadmap
- **Phase 0** (done): research & PoC, technology selection
- **Phase 1** (current): MVP β editor / templates / preview / distribution
- **Phase 2** (planned): UX polish, built-in AI features, friendly git UI
- **Phase 3** (planned): WYSIWYG-lite mode, `.typz` single-file bundle format, Yuhitsu as MCP server (external agent integration)
Details in [PROGRESS.md](./PROGRESS.md) (Japanese).
---
## Tech stack
- **Shell**: [Tauri 2](https://tauri.app/) (Rust + OS WebView)
- **Editor**: [CodeMirror 6](https://codemirror.net/)
- **Typst engine**: [Typst](https://github.com/typst/typst), used via [tinymist](https://github.com/Myriad-Dreamin/tinymist) (LSP / preview / compile)
---
## License
- Yuhitsu itself: **[Apache-2.0](./LICENSE)**
- Bundled fonts (Harano Aji Mincho / Gothic): **SIL Open Font License 1.1** (Copyright Β© trueroad)
---
## Author
[barewalker](https://github.com/barewalker)
A personal project that started from frustration with existing options for producing business documents. If you have similar pain points, hopefully Yuhitsu helps.
---
## Related
- [Typst](https://typst.app/)
- [Tinymist](https://github.com/Myriad-Dreamin/tinymist)
- [Harano Aji Fonts](https://github.com/trueroad/HaranoAjiFonts)
---
## Acknowledgements
Implementation of this project was assisted by [Claude Code](https://claude.com/claude-code) (Anthropic). Technical decisions, design, and quality responsibility lie with the author.