Preview
Open Original
DevSwitcher2
๐ธ Preview
โจ Key Features
๐ Enhanced Application Switchers
- Intra-App Window Switcher: Fast switching between windows within the same app (Enhanced Command + `)
- Inter-App Switcher: Switching between all applications (Enhanced Command + Tab)
๐ฏ Intelligent Window Recognition
- Smart title extraction with multiple strategies (first part, last part, custom separator)
- Automatic project name recognition (e.g., Xcode projects, VSCode workspaces)
- Configurable app-specific rules
โก๏ธ Ultimate Performance
- Icon caching system for smooth visual experience
- Intelligent multi-display support
- 60Hz real-time response
- Optimized memory management
๐ Highly Customizable
- Fully customizable hotkey settings
- Flexible window tiโฆ
DevSwitcher2
๐ธ Preview
โจ Key Features
๐ Enhanced Application Switchers
- Intra-App Window Switcher: Fast switching between windows within the same app (Enhanced Command + `)
- Inter-App Switcher: Switching between all applications (Enhanced Command + Tab)
๐ฏ Intelligent Window Recognition
- Smart title extraction with multiple strategies (first part, last part, custom separator)
- Automatic project name recognition (e.g., Xcode projects, VSCode workspaces)
- Configurable app-specific rules
โก๏ธ Ultimate Performance
- Icon caching system for smooth visual experience
- Intelligent multi-display support
- 60Hz real-time response
- Optimized memory management
๐ Highly Customizable
- Fully customizable hotkey settings
- Flexible window title display strategies
๐ Internationalization Support
- Complete Chinese and English localization
- Dynamic language switching
- Automatic system language detection
๐ Quick Start
System Requirements
- macOS 12.0 or later
- Accessibility permissions (guided setup on first launch)
Installation Methods
Method 1: Brew install
# Install
brew tap vaspike/devswitcher2 && brew install --cask DevSwitcher2
# Uninstall
brew uninstall devswitcher2
Method 2: Download Release
- Visit the Releases page
- Download the latest
DevSwitcher2.dmg - Open the dmg file and drag the app to Applications folder
- Launch the app and grant necessary permissions
Method 1: Build from Source
# Clone repository
git clone https://github.com/vaspike/DevSwitcher2.git
cd DevSwitcher2
# Open project in Xcode
open DevSwitcher2.xcodeproj
# Or build from command line
xcodebuild -project DevSwitcher2.xcodeproj -scheme DevSwitcher2 -configuration Release
Initial Setup
- Grant Accessibility Permissions: The app will automatically guide you through the setup
- Configure Hotkeys: Default uses Command + ` (intra-app window switcher) and Command + Tab (inter-app switcher)
- Customize Settings: Access preferences through the menu bar icon
- Note: The
inter-app switcherfeature is disabled by default and needs to be manually enabled in preferences
๐ฎ Usage Guide
Basic Operations
- Window Switching: `Command + `` (backtick) - Switch between windows of the same app
- App Switching:
Command + Tab- Switch between all applications - Release Modifier Keys: Complete switching and activate selected window/app
- ESC Key: Cancel switching and return to original state
Advanced Tips
- Continuous Switching: Hold modifier keys and repeatedly press trigger key for quick browsing
- Reverse Switching: Add Shift key for reverse traversal
- Mouse Selection: Click directly to select when switcher interface is displayed
- Custom Hotkeys: Configure personalized hotkey combinations in preferences
Smart Title Strategies
DevSwitcher2 provides three title extraction strategies:
- First Part: Display the first half of the title (suitable for apps with filenames first)
- Last Part: Display the last half of the title (suitable for windows with app names last)
- Custom Separator: Smart extraction based on specified separators (like " - ", " | ", etc.)
โ๏ธ Configuration Details
Hotkey Settings
- Modifier Keys: Command, Option, Control, Shift and their combinations
- Trigger Keys: Letters, numbers, function keys, special symbol keys
- Conflict Detection: Automatic detection and warning of hotkey conflicts
App-Specific Configuration
Configure personalized title extraction rules for different apps:
- Bundle ID identification
- Custom separators
- Specific title format handling
Language Settings
- System Default: Follow system language settings
- English: English interface
- Chinese: Simplified Chinese interface
- Changes take effect after restart
๐ Development Guide
Technical Architecture
- UI Framework: SwiftUI + AppKit hybrid development
- Permission Management: Accessibility API
- Event Handling: Carbon Event Manager
- Icon Caching: Custom caching system
- Internationalization: NSLocalizedString + dynamic language switching
Project Structure
DevSwitcher2/
โโโ DevSwitcher2App.swift # App entry point and AppDelegate
โโโ WindowManager.swift # Core window management logic
โโโ HotkeyManager.swift # Hotkey registration and handling
โโโ SwitcherComponents.swift # Switcher UI components
โโโ PreferencesView.swift # Preferences interface
โโโ SettingsManager.swift # Settings storage and management
โโโ LocalizationHelper.swift # Internationalization support
โโโ AppIconCache.swift # Icon caching system
โโโ CompatibilityExtensions.swift # macOS version compatibility
โโโ WindowSwitcherView.swift # Window switcher view
Build Requirements
- Xcode 15.0+
- Swift 5.9+
- macOS Deployment Target: 12.0
Contributing
- Fork this repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Create a Pull Request
๐ Troubleshooting
Common Issues
Q: App cannot switch windows? A: Please ensure accessibility permissions are granted: System Preferences โ Security & Privacy โ Privacy โ Accessibility
Q: Hotkeys not responding? A: Check for conflicts with other app hotkeys, you can change them in preferences
Q: Some app window titles display incorrectly? A: Try configuring a custom title separator for that app in preferences
Q: Switcher interface displays abnormally? A: Restart the app or reset settings to default values
Performance Optimization
- Icon cache is automatically managed by the app
- Adjust title extraction strategies to fit your workflow
- Disable unnecessary switching modes to save resources
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
App for Mac