Дисклеймер для профи: Если вы пишете под ядро Linux на чистом C без отрыва от производства — проходите мимо. Эта статья для таких же дилетантов, как я, у которых на рабочем столе живут test.pytest_2.pytest_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.

Как это работает (для самых маленьких):

  1. Тыкаешь кнопку "Новый проект".

  2. Называешь его "Парсер_Excel_для_бухгалтерии_2026".

  3. Программа создает папку, пихает туда пустой main.py и запоминает всё: где лежит, какую версию Python ты юзаешь, какие библиотеки потом поставишь.

  4. Через полгода открываешь список проектов — и вот он, родимый. Жмешь "Работать" — и ты уже в редакторе.

  5. Жмешь F5 — код запускается. Магия? Нет, просто C++-ядро быстренько дергает интерпретатор Python и показывает результат.

Редактор с подсветкой синтаксиса.
Редактор с подсветкой синтаксиса.

Техническая часть (для тех, кому интересно)

А теперь давайте про то, как это сделано и почему я выбрал именно C++/Qt.

Что под капотом?

  • Язык для интерфейса и ядраC++17. Потому что хотелось скорости и нативного внешнего вида.

  • ФреймворкQt 5.15+. Да, тот самый кроссплатформенный монстр, на котором пишут KDE, VirtualBox и много чего еще.

  • Работа с Python: Через системные вызовы и встроенные механизмы Qt для запуска внешних процессов. Никакого embedding — просто программа запускает python3 script.py и ловит вывод.

  • Подсветка синтаксиса: Кастомный парсер на C++ с регулярками. Не идеальный, но быстрый.

  • Сборка: qmake + make/gcc/clang на Linux, MSVC на Windows.

Почему C++ и Qt?

  1. Скорость. Интерфейс запускается мгновенно, переключение между вкладками — без тормозов, дерево проектов раскрывается быстрее, чем я моргаю.

  2. Память. FreePy жрет около 50-80 МБ RAM с открытым проектом. Для сравнения: VSCode с Python-плагинами — 300-400 МБ, PyCharm — под гигабайт.

  3. Нативный вид. На Linux выглядит как родное приложение, на Windows — как родное. Qt умеет адаптироваться под платформу.

  4. Кроссплатформенность. Один код — бинарники под Linux и Windows. macOS скоро подтянется.

Почему не Electron? Потому что Electron — это рак. Я хотел легкий инструмент, а не еще один браузер в трее.


Эволюция: от консольного скрипта до релизов

Версия 0.1 (для себя)

Первый прототип был на чистом C++ с консольным интерфейсом. Это был просто список путей в текстовом файле и запуск system("python3 " + path). Уродливо, но работало. Я понял, что направление правильное.

Версия 0.5 (первые шаги в Qt)

Когда я прикрутил Qt, появилось окошко. Кривое, страшное, но свое. Список проектов отображался в QListWidget, запуск по двойному клику. Я был счастлив как слон.

Версия 1.0.0 — первый выход в свет

Когда я понял, что вещь может быть полезна не только мне, я решил выложить её на GitHub. И тут началось...

Главной фишкой первой версии стала система бэкапов. Потому что я задолбался создавать файлы вида script_final.pyscript_final_2.pyscript_final_2_правда_финал.py.

Сделал автосохранение каждые 30 секунд. Красота!

Версия 1.1.2 — "Хватит биться головой об стену"

Тут мы взялись за самую больную тему — управление пакетами. Особенно на Linux.

Вы только недавно обновились до Ubuntu 24.04 и тут бац — при попытке установить requests через pip вылезает ошибка "externally-managed-environment". Python вам говорит: "Не лезь в системные пакеты, создай виртуальное окружение, чушок". Для новичка — катастрофа.

И я добавил в FreePy умного помощника на C++:

  1. Он анализирует ваш код (читает файл, парсит import'ы).

  2. Видит import requests.

  3. Проверяет, стоит ли requests (дергает pip list).

  4. Если нет — пытается установить через pip install.

  5. Если система блокирует — сам создает виртуальное окружение в папке проекта и ставит туда.

  6. Всё это с подсказками на человеческом языке.

Бонус: цветовая индикация пакетов.

  • 🔵 Синие — встроенные модули (типа ossys). Мы даже не пытаемся их ставить, чтобы вы не выглядели глупо.

  • 🟢 Зеленые — уже установлены, можно юзать.

  • 🔴 Красные — требуют установки.

Версия 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-таймере).

  • Разделение на файловые и проектные бэкапы.

  • Восстановление из любой копии.


Планы на будущее (они же "мечты дилетанта")

  1. Допилить систему версионирования. Хочу, чтобы можно было ставить теги типа v1.2.3 и откатываться, как в гите, но для самых маленьких.

  2. Добавить поддержку плагинов на Python. Чтобы народ мог сам допиливать функции, не пересобирая весь C++.

  3. macOS версию. Если кто-то даст мне мак или задонатит на подержанный Mac mini — сделаю.

  4. Темы оформления. Пока есть светлая и темная (Qt стили), но хочется больше.

  5. Улучшить подсветку синтаксиса. Сейчас она базовая, хочу сделать полноценный лексер.


Вопросы (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. А если вы такой же дилетант, как я — не бойтесь начинать. Страх — главный враг. Ну и отсутствие чая под рукой. Чай тоже важен.

Ссылки: