A powerful macOS menu bar utility for managing and quitting running applications with speed and elegance
EasyQuit is a lightweight, keyboard-driven macOS application that transforms how you manage running applications. Living quietly in your menu bar, it provides instant access to quit, force quit, or restart any running app — all without leaving your keyboard or disrupting your workflow.
Built entirely with SwiftUI and native macOS frameworks, EasyQuit emphasizes performance, efficiency, and a native macOS experience.
- Visual Grid Interface: See all running apps at a glance in a clean 3-column icon grid
- Multiple Quit Options: Gracefully quit, force quit, or restart applications
- Smart Filtering: Automatically hides system-critical apps (Finder, Dock, etc.)
- Real-time Updates: App list refreshes automatically with configurable intervals (1-5 seconds)
- Global Hotkey: Access EasyQuit from anywhere with a customizable keyboard shortcut
- Arrow Key Navigation: Navigate the app grid efficiently with arrow keys
- Quick Actions: Press Return to quit, Escape to search
- Instant Search: Type to filter apps by name in real-time
- Menu Bar Integration: Lives in your menu bar with no Dock icon
- Popover Interface: Clean, translucent popover window with native macOS aesthetics
- Smooth Animations: Polished transitions and hover effects
- Visual Feedback: Clear selection highlighting and hover states
- Included Apps: Add background applications to the visible list
- Excluded Apps: Hide specific apps from the interface
- Update Interval: Control how often the app list refreshes
- Custom Hotkey: Record any keyboard shortcut combination
- Show in Finder: Right-click any app to reveal it in Finder
- macOS 13.0 or later
- Apple Silicon or Intel processor
-
Clone this repository:
git clone https://github.com/cipher-shad0w/EasyQuit.git cd EasyQuit -
Open the project in Xcode:
open EasyQuit.xcodeproj
-
Build and run the project (⌘R)
- EasyQuit will appear in your menu bar with a power icon
- Click the icon to open the application list
- Right-click the menu bar icon for quick access to Settings and Quit
Open EasyQuit
- Click the menu bar icon, or
- Use your configured global hotkey (default: none, set in Settings)
Quit an Application
- Click an app icon, or
- Navigate with arrow keys and press Return
Force Quit
- Right-click an app and select "Force Quit"
Restart an Application
- Right-click an app and select "Restart"
| Action | Shortcut |
|---|---|
| Navigate Grid | Arrow Keys (↑ ↓ ← →) |
| Quit Selected App | Return (⏎) |
| Focus Search | Escape (⎋) |
| Open App Menu | Right-click or Control+Click |
Access settings by right-clicking the menu bar icon and selecting "Settings".
- Update Interval: Adjust how frequently the app list refreshes (1-5 seconds)
- Global Hotkey: Record a custom keyboard shortcut to open EasyQuit from anywhere
- Supports Command (⌘), Option (⌥), Control (⌃), and Shift (⇧) modifiers
- Add background applications to make them visible in the app list
- Useful for managing background processes
- Hide specific applications from the interface
- Handy for apps you never want to quit accidentally
EasyQuit is built with modern Swift best practices:
- SwiftUI: Native declarative UI framework
- MVVM Pattern: Clean separation of concerns
- Dependency Injection: Testable and maintainable architecture
- Protocol-Oriented: Flexible and extensible design
- Combine Framework: Reactive state management
EasyQuit/
├── EasyQuit/
│ ├── EasyQuitApp.swift # App entry point
│ ├── ContentView.swift # Main interface
│ ├── DI/ # Dependency injection
│ ├── Models/ # Data models
│ ├── Protocols/ # Protocol definitions
│ ├── Services/ # Business logic
│ ├── ViewModels/ # MVVM view models
│ └── Views/ # SwiftUI views
└── docs/ # Documentation
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
See CONTRIBUTING.md for detailed guidelines.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
- Built with ❤️ by cipher-shad0w
- Inspired by the need for efficient application management on macOS
If you encounter any issues or have suggestions:
- Open an issue
- Check existing discussions
Made with Swift and SwiftUI for macOS