Visual interface for the Mole CLI - A native macOS desktop application for system cleanup and optimization.
MoleUI provides an intuitive graphical interface to the powerful Mole CLI tool, making system maintenance accessible through a modern desktop application built with Wails v2 and Vue 3.
- π§Ή Deep System Cleanup - Remove caches, logs, and temporary files to reclaim disk space
- ποΈ Smart App Uninstaller - Completely remove applications with all related files
- β‘ System Optimization - Rebuild caches, refresh services, and optimize system performance
- π Disk Space Analysis - Visualize and analyze disk usage across directories
- π System Monitoring - Real-time metrics for CPU, memory, disk, GPU, and network
- π Touch ID Setup - Configure Touch ID authentication for sudo commands
This application uses the Mole project by @tw93 as its core engine. MoleUI provides a visual interface to make the powerful command-line tool more accessible to all users.
- macOS 11.0 or later
- Go 1.24+ installed
- Node.js 16+ installed
- Wails CLI installed:
go install github.com/wailsapp/wails/v2/cmd/wails@latest
-
Clone the repository
git clone <repository-url> cd mole-wails
-
Install dependencies
go mod download cd frontend && npm install && cd ..
-
Run in development mode
wails dev
The app will launch with hot-reload enabled for both frontend and backend changes.
Build a production-ready .app bundle:
wails buildThe compiled application will be available in build/bin/.
- Go 1.24+ - Backend logic and system integration
- Wails v2 - Go + Web frontend framework for desktop apps
- macOS APIs - System metrics, disk analysis, Touch ID integration
- Vue 3 - Composition API with
<script setup>syntax - Pinia - State management
- TypeScript - Type safety
- Vite - Fast build tool and dev server
- Event-Driven - Wails runtime events for real-time updates
- Service Layer - Clean separation between UI and system operations
- Reactive State - Vue 3 reactivity for seamless UI updates
mole-wails/
βββ backend/ # Go backend
β βββ services/ # Service layer
β β βββ clean.go # System cleanup service
β β βββ uninstall.go # App uninstaller service
β β βββ optimize.go # System optimization service
β β βββ touchid.go # Touch ID configuration service
β βββ models/ # Shared data structures
β βββ analyze/ # Disk analyzer (from Mole)
β βββ status/ # System monitor (from Mole)
βββ frontend/ # Vue 3 frontend
β βββ src/
β βββ components/
β β βββ tabs/ # Main feature tabs
β β βββ layout/ # Layout components (Sidebar)
β β βββ shared/ # Reusable components (Toast, ConfirmDialog)
β βββ stores/ # Pinia stores for state management
βββ scripts/ # Bash scripts from Mole CLI
βββ docs/ # Documentation and plans
- Clean Tab - Scan and remove system caches, logs, and temporary files with progress tracking
- Uninstall Tab - Remove applications and all associated files
- Optimize Tab - System optimization tasks with sudo support
- Analyze Tab - Disk space analysis with directory breakdown and large file detection
- Status Tab - Real-time system monitoring (CPU, Memory, Disk, GPU, Network, Battery)
- Touch ID Tab - Enable/disable Touch ID for sudo commands
- About Tab - Application information and credits
- Custom Dialogs - Native-looking confirmation dialogs (browser dialogs don't work in Wails)
- Event System - Real-time progress updates via Wails events
- Error Handling - Comprehensive error handling with user-friendly messages
- Modern dark theme with gradient accents
- Responsive layouts
- Loading states and progress bars
- Toast notifications
- Smooth animations and transitions
- Confirmation dialogs for destructive operations
Native browser dialogs (alert(), confirm(), prompt()) don't work in Wails desktop applications. Use custom Vue components instead:
- Use
ConfirmDialog.vuefor confirmations - Use
Toast.vuefor notifications - Display errors in the UI, not via
alert()
// Listen to events
EventsOn('event-name', (data) => {
console.log('Received:', data)
})
// Emit events (from Go)
runtime.EventsEmit(ctx, "event-name", data)Each tab has its own Pinia store:
useCleanStore()- Clean tab stateuseUninstallStore()- Uninstall tab stateuseOptimizeStore()- Optimize tab stateuseAnalyzeStore()- Analyze tab stateuseStatusStore()- Status tab stateuseTouchIDStore()- Touch ID tab state
- File size calculations may show 0 for some cloud files (iCloud, sparse files) - uses logical size as fallback
- Disk metrics use primary disk only to avoid APFS container double-counting
Contributions are welcome! This project builds upon the excellent Mole CLI tool.
MIT License
Note: This is a visual interface for the Mole CLI tool. All core functionality is provided by the Mole project. MoleUI simply makes it more accessible through a graphical interface.