mirror of
https://github.com/tw93/Mole.git
synced 2026-02-04 19:44:44 +00:00
272 lines
11 KiB
Bash
272 lines
11 KiB
Bash
#!/bin/bash
|
|
# User GUI Applications Cleanup Module
|
|
# Desktop applications, communication tools, media players, games, utilities
|
|
|
|
set -euo pipefail
|
|
|
|
# Clean Xcode and iOS development tools
|
|
# Archives can be significant in size (app packaging files)
|
|
# DeviceSupport files for old iOS versions can accumulate
|
|
# Note: Skips critical files if Xcode is running
|
|
clean_xcode_tools() {
|
|
# Check if Xcode is running for safer cleanup of critical resources
|
|
local xcode_running=false
|
|
if pgrep -x "Xcode" > /dev/null 2>&1; then
|
|
xcode_running=true
|
|
fi
|
|
|
|
# Safe to clean regardless of Xcode state
|
|
safe_clean ~/Library/Developer/CoreSimulator/Caches/* "Simulator cache"
|
|
safe_clean ~/Library/Developer/CoreSimulator/Devices/*/data/tmp/* "Simulator temp files"
|
|
safe_clean ~/Library/Caches/com.apple.dt.Xcode/* "Xcode cache"
|
|
safe_clean ~/Library/Developer/Xcode/iOS\ Device\ Logs/* "iOS device logs"
|
|
safe_clean ~/Library/Developer/Xcode/watchOS\ Device\ Logs/* "watchOS device logs"
|
|
safe_clean ~/Library/Developer/Xcode/Products/* "Xcode build products"
|
|
|
|
# Clean build artifacts only if Xcode is not running
|
|
if [[ "$xcode_running" == "false" ]]; then
|
|
safe_clean ~/Library/Developer/Xcode/DerivedData/* "Xcode derived data"
|
|
safe_clean ~/Library/Developer/Xcode/Archives/* "Xcode archives"
|
|
else
|
|
echo -e " ${YELLOW}${ICON_WARNING}${NC} Xcode is running, skipping DerivedData and Archives cleanup"
|
|
fi
|
|
}
|
|
|
|
# Clean code editors (VS Code, Sublime, etc.)
|
|
clean_code_editors() {
|
|
safe_clean ~/Library/Application\ Support/Code/logs/* "VS Code logs"
|
|
safe_clean ~/Library/Application\ Support/Code/Cache/* "VS Code cache"
|
|
safe_clean ~/Library/Application\ Support/Code/CachedExtensions/* "VS Code extension cache"
|
|
safe_clean ~/Library/Application\ Support/Code/CachedData/* "VS Code data cache"
|
|
safe_clean ~/Library/Caches/JetBrains/* "JetBrains cache"
|
|
safe_clean ~/Library/Caches/com.sublimetext.*/* "Sublime Text cache"
|
|
}
|
|
|
|
# Clean communication apps (Slack, Discord, Zoom, etc.)
|
|
clean_communication_apps() {
|
|
safe_clean ~/Library/Application\ Support/discord/Cache/* "Discord cache"
|
|
safe_clean ~/Library/Application\ Support/Slack/Cache/* "Slack cache"
|
|
safe_clean ~/Library/Caches/us.zoom.xos/* "Zoom cache"
|
|
safe_clean ~/Library/Caches/com.tencent.xinWeChat/* "WeChat cache"
|
|
safe_clean ~/Library/Caches/ru.keepcoder.Telegram/* "Telegram cache"
|
|
safe_clean ~/Library/Caches/com.microsoft.teams2/* "Microsoft Teams cache"
|
|
safe_clean ~/Library/Caches/net.whatsapp.WhatsApp/* "WhatsApp cache"
|
|
safe_clean ~/Library/Caches/com.skype.skype/* "Skype cache"
|
|
safe_clean ~/Library/Caches/com.tencent.meeting/* "Tencent Meeting cache"
|
|
safe_clean ~/Library/Caches/com.tencent.WeWorkMac/* "WeCom cache"
|
|
safe_clean ~/Library/Caches/com.feishu.*/* "Feishu cache"
|
|
}
|
|
|
|
# Clean DingTalk
|
|
clean_dingtalk() {
|
|
safe_clean ~/Library/Caches/dd.work.exclusive4aliding/* "DingTalk (iDingTalk) cache"
|
|
safe_clean ~/Library/Caches/com.alibaba.AliLang.osx/* "AliLang security component"
|
|
safe_clean ~/Library/Application\ Support/iDingTalk/log/* "DingTalk logs"
|
|
safe_clean ~/Library/Application\ Support/iDingTalk/holmeslogs/* "DingTalk holmes logs"
|
|
}
|
|
|
|
# Clean AI assistants
|
|
clean_ai_apps() {
|
|
safe_clean ~/Library/Caches/com.openai.chat/* "ChatGPT cache"
|
|
safe_clean ~/Library/Caches/com.anthropic.claudefordesktop/* "Claude desktop cache"
|
|
safe_clean ~/Library/Logs/Claude/* "Claude logs"
|
|
}
|
|
|
|
# Clean design and creative tools
|
|
clean_design_tools() {
|
|
safe_clean ~/Library/Caches/com.bohemiancoding.sketch3/* "Sketch cache"
|
|
safe_clean ~/Library/Application\ Support/com.bohemiancoding.sketch3/cache/* "Sketch app cache"
|
|
safe_clean ~/Library/Caches/Adobe/* "Adobe cache"
|
|
safe_clean ~/Library/Caches/com.adobe.*/* "Adobe app caches"
|
|
safe_clean ~/Library/Caches/com.figma.Desktop/* "Figma cache"
|
|
safe_clean ~/Library/Caches/com.raycast.macos/* "Raycast cache"
|
|
}
|
|
|
|
# Clean video editing tools
|
|
clean_video_tools() {
|
|
safe_clean ~/Library/Caches/net.telestream.screenflow10/* "ScreenFlow cache"
|
|
safe_clean ~/Library/Caches/com.apple.FinalCut/* "Final Cut Pro cache"
|
|
safe_clean ~/Library/Caches/com.blackmagic-design.DaVinciResolve/* "DaVinci Resolve cache"
|
|
safe_clean ~/Library/Caches/com.adobe.PremierePro.*/* "Premiere Pro cache"
|
|
}
|
|
|
|
# Clean 3D and CAD tools
|
|
clean_3d_tools() {
|
|
safe_clean ~/Library/Caches/org.blenderfoundation.blender/* "Blender cache"
|
|
safe_clean ~/Library/Caches/com.maxon.cinema4d/* "Cinema 4D cache"
|
|
safe_clean ~/Library/Caches/com.autodesk.*/* "Autodesk cache"
|
|
safe_clean ~/Library/Caches/com.sketchup.*/* "SketchUp cache"
|
|
}
|
|
|
|
# Clean productivity apps
|
|
clean_productivity_apps() {
|
|
safe_clean ~/Library/Caches/com.tw93.MiaoYan/* "MiaoYan cache"
|
|
safe_clean ~/Library/Caches/com.klee.desktop/* "Klee cache"
|
|
safe_clean ~/Library/Caches/klee_desktop/* "Klee desktop cache"
|
|
safe_clean ~/Library/Caches/com.orabrowser.app/* "Ora browser cache"
|
|
safe_clean ~/Library/Caches/com.filo.client/* "Filo cache"
|
|
safe_clean ~/Library/Caches/com.flomoapp.mac/* "Flomo cache"
|
|
}
|
|
|
|
# Clean music and media players
|
|
# Note: Spotify cache is protected by default (may contain offline music)
|
|
# Users can override via whitelist settings
|
|
clean_media_players() {
|
|
# Spotify cache protection: check for offline music indicators
|
|
local spotify_cache="$HOME/Library/Caches/com.spotify.client"
|
|
local spotify_data="$HOME/Library/Application Support/Spotify"
|
|
local has_offline_music=false
|
|
|
|
# Check for offline music database or large cache (>500MB)
|
|
if [[ -f "$spotify_data/PersistentCache/Storage/offline.bnk" ]] ||
|
|
[[ -d "$spotify_data/PersistentCache/Storage" && -n "$(find "$spotify_data/PersistentCache/Storage" -type f -name "*.file" 2> /dev/null | head -1)" ]]; then
|
|
has_offline_music=true
|
|
elif [[ -d "$spotify_cache" ]]; then
|
|
local cache_size_kb
|
|
cache_size_kb=$(get_path_size_kb "$spotify_cache")
|
|
# Large cache (>500MB) likely contains offline music
|
|
if [[ $cache_size_kb -ge 512000 ]]; then
|
|
has_offline_music=true
|
|
fi
|
|
fi
|
|
|
|
if [[ "$has_offline_music" == "true" ]]; then
|
|
echo -e " ${YELLOW}${ICON_WARNING}${NC} Spotify cache protected (offline music detected)"
|
|
note_activity
|
|
else
|
|
safe_clean ~/Library/Caches/com.spotify.client/* "Spotify cache"
|
|
fi
|
|
safe_clean ~/Library/Caches/com.apple.Music "Apple Music cache"
|
|
safe_clean ~/Library/Caches/com.apple.podcasts "Apple Podcasts cache"
|
|
safe_clean ~/Library/Caches/com.apple.TV/* "Apple TV cache"
|
|
safe_clean ~/Library/Caches/tv.plex.player.desktop "Plex cache"
|
|
safe_clean ~/Library/Caches/com.netease.163music "NetEase Music cache"
|
|
safe_clean ~/Library/Caches/com.tencent.QQMusic/* "QQ Music cache"
|
|
safe_clean ~/Library/Caches/com.kugou.mac/* "Kugou Music cache"
|
|
safe_clean ~/Library/Caches/com.kuwo.mac/* "Kuwo Music cache"
|
|
}
|
|
|
|
# Clean video players
|
|
clean_video_players() {
|
|
safe_clean ~/Library/Caches/com.colliderli.iina "IINA cache"
|
|
safe_clean ~/Library/Caches/org.videolan.vlc "VLC cache"
|
|
safe_clean ~/Library/Caches/io.mpv "MPV cache"
|
|
safe_clean ~/Library/Caches/com.iqiyi.player "iQIYI cache"
|
|
safe_clean ~/Library/Caches/com.tencent.tenvideo "Tencent Video cache"
|
|
safe_clean ~/Library/Caches/tv.danmaku.bili/* "Bilibili cache"
|
|
safe_clean ~/Library/Caches/com.douyu.*/* "Douyu cache"
|
|
safe_clean ~/Library/Caches/com.huya.*/* "Huya cache"
|
|
}
|
|
|
|
# Clean download managers
|
|
clean_download_managers() {
|
|
safe_clean ~/Library/Caches/net.xmac.aria2gui "Aria2 cache"
|
|
safe_clean ~/Library/Caches/org.m0k.transmission "Transmission cache"
|
|
safe_clean ~/Library/Caches/com.qbittorrent.qBittorrent "qBittorrent cache"
|
|
safe_clean ~/Library/Caches/com.downie.Downie-* "Downie cache"
|
|
safe_clean ~/Library/Caches/com.folx.*/* "Folx cache"
|
|
safe_clean ~/Library/Caches/com.charlessoft.pacifist/* "Pacifist cache"
|
|
}
|
|
|
|
# Clean gaming platforms
|
|
clean_gaming_platforms() {
|
|
safe_clean ~/Library/Caches/com.valvesoftware.steam/* "Steam cache"
|
|
safe_clean ~/Library/Application\ Support/Steam/htmlcache/* "Steam web cache"
|
|
safe_clean ~/Library/Caches/com.epicgames.EpicGamesLauncher/* "Epic Games cache"
|
|
safe_clean ~/Library/Caches/com.blizzard.Battle.net/* "Battle.net cache"
|
|
safe_clean ~/Library/Application\ Support/Battle.net/Cache/* "Battle.net app cache"
|
|
safe_clean ~/Library/Caches/com.ea.*/* "EA Origin cache"
|
|
safe_clean ~/Library/Caches/com.gog.galaxy/* "GOG Galaxy cache"
|
|
safe_clean ~/Library/Caches/com.riotgames.*/* "Riot Games cache"
|
|
}
|
|
|
|
# Clean translation and dictionary apps
|
|
clean_translation_apps() {
|
|
safe_clean ~/Library/Caches/com.youdao.YoudaoDict "Youdao Dictionary cache"
|
|
safe_clean ~/Library/Caches/com.eudic.* "Eudict cache"
|
|
safe_clean ~/Library/Caches/com.bob-build.Bob "Bob Translation cache"
|
|
}
|
|
|
|
# Clean screenshot and screen recording tools
|
|
clean_screenshot_tools() {
|
|
safe_clean ~/Library/Caches/com.cleanshot.* "CleanShot cache"
|
|
safe_clean ~/Library/Caches/com.reincubate.camo "Camo cache"
|
|
safe_clean ~/Library/Caches/com.xnipapp.xnip "Xnip cache"
|
|
}
|
|
|
|
# Clean email clients
|
|
clean_email_clients() {
|
|
safe_clean ~/Library/Caches/com.readdle.smartemail-Mac "Spark cache"
|
|
safe_clean ~/Library/Caches/com.airmail.* "Airmail cache"
|
|
}
|
|
|
|
# Clean task management apps
|
|
clean_task_apps() {
|
|
safe_clean ~/Library/Caches/com.todoist.mac.Todoist "Todoist cache"
|
|
safe_clean ~/Library/Caches/com.any.do.* "Any.do cache"
|
|
}
|
|
|
|
# Clean shell and terminal utilities
|
|
clean_shell_utils() {
|
|
safe_clean ~/.zcompdump* "Zsh completion cache"
|
|
safe_clean ~/.lesshst "less history"
|
|
safe_clean ~/.viminfo.tmp "Vim temporary files"
|
|
safe_clean ~/.wget-hsts "wget HSTS cache"
|
|
}
|
|
|
|
# Clean input method and system utilities
|
|
clean_system_utils() {
|
|
safe_clean ~/Library/Caches/com.runjuu.Input-Source-Pro/* "Input Source Pro cache"
|
|
safe_clean ~/Library/Caches/macos-wakatime.WakaTime/* "WakaTime cache"
|
|
}
|
|
|
|
# Clean note-taking apps
|
|
clean_note_apps() {
|
|
safe_clean ~/Library/Caches/notion.id/* "Notion cache"
|
|
safe_clean ~/Library/Caches/md.obsidian/* "Obsidian cache"
|
|
safe_clean ~/Library/Caches/com.logseq.*/* "Logseq cache"
|
|
safe_clean ~/Library/Caches/com.bear-writer.*/* "Bear cache"
|
|
safe_clean ~/Library/Caches/com.evernote.*/* "Evernote cache"
|
|
safe_clean ~/Library/Caches/com.yinxiang.*/* "Yinxiang Note cache"
|
|
}
|
|
|
|
# Clean launcher and automation tools
|
|
clean_launcher_apps() {
|
|
safe_clean ~/Library/Caches/com.runningwithcrayons.Alfred/* "Alfred cache"
|
|
safe_clean ~/Library/Caches/cx.c3.theunarchiver/* "The Unarchiver cache"
|
|
}
|
|
|
|
# Clean remote desktop tools
|
|
clean_remote_desktop() {
|
|
safe_clean ~/Library/Caches/com.teamviewer.*/* "TeamViewer cache"
|
|
safe_clean ~/Library/Caches/com.anydesk.*/* "AnyDesk cache"
|
|
safe_clean ~/Library/Caches/com.todesk.*/* "ToDesk cache"
|
|
safe_clean ~/Library/Caches/com.sunlogin.*/* "Sunlogin cache"
|
|
}
|
|
|
|
# Main function to clean all user GUI applications
|
|
clean_user_gui_applications() {
|
|
clean_xcode_tools
|
|
clean_code_editors
|
|
clean_communication_apps
|
|
clean_dingtalk
|
|
clean_ai_apps
|
|
clean_design_tools
|
|
clean_video_tools
|
|
clean_3d_tools
|
|
clean_productivity_apps
|
|
clean_media_players
|
|
clean_video_players
|
|
clean_download_managers
|
|
clean_gaming_platforms
|
|
clean_translation_apps
|
|
clean_screenshot_tools
|
|
clean_email_clients
|
|
clean_task_apps
|
|
clean_shell_utils
|
|
clean_system_utils
|
|
clean_note_apps
|
|
clean_launcher_apps
|
|
clean_remote_desktop
|
|
}
|