id = "goku" name = "Goku" homepage = "https://github.com/yqrashawn/GokuRakuJoudo" description = "Goku is a tool that lets you manage your Karabiner configuration with ease." # `goku` runs once, `gokuw` watches the file and regenerates on change; both # are documented in the README's Usage section. Note that `brew install goku` # from homebrew-core is an unrelated HTTP load tester — this one installs from # its own tap, `brew install yqrashawn/goku/goku`. executables = ["goku", "gokuw"] platforms = ["macos"] [dotfiles] # src/karabiner_configurator/core.clj, "Return karabiner.edn file location": # $GOKU_EDN_CONFIG_FILE, else $XDG_CONFIG_HOME/karabiner.edn, else # $HOME/.config/karabiner.edn. The README says the same twice over — "Goku # reads the karabiner.edn file… This file should be placed inside ~/.config/ # directory on your Mac" and "starting from version 0.2.2, you can specify your # config file path using the environment variable GOKU_EDN_CONFIG_FILE". # # That XDG-variable-first, ~/.config-second pair is [configHome]. Goku is # macOS-only (it drives Karabiner-Elements), so the root has no other platform # to stand for here; it is written as a root rather than a literal ~/.config # because goku genuinely reads $XDG_CONFIG_HOME. paths = ["[configHome]/karabiner.edn"] # What goku writes is Karabiner-Elements' own file — core.clj sends its output # to $XDG_CONFIG_HOME/karabiner/karabiner.json — which belongs to that app's # entry and is regenerated from the .edn above anyway. Its log, # ~/Library/Logs/goku.log, is outside the path too. So there is nothing inside # what syncs to carve out. exclude = [] # karabiner.edn is key mappings written by hand. Goku stores no credential. secret = [] # Re-read on every `goku` run, and on every file change under `gokuw`. side_effect = false # No machine_lines: the whole file is key remappings, layers and application # rules, which is exactly what a user wants on the next Mac. Application rules # name bundle identifiers rather than paths on this machine. [commands] format = 1 label = "Generate Karabiner config" description = "Compile karabiner.edn into Karabiner-Elements' karabiner.json once, or preview the result. The gokuw watcher and the -l log option are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = true } [[commands.source]] id = "source" kind = "help" url = "https://github.com/yqrashawn/GokuRakuJoudo/blob/HEAD/src/karabiner_configurator/core.clj" revision = "2026-10-27" evidence = """ (def cli-opts [["-h" "--help"] ["-V" "--version"] ["-l" "--log"] [nil "--where-is-my-config"] ["-c" "--config PATH" "Config PATH" ["-d" "--dry-run"] ["-A" "--dry-run-all"]]) `goku`: Will update karabiner.json once. """ [[commands.field]] id = "config" label = "Config file" description = "Use this karabiner.edn instead of the default (GOKU_EDN_CONFIG_FILE or ~/.config/karabiner.edn)." type = "path" option = ["--config", "-c"] path = { kind = "file", role = "input", must_exist = true } sources = ["source"] [[commands.field]] id = "dry_run" label = "Dry run" description = "Show what would be written without changing karabiner.json." type = "boolean" option = ["--dry-run", "-d"] sources = ["source"] [[commands.field]] id = "dry_run_all" label = "Dry run (all profiles)" type = "boolean" option = ["--dry-run-all", "-A"] sources = ["source"] [[commands.field]] id = "where" label = "Show config location" description = "Print which karabiner.edn goku would read." type = "boolean" option = ["--where-is-my-config"] sources = ["source"] [[commands.field]] id = "version" label = "Show version" type = "boolean" option = ["--version", "-V"] sources = ["source"] [[commands.task]] id = "apply" label = "Apply karabiner.edn" fields = ["config"] required = [] [[commands.task]] id = "preview" label = "Preview without writing" set = { dry_run = [true] } lock = ["dry_run"] fields = ["config", "dry_run"] required = [] [[commands.group]] id = "basic" label = "Basic" fields = ["config", "dry_run", "dry_run_all", "where", "version"]