Efficient and Elegant macOS Window Switching Tool
A modern menu bar application that enhances window and application switching experience for smoother workflow.
๐ฅ Download Latest ยท ๐ Report Issues ยท ๐ก Feature Requests ยท ๐จ๐ณ ไธญๆๆๆกฃ
- Intra-App Window Switcher: Fast switching between windows within the same app (Enhanced Command + `)
- Inter-App Switcher: Switching between all applications (Enhanced Command + Tab)
- 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
- Icon caching system for smooth visual experience
- Intelligent multi-display support
- 60Hz real-time response
- Optimized memory management
- Fully customizable hotkey settings
- Flexible window title display strategies
- Complete Chinese and English localization
- Dynamic language switching
- Automatic system language detection
- macOS 12.0 or later
- Accessibility permissions (guided setup on first launch)
# Install
brew tap vaspike/devswitcher2 && brew install --cask DevSwitcher2# Uninstall
brew uninstall devswitcher2- 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
# 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- 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
- 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
- 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
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.)
- 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
Configure personalized title extraction rules for different apps:
- Bundle ID identification
- Custom separators
- Specific title format handling
- System Default: Follow system language settings
- English: English interface
- Chinese: Simplified Chinese interface
- Changes take effect after restart
- 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
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
- Xcode 15.0+
- Swift 5.9+
- macOS Deployment Target: 12.0
- 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
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
- Icon cache is automatically managed by the app
- Adjust title extraction strategies to fit your workflow
- Disable unnecessary switching modes to save resources
This project is licensed under the MIT License - see the LICENSE file for details.
App for Mac