Как я сделал GovnoBrowser: легкий браузер на Python и QtWebEngine?
Почему я решил создать свой браузер?
Все современные браузеры стандартные и однотипные
Желание создать свой продукт
Хотел создать что-то контролируемое и просто
Я хотел создать облегченный браузер для комфортной работы даже на старых устройствах
Технологии моего браузера
Python + PyQt6
PyQt6 - библиотека для GUI интерфейса
QtWebEngine - "мозг" браузера. Движок рендеринга на основе Chromium
Почему не CEF?
CEF мощнее, но за ним пришлось тащить весь Chromium.
CEF сложнее в сборке.
CEF написан на C++, следовательно для Python нужна обертка: cefpython, а она в свою очередь не поддерживает новейшую версию Python.
Высокое потребление ресурсов системы.
Хоть эти технологии не дают большего преимущества перед тем же Google Chrome, но они более ресурсоэффективны и будут производительнее но слабом железе.
Особенности браузера
Минималистичный интерфейс.
Отсутствие телеметрии - QtWebEngine по умолчанию не собирает данные, соответственно не нагружает ПК.
Поддержка всех современных веб-стандартов - HTML5, CSS36 JS. (Несмотря на его простоту)
Приватность - браузер не передает данные пользователей.
Браузер полностью бесплатный.
Полностью открытый код.
Дизайн
Я хотел сделать максимально лаконичный и удобный интерфейс, без лишней рекламы и прочих ненужных элементов, у меня это получилось! Все элементы браузера выполнены в темных цветах, мне показалось, что это придаст стиля.
Основные элементы интерфейса:
Поле для ввода поисков запроса либо URL
Кнопки навигации (назад, вперед, перезагрузить, домой)
Система вкладок (вкладки в современном стиле)
Меню специальных возможностей.
Начальная страница:
Вместо стандартной "гугловской" стартовой страницы, я сделал свою. И старался сделать ее максимально минималистично.
Так-же в темной дизайне
На самой странице: поле для ввода запроса, выбор поисковой машины (Яндекс, Google, DuckDuckGo), кнопка найти.
Все элементы динамичные и реагируют на наведение курсора
Никакого трекинга.

Специальные функции
В моем браузере есть меню специальных функций, да, я понимаю что все из них есть и в других браузерах, но не могу обойти их стороной.
Менеджер паролей - несложная система по добавлению паролей в сохраненные. Представляет собой меню с кнопками "Добавить пароль" и "Обновить". Все пароли отображаются в этом же окне, при нажатии на какой-то из них выпадает список с именем пользователя и скрытым паролем, с возможность показать либо скопировать. Сами пароли сохраняются в JSON файл, но, т.к система в разработке не имеют шифрования, но в скором времени я все переработаю.
Прокси мастер - такая же несложная система прокси, с выпадающим списком. Про нее на данный момент сказать нечего, т.к она активно дорабатывается, и работает не так как задумывалось, но ее можно отключить и не пользоваться.
Встроенная игра "Змейка" - максимально простая оффлайн игра встроенная в браузер. Ее знает каждый.
Проблемы и решения
При запуске браузера (на ОС windows) на PyQt6 может возникнуть распространенная ошибка связанная с видеокартой, т.к движок рендерит страницы благодаря ей.
Решение: Обновите драйвера видеокарты.
В скором времени я выпущу версию как раз с исправлениям этой ошибки, страницы будут рендерится не на видеокарте, а на процессоре.
Ошибки при использовании старой версии на PyQt5:
Предисловие: на сайте доступна старая версия, содержащая ошибки
Неверное отображение шрифтов и прочей инфомации, задействующей JavaScript
Некорректная работа "ТулПанели" и системы вкладок
Некоторые сайты не открываются, по причине отсутствия корректной системы вкладок
Решение: Обновление браузера до PyQt6
Тест производительности
Все тесты проводились на MacBook air a1466: I5, 8гб ОЗУ, Intel HD Graphics 6000.
Chrome | Мой браузер | |
Запуск | примерно 2сек. | примерно 1.6 сек |
Тест JS-производительности | 49 баллов | 62 балла |
ОЗУ (1 вкладка) | 191,4мб | 88,1мб |
ОЗУ (10 вкладок) | 612,2мб | 200,8мб |
ЦП | 28% | 13% |
Ключевые моменты:
Экономия ОЗУ - в пользу GovnoBrowser
Chrome выигрывает в JS-производительности, это не критично.
Мой браузер меньше нагружает систему из-за облегченного движка и прочих "Умных" функций Chrome.
Chrome быстрее в рендеринге, но разница не критична.
Планы по развитию
Выпуск версии браузера под Linux, MacOS, Android.
Улучшенная оптимизация.
Улучшение системы вкладок - переключение вкладок по горячим клавишам.
Простое восстановление сессии.
Локальная история — храниться она будет в локальном файле на компьютере пользователя, и отключается в меню спец. возможностей.
Небольшие «пасхалки».
Как скачать?
Браузер доступен для загрузки на официальном сайте, но напрямую загрузить получится только старую версию на PyQt5.
Для загрузки новой версии браузера перейдите на GitHub и следуйте инструкции в README.
Заключение
Создать браузер с нуля - реально, даже на Python. Да, GovnoBrowser не замена Chrome, но отличный вариант для тех, кто ценит минимализм, приватность и производетильнось.
Всем удачи!