TypeSwitch is a macOS menu bar utility for switching input methods per app.
It keeps the workflow in the menu bar: choose how each app should behave, set the rule for unconfigured apps, and let TypeSwitch switch to the right input method when the frontmost app changes.
- Auto switch per app: Switch input methods when the active app changes.
- Current App: Configure the frontmost app directly at the top of the menu.
- Unconfigured and Running groups: Review running apps without rules separately from running apps that already have rules.
- Configured apps: Manage saved app rules from the menu bar.
- Unconfigured Apps rule: Set the fallback behavior for apps without their own rule.
- Rule strategies: Choose
Don't Switch,Last Switch, or aSpecific Input Method. - Unavailable cleanup: Review rules for missing apps and clear unavailable settings.
- Switch statistics: Track successful input method switches per app and clear the counts.
- Launch at Login: Start TypeSwitch automatically after login, with a Login Items shortcut when macOS requires approval.
- Manual update checks: Use
Check for Updates...in the menu bar app for manual installs. - Quick project access: Open the GitHub repository from the menu.
- Keyboard shortcut: Press
Command + Qto quit TypeSwitch.
- macOS 14.0 or later
- Enabled macOS keyboard layouts or input methods
- macOS permissions needed for app activation monitoring, system input method switching, and optional Login Items
brew install ygsgdbd/tap/typeswitch --caskUpdate Homebrew installations with:
brew upgrade typeswitch- Download the latest build from Releases.
- Drag
TypeSwitch.appto the Applications folder. - Launch TypeSwitch and grant any system permissions macOS requests.
- Use
Check for Updates...from the menu bar app to check GitHub Releases for future updates.
- Launch TypeSwitch. Its keyboard icon appears in the menu bar.
- Open the menu and use
Current Appto configure the frontmost app. - Use
Unconfiguredto assign rules to running apps that do not have one yet. - Use
RunningandConfiguredto review and change existing app rules. - For each app, choose
Default,Last Switch,Don't Switch, or a specific input method. - Use
Unconfigured Appsto set the fallback rule for apps without their own rule. - Check
UnavailableandSwitcheswhen you want to clean missing rules or review successful switches.
- App rules, the unconfigured-apps rule, and switch statistics are stored locally.
- TypeSwitch has no server-side component in this repository.
- The GitHub link and
Check for Updates...contact GitHub only when you use them. - Input method switching uses macOS system input sources.
- Launch at Login uses macOS Login Items, with a LaunchAgent fallback when needed.
This project uses:
- The Composable Architecture
1.26.0for app architecture and state management - Sharing
2.9.1for file-backed shared state - Sparkle
2.9.4for manual update checks and appcast support - SwifterSwift
8.0.0for Swift extensions - Point-Free support libraries: CasePaths, Dependencies, and PerceptionCore
- Tuist for project generation and build configuration
- Xcode 15.0+
- Swift 5.9+
- macOS 14.0+
- Tuist
Install Tuist:
brew tap tuist/tuist
brew install --formula tuistClone and generate the Xcode project:
git clone https://github.com/ygsgdbd/TypeSwitch.git
cd TypeSwitch
tuist generate
open TypeSwitch.xcworkspaceRun tests:
tuist testProduction releases are built by GitHub Actions when a vX.Y.Z tag is pushed:
git tag v0.6.0
git push origin v0.6.0The workflow validates the tag, runs tests, builds a universal macOS app, packages a zip, generates checksums, creates a signed Sparkle appcast.xml, publishes a GitHub Release, and updates the Homebrew cask.
TypeSwitch was inspired by:
- SwitchKey, an input method switcher for macOS
- The Swift and SwiftUI community
- Contributors and users who shared feedback
