A macOS input source switcher with user-defined shortcuts.
This is a personal fork of hatashiro/kawa. Upstream is unmaintained; the fork ships the upstream changes that never got released and adds its own release pipeline:
- Universal binary (arm64 + x86_64), built and released via GitHub Actions.
- Distribution through the
windemiatrix/tapHomebrew tap (cask, ad-hoc signed). - Requires macOS 10.15 (Catalina) or later.
Using Homebrew
brew install --cask windemiatrix/tap/kawaKawa.app is ad-hoc signed and not notarized. The cask clears the Gatekeeper
quarantine attribute on install, so the app launches normally. (Homebrew 5.0
removed the --no-quarantine flag; the cask does this itself.)
The prebuilt binaries can be found in Releases.
Unzip Kawa.zip, move Kawa.app to Applications, and clear the quarantine
attribute:
xattr -cr /Applications/Kawa.appWe use Carthage as a dependency
manager; install it with brew install carthage.
git clone git@github.com:Windemiatrix/kawa.git
cd kawa
make bootstrapmake bootstrap builds the dependencies from source (--no-use-binaries) so
the frameworks come out universal. After that, open the project with Xcode or
build from the command line:
make help # list all targets
make build # Release build, universal arm64 + x86_64
make lint # swiftlint + shellcheckThe version source of truth is kawa/Info.plist:
make bump-version VERSION=X.Y.ZCommit the bump together with a ## X.Y.Z (date) section in CHANGELOG.md,
then run the manual Release workflow on GitHub Actions. It builds the
universal binary, creates the vX.Y.Z tag and the GitHub release, and updates
the Homebrew cask in Windemiatrix/homebrew-tap. make status shows whether
Info.plist, the latest GitHub release, and the cask are in sync.
First-release prerequisites: the Windemiatrix/homebrew-tap repository must
exist, and the TAP_GITHUB_TOKEN repository secret must hold a token with
write access to it.
A published release is never rolled back on a failed cask bump; make status
shows the lag. To recover without cutting a new version, update the cask in a
tap clone manually: scripts/update-cask.sh <version> <sha256> <tap-clone>
(the sha256 is in the release's Kawa.zip.sha256 asset), then commit and
push the tap.
Kawa is released under the MIT License.

