Дисклеймер для профи: Если вы пишете под ядро Linux на чистом C без отрыва от производства — проходите мимо. Эта статья для таких же дилетантов, как я, у которых на рабочем столе живут
test.py,test_2.py,test_final_3.pyи их многочисленные родственники.
Привет, Хабр! Меня зовут GryfGreen. И я — дилетант. Да-да, самый настоящий. Корочки не клевал, курсы не заканчивал, архитектуру корпоративных приложений не проектировал. Я просто человек, который любит писать код, чтобы автоматизировать скучную работу, и который дико бесится от собственного бардака.
Знаете этот момент, когда открываешь папку "Projects" (которая на самом деле "Projects_backup_2021_old_archive_final_3") и понимаешь: "А в каком из этих 15 файлов с именем 'parser.py' рабочий код?". А еще через полгода забываешь, какую версию Python ставил. И какие пакеты нужны. И вообще, зачем ты это писал.
Почему не взять готовое?
Вы скажете: "Чувак, возьми PyCharm/VSCode/...". И будете правы. Но:
PyCharm — прекрасный комбайн. Но для скрипта на 50 строк, который парсит Excelку, он как космический корабль для поездки в туалет. Тяжелый, долгий, требует настройки, жрет оперативку как не в себя.
VSCode — тоже отлично. Но чтобы просто запустить файлик, мне нужно вспомнить: у меня там виртуальное окружение? А расширение для Python поставилось? А линтер не будет ругаться? И почему он опять написан на Electron и жрет батарею ноутбука?
Thonny — молодец, но он для школьников (я серьезно, это отличная штука для обучения, но мне не хватает гибкости и скорости).
А главное — НИ ОДНА ИЗ НИХ НЕ РЕШАЕТ ПРОБЛЕМУ ХРАНЕНИЯ МОИХ 500 ПРОЕКТОВ. Они открывают файлы, но не организуют мой личный зоопарк.
Короче, я плюнул, надел тапки и решил написать свой велосипед. Так на свет появился FreePy IDE — инструмент, который должен был просто разложить по полочкам мой бардак.
Дисклеймер про "дилетантство"
Я сразу хочу сказать: я не профессиональный программист. Я даже не закончил профильное образование. Я просто сел и начал учить C++ и Qt, потому что хотел сделать быструю и легкую программу, которая не будет жрать память как Chrome с сотней вкладок.
Поэтому если вы скажете в комментариях "код говно" или "архитектура устарела" — я не обижусь. Конечно, устарела. Конечно, говно. Но оно работает, не тормозит и помогает людям. А для меня это главное.

Что за зверь FreePy?
FreePy — это не IDE в классическом смысле. Это, блин, менеджер хаоса. Личный секретарь для ваших Python-скриптов. Он решает ровно одну, но самую бесячую проблему: организацию всего этого безобразия.
Программа написана на C++ и Qt, но работает она с Python-скриптами. То есть:
Бэкенд (интерфейс, управление проектами, настройки) — C++/Qt. Быстро, нативно, памяти мало ест.
Работа с кодом (подсветка, запуск, отладка, пакеты) — прослойка, которая дергает Python.
Как это работает (для самых маленьких):
Тыкаешь кнопку "Новый проект".
Называешь его "Парсер_Excel_для_бухгалтерии_2026".
Программа создает папку, пихает туда пустой
main.pyи запоминает всё: где лежит, какую версию Python ты юзаешь, какие библиотеки потом поставишь.Через полгода открываешь список проектов — и вот он, родимый. Жмешь "Работать" — и ты уже в редакторе.
Жмешь F5 — код запускается. Магия? Нет, просто C++-ядро быстренько дергает интерпретатор Python и показывает результат.

Техническая часть (для тех, кому интересно)
А теперь давайте про то, как это сделано и почему я выбрал именно C++/Qt.
Что под капотом?
Язык для интерфейса и ядра: C++17. Потому что хотелось скорости и нативного внешнего вида.
Фреймворк: Qt 5.15+. Да, тот самый кроссплатформенный монстр, на котором пишут KDE, VirtualBox и много чего еще.
Работа с Python: Через системные вызовы и встроенные механизмы Qt для запуска внешних процессов. Никакого embedding — просто программа запускает
python3script.pyи ловит вывод.Подсветка синтаксиса: Кастомный парсер на C++ с регулярками. Не идеальный, но быстрый.
Сборка: qmake + make/gcc/clang на Linux, MSVC на Windows.
Почему C++ и Qt?
Скорость. Интерфейс запускается мгновенно, переключение между вкладками — без тормозов, дерево проектов раскрывается быстрее, чем я моргаю.
Память. FreePy жрет около 50-80 МБ RAM с открытым проектом. Для сравнения: VSCode с Python-плагинами — 300-400 МБ, PyCharm — под гигабайт.
Нативный вид. На Linux выглядит как родное приложение, на Windows — как родное. Qt умеет адаптироваться под платформу.
Кроссплатформенность. Один код — бинарники под Linux и Windows. macOS скоро подтянется.
Почему не Electron? Потому что Electron — это рак. Я хотел легкий инструмент, а не еще один браузер в трее.
Эволюция: от консольного скрипта до релизов
Версия 0.1 (для себя)
Первый прототип был на чистом C++ с консольным интерфейсом. Это был просто список путей в текстовом файле и запуск system("python3 " + path). Уродливо, но работало. Я понял, что направление правильное.
Версия 0.5 (первые шаги в Qt)
Когда я прикрутил Qt, появилось окошко. Кривое, страшное, но свое. Список проектов отображался в QListWidget, запуск по двойному клику. Я был счастлив как слон.
Версия 1.0.0 — первый выход в свет
Когда я понял, что вещь может быть полезна не только мне, я решил выложить её на GitHub. И тут началось...
Главной фишкой первой версии стала система бэкапов. Потому что я задолбался создавать файлы вида script_final.py, script_final_2.py, script_final_2_правда_финал.py.
Сделал автосохранение каждые 30 секунд. Красота!
Версия 1.1.2 — "Хватит биться головой об стену"
Тут мы взялись за самую больную тему — управление пакетами. Особенно на Linux.
Вы только недавно обновились до Ubuntu 24.04 и тут бац — при попытке установить requests через pip вылезает ошибка "externally-managed-environment". Python вам говорит: "Не лезь в системные пакеты, создай виртуальное окружение, чушок". Для новичка — катастрофа.
И я добавил в FreePy умного помощника на C++:
Он анализирует ваш код (читает файл, парсит import'ы).
Видит
import requests.Проверяет, стоит ли
requests(дергаетpip list).Если нет — пытается установить через
pip install.Если система блокирует — сам создает виртуальное окружение в папке проекта и ставит туда.
Всё это с подсказками на человеческом языке.
Бонус: цветовая индикация пакетов.
🔵 Синие — встроенные модули (типа
os,sys). Мы даже не пытаемся их ставить, чтобы вы не выглядели глупо.🟢 Зеленые — уже установлены, можно юзать.
🔴 Красные — требуют установки.
Версия 1.1.3 — "Oops or Sorry" (или "Как я заспамил пользователям диски")
Тут случился конфуз. Переписывая систему бэкапов на C++, я сломал счетчик в Qt-таймере. И программа начала создавать резервные копии каждые 10 секунд. Представляете? Открыл файл, через 10 секунд — бэкап, еще через 10 — еще один. Через час — 360 копий одного файла.
Пользователи не сразу поняли, что происходит. Просто удивились: "А че это у меня место на диске кончилось?".
Когда я обнаружил баг, мне было очень стыдно. Выкатил хотфикс v1.1.3 с названием "Oops or Sorry" и добавил кучу новых иконок в качестве извинений. Мир? Мир.
Что умеет сейчас?
К релизу v1.1.3 (актуальная версия) мы имеем:
📁 Управление проектами
Все проекты в одном списке.
Автоматическое запоминание путей, версий, зависимостей в JSON.
Импорт существующих папок (просто ткни в папку — и она станет проектом).
✏️ Редактор кода
Вкладки — открывай хоть 100 файлов. Реализованы на QTabWidget.
Подсветка синтаксиса — кастомный SyntaxHighlighter на Qt.
Автодополнение — не самое умное, но базовые вещи подсказывает.
Ctrl+Shift+S — сохранить всё (руки целее будут).
🐛 Отладчик
Интеграция с PDB через запуск процесса и парсинг вывода.
F9 — поставить точку останова (визуально, через костыли с мар��инами).
F10/F11 — шагать по коду.
Смотрение переменных — видно, что там накручено.
📦 Управление зависимостями (моя гордость)
Автоопределение импортов через регулярки на C++.
Умная работа с
externally-managed-environment.Автосоздание
venvесли надо.Цветная индикация.
💾 Бэкапы
Автосохранение (интервал настраивается в Qt-таймере).
Разделение на файловые и проектные бэкапы.
Восстановление из любой копии.
Планы на будущее (они же "мечты дилетанта")
Допилить систему версионирования. Хочу, чтобы можно было ставить теги типа v1.2.3 и откатываться, как в гите, но для самых маленьких.
Добавить поддержку плагинов на Python. Чтобы народ мог сам допиливать функции, не пересобирая весь C++.
macOS версию. Если кто-то даст мне мак или задонатит на подержанный Mac mini — сделаю.
Темы оформления. Пока есть светлая и темная (Qt стили), но хочется больше.
Улучшить подсветку синтаксиса. Сейчас она базовая, хочу сделать полноценный лексер.
Вопросы (FAQ для Хабрят)
Q: Чем это лучше блокнота?
A: Блокнот не создает бэкапы, не помнит версии, не управляет пакетами и не хранит проекты в одном месте. Но если у вас один файл — блокнот побеждает. Блокнот на C++ не напишешь.
Q: Чем это лучше VSCode?
A: VSCode требует настройки и жрет память. Это "поставил и забыл". Он для ленивых и для тех, у кого ноутбук не взлетает при запуске Electron-приложений. Я для ленивых.
Q: Ты говнокодер?
A: Да. Я дилетант. Но мой говнокод на C++ помогает людям не сойти с ума от собственного бардака и при этом работает быстро.
Q: Почему Qt, а не GTK?
A: Потому что Qt проще для новичка. Документация отличная, примеров куча. В GTK я запутался в первых же 10 минутах.
Q: Почему C++, а не Python с Qt? (PySide/PyQt)
A: Хотел научиться C++. И скорость. Нативный код всегда быстрее. Ну и память.
Q: Куда нести деньги?
A: Деньги не надо. Лучше поставьте звездочку на GitHub, напишите issue, если что-то сломалось, или предложите идею. Или просто расскажите друзьям, у которых такой же бардак на рабочем столе.
Вместо заключения
Я написал её, потому что меня бесил мой собственный бардак. И оказалось, что таких, как я, — много.
FreePy — это не шедевр программирования. Это просто инструмент, который делает жизнь чуточку проще. Он не идеален, в нём естьи, баги и код местами выглядит так, будто его писала обезьяна с граблями, которая только что выучила Qt. Но он работает, он быстрый и он не жрет память.
Если у вас на рабочем столе такая же свалка скриптов, как была у меня — заходите на GitHub. Качайте, пробуйте, ругайтесь, предлагайте.
И помните: даже дилетанты могут создавать полезные вещи. Главное — чтобы руки росли из плеч, а голова была включена. А остальное приложится. Даже если придется выучить C++.
P.S. Если вы профи и у вас дергается глаз от слова "дилетант" — извините. Я знаю, что код можно написать лучше. Напишите — я с радостью посмотрю и научусь. Серьезно. Особенно про то, как правильно делать подсветку синтаксиса и интеграцию с отладчиком.
P.P.S. А если вы такой же дилетант, как я — не бойтесь начинать. Страх — главный враг. Ну и отсутствие чая под рукой. Чай тоже важен.

Ссылки:
Написать мне: gryfgreen.gg@gmail.com (отвечаю медленно, но честно)
