Metadata-Version: 2.5
Name: junkicide
Version: 0.1.0
Summary: TUI для macOS: найти и осознанно прибить забытые прожорливые процессы и ненужные гигабайты на диске
Project-URL: Homepage, https://github.com/trapwalker/junkicide
Project-URL: Issues, https://github.com/trapwalker/junkicide/issues
Author: trapwalker
License-Expression: MIT
License-File: LICENSE
Keywords: android-emulator,cleanup,disk-space,docker,macos,process-monitor,tui
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: End Users/Desktop
Classifier: Natural Language :: Russian
Classifier: Operating System :: MacOS
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: System :: Monitoring
Classifier: Topic :: Utilities
Requires-Python: >=3.11
Requires-Dist: psutil>=6.0
Requires-Dist: textual>=0.80
Description-Content-Type: text/markdown

# junkicide

TUI для macOS: быстро найти и **осознанно** прибить то, что зря жрёт ресурсы, — забытые эмуляторы,
Docker-контейнеры, dev-серверы, тяжёлые вкладки браузера — и то, что зря занимает диск: старые дистрибутивы,
программы, которыми не пользуются, фильмы, записи видеорегистратора, кэши и артефакты сборки заброшенных
проектов.

```sh
uv tool install --editable ~/projects/own/junkicide   # один раз; дальше просто:
junkicide
```

Без установки: `uvx --from ~/projects/own/junkicide junkicide`; после публикации на PyPI — просто `uvx junkicide`.

## Как работает

1. **Сразу** — сводка (CPU, давление памяти, swap, свободное место, нагрев) и очевидные проблемы: процессы,
   которые устойчиво грузят CPU или держат много памяти, известные «пожиратели» (эмулятор Android, Docker VM,
   демоны Gradle, dev-серверы…), крупные файлы из индекса Spotlight.
2. **Параллельно в фоне** — известные места на диске (кэши, Xcode, Android SDK/AVD, Homebrew, модели нейросетей…),
   давно не используемые программы и полный обход домашней папки: артефакты сборки по проектам (с датой, когда
   проект последний раз менялся), папки с видео (распознаются записи регистраторов), дубликаты, недокачанные
   файлы, архивы, уже распакованные рядом.
3. Для каждой находки — **что это, откуда взялось, чем грозит устранение**, факты (пути, даты, PID, порты,
   рабочая папка, откуда скачан файл) и оценка, насколько вероятно это не нужно.
4. Устранение — клавишей, с подтверждением. Файлы — **только в Корзину**; процессы — SIGTERM, SIGKILL по выбору;
   для кэшей — штатные команды (`brew cleanup`, `docker builder prune`, `npm cache clean`…). Корзину можно
   очистить отсюда же (`E`).

Результаты сканирования диска кэшируются: при следующем запуске прошлая картина видна сразу (⏳), пока идёт
перепроверка.

## Клавиши

`1`–`5` вкладки (Главное, CPU, Память, Диск, Журнал) · `Enter`/`a` действия · `k`/`K` завершить/убить ·
`d` в Корзину · `пробел` отметить несколько · `o` Finder · `i` скрыть находку · `/` фильтр (`#dev`, `#cache`,
`#забытое`…) · `s` сортировка по выгоде/размеру · `r` пересканировать · `E` очистить Корзину · `?` помощь

## Без интерфейса

```sh
junkicide --report        # просканировать (до 2 мин) и вывести отчёт
junkicide --report 40 --no-walk -v
```

## Файлы

| | |
|---|---|
| `~/.config/junkicide/config.toml` | пороги и список скрытых находок (переносим между компьютерами) |
| `~/Library/Logs/junkicide/journal.jsonl` | журнал: все действия и события сканирования |
| `~/Library/Caches/junkicide/findings.json` | кэш прошлого сканирования диска (можно удалить) |

Для полной картины (Корзина, Почта, данные некоторых программ) дайте терминалу
«Полный доступ к диску»: Системные настройки → Конфиденциальность и безопасность.

## Разработка

`make help` — все команды: `make run`, `make test`, `make lint`, `make report`, `make uvx`.

Устройство: `scanners/` — независимые сканеры в фоновых потоках, пишут находки в общее хранилище
(`model.FindingStore`); `knowledge/` — база знаний (процессы, известные места, классификация файлов) с
объяснениями; `actions.py` — исполнение действий с журналированием; `tui/` — интерфейс на Textual.
