A tool to manage Karabiner-Elements keyboard remapping configurations using a concise EDN format instead of verbose JSON.
GokuRakuJoudo (often called Goku) is a command-line tool that simplifies configuring Karabiner-Elements, a macOS keyboard customization utility. It replaces Karabiner's verbose JSON configuration files with a concise, editable EDN format, making it easier to create and manage complex key remapping rules. The tool automatically translates the EDN into the required JSON, streamlining the setup and iteration process for power users.
Mac power users, developers, and keyboard enthusiasts who use Karabiner-Elements for advanced keyboard remapping and want a more maintainable, readable configuration workflow.
Developers choose Goku because it dramatically reduces the complexity and verbosity of Karabiner configurations, enabling faster editing, better readability, and easier version control. Its live-reload capability and service integration provide a seamless, automated experience compared to manually editing JSON.
config karabiner with ease
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Drastically reduces configuration file size and improves readability, allowing multiple rules on screen for faster editing, as shown in the README's side-by-side comparison with JSON.
The `gokuw` command watches the EDN file and automatically updates Karabiner's JSON on changes, enabling rapid iteration without manual steps, as described in the usage section.
Can be run as a Homebrew service with logs stored in ~/Library/Logs/goku.log, providing hands-off configuration management for continuous updates.
Works with Karabiner profiles to allow customized rule sets for different contexts, enhancing flexibility, as mentioned with the :profiles keyword in examples.
Requires separate installations of watchexec for file watching and joker for EDN linting, adding setup complexity and potential maintenance overhead.
The EDN format, while concise, is niche and may be unfamiliar to users accustomed to JSON or YAML, creating a steeper learning curve for some.
Tied exclusively to Karabiner-Elements on macOS, making it irrelevant for keyboard customization on other operating systems like Windows or Linux.