{"id":23540863,"url":"https://github.com/ygsgdbd/TypeSwitch","last_synced_at":"2025-08-29T01:31:21.890Z","repository":{"id":266705998,"uuid":"899099921","full_name":"ygsgdbd/TypeSwitch","owner":"ygsgdbd","description":"A macOS app that automatically switches input methods for different applications. 自动切换不同应用输入法的 macOS 应用。","archived":false,"fork":false,"pushed_at":"2025-02-22T11:57:05.000Z","size":2145,"stargazers_count":48,"open_issues_count":3,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-11T00:31:45.010Z","etag":null,"topics":["automation","input-method","input-method-switcher","mac-app","macos","macos-app","swift","swiftui","utility"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ygsgdbd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-12-05T16:10:18.000Z","updated_at":"2025-07-02T01:41:12.000Z","dependencies_parsed_at":"2024-12-29T13:19:04.395Z","dependency_job_id":"db4a97a2-6ced-4627-83d3-4957bb9eda03","html_url":"https://github.com/ygsgdbd/TypeSwitch","commit_stats":null,"previous_names":["ygsgdbd/typeswitch"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/ygsgdbd/TypeSwitch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ygsgdbd%2FTypeSwitch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ygsgdbd%2FTypeSwitch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ygsgdbd%2FTypeSwitch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ygsgdbd%2FTypeSwitch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ygsgdbd","download_url":"https://codeload.github.com/ygsgdbd/TypeSwitch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ygsgdbd%2FTypeSwitch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272600261,"owners_count":24962591,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-28T02:00:10.768Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","input-method","input-method-switcher","mac-app","macos","macos-app","swift","swiftui","utility"],"created_at":"2024-12-26T05:01:29.275Z","updated_at":"2025-08-29T01:31:21.881Z","avatar_url":"https://github.com/ygsgdbd.png","language":"Swift","funding_links":[],"categories":["Swift"],"sub_categories":[],"readme":"# TypeSwitch 🔄\n\n\u003cdiv align=\"center\"\u003e\n\n[![Swift](https://img.shields.io/badge/Swift-5.9-orange.svg)](https://swift.org)\n[![Platform](https://img.shields.io/badge/Platform-macOS%2013.0+-blue.svg)](https://www.apple.com/macos/)\n[![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)\n[![Build Status](https://github.com/ygsgdbd/TypeSwitch/actions/workflows/build.yml/badge.svg)](https://github.com/ygsgdbd/TypeSwitch/actions)\n[![Homebrew](https://img.shields.io/badge/homebrew-available-brightgreen.svg)](https://github.com/ygsgdbd/homebrew-tap)\n[![Release](https://img.shields.io/github/v/release/ygsgdbd/TypeSwitch?include_prereleases)](https://github.com/ygsgdbd/TypeSwitch/releases)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/ygsgdbd/TypeSwitch/pulls)\n\n[🇨🇳 中文文档](README.zh-CN.md) | [📦 Installation](#-installation) | [📖 Usage](#-usage)\n\n\u003c/div\u003e\n\nTypeSwitch is a modern macOS application built with SwiftUI for automatically switching input methods across different applications. Leveraging the latest Swift features and native macOS capabilities, it provides a seamless and efficient experience for managing input method preferences.\n\n## ✨ Screenshots\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"Screenshots/main.png\" width=\"600\" alt=\"Main Interface\"\u003e\n  \u003cp\u003e\u003cem\u003eMain Interface - Set default input method for different applications\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"Screenshots/search.png\" width=\"600\" alt=\"Search Function\"\u003e\n  \u003cp\u003e\u003cem\u003eSearch Function - Quickly find and configure applications\u003c/em\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n## 🎯 Features\n\n- 🔄 **Auto Switch**: Automatically switch to preset input methods when changing applications\n- 🔍 **Quick Search**: Support fuzzy search for applications\n- 🎯 **Precise Match**: Set independent input method preferences for each application\n- 🚀 **Auto Start**: Support automatic startup\n- ⌨️ **Keyboard Shortcuts**:\n  - `⌘ + F` - Quick search applications\n  - `⌘ + R` - Refresh application list\n  - `⌘ + Q` - Quit application\n- 🎯 **Quick Switch**: Support customizable shortcut for switching current application's default input method\n\n## 🔧 System Requirements\n\n- 🖥 macOS 13.0 or later\n- 🔐 Accessibility permission for monitoring application switches\n- ⌨️ Input method switching permission\n\n## 📦 Installation\n\n### 🍺 Option 1: Homebrew\n\n```bash\nbrew install ygsgdbd/tap/typeswitch --cask\n```\n\n### 💾 Option 2: Manual Installation\n\n1. Download the latest version from [Releases](https://github.com/ygsgdbd/TypeSwitch/releases)\n2. Drag the application to Applications folder\n3. Grant necessary system permissions on first launch\n\n## 📖 Usage\n\n1. After launching, the app icon appears in the menu bar\n2. Click the menu bar icon to open the main interface\n3. Find the application you want to configure in the list\n4. Select the default input method for the application\n5. The input method will automatically switch when you switch to that application\n\n## 🔒 Security\n\nTypeSwitch takes user privacy and security seriously:\n\n- 🏠 All data is stored locally, nothing is uploaded to the network\n- 🚫 No user information or usage data is collected\n- 📖 Source code is fully open source and welcome for review\n- 🛡️ Uses Swift's built-in security features\n- 🔐 Permission usage:\n  - Accessibility: Only used for detecting application switches\n  - Input method switching: Only used for switching input methods\n  - Auto-start: Only used for launching at startup\n\n## Dependencies\n\nThis project uses the following open source libraries:\n\n- [Defaults](https://github.com/sindresorhus/Defaults) (9.0.0) - For persistent settings storage\n- [SwiftUIX](https://github.com/SwiftUIX/SwiftUIX) (0.1.9) - Provides additional SwiftUI components\n- [SwifterSwift](https://github.com/SwifterSwift/SwifterSwift) (7.0.0) - Swift native extensions\n- [KeyboardShortcuts](https://github.com/sindresorhus/KeyboardShortcuts) (2.2.2) - Add user-customizable global keyboard shortcuts\n\nBuild tools:\n- [Tuist](https://github.com/tuist/tuist) - For project generation and management\n\n## Development\n\n### Requirements\n\n- Xcode 15.0+\n- Swift 5.9+\n- macOS 13.0+\n- [Tuist](https://github.com/tuist/tuist)\n\n### Build Steps\n\n1. Install [Tuist](https://github.com/tuist/tuist#install-▶️)\n\n2. Clone repository\n```bash\ngit clone https://github.com/ygsgdbd/TypeSwitch.git\ncd TypeSwitch\n```\n\n3. Generate Xcode project\n```bash\ntuist generate\n```\n\n4. Open and build\n```bash\nopen TypeSwitch.xcworkspace\n```\n\n### Automated Build and Release\n\nThis project uses GitHub Actions for automated building and releasing:\n\n1. Push a new version tag to trigger automatic build:\n```bash\ngit tag v1.0.0\ngit push origin v1.0.0\n```\n\n2. GitHub Actions will automatically:\n   - Build the application\n   - Create DMG package\n   - Release new version\n   - Generate changelog\n\n3. Build artifacts can be downloaded from [Releases](https://github.com/ygsgdbd/TypeSwitch/releases)\n\n### Project Structure\n\n```\nTypeSwitch/\n├── Project.swift       # Tuist project configuration\n├── Tuist/             # Tuist configuration files\n├── Sources/           # Source code\n│   ├── Models/        # Data models\n│   ├── Views/         # SwiftUI views\n│   ├── ViewModels/    # View models\n│   └── Utils/         # Utility classes\n└── Tests/            # Test files\n```\n\n## Contributing\n\nPull requests and issues are welcome. Before submitting a PR, please ensure:\n\n1. Code follows project style\n2. Necessary tests are added\n3. Documentation is updated\n\n## License\n\nThis project is licensed under the MIT License. See [LICENSE](LICENSE) file for details.\n\n## Acknowledgments 🙏\n\nThis project was inspired by and received help from:\n- [SwitchKey](https://github.com/itsuhane/SwitchKey) - An excellent input method switcher that provided valuable reference\n- Swift and SwiftUI community\n- All contributors and users who provided feedback\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fygsgdbd%2FTypeSwitch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fygsgdbd%2FTypeSwitch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fygsgdbd%2FTypeSwitch/lists"}