TypeSwitch is a macOS menu bar utility for switching input methods per app.
✨ System-native appearance - TypeSwitch uses SwiftUI menu bar controls and follows macOS light and dark mode.
- 🔄 Auto Switch: Switch input methods when changing apps
- 🧭 Current App: Configure the frontmost app at the top of the menu
- 📱 Menu Bar Interface: View and set rules quickly
- 📋 Running Apps: Configure open apps directly
- ⚙️ Configured Apps: Manage saved app rules
- 🎯 Default Rule: Set the fallback strategy for apps without their own rule
- 🧹 Unavailable Apps: Review and clean up rules for missing apps
- 📊 Switch Statistics: Track successful switches per app and clear the counts
- 🚀 Launch at Login: Run automatically after login
- ⌨️ Keyboard Shortcuts:
⌘ + Q- Quit application
- 🔗 Quick Links: Direct access to GitHub repository and latest releases
- 🖥 macOS 14.0 or later
- 🔐 Accessibility permission for monitoring application switches
- ⌨️ Input method switching permission
brew install ygsgdbd/tap/typeswitch --cask- Download the latest version from Releases
- Drag the application to Applications folder
- Grant necessary system permissions on first launch
- After launching, the app icon (⌨️) appears in the menu bar
- Click the menu bar icon to open the dropdown menu
- Use Current App or Running Apps to configure the active or open apps
- Use Configured Apps to manage saved app rules
- Choose Default, Remember Last, Ignore, or a fixed input method
- Set the Default Rule and Launch at Login from the main menu
- Review Unavailable Apps and Switch Statistics when needed
TypeSwitch takes user privacy and security seriously:
- 🏠 All data is stored locally, nothing is uploaded to the network
- 🚫 No user information or usage data is collected
- 📖 Source code is fully open source and welcome for review
- 🛡️ Uses Swift's built-in security features
- 🔐 Permission usage:
- Accessibility: Only used for detecting application switches
- Input method switching: Only used for switching input methods
- Auto-start: Only used for launching at startup
This project uses the following open source libraries:
- The Composable Architecture (1.25.5) - For TCA app architecture and state management
- Sharing (2.0.0) - For file-backed shared state persistence
- SwiftUIX (0.2.3) - Provides additional SwiftUI components
- SwifterSwift (8.0.0) - Swift native extensions
Build tools:
- Tuist - For project generation and management
- Xcode 15.0+
- Swift 5.9+
- macOS 14.0+
- Tuist
-
Install Tuist
-
Clone repository
git clone https://github.com/ygsgdbd/TypeSwitch.git
cd TypeSwitch- Generate Xcode project
tuist generate- Open and build
open TypeSwitch.xcworkspaceThis project uses GitHub Actions for automated building and releasing:
- Push a new version tag to trigger automatic build:
git tag v1.0.0
git push origin v1.0.0-
GitHub Actions will automatically:
- Build the application
- Create DMG package
- Release new version
- Generate changelog
-
Build artifacts can be downloaded from Releases
Pull requests and issues are welcome. Before submitting a PR, please ensure:
- Code follows project style
- Necessary tests are added
- Documentation is updated
This project is licensed under the MIT License. See LICENSE file for details.
This project was inspired by and received help from:
- SwitchKey - An excellent input method switcher that provided valuable reference
- Swift and SwiftUI community
- All contributors and users who provided feedback
