Offline Arabic Arabizi/Franco-Arab text editor with Moroccan Darija support
# oktoboot — اكتب
**Offline Arabic text editor with Moroccan Arabizi/Franco-Arab transliteration.**
Type phonetically in Latin characters and numbers, pick from Arabic suggestions, write in Darija and MSA. Works entirely offline. No server, no API calls.
---
## Why
Every existing option is broken:
- **Yamli** — the best transliteration engine, but online-only
- **Google Ta3reeb** — deprecated
- Everything else — either dead, crashes, or doesn't know Moroccan Darija
oktoboot is offline-first, Moroccan-first, and open source.
## Features
- **Arabizi → Arabic** as you type, with a suggestion dropdown (like Yamli)
- **Moroccan Darija first** — كيفاش، واش، بزاف، ديال directly from the DODa dictionary
- **Moroccan-specific conventions** — `ch`→ش, `j`→ج, `g`→ڭ, `9`→ق, `8`→ه, `kh`→خ
- **Numbers as letters** — `3`→ع, `7`→ح, `9`→ق in words; stay as digits when standalone
- **Persistent learning** — choices are remembered permanently (unlike Yamli which forgets on close)
- **RTL text, right-aligned**, with proper BiDi for mixed Arabic/Latin text
- **Auto-save** every 30 seconds + crash recovery
- **Saves to** `.md`, `.txt`, `.org`
- **Cmd+W** to close, **Cmd+S** to save, **Cmd+±** for font size
## Keyboard shortcuts
| Keys | Action |
|------|--------|
| Space | Accept highlighted suggestion |
| Shift+Space | Keep word as Latin |
| Enter / Tab | Accept suggestion (no space) |
| Escape | Dismiss suggestions, keep Latin |
| ↑ / ↓ | Navigate suggestions |
| Cmd+= | Bigger text |
| Cmd+- | Smaller text |
| Cmd+W | Close |
| Cmd+S | Save |
## Transliteration quick reference
| You type | Arabic |
|----------|--------|
| `3` | ع |
| `7` | ح |
| `9` | ق |
| `8` | ه |
| `2` | أ / إ / ء |
| `ch` | ش |
| `g` | ڭ |
| `j` | ج |
| `kh` | خ |
| `gh` | غ |
| `sh` | ش |
## Setup
Requires Python 3.11+ and Homebrew.
```bash
cd ~/Documents/oktoboot
python3 -m venv .venv
.venv/bin/pip install PySide6 pyobjc-framework-Cocoa
python3 scripts/build_frequencies.py # downloads word list …