Skip to content

cipher-shad0w/EasyQuit

Repository files navigation

EasyQuit

A powerful macOS menu bar utility for managing and quitting running applications with speed and elegance

License: GPL v3 macOS Swift


Overview

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.

✨ Features

🎯 Quick Application Management

  • 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)

⌨️ Keyboard-First Design

  • 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

🎨 Native macOS Experience

  • 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

⚙️ Customization Options

  • 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

🚀 Getting Started

Requirements

  • macOS 13.0 or later
  • Apple Silicon or Intel processor

Installation

From Source

  1. Clone this repository:

    git clone https://github.com/cipher-shad0w/EasyQuit.git
    cd EasyQuit
  2. Open the project in Xcode:

    open EasyQuit.xcodeproj
  3. Build and run the project (⌘R)

First Launch

  1. EasyQuit will appear in your menu bar with a power icon
  2. Click the icon to open the application list
  3. Right-click the menu bar icon for quick access to Settings and Quit

📖 Usage

Basic Operations

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"

Keyboard Shortcuts

Action Shortcut
Navigate Grid Arrow Keys (↑ ↓ ← →)
Quit Selected App Return (⏎)
Focus Search Escape (⎋)
Open App Menu Right-click or Control+Click

Settings

Access settings by right-clicking the menu bar icon and selecting "Settings".

General

  • Update Interval: Adjust how frequently the app list refreshes (1-5 seconds)

Keyboard Shortcuts

  • Global Hotkey: Record a custom keyboard shortcut to open EasyQuit from anywhere
  • Supports Command (⌘), Option (⌥), Control (⌃), and Shift (⇧) modifiers

Included Apps

  • Add background applications to make them visible in the app list
  • Useful for managing background processes

Excluded Apps

  • Hide specific applications from the interface
  • Handy for apps you never want to quit accidentally

🏗️ Architecture

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

Project Structure

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

🤝 Contributing

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.

📝 License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

🙏 Acknowledgments

  • Built with ❤️ by cipher-shad0w
  • Inspired by the need for efficient application management on macOS

📬 Support

If you encounter any issues or have suggestions:


Made with Swift and SwiftUI for macOS

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Sponsor this project

 

Languages