karabiner configurator
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
resources update readme Oct 8, 2018
src/karabiner_configurator add error message when goku can't file "Goku" profile Oct 17, 2018
test/karabiner_configurator fix error while parsing ~{:any :key_code}~ as <from> section in rule Oct 17, 2018
.travis.yml fix coverall Sep 26, 2018
CHANGELOG.org add error message when goku can't file "Goku" profile Oct 17, 2018
Makefile throw error if can't find file, update readme, release version 0.1.4 Sep 14, 2018
Makefile.local.example update local makefile example, update contributing section in readme Oct 20, 2018



img img

  1. Intro
    1. Why use Goku?
    2. Install
    3. Usage
    4. Tutorial
    5. Note
    6. Changelog
    7. Contributing


Goku is a tool to let you manage your Karabiner configuration with ease.

Karbiner Elements uses JSON as it's config file. This leads to thousands lines of JSON (sometimes over 20,000 lines). Which makes it really hard to edit the config file and iterate on your keymap.

Goku use the edn format to the rescue.

Why use Goku?

Below are two Karabiner configuration snippets that map caps lock to an escape key.



In practice this means that you can see multiple Karabiner rules on you screen as you edit your config with Goku. Which speeds up the iteration speed significantly as you can create new rules as little as few characters.


brew install yqrashawn/goku/goku


Create a profile named "Goku" in Karabiner GUI tool.


Goku reads karabiner.edn file which holds your Karabiner config. This file should be placed inside `~/.config/` directory on your mac. If you use a dots dir to hold your config files, you can symlink `karabiner.edn` and Goku will pick up the changes too.

Goku provides two commands:

goku: Will update karabiner.json once. gokuw: Will keep watching your karabiner.edn and on saving, will update your configuration.

Run command brew services start goku to use it as a service (runs gokuw in background). When Goku is ran as service, the logs are kept inside ~/Library/Logs/goku.log.


Read through the Tutorial about how you can write the configuration in Goku.

If there's any question or advice, just open an issue or join Karabiner Telegram group and ask your questions there.


  • Using #_ to comment out rules like this will leave a null rule (see below) in karabiner.json, it won't cause any error.
      "description" : null,
      "manipulators" : [ ]


Check CHANGELOG file.


Use lein repl for developing.

Change Makefile.local.example's name to Makefile.local, change GRAALVM variable in the makefile to right path, run make local to test then generate goku binary file.