Chromium — что это за программа и нужна ли она?

Приветствую друзья! Сегодня мы постараемся разобраться с программой Chromium, я постараюсь написать все простыми словами, чтобы было понятно каждому!
Chromium — что это такое?
Браузер с открытым исходным кодом, который разрабатывается сообществом The Chromium Authors, а также компаниями Google, Opera, Яндекс, NVIDIA и другими.
Основные задачи браузера две:
- Собственно открывать веб-сайты, делать это быстро, при этом не грузить ПК.
- Может использоваться как платформа для работы веб-приложений. На самом деле таких приложений очень мало, я лично не встречал, увы, технология, как мне кажется не прижилась. Веб-приложения работают на основе браузера, кнопки управления при этом могут отсутствовать.
На самом деле Chromium — скорее платформа. Почему? На основе Chromium созданы другие браузеры — Google Chrome, Opera, Яндекс Браузер, и много малоизвестных, например бывший Амиго. Почему так? Потому что создать браузер легко, когда есть основа. А Chromium — это всегда стабильная работа, скорость, поддержка современных стандартов, другими словами зачем изобретать новую основу, когда существует Chromium.
Вот еще пример — Avast при установке их антивируса может установиться и их защищенный браузер Avast Secure Browser, который тоже основан на Chromium.
Браузеры на основе Chromium могут иметь разные дизайн, настройки, но в целом.. это примерно одно и тоже.
Даже Microsoft Edge уже может работать на основе Chromium. Кстати здесь главный плюс даже не то, что он будет быстрее работать, а то что теперь.. можно будет использовать огромное количество расширений (с чем у Edge как раз были проблемы).
Браузер скачивается в виде архива, внутри которого — папка chrome-win:

Файл, который запускает браузер:

Собственно вот сам Chromium:

А вот для сравнения Google Chrome:

Почти все идентично. Однако вот еще пример — это уже Яндекс Браузер, основа также, но тут изменений еще больше:

Chromium — отличия от Chrome
Важно понимать — Chromium это свободный браузер с открытым исходным кодом, а Chrome это уже от компании Google с собственной лицензией (как понимают значит что код закрыт).
Основные отличия — в Chrome отправляется некая информация на сервера, встроен Adobe Flash. Полные отличия можно посмотреть здесь:

Можно сделать вывод, что Chromium — более чистый, легкий, не отправляет никакую информацию, но также как и Chrome поддерживает расширения. Поэтому Chromium спокойно можно использовать как основной браузер, но есть минус — кажется там нет синхронизации с аккаунтом Google.
Chromium — нужна ли эта программа?
Если вы используете Хром, Яндекс Браузер, Мозиллу.. или даже Microsoft Edge — то Chromium можно удалить.
Просто так программа не грузит ПК, не использует оперативку, только немного занимает место на диске.
Chromium не является критически важной программой, поэтому если что можно удалить, а потом, если нужно будет — то скачаете с официального сайта и поставите.
Chromium — как удалить?
С удалением не так все просто. Дело в том, что браузер не устанавливается, он скачивается в архиве, внутри которого папка chrome-win. А в папке уже браузер. То есть типа как портативная версия, но на самом деле нет — потому что настройки хранятся не в папке chrome-win.
Поэтому удаление Chromium подразумевает:
- Удаление папки с браузером, по умолчанию она называется chrome-win. Ее расположение разумеется зависит от того, куда вы папку извлекли.
- Удаление настроек, которые хранятся в папке Chromium, которая в свою очередь расположена здесь: C:\Users\USER_NAME\AppData\Local\ChromiumUSER_NAME это имя вашей учетной записи. Внутри папки — User Data, это профиль браузера.
То есть удаление ручное. Да, возможно есть установщик Chromium, который ставит программу как положено. В таком случае удалить можно штатным способом:
- Зажмите Win + R > команда appwiz.cpl > нажмите ОК.
- Откроется окно со списком установленного софта. Находим здесь Chromium > правой кнопкой > пункт Удалить.
- Обычно больше ничего не требуется, возможно только вас спросят нужно ли удалять личные данные, это профиль, то есть закладки, сохраненные пароли, история и прочее.
Заключение
- Chromium — браузер, на основе которого сделан Хром, Яндекс Браузер, Опера.
- Можно пользоваться. Может быть даже быстрее и легче чем Хром, но я лично бы выбрал все таки Хром.
- При желании можно спокойно удалить.
Saved searches
Use saved searches to filter your results more quickly
Cancel Create saved search
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Установка в свою папку, а не в Chromium (на Windows) #57
superblangel opened this issue Aug 4, 2022 · 5 comments
Установка в свою папку, а не в Chromium (на Windows) #57
superblangel opened this issue Aug 4, 2022 · 5 comments
Comments
superblangel commented Aug 4, 2022
Сейчас инсталлятор Chromium GOST под Windows ставится в папку %AppData%\Chromium\ , из-за чего может конфликтовать с обычным Chromium.
Было бы классно, если бы Chromium GOST ставился бы в свою папку.
The text was updated successfully, but these errors were encountered:
deemru changed the title Установка в свою папку, а не в Chromium Aug 4, 2022
superblangel commented Aug 4, 2022
В примерах пока что 1 человек, которому наш сайт не предложил установку Chromium Gost, потому что стоял Chromium.
Помимо одинаковой папки у них ещё одинаковая Uninstall ветка реестра
Вопрос скорее не в реальной необходимости, а в этике создания своего продукта, который не конфликтует с другими продуктами
hooddy commented Aug 5, 2022
что-то мне думается, что подобные исправления могут нарушить работу браузера и исправив этот косяк вылезет куча других (да и это не косяк, а логичное какое-то поведение). да и для разработчика работы прибавиться не сильно нужной. мне вот тоже не понятно, зачем два хромиума на машине использовать? у меня пользаки упираются — хочу хром — и ставят хром сами (я не админ, запретить не имею прав) — мне иконка не нравится.
superblangel commented Aug 5, 2022
исправив этот косяк вылезет куча других
Все возможно, спорить не буду
мне вот тоже не понятно, зачем два хромиума на машине использовать?
Это надо спрашивать у клиентов, у которых стоит по 3-4 и более Хромиумных браузера (я когда-то собирал статистику, таких было около 20%)
Anton-V-K commented Nov 17, 2023

Есть подвижки по этому вопросу?
У меня был установлен Chromium 117.0.5938.150 .
Я захотел посмотреть на особенности Chromium-Gost (так сказать, для общего развития).
Установил для всех пользователей (Windows 10 64-bit) — с параметром —system-level .
Браузер оказался в «C:\Program Files\Chromium\Application\119.0.6045.159» . При этом заменил пункт стандартного Chromium’а в установленных программах, но иконка осталась стандартной:
Ярлык в меню «Пуск» (тот, который для всех) остался указывать на стандартный Chromium, и новых создано не было.
В логе chromium_installer.log есть жалобы об этом:
[1017/165106.413:VERBOSE1:install.cc(120)] Overwriting per-user Desktop "Chromium" shortcut to C:\Program Files\Chromium\Application\chrome.exe. [1017/165106.415:WARNING:install.cc(118)] Failed: Overwriting (maybe the shortcut doesn't exist?) per-user Desktop "Chromium" shortcut to C:\Program Files\Chromium\Application\chrome.exe. [1017/165106.416:VERBOSE1:install.cc(120)] Overwriting per-user Quick Launch "Chromium" shortcut to C:\Program Files\Chromium\Application\chrome.exe. [1017/165106.427:VERBOSE1:install.cc(120)] Overwriting per-user Start menu "Chromium" shortcut to C:\Program Files\Chromium\Application\chrome.exe. [1017/165106.427:WARNING:install.cc(118)] Failed: Overwriting (maybe the shortcut doesn't exist?) per-user Start menu "Chromium" shortcut to C:\Program Files\Chromium\Application\chrome.exe.
Полагаю, per-user ярлыков и не было, т.к. стандартный Chromium не создаёт их, если устанавливается для всех пользователей.
Хотелось бы, чтобы side-by-side установка работала «стандартным образом»: у каждого продукта — свои пасочки 🙂
Chromium — это не только браузер, но и хороший фреймворк

Большинство людей привыкли, что Chromium — это и браузер, и основа для других браузеров. До недавнего времени я тоже так думал, но, изучая эту тему уже пару месяцев, я начал открывать другой дивный мир. Chromium — это огромная экосистема, в которой есть всё: и система зависимостей, и система кроссплатформенной сборки, и компоненты почти на все случаи жизни. Так почему же не попробовать создавать свои приложения, используя всю эту мощь?
Под катом небольшое руководство, как начать это делать.
Подготовка окружения
В статье я буду использовать Ubuntu 18.04, порядок действий для других ОС можно посмотреть в документации:
- Linux
- Windows
- Mac
sudo apt install git python
Установка depot_tools
depot_tools — это набор инструментов для разработки Chromium. Для его установки необходимо выполнить:
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
И добавить путь в переменную окружения PATH:
export PATH="$PATH:/path/to/depot_tools"
Важно: если depot_tools были скачаны в домашнюю папку, то не используйте ~ в переменной PATH , иначе могут возникнуть проблемы. Необходимо использовать переменную $HOME :
export PATH="$PATH:$/depot_tools"
Получение кода
Для начала надо создать папку для исходников. Например, в домашней директории (необходимо около 30 Гб свободного места):
mkdir ~/chromium && cd ~/chromium
После этого можно скачать исходники с помощью утилиты fetch из depot_tools :
fetch --nohooks --no-history chromium
Теперь можно пойти попить чай/кофе, так как процедура небыстрая. Для экспериментов история не нужна, поэтому используется флаг —no-history . С историей будет ещё дольше.
Установка зависимостей
Все исходники лежат в папке src , идём в неё:
cd src
Теперь нужно поставить все зависимости с помощью скрипта:
./build/install-build-deps.sh
И запустить хуки:
gclient runhooks
На этом подготовка окружения завершена.
Система сборки
В качестве основной системы сборки Chromium используется Ninja, а утилита GN применяется для генерирования .ninja -файлов.
Чтобы понять, как пользоваться этими инструментами, предлагаю создать тестовую утилиту example. Для этого в папке src надо создать подпапку example :
mkdir example
Затем в папке src/example надо создать файл BUILD.gn , который содержит:
executable("example")
BUILD.gn состоит из цели (исполняемого файла example ) и списка файлов, которые необходимы для сборки цели.
Следующим шагом надо создать сам файл example.cc . Для начала предлагаю сделать классическое приложение «Hello world»:
#include int main(int argc, char **argv)
Исходный код можно найти на GitHub.
Чтобы GN узнала о новом проекте, нужно в файле BUILD.gn , который находится в src , в разделе deps добавить строку «//example» :
. group("gn_all") < testonly = true deps = [ ":gn_visibility", "//base:base_perftests", "//base:base_unittests", "//base/util:base_util_unittests", "//chrome/installer", "//chrome/updater", "//net:net_unittests", "//services:services_unittests", "//services/service_manager/public/cpp", "//skia:skia_unittests", "//sql:sql_unittests", "//third_party/flatbuffers:flatbuffers_unittests", "//tools/binary_size:binary_size_trybot_py", "//tools/ipc_fuzzer:ipc_fuzzer_all", "//tools/metrics:metrics_metadata", "//ui/base:ui_base_unittests", "//ui/gfx:gfx_unittests", "//url:url_unittests", # ↓↓↓↓↓↓↓↓ "//example", ] .
Теперь необходимо вернуться в папку src и сгенерировать проект с помощью команды:
gn gen out/Default
GN также позволяет подготовить проект для одной из поддерживаемых IDE:
- eclipse
- vs
- vs2013
- vs2015
- vs2017
- vs2019
- xcode
- qtcreator
- json
gn help gen
Например, для работы с проектом example в QtCreator надо выполнить команду:
gn gen --ide=qtcreator --root-target=example out/Default
После этого можно открыть проект в QtCreator:
qtcreator out/Default/qtcreator_project/all.creator
Финальный шаг — сборка проекта с помощью Ninja:
autoninja -C out/Default example
На этом краткое ознакомление с системой сборки можно завершить.
Приложение можно запустить с помощью команды:
./out/Default/example
И увидеть Hello world. На самом деле, про систему сборки в Chromium можно написать отдельную статью. Возможно, и не одну.
Работа с командной строкой
В качестве первого примера использования кодовой базы Chromium как фреймворка предлагаю поиграться с командной строкой.
Задача: вывести на экран все аргументы, переданные приложению в стиле Chromium.
Для работы с командной строкой необходимо в example.cc подключить заголовочный файл:
#include "base/command_line.h"
А также надо не забыть в BUILD.gn добавить зависимость от проекта base . BUILD.gn должен выглядеть так:
executable("example") < sources = [ "example.cc", ] deps = [ "//base", ] >
Теперь всё необходимое будет подключено к example .
Для работы с командной строкой Chromium предоставляет синглтон base::CommandLine . Чтобы получить ссылку на него, надо использовать статический метод base::CommandLine::ForCurrentProcess , но сначала надо его инициализировать с помощью метода base::CommandLine::Init :
base::CommandLine::Init(argc, argv); auto *cmd_line = base::CommandLine::ForCurrentProcess();
Все аргументы, переданные приложению в командной строке и начинающиеся с символа - возвращаются в виде base::SwitchMap (по сути, map ) с помощью метода GetSwitches . Все остальные аргументы возвращаются в виде base::StringVector (по сути, vectоr ). Этих знаний достаточно, чтобы реализовать код для задачи:
for (const auto &sw : cmd_line->GetSwitches()) < std::cout for (const auto &arg: cmd_line->GetArgs())
Полную версию можно найти на GitHub.
Чтобы собрать и запустить приложение надо выполнить:
autoninja -C out/Default example ./out/Default/example arg1 --sw1=val1 --sw2 arg2
На экран будет выведено:
Switch sw1: val1 Switch sw2: Arg arg1 Arg arg2
Работа с сетью
В качестве второго и последнего на сегодня примера предлагаю поработать с сетевой частью Chromium.
Задача: вывести на экран содержимое URL'а, переданного в качестве аргумента.
Сетевая подсистема Chromium
Сетевая подсистема довольно большая и сложная. Входной точкой для запросов к HTTP, HTTPS, FTP и другим data-ресурсам является URLRequest , который уже определяет, какой из клиентов задействовать. Упрощённая схема выглядит так:

Полную версию можно посмотреть в документации.
Для создания URLRequest 'а необходимо использовать URLRequestContext . Создание контекста — довольно сложная операция, поэтому рекомендуется использовать URLRequestContextBuilder . Он проинициализирует все необходимые переменные значениями по умолчанию, но, при желании, их можно поменять на свои, например:
net::URLRequestContextBuilder context_builder; context_builder.DisableHttpCache(); context_builder.SetSpdyAndQuicEnabled(true /* http2 */, false /* quic */); context_builder.SetCookieStore(nullptr);
Многопоточность
Сетевой стек Chromium расчитан на работу в многопоточной среде, поэтому пропустить эту тему нельзя. Базовыми объектами для работы с многопоточностью в Chromium являются:
- Task — задача для выполнения, в Chromium это функция с типом base::Callback , которую можно создать с помощью base::Bind .
- Task queue — очередь задач для выполнения.
- Physical thread — кроссплатформенная обёртка над потоком операционной системы ( pthread в POSIX или CreateThread() в Windows). Реализовано в классе base::PlatformThread , не используйте напрямую.
- base::Thread — реальный поток, который бесконечно обрабатывает сообщения из выделенной очереди задач; не рекомендуется создавать их напрямую.
- Thread pool — пул потоков с общей очередью задач. Реализован в классе base::ThreadPool . Как правило, создают один экземпляр. Задачи в него отправляются с помощью функций из base/task/post_task.h .
- Sequence or Virtual thread — виртуальный поток, который использует реальные потоки и может переключаться между ними.
- Task runner — интерфейс для постановки задач, реализован в классе base::TaskRunner .
- Sequenced task runner — интерфейс для постановки задач, который гарантирует, что задачи будут исполнены в том же порядке, в каком пришли. Реализовано в классе base::SequencedTaskRunner .
- Single-thread task runner — аналогичен предыдущему, но гарантирует, что все задачи будут выполнены в одном потоке ОС. Реализовано в классе base::SingleThreadTaskRunner .
Реализация
Некоторые компоненты Chromium требуют наличия base::AtExitManager — это класс, позволяющий зарегистрировать операции, которые надо выполнить при завершении приложения. Использовать его очень просто, необходимо в стеке создать объект:
base::AtExitManager exit_manager;
Когда exit_manager выйдет из области видимости, все зарегистрированные callback'и будут выполнены.
Теперь нужно позаботиться о наличии всех необходимых компонентов многопоточности для сетевой подсистемы. Для этого нужно создать Thread pool , Message loop с типом TYPE_IO для обработки сетевых сообщений, и Run loop — основной цикл программы:
base::ThreadPool::CreateAndStartWithDefaultParams("downloader"); base::MessageLoop msg_loop(base::MessageLoop::TYPE_IO); base::RunLoop run_loop;
Дальше нужно с помощью Context builder 'а создать Context :
auto ctx = net::URLRequestContextBuilder().Build();
Чтобы послать запрос, необходимо с помощью метода CreateRequest объекта ctx создать объект URLRequest . В качестве параметров передаются:
- URL, строка с типом GURL;
- приоритет;
- делегат, который обрабатывает события.
class MyDelegate : public net::URLRequest::Delegate < public: explicit MyDelegate(base::Closure quit_closure) : quit_closure_(std::move(quit_closure)), buf_(base::MakeRefCounted(BUF_SZ)) <> void OnReceivedRedirect(net::URLRequest *request, const net::RedirectInfo &redirect_info, bool *defer_redirect) override < std::cerr void OnAuthRequired(net::URLRequest* request, const net::AuthChallengeInfo& auth_info) override < std::cerr void OnCertificateRequested(net::URLRequest *request, net::SSLCertRequestInfo *cert_request_info) override < std::cerr void OnSSLCertificateError(net::URLRequest* request, int net_error, const net::SSLInfo& ssl_info, bool fatal) override < std::cerr void OnResponseStarted(net::URLRequest *request, int net_error) override < std::cerr Read(buf_.get(), BUF_SZ); std::cerr std::cout data(), n) > void OnReadCompleted(net::URLRequest *request, int bytes_read) override < std::cerr private: base::Closure quit_closure_; scoped_refptr buf_; >;
Вся основная логика находится в обработчике события OnResponseStarted : содержимое ответа вычитывается, пока не произойдёт ошибка или будет нечего читать. Так как после чтения ответа нужно завершить приложение, то делегат должен иметь доступ к функции, которая прервёт основной Run loop , в данном случае используется callback типа base::Closure .
Теперь всё готово для отправки запроса:
MyDelegate delegate(run_loop.QuitClosure()); auto req = ctx->CreateRequest(GURL(args[0]), net::RequestPriority::DEFAULT_PRIORITY, &delegate); req->Start();
Чтобы запрос начал обрабатываться, надо запустить Run loop :
run_loop.Run();
Полную версию можно найти на GitHub.
Чтобы собрать и запустить приложение нужно выполнить:
autoninja -C out/Default example out/Default/example "https://example.com/"
Финал
На самом деле, в Chromium можно найти много полезных кубиков и кирпичиков, из которых можно строить приложения. Он постоянно развивается, что, с одной стороны, является плюсом, а с другой стороны, регулярные изменения API не дают расслабиться. Например, в последнем релизе base::TaskScheduler превратился в base::ThreadPool , к счастью, без изменения API.
P.S. Мы ищем ведущего программиста на C++ в свою команду! Если чувствуете в себе силы, то наши пожелания описаны тут: team.mail.ru/vacancy/4641/. Там же есть кнопка «Откликнуться».
Отличие Chrome от Chromium
Большинство пользователей Интернета знают Google Chrome как самый распространенный и удобный веб-браузер. Несмотря на это, имеется множество других браузеров, которые также предоставляют комфортную среду работы. Но если вы предпочитаете использование открытых браузеров, в которых можно легко настраивать и заниматься разработкой, то Chromium - это то, что вам нужно.
В чем заключается отличие
Между тем, что же такое Chromium и как он отличается от Chrome? Фактически, Google Chrome базируется на Chromium, но они различаются по нескольким аспектам. Chromium является открытым браузером с открытым исходным кодом, который возможно использовать на всех операционных системах. В отличие от этого, Google Chrome предоставляется только на стационарных компьютерах и имеет закрытый код.
В целом, оба браузера имеют практически одинаковый интерфейс и функционал, но различаются лишь по некоторым дополнительным функциям и жесткой привязанности к Google. Для тех, кто заботится о безопасности и конфиденциальности данных, важно отметить, что Chromium не включает некоторые функции отслеживания и аналитики, которые имеются в Google Chrome.
В заключении, выбор между Google Chrome и Chromium основан на индивидуальных потребностях и предпочтениях пользователя. Если вы хотите использовать браузер с открытым исходным кодом и без дополнительных
Интерфейс пользователя
Интерфейс пользователя в Google Chrome и Chromium практически идентичен. Однако есть небольшие отличия. Например, внешний вид страницы «Настроить и управлять Google Chrome» в Google Chrome отличается от версии в Chromium. Кроме того, Google Chrome может иметь некоторые эксклюзивные функции, такие как Google Safe Browsing, которые отсутствуют в Chromium.
Также Chrome может иметь эксклюзивные функции, которых нет в Chromium, такие как Google Now и интеграция с Google Drive. Однако, он также может и не иметь функций, доступных в Chromium, таких как встроенный PDF-просмотр и автоматическое обновление.
Отметим, что в большинстве случаев, интерфейс пользовательского опыта в Chrome и Chromium будет одинаковым, так как большинство функций браузера являются общими для обеих версий.
Открытый исходный код
Одним из основных отличий между Google Chrome и Chromium является различие в типе исходного кода. Chromium является открытым исходным кодом, который имеет возможность рассмотрения и изменения любым желающим. Это означает, что любой может участвовать в разработке браузера и внести свой вклад в его развитие. Также используя исходный код, разработчики могут создавать собственные версии браузера, которые будут отличаться по функциям и интерфейсу. Chromium доступен для загрузки на всех операционных системах, что делает его доступным широкому кругу пользователей.
Google Chrome, с другой стороны, является проприетарным браузером - его исходный код закрытый и доступен только для разработчиков Google. Это означает, что никто не может изменять код или добавлять функции на свой вкус. Также нельзя создавать свои собственные версии браузера на базе Google Chrome. Единственный способ пользоваться браузером - это скачивание готовых версий, которые предоставляет Google для конечных пользователей. На базе Google Chrome можно создать собственные приложения и расширения для браузера, что делает его более гибким в использовании.
Установка и доступность последнего обновления
Еще одним из отличий между Google Chrome и Chromium является способ установки и обновления браузера. В отличие от Google Chrome, который имеет официальный канал для установки и автоматических обновлений, Chromium не имеет такого официального канала. Таким образом, пользователи должны самостоятельно загружать новые версии Chromium и устанавливать его на своих компьютерах. Кроме того, Chromium не имеет встроенной функции автоматического обновления, поэтому пользователи должны постоянно проверять наличие новых версий браузера и обновлять его вручную.
С другой стороны, Google Chrome имеет автоматическую функцию обновления, которая регулярно проверяет наличие последней версии браузера и загружает ее на ваш компьютер. Это означает, что пользователи Google Chrome автоматически получают доступ к последним обновлениям и улучшениям, что обеспечивает их безопасность и удобство использования браузера. Кроме того, установка Google Chrome происходит автоматически при скачивании файла установщика с официального сайта браузера.