mirror of
https://github.com/tw93/Mole.git
synced 2026-02-16 04:21:10 +00:00
Status supports temperature display
This commit is contained in:
5
.gitignore
vendored
5
.gitignore
vendored
@@ -39,9 +39,12 @@ temp/
|
|||||||
*.pid
|
*.pid
|
||||||
*.lock
|
*.lock
|
||||||
|
|
||||||
# Claude Code
|
# AI Assistant Instructions
|
||||||
.claude/
|
.claude/
|
||||||
CLAUDE.md
|
CLAUDE.md
|
||||||
|
AGENT.md
|
||||||
|
GEMINI.md
|
||||||
|
.cursorrules
|
||||||
copilot-instructions.md
|
copilot-instructions.md
|
||||||
|
|
||||||
# Go build artifacts (development)
|
# Go build artifacts (development)
|
||||||
|
|||||||
30
README.md
30
README.md
@@ -18,11 +18,11 @@
|
|||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
1. All-in-one toolkit equal to CleanMyMac + AppCleaner + DaisyDisk + Sensei + iStat in one trusted binary.
|
- All-in-one toolkit equal to CleanMyMac + AppCleaner + DaisyDisk + Sensei + iStat in one trusted binary
|
||||||
2. Deep cleanup finds and removes caches, temp files, browser leftovers, and junk to free up tens of gigabytes.
|
- Deep cleanup finds and removes caches, temp files, browser leftovers, and junk to free up tens of gigabytes
|
||||||
3. Smart uninstall finds app bundles plus launch agents, settings, caches, logs, and leftover files.
|
- Smart uninstall finds app bundles plus launch agents, settings, caches, logs, and leftover files
|
||||||
4. Disk insight + optimization show large files, display folders, rebuild caches, clean swap, refresh services.
|
- Disk insight + optimization show large files, display folders, rebuild caches, clean swap, refresh services
|
||||||
5. Live status shows CPU, GPU, memory, disk, network, battery, and proxy data so you can find problems.
|
- Live status shows CPU, GPU, memory, disk, network, battery, and proxy data so you can find problems
|
||||||
|
|
||||||
## Quick Start
|
## Quick Start
|
||||||
|
|
||||||
@@ -63,12 +63,12 @@ mo optimize --whitelist # Adjust protected optimization items
|
|||||||
|
|
||||||
## Tips
|
## Tips
|
||||||
|
|
||||||
- Safety first, if your Mac is very important, wait for Mole to become stable before full cleanups.
|
- **Terminal**: Use Alacritty, kitty, WezTerm, Ghostty, or Warp for best compatibility. Avoid macOS Terminal and iTerm2 due to known issues
|
||||||
- Preview the cleanup by running `mo clean --dry-run` and reviewing the list.
|
- **Safety**: Preview cleanup with `mo clean --dry-run` before running full cleanup
|
||||||
- Use `mo clean --whitelist` to manage protected caches.
|
- **Whitelist**: Use `mo clean --whitelist` to manage protected caches
|
||||||
- Use `mo touchid` to approve sudo with Touch ID instead of typing your password.
|
- **Touch ID**: Run `mo touchid` to approve sudo with Touch ID instead of password
|
||||||
- Prefer Vim-style navigation? All menus understand `h/j/k/l` in addition to the arrow keys.
|
- **Navigation**: All menus support Vim keys `h/j/k/l` in addition to arrow keys
|
||||||
- Run into issues? Use `--debug` flag to see detailed operation logs: `mo clean --debug`
|
- **Debug**: Use `--debug` flag to see detailed logs: `mo clean --debug`
|
||||||
|
|
||||||
## Features in Detail
|
## Features in Detail
|
||||||
|
|
||||||
@@ -133,7 +133,7 @@ System: 5/32 GB RAM | 333/460 GB Disk (72%) | Uptime 6d
|
|||||||
System optimization completed
|
System optimization completed
|
||||||
====================================================================
|
====================================================================
|
||||||
|
|
||||||
You can use `mo optimize --whitelist` to manage which optimization items (like rebuilding specific caches or refreshing services) are protected from being run. This is useful for preventing Mole from interfering with specific system configurations or third-party applications you rely on.
|
Use `mo optimize --whitelist` to protect specific optimization items from being run.
|
||||||
```
|
```
|
||||||
|
|
||||||
### Disk Space Analyzer
|
### Disk Space Analyzer
|
||||||
@@ -179,7 +179,7 @@ Up ▮▯▯▯▯ 0.8 MB/s Chrome ▮▮▮▯▯ 2
|
|||||||
Proxy HTTP · 192.168.1.100 Terminal ▮▯▯▯▯ 12.5%
|
Proxy HTTP · 192.168.1.100 Terminal ▮▯▯▯▯ 12.5%
|
||||||
```
|
```
|
||||||
|
|
||||||
Health score calculated from CPU, memory, disk, temperature, and I/O load. Color-coded by range.
|
Health score based on CPU, memory, disk, temperature, and I/O load. Color-coded by range.
|
||||||
|
|
||||||
## Quick Launchers
|
## Quick Launchers
|
||||||
|
|
||||||
@@ -189,9 +189,7 @@ Launch Mole commands instantly from Raycast or Alfred:
|
|||||||
curl -fsSL https://raw.githubusercontent.com/tw93/Mole/main/scripts/setup-quick-launchers.sh | bash
|
curl -fsSL https://raw.githubusercontent.com/tw93/Mole/main/scripts/setup-quick-launchers.sh | bash
|
||||||
```
|
```
|
||||||
|
|
||||||
Adds 5 commands: `clean`, `uninstall`, `optimize`, `analyze`, `status`. Finds your terminal automatically or set `MO_LAUNCHER_APP=<name>` to override.
|
Adds 5 commands: `clean`, `uninstall`, `optimize`, `analyze`, `status`. Finds your terminal automatically or set `MO_LAUNCHER_APP=<name>` to override. For Raycast, search "Reload Script Directories" to load new commands.
|
||||||
|
|
||||||
For Raycast, reload by running `Reload Script Directories` or restarting Raycast. For Alfred, workflows are registered automatically and ready to use.
|
|
||||||
|
|
||||||
## Support
|
## Support
|
||||||
|
|
||||||
|
|||||||
BIN
bin/status-go
BIN
bin/status-go
Binary file not shown.
@@ -201,7 +201,7 @@ func renderHeader(m MetricsSnapshot, errMsg string, animFrame int, termWidth int
|
|||||||
if errMsg != "" {
|
if errMsg != "" {
|
||||||
return lipgloss.JoinVertical(lipgloss.Left, headerLine, "", mole, dangerStyle.Render(errMsg), "")
|
return lipgloss.JoinVertical(lipgloss.Left, headerLine, "", mole, dangerStyle.Render(errMsg), "")
|
||||||
}
|
}
|
||||||
return headerLine + "\n\n" + mole
|
return headerLine + "\n" + mole
|
||||||
}
|
}
|
||||||
|
|
||||||
func getScoreStyle(score int) lipgloss.Style {
|
func getScoreStyle(score int) lipgloss.Style {
|
||||||
@@ -531,7 +531,7 @@ func renderBatteryCard(batts []BatteryStatus, thermal ThermalStatus) cardData {
|
|||||||
}
|
}
|
||||||
lines = append(lines, statusStyle.Render(statusText+statusIcon))
|
lines = append(lines, statusStyle.Render(statusText+statusIcon))
|
||||||
|
|
||||||
// Line 3: Health + cycles
|
// Line 3: Health + cycles + temp
|
||||||
healthParts := []string{}
|
healthParts := []string{}
|
||||||
if b.Health != "" {
|
if b.Health != "" {
|
||||||
healthParts = append(healthParts, b.Health)
|
healthParts = append(healthParts, b.Health)
|
||||||
@@ -539,29 +539,28 @@ func renderBatteryCard(batts []BatteryStatus, thermal ThermalStatus) cardData {
|
|||||||
if b.CycleCount > 0 {
|
if b.CycleCount > 0 {
|
||||||
healthParts = append(healthParts, fmt.Sprintf("%d cycles", b.CycleCount))
|
healthParts = append(healthParts, fmt.Sprintf("%d cycles", b.CycleCount))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add temperature if available
|
||||||
|
if thermal.CPUTemp > 0 {
|
||||||
|
tempStyle := subtleStyle
|
||||||
|
if thermal.CPUTemp > 80 {
|
||||||
|
tempStyle = dangerStyle
|
||||||
|
} else if thermal.CPUTemp > 60 {
|
||||||
|
tempStyle = warnStyle
|
||||||
|
}
|
||||||
|
healthParts = append(healthParts, tempStyle.Render(fmt.Sprintf("%.0f°C", thermal.CPUTemp)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add fan speed if available
|
||||||
|
if thermal.FanSpeed > 0 {
|
||||||
|
healthParts = append(healthParts, fmt.Sprintf("%d RPM", thermal.FanSpeed))
|
||||||
|
}
|
||||||
|
|
||||||
if len(healthParts) > 0 {
|
if len(healthParts) > 0 {
|
||||||
lines = append(lines, subtleStyle.Render(strings.Join(healthParts, " · ")))
|
lines = append(lines, subtleStyle.Render(strings.Join(healthParts, " · ")))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Line 4: Temp + Fan combined
|
|
||||||
var thermalParts []string
|
|
||||||
if thermal.CPUTemp > 0 {
|
|
||||||
tempStyle := okStyle
|
|
||||||
if thermal.CPUTemp > 80 {
|
|
||||||
tempStyle = dangerStyle
|
|
||||||
} else if thermal.CPUTemp > 60 {
|
|
||||||
tempStyle = warnStyle
|
|
||||||
}
|
|
||||||
thermalParts = append(thermalParts, tempStyle.Render(fmt.Sprintf("%.0f°C", thermal.CPUTemp)))
|
|
||||||
}
|
|
||||||
if thermal.FanSpeed > 0 {
|
|
||||||
thermalParts = append(thermalParts, fmt.Sprintf("%d RPM", thermal.FanSpeed))
|
|
||||||
}
|
|
||||||
if len(thermalParts) > 0 {
|
|
||||||
lines = append(lines, strings.Join(thermalParts, " · "))
|
|
||||||
}
|
|
||||||
|
|
||||||
return cardData{icon: iconBattery, title: "Power", lines: lines}
|
return cardData{icon: iconBattery, title: "Power", lines: lines}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user