Главная » Хабрахабр » Детальная настройка браузера Firefox

Детальная настройка браузера Firefox

Я люблю этот браузер за его гибкость в настройке, скорость и заботу о приватности. Вот уже 2 года, как я рекомендую всем моим знакомым использовать Firefox, как браузер для повседневного серфинга в интернете. Много раз на форумах меня спрашивали про какие-то отдельные случаи по настройке, поэтому я решил написать статью с подробным описанием настроек, как шпаргалку для себя и чтобы делится ею, в случае новых вопросов.

Надеюсь она немножко поможет в популяризации этого чудесного браузера.

Небольшое введение

Уже точно не помню, но я постоянно прыгал между оперой и огнелисом. Как только у меня появился интернет много лет тому, я сразу же, по совету друзей, начал экспериментировать с различными браузерами. Сначала он был довольно сыроват и я чаще проводил время на огнелисе, забросив оперу совсем. И тут появился хром, который был на каждом углу и лез со всех щелей. И вот 2 года назад я работал в одной компании, где у меня был рабочий ноутбук с 8 Gb RAM, на Ubuntu и с обязательной виртуалкой для Windows, так как компания использовала Outlook и Skype for Business. Но со временем хром начал работать быстрее и я окончательно перешел только на него. 0 Quantum, в которой начали переписывать части движка Gecko на Rust, используя наработки экспериментального движка Servo. Я конечно не долго работал в таких условиях, но пока работал, все постоянно висло, хром с Intellij Idea + виртуалка сжирали всю память и уход в swap к вечеру был обычной рутиной, пока я не услышал про выход версии Firefox 57.

Так как я не использовал множество дополнений, я легко перекинул все мои закладки на новый браузер и начал активно его использовать. Так как терять мне было нечего, я решил попробовать вернутся на когда-то любимый браузер.
И какое же было мое удивление, когда по скорости работы Firefox перестал уступать хрому.

Мой рабочий ноутбук перестал уходить в swap каждый день. И тут меня ждал еще один сюрприз. Я был приятно удивлен.

Вот эту гибкость я и постараюсь вам описать. В процессе перехода я наткнулся на несколько статей по настройке Firefox и не переставал удивляться, насколько он гибче чем хром.

Варианты настроек

В Firefox есть несколько способов настроить под себя. Перед тем, как настроить что-то, нужно знать, где именно это делать. Начнем пожалуй с самого очевидного — пункт меню Preferences (у меня английская версия языка браузера).

Пункт меню Preferences

Поэтому тут будет лишь пара интересных нюансов. Я не буду детально описывать этот вариант, потому что он очевиден и большинство пользователей браузера его открывали.

  • Мне очень понравилась данная возможность, так как я люблю шрифт Hack и использовать его для чтения приносит мне удовольствие. General -> Fonts & Colors -> Advanced
    Красным цветом выделена галочка, деактивировав которую, ваш шрифт будет использован на всех сайтах, независимо от подключенных шрифтов там. (Может влиять на корректность отображения страницы, спасибо ArsenAbakarov ) Больше не видел такой настройки, поправьте меня, если не прав.

  • General -> Network Settings -> Connection settings
    Не могу обойти стороной возможность настроить прокси для браузера без дополнительных телодвижений

  • Search -> Search Bar
    Куда же без дополнительного поля ввода для поиска, в котором сохраняется последний поисковый запрос

  • Privacy & security -> Permissions -> Notifications
    Ну и еще одна полезная галочка для блокировки всех уведомлений, которые меня жутко раздражают

Это были интересные и даже уникальные настройки, доступные в графическом интерфейсе.

about:config

В Firefox есть одна любопытная страница, по адресу about:about

Как вы видите, на этой странице находятся ссылки на разные ресурсы браузера.
Не буду углубляться в каждый ресурс, просто наведу несколько любопытных и полезных примеров.

  • about:support
    Тут можно посмотреть детальную информацию о браузере, user-agent, поддерживается ли несколько потоков или например композитный менеджер для отрисовки интерфейса.

    Зачем он вам будет нужен, я подробнее опишу ниже. Тут же можно узнать путь к вашему профилю(Profile Directory). К сожалению, на мобильной версии не показан путь к папке профиля, поэтому поделюсь с вами своим(актуально только для андроид)
    /data/data/org.mozilla.firefox/files/mozilla/*.default
    Папка профиля состоит из 2 частей — * — рандомная строка(уникальный набор букв для каждого девайса) + .default — для профиля по умолчанию

  • about:memory
    Тут можно посмотреть, на что расходуется память браузера, в основном полезно web frontend разработчикам

  • about:addons
    Страница с вашими расширениями, доступна также из графического меню.

  • Тоже будет полезна web разработчикам. about:networking
    Страница с детальной информацией о посещенных сайтах, dns и websockets.

  • about:config
    И наконец, страница, где находятся все доступные настройки браузера в формате ключ — значение

Файл user.js в папке профиля

Данный файл содержит в себе настройки которые доступны в about:config. Файл user.js должен быть в папке вашего профиля, путь к которой мы узнали в ресурсе about:support. Он нужен для бекапа и переноса настроек. Сразу же возникает вопрос, а зачем еще какой-то файл, если уже есть about:config?

Данный файл генерируется автоматически браузером и имеет приоритет перед user.js. Дело в том, что все настройки из about:config хранятся в файле prefs.js в папке профиля. Кстати, чаще всего настройки из user.js дублируются в файл prefs.js поэтому если меняете какие-то значения в первом, не забудьте почистить и второй файл(я удаляю дублирующие строки из prefs.js), только закройте браузер перед этим, иначе он автоматом затрет ваши изменения. Но когда хочется одинаковых настроек на разных компьютерах (и даже на мобильной версии), то рекомендованный вариант — использовать файл user.js.

Детальные настройки браузера

Дело в том, что я использую Firefox и файл user.js для настройки не только на компьютере, но и на мобильном телефоне. Перед тем, как детально описывать каждую настройку или группу настроек, хочу внести несколько обозначений. Конечно же не все настройки от десктопа подходят для мобильной версии, поэтому я буду указывать отдельно, если настройка подходит только для десктопа (Д).

Теперь поговорим про формат этих настроек.

Например: В about:config есть графический редактор значений, там все должно быть понятно и так.
А вот файл user.js, как видно из его расширения, предполагает что все настройки будут в формате, понятном javascript парсеру.

user_pref("browser.bookmarks.restore_default_bookmarks", false);

user_pref — это объект, содержащий в себе все настройки.

Все, что в кавычках "browser.bookmarks.restore_default_bookmarks" — это ключ.

После коммы идет значение.

Ключ всегда строка, а вот значение может быть разных типов, строки, числа или булевое значение ложь/истина(true/false).

Если поменять данное значение, то все ваши закладки удалятся и восстановится набор закладок по умолчанию. Настройка показанная в примере отвечает за восстановление закладок по умолчанию и имеет значение ложь.

Другие настройки

user_pref("browser.bookmarks.showMobileBookmarks", true);

(Д) Данная настройка позволяет на десктопе увидеть ваши закладки с мобильной версии, если у вас подключена синхронизация.

user_pref("browser.ctrlTab.previews", true);

(Д) При переключении вкладок отображаются превью страниц.

user_pref("browser.download.autohideButton", false);
user_pref("browser.download.panel.shown", true);

(Д) Настройки, отвечающие за отображение загрузок браузера.

user_pref("browser.library.activity-stream.enabled", false);
user_pref("browser.newtabpage.activity-stream.feeds.places", true);
user_pref("browser.newtabpage.activity-stream.feeds.section.highlights", false);
user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false);
user_pref("browser.newtabpage.activity-stream.filterAdult", false);
user_pref("browser.newtabpage.activity-stream.prerender", false);
user_pref("browser.newtabpage.activity-stream.showSponsored", false);
user_pref("browser.newtabpage.activity-stream.telemetry", false);
user_pref("browser.newtabpage.activity-stream.telemetry.ping.endpoint", "");
user_pref("browser.newtabpage.activity-stream.tippyTop.service.endpoint", "");
user_pref("browser.newtabpage.activity-stream.topSitesRows", 3);
user_pref("browser.newtabpage.enhanced", true);

"newtabpage" — за отображение контента на новой вкладке. Все настройки activity-stream отвечают за вашу активность. Кстати, все настройки, содержащие слово "endpoint" отвечают за адрес, на который посылаются данные. Почти все я отключил, кроме "feeds.places", отвечающих за отображение недавно посещенных страниц на новой вкладке. Если использовать пустую строку, то данные передаваться не будут.

user_pref("browser.ping-centre.telemetry", false);

Я ее отключаю для ускорения серфинга, так как на любое действие тратятся ресурсы, даже если оно работает параллельно. Одна из настроек, отвечающих за телеметрию. Хотя может быть это и экономия на спичках. Так как я не понаслышке знаю, как профилировать программы и насколько при этом проседает производительность, то лучше уж обойтись без этого.

user_pref("browser.safebrowsing.blockedURIs.enabled", false);
user_pref("browser.safebrowsing.downloads.enabled", false);
user_pref("browser.safebrowsing.downloads.remote.block_dangerous", false);
user_pref("browser.safebrowsing.downloads.remote.block_dangerous_host", false);
user_pref("browser.safebrowsing.downloads.remote.block_potentially_unwanted", false);
user_pref("browser.safebrowsing.downloads.remote.block_uncommon", false);
user_pref("browser.safebrowsing.downloads.remote.enabled", false);
user_pref("browser.safebrowsing.enabled", false);
user_pref("browser.safebrowsing.malware.enabled", false);
user_pref("browser.safebrowsing.phishing.enabled", false);
user_pref("browser.safebrowsing.provider.google.advisoryURL", "");
user_pref("browser.safebrowsing.provider.google.gethashURL", "");
user_pref("browser.safebrowsing.provider.google.lists", "");
user_pref("browser.safebrowsing.provider.google.pver", "");
user_pref("browser.safebrowsing.provider.google.reportMalwareMistakeURL", "");
user_pref("browser.safebrowsing.provider.google.reportPhishMistakeURL", "");
user_pref("browser.safebrowsing.provider.google.reportURL", "");
user_pref("browser.safebrowsing.provider.google.updateURL", "");
user_pref("browser.safebrowsing.provider.google4.advisoryName", "");
user_pref("browser.safebrowsing.provider.google4.advisoryURL", "");
user_pref("browser.safebrowsing.provider.google4.dataSharingURL", "");
user_pref("browser.safebrowsing.provider.google4.gethashURL", "");
user_pref("browser.safebrowsing.provider.google4.lastupdatetime", "");
user_pref("browser.safebrowsing.provider.google4.lists", "");
user_pref("browser.safebrowsing.provider.google4.nextupdatetime", "");
user_pref("browser.safebrowsing.provider.google4.pver", "");
user_pref("browser.safebrowsing.provider.google4.reportMalwareMistakeURL", "");
user_pref("browser.safebrowsing.provider.google4.reportPhishMistakeURL", "");
user_pref("browser.safebrowsing.provider.google4.reportURL", "");
user_pref("browser.safebrowsing.provider.google4.updateURL", "");
user_pref("browser.safebrowsing.provider.mozilla.gethashURL", "");
user_pref("browser.safebrowsing.provider.mozilla.lists", "");
user_pref("browser.safebrowsing.provider.mozilla.pver", "");
user_pref("browser.safebrowsing.provider.mozilla.updateURL", "");

Данная проверка предполагает проверку хоста сайта в локальной базе на черный список и проверку загруженых файлов на серверах гугл.(Спасибо dartraiden за подсказку) В случае положительного ответа вместо сайта показывается служебная страница с предупреждением. "safebrowsing" — данные настроки отвечают за проверку посещаемых сайтов, чтобы убедится что они безопастные. Возможно, тем, кто пользуется ОС Windows, этого делать не стоит. Я данную проверку отключил для ускорения серфинга.

user_pref("browser.search.countryCode", "US");
user_pref("browser.search.geoSpecificDefaults", false);
user_pref("browser.search.geoSpecificDefaults.url", "");
user_pref("browser.search.geoip.url", "");
user_pref("browser.search.hiddenOneOffs", "Bing,Amazon.com,Twitter");
user_pref("browser.search.region", "US");
user_pref("geo.wifi.uri", "");

Я поставил регион US, для анонимности поисковых запросов. Настройки поиска. Так же отключил местоположение для поиска ("geo").

user_pref("browser.tabs.loadInBackground", false);
user_pref("browser.tabs.tabMinWidth", 30);
user_pref("browser.tabs.warnOnClose", false);

Хочу отдельно отметить "tabMinWidth". Настройки вкладок. А в Firefox данная настройка отвечает за минимальную длину вкладки. В хроме, если открываешь множество вкладок, текст исчезает. Для меня данная система очень удобна, так как я постоянно открываю множество страниц с одного и того же сайта и без текста нужно постоянно угадывать, какая именно страница где. И если открыто больше вкладок, то они все равно не уменьшаются, а просто прячутся и появляются дополнительные кнопки управления вкладками.

user_pref("browser.urlbar.clickSelectsAll", true);
user_pref("browser.urlbar.maxRichResults", 15);
user_pref("browser.urlbar.trimURLs", false);

А также не скрывается https в адресной строке. При клике на адресную строку выделяется весь адрес, а не текущее слово.

user_pref("datareporting.healthreport.uploadEnabled", false);
user_pref("datareporting.policy.dataSubmissionEnabled", false);
user_pref("datareporting.policy.firstRunURL", "");

Отчеты корпорации Mozilla

user_pref("device.sensors.enabled", false);
user_pref("device.sensors.motion.enabled", false);
user_pref("device.sensors.orientation.enabled", false);

Это скорее для мобильной версии, но иногда в ноутбуках тоже есть какие-то сенсоры.

user_pref("devtools.aboutdebugging.showSystemAddons", true);
user_pref("devtools.onboarding.telemetry.logged", false);
user_pref("devtools.theme", "dark");
user_pref("devtools.toolbox.splitconsoleEnabled", false);

(Д) Настройки инструментов разработчика.

user_pref("dom.push.enabled", false);
user_pref("permissions.default.desktop-notification", 2);
user_pref("permissions.default.geo", 2);

Дублирует отключение уведомлений из графического меню

user_pref("experiments.activeExperiment", false);
user_pref("experiments.enabled", false);
user_pref("experiments.supported", false);

Настройка на любителя). Не хочется мне эксперементов.

user_pref("extensions.pocket.enabled", false);
user_pref("extensions.ui.dictionary.hidden", false);
user_pref("extensions.ui.experiment.hidden", true);
user_pref("extensions.ui.locale.hidden", true);
user_pref("extensions.webextensions.remote", true);

Pocket выключаю. Настройки расширений.

user_pref("findbar.highlightAll", true);
user_pref("font.internaluseonly.changed", true);
user_pref("font.minimum-size.x-western", 10);
user_pref("font.name.monospace.x-western", "Hack");
user_pref("font.name.sans-serif.x-western", "Hack");
user_pref("font.name.serif.x-western", "Hack");

Настройки шрифта, дублируют графические.

user_pref("general.smoothScroll.durationToIntervalRatio", 1000);
user_pref("general.smoothScroll.lines.durationMaxMS", 100);
user_pref("general.smoothScroll.lines.durationMinMS", 100);
user_pref("general.smoothScroll.mouseWheel.durationMaxMS", 150);
user_pref("general.smoothScroll.mouseWheel.durationMinMS", 50);
user_pref("general.smoothScroll.other", false);
user_pref("general.smoothScroll.pixels", false);
user_pref("general.smoothScroll.scrollbars.durationMaxMS", 100);
user_pref("general.smoothScroll.scrollbars.durationMinMS", 100);

Настройки плавного скролла, подобранно эксперементальным путем.

user_pref("general.useragent.override", "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/64.0");
user_pref("general.useragent.vendor", "");
user_pref("general.useragent.vendorSub", "");

Настройки User agent, если нету особой необходимости, их лучше не трогать

user_pref("general.warnOnAboutConfig", false);

Отключить окно предупреждения при посещении about:config

user_pref("gfx.use_text_smoothing_setting", true);
user_pref("gfx.webrender.enabled", true);
user_pref("gfx.webrender.highlight-painted-layers", true);
user_pref("layers.acceleration.force-enabled", true);

Ускорение отрисовки

user_pref("intl.accept_languages", "en-us,en,uk,ru");
user_pref("intl.locale.requested", "en-US");

Надеюсь в будущем ситуация изменится. Данная информация предназначена для автоматического выбора языка на сайте, хотя сами сайты очень редко обращают внимание на эту настройку.

user_pref("layout.css.devPixelsPerPx", "1.25");
user_pref("layout.css.osx-font-smoothing.enabled", true);
user_pref("layout.word_select.stop_at_punctuation", true);

Данная настройка отвечает за масштабирование интерфейса и будет особо полезна людям со слабым зрением или на компьютерах с большим расширением экрана. Особо хочется выделить настройку "devPixelsPerPx". По умолчанию идет значение "1".

user_pref("media.autoplay.enabled", false);
user_pref("media.av1.enabled", true);

Отключает автовоспроизведение и включает эксперементальную поддержку нового кодека AV1. Настройки, связанные с видео.

user_pref("network.allow-experiments", false);
user_pref("network.cookie.prefsMigrated", true);
user_pref("network.dns.disablePrefetch", true);
user_pref("network.http.speculative-parallel-limit", 0);
user_pref("network.predictor.enabled", false);
user_pref("network.prefetch-next", false);
user_pref("network.security.esni.enabled", true);
user_pref("network.tcp.tcp_fastopen_enable", true);
user_pref("network.trr.mode", 2);
user_pref("network.trr.uri", "https://mozilla.cloudflare-dns.com/dns-query");
user_pref("network.warnOnAboutNetworking", false);

Данную группу настроек хочу разобрать подробнее.

Если интернет медленный, то оно только ухудшает ситуацию, особенно в мобильной версии где-то в метро. "dns.disablePrefetch" и "predictor.enabled" отвечают за предварительное посещение ссылок на странице, чтобы ускорить загрузку, если пользователь захочет перейти по какой-то из ссылок.

Значение 0 полностью отключает DoH; 1 — используется DNS или DoH, в зависимости от того, что быстрее; 2 — используется DoH по умолчанию, а DNS как запасной вариант; 3 — используется только DoH; 4 — режим зеркалирования при котором DoH и DNS задействованы параллельно. "tcp.tcp_fastopen_enable" включает TCP Fast Open
"trr.mode" отвечает за DNS Over HTTPS.

Ну а "trr.uri" отвечает за сервер, на который браузер стучится для получения IP адреса посещаемых сайтов.

"security.esni.enabled" отвечает за Encrypted SNI

user_pref("privacy.donottrackheader.enabled", true);
user_pref("privacy.firstparty.isolate", true);
user_pref("privacy.resistFingerprinting", true);
user_pref("privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts", false);

Настройки приватности.

user_pref("privacy.userContext.enabled", true);
user_pref("privacy.userContext.longPressBehavior", 2);
user_pref("privacy.userContext.ui.enabled", true);

(Д)
Данное дополнение изолирует куки и историю посещений в отдельные контейнеры. "userContext" включает Multi-Account Containers. Я так изолировал все сервисы гугла, фейсбука и нескольких других важных сервисов отдельно. К сожалению, только для десктопа. Даже если с одного контейнера открываешь ссылку, привязанную к другому контейнеру, она открывается в этом контейнере, в новой вкладке. Так же, если дополнительно установить расширение Multi-Account Containers, то с его помощью можно привязывать сайты к контейнерам. Очень удобно.

user_pref("reader.color_scheme", "dark");
user_pref("reader.content_width", 12);

Он пока далек от идеала, вырезает некоторые тэги с текстом, но все равно им очень удобно пользоваться. В Firefox есть очень удобный режим чтения страницы, при котором все, кроме текста удаляется. Активировать его можно тут

user_pref("security.ssl.errorReporting.automatic", true);
user_pref("toolkit.identity.enabled", false);
user_pref("toolkit.telemetry.archive.enabled", false);
user_pref("toolkit.telemetry.bhrPing.enabled", false);
user_pref("toolkit.telemetry.coverage.opt-out", false);
user_pref("toolkit.telemetry.enabled", false);
user_pref("toolkit.telemetry.firstShutdownPing.enabled", false);
user_pref("toolkit.telemetry.hybridContent.enabled", false);
user_pref("toolkit.telemetry.infoURL", "");
user_pref("toolkit.telemetry.newProfilePing.enabled", false);
user_pref("toolkit.telemetry.reportingpolicy.firstRun", false);
user_pref("toolkit.telemetry.server", "");
user_pref("toolkit.telemetry.shutdownPingSender.enabled", false);
user_pref("toolkit.telemetry.unified", false);
user_pref("toolkit.telemetry.updatePing.enabled", false);

Опять 🙂 Разнообразная телеметрия.

user_pref("widget.chrome.allow-gtk-dark-theme", true);
user_pref("widget.content.allow-gtk-dark-theme", true);
// user_pref("widget.content.gtk-theme-override", "Adwaita:light");

Настройка "widget.content.gtk-theme-override" создана для этого. А тут можно настроить использование темной темы gtk для линукса.(Д)
Кстати, если вам не нравяться темные input и textarea, то для этих полей ввода можно применить светлую тему, даже если у вас стоит темная по умолчанию.

Именно благодаря ему у меня все браузерные ресурсы в темном цвете. Если вы думаете, что этим настройка браузера ограничивается, то вы ошибаетесь)
Для любителей темной темы есть проект ShadowFox. Так же можно перекрашивать и некоторые популярные расширения, типа uBlock или uMatrix И я очень доволен.

Старые расширения влезали в интерфейс и тормозили браузер, а так же ограничивали разработчиков, особенно в добавлении мультипроцессорности. Я знаю, что многим пользователям огнелиса не хватает некоторых специфических расширений после перехода на движок Quantum и замены Xul на WebExtentions, но я рад, что данная замена произошла. Скорость работы браузера существенно возросла а возможностей по настройке по прежнему больше, чем в хроме.

Пожалуйста, оставляйте в комментариях свои настройки, которые я не упомянул и делитесь своими способами кастомизации данного браузера.

Полезные ссылки


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

WebAssembly в продакшне и «минное поле» Smart TV: интервью с Андреем Нагих

Разработка приложений под Smart TV — тоже «нетипичный JavaScript», когда все слышали о чём-то, но немногие лично пробовали. Интерес к WebAssembly велик, но пока что нечасто встретишь людей, использующих эту технологию в рабочем проекте. TV, а в последние месяцы так ...

[Перевод] Ethereum планирует стать на 99% экономичней

Криптовалюта скоро сядет на энергетическую диету, чтобы конкурировать с более эффективными блокчейнами На фоне ажиотажа вокруг Биткоина его «младший брат» Ethereum отошел в тень. Но проект с рыночной капитализацией около 10 млрд долларов вряд ли можно считать незаметным. И объемы ...