Brevier — браузер, созданный только для чтения

в 8:40, , рубрики: android, brevier, F-Droid, flatpak, gtk4, markdown, rss, Rust, без javascript, режим чтения

У меня очень давно в «идеях» лежала запись о том, что нужно создать браузер, который предназначен исключительно для чтения. Каждый раз я вспоминал о ней, когда натыкался на очередной сайт, где контент сложно прочитать из-за отвратительной вёрстки или обилия рекламы. И вот время настало: недельный лимит токенов не был израсходован, и мы с товарищем Клодом напряглись и создали браузер для чтения Brevier. Тот факт, что я уже много лет занимаюсь фронтенд-разработкой, дал свои плоды — я решил сделать браузер без JavaScript и без CSS.

Одна и та же статья на телефоне: в Chrome и в Brevier

Одна и та же статья на телефоне: в Chrome и в Brevier

Пролог

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

Худые стороны у этой библиотеки тоже имелись. Свитки было сложно читать: они были написаны разными почерками, разного качества чернилами и совершенно непредсказуемых цветов. Деды помнят, что даже видели свитки, написанные ярко-зелёными чернилами на фиолетовом папирусе. В любом случае, текст присутствовал, и если желание было, то его можно было прочесть.

Затем появились драконы.

1. Драконы грядут

Они появились не сразу, но первая ласточка была с вежливым сообщением: не желаете ли подписаться? Затем видео, которое никто не заказывал, часто еще и со звуком! Немного погодя вся библиотека была заполнена ими:

  • На входе вас всегда поджидает Печеньковый змей. Он не сдвинется ни на миллиметр, пока вы не передвинете 42 переключателя и не согласитесь с ним;

  • Как только вы сосредоточитесь на чтении, поп-ап Василиск выскакивает, обращает вас в камень и просит подписаться на канал да нажать колокольчик, пока вы не очнётесь и не найдёте едва заметный крестик в правом верхнем углу;

  • Стоит только закрыть одно видео, как в углу запускается еще два — это Гидра автовоспроизведения;

  • Вы никогда не увидите футер сайта, так как он пожран Змеем Бесконечного Свитка.

Печеньковый змей во плоти: The Verge в Chrome, 194 партнёра ждут согласия

Печеньковый змей во плоти: The Verge в Chrome, 194 партнёра ждут согласия

Но это всё слуги самого главного владыки — Великого JavaScript Дракона. На заре веков он был крохотным помощником и служил людям верой и правдой. Но сейчас он стал невероятно могущественным и жестоким. Теперь он даже не приносит свитки, как делал это раньше. Теперь он привозит телегу с кирпичами, глиной и палками и строит свитковый замок прям на ваших глазах, пока ваш ноутбук воет от натуги. Читатели по-прежнему приходили за свитками. Просто им приходилось несладко.

2. Карманная книга

В первые годы книгопечатания «бревьер» было названием шрифта небольшого размера — настолько маленького, что целая книга ежедневных чтений помещалась в карман путешественника. Людям удобно было брать такие книги с собой. Браузер Brevier — это карманная книга для интернета. Он делает одно: читает. Он проскальзывает мимо драконов, хватает свиток и приносит его вам на чистой бумаге.

Brevier никогда не впускает дракона, потому что никогда не запускает JavaScript — ни для какого-то конкретного сайта, ни для маленького меню, никогда. Он берёт страницу, извлекает из неё статью, превращает её в Markdown на вашем компьютере и отображает её в соответствии с вашими типографическими требованиями. Сайт определяет текст. Вы определяете, как он будет выглядеть.

Та же статья The Verge в Brevier
Та же статья The Verge в Brevier

3. Читальный зал

Каждый развёрнутый вами свиток переносит вас в одну и ту же спокойную комнату:

  • Ваш шрифт на каждом сайте — Noto Sans, книжный Book или ещё два готовых стиля, также вы можете точно настроить шрифт, размер, длину строки и межстрочный интервал — один раз для всех сайтов.

  • Бумага цвета слоновой кости, а для ночного дозора выбрана теплая темная цветовая гамма.

  • Мы уделили внимание переносу текста, чтобы даже правая часть текста смотрелась аккуратно.

  • Масштабирование макета устроено так, что в строке по-прежнему помещается около 65 символов.

  • Стихи сохраняют свои строки и строфы. Странствующие барды также приветствуются, но чеканную монету мы не обещаем.

Эссе Дэна Луу о задержке клавиатур: переносы, цитаты, полка с оглавлением

Эссе Дэна Луу о задержке клавиатур: переносы, цитаты, полка с оглавлением
Тёмная тема
Та же страница в тёмной теме

Та же страница в тёмной теме

4. Библиотечная башня

Некоторые из лучших веб-страниц находятся в Git-репозиториях: руководства, книги, справочники. Введите адрес gh:owner/repo в адресной строке, и Brevier откроет файл README, gl: работает и с GitLab.

gh:rust-lang/book/src/ch03-02-data-types.md — глава Rust Book прямо из репозитория

gh:rust-lang/book/src/ch03-02-data-types.md — глава Rust Book прямо из репозитория

Одна из самых крутых фич — это панель справа. Там могут находиться 3 важные вещи для навигации:

  • Оглавление страницы. Оно базируется на заголовках, а в случае длинных или неструктурированных страниц — на процентах;

  • Навигационные ссылки из футера или хедера сайта.

  • Заметки к тексту. Да-да, можно добавлять какие-то заметки к странице.

Также сейчас в эпоху ИИ удобно открывать сохранённые markdown-файлы прям в Brevier для комфортного чтения — везде, кроме Flatpak: из песочницы файлы с диска не открываются.

5. Вороны с далёких башен

Ленты новостей — это вороны интернета: RSS, Atom и JSON Feed. Brevier открывает их как списки записей с датой, автором и кратким описанием. Поддерживаются ссылки вида feed://. Ветки комментариев уже поддерживаются — Хабр, Hacker News, Lobsters и форумы, построенные на Discourse: каждый ответ с указанием автора и дня, ответы размещаются под вопросами.

Лента блога Rust: заголовок, дата, авторы, краткое описание

Лента блога Rust: заголовок, дата, авторы, краткое описание

С Хабром отдельная история: в самой странице статьи комментариев нет, их потом догружает скрипт. Brevier делает тот же запрос сам, один раз, и ставит комментарии под статью — с авторами, датами и ветками ответов. Ссылки вида #comment_… из ленты ведут прямо к нужному комментарию, а на месте удалённого стоит та самая фраза про НЛО.

Статья Хабра в Brevier на телефоне и комментарии под ней

Статья Хабра в Brevier на телефоне и комментарии под ней

Всё, что вы введёте в адресную строку, если это не адрес, будет использовано для поиска в DuckDuckGo, и результаты будут представлены в виде простого списка ссылок. Ни один ворон не пострадал. Может, позже будут и другие поисковики, а может, и нет.

6. Рукописи не горят

Каждый прочитанный вами свиток хранится в сжатом виде в формате Markdown, один файл == один свиток. Ctrl+Shift+F запускает поиск по всему архиву. Даже если сайт исчезнет, ваша копия останется у вас в архиве. А если страницы больше нет, Brevier предложит достать последнюю копию из Wayback Machine — но только по кнопке: до неё archive.org ничего не знает о том, что вы читаете.

Страницы больше нет: своя копия, Wayback Machine или обычный браузер

Страницы больше нет: своя копия, Wayback Machine или обычный браузер

Свиток, который вы читали дольше десяти минут, помнит, на каком месте вы закончили читать. Откройте страницу заново, и Brevier предложит «Continue from 42%». А внизу экрана тонкая линия с полосой прогресса, точками заголовков и добавленных пометок.

«Continue from 43%», а потом Ctrl+Shift+F — поиск по прочитанному

«Continue from 43%», а потом Ctrl+Shift+F — поиск по прочитанному

7. Когда ворота остаются закрытыми

Не каждый замок открыт для посещений: одни сайты полностью созданы на JavaScript, у других высокая стена от ботов, а на ней Гэндальф: «Ты не пройдёшь!» Brevier вежливо стучит, называет своё честное имя и никогда не лезет через стену. Если ворота остаются закрытыми, он ясно об этом сообщает и предлагает открыть в браузере. Также всегда можно просто нажать Ctrl+O, и страница откроется в обычном браузере.

Мы протестировали в сентябре Brevier на 108 живых страницах, и 80 из них (74%) читаются хорошо. Честно скажем: правила оценки мы смягчили, уже зная результат, — по строгим выходило 56%. На отдельном замере по 295 новостным сайтам хорошо читаются 94% статей, до которых Brevier смог добраться. Не каждая миссия заканчивается победой, но мы всё равно показываем итоговый результат и то, как мы его подсчитали.

8. Для строителей замков

Мы добавили специальный инструмент для разработчиков, схожий с Lighthouse, который может проверить, как ваш сайт будет выглядеть для читателя, не использующего скрипты. Команда brevier --check https://your.site/ выдаст оценку от 0 до 100 и подскажет, что нужно изменить. Это очень удобно, можно даже добавить проверку в GitHub Action, чтобы он прервал сборку, если оценка ниже определенного уровня.

- uses: gurov/brevier@main   # или тег релиза
  with:
    urls: |
      https://example.com/
    min: 80
brevier --check для example.com: 73 из 100 и что поправить

brevier --check для example.com: 73 из 100 и что поправить

9. Что авантюрист оставляет дома

Хороший путешественник берет с собой минимум вещей. Brevier не будет брать с собой:

  • JavaScript. Никогда, ни в какой форме. В этом суть, в этом наша стратегия.

  • CSS сайта. Стили только ваши.

  • Формы, авторизация и файлы cookie. Веб у нас только для чтения, и это сделано намеренно.

  • Видео, аудио и расширения.

  • Мы не используем ИИ для разбора страниц, они читаются простыми правилами, поэтому смысл не искажается. Если же в будущем мы добавим ИИ для вспомогательного парсинга — это будет совершенно отдельный модуль, который вызывается по запросу (может, и вообще без него обойдёмся).

И одно честное ограничение: программы чтения с экрана пока работают только в Linux. На Windows доступность GTK ещё не добралась, а на Android TalkBack должен читать нативный текст, но этого пока никто не проверял.

10. Ваше сокровище у вас в сундуке

Brevier прячет ваше добро так: в домашнем каталоге папка, в папке текстовый файл, в файле строка, а в строке — закладка, запись истории или открытая вкладка. Сотрёте строку — и страница забыта. Прочитанные статьи лежат рядом в архиве: папка, а внутри Markdown ужатый в LZ4. Ни базы данных, ни учёток в Brevier нету.

Сам Brevier ничего не трекает и никуда ничего не отправляет. Сайты, правда, по-прежнему видят, что вы к ним заходили: Brevier — читалка, а не шапка-невидимка.

11. Кого запрягаем

Brevier есть для Linux, Windows и Android, а командная строка — ещё и для macOS. Интерфейс везде пока только на английском.

Linux

Flatpak можно поставить из собственного подписанного репозитория Brevier. Это работает в любом дистрибутиве (deb и rpm нету, потом, может, заведём, а пока не стали, так как обновления автоматом не подтянутся). GNOME Software и Discover ставят его по ссылке в один щелчок, а в консоли:

flatpak install --user https://brevier.bizibah.com/flatpak/brevier.flatpakref

Новую версию подтянуть командой flatpak update. Сам Brevier весит около 5 МБ, но если рантайма GNOME в системе ещё нет, Flatpak скачает и его — это около 400 МБ, общих для всех Flatpak-приложений. Кому это много, для того есть архив tar.gz на 11 МБ (нужен GTK 4 в системе, ставится в ~/.local без root) и сборка с crates.io (Rust 1.88+, GTK 4.10+ с заголовками):

cargo install --locked brevier --features ui

Windows 10 и 11

Установщик ставит Brevier для конкретного юзера, без прав администратора. Есть также версия в zip, которую можно запустить из любого места. Установщик пока без подписи, поэтому SmartScreen ругнётся «Система Windows защитила ваш компьютер» — жмём «Подробнее» → «Выполнить в любом случае».

Brevier в Windows: статья BBC Earth про грибы

Brevier в Windows: статья BBC Earth про грибы

Android 7 и новее (64-битный ARM)

Это не очередная поделка на WebView, а нативное приложение на том же ядре, и статью оно рисует настоящим текстом. Ставится из F-Droid, там обновляется само (по ощущениям задержка на неделю в сравнении с гитхабом), или тем же APK со страницы релизов. F-Droid публикует APK, только если его сборка побайтно совпала с нашей, поэтому обновляться можно хоть откуда. В Google Play пока нету, но планирую!

Из браузера телефона — в Brevier

Из браузера телефона — в Brevier
Все шаги одной картинкой
Все пять шагов

Все пять шагов

Командная строка

Для маководов это единственный вариант: окна пока не подвезли. Пользоваться просто: brevier https://example.com/article сконвертирует статью в Markdown. Каждый релиз поставляет утилиту одним файлом для Linux (x86_64 и ARM64), macOS (Apple silicon и Intel) и Windows. Дополнительных зависимостей не нужно, включая GTK. Файл для macOS не подписан: если скачали браузером, то нужно разок выполнить xattr -d com.apple.quarantine brevier. Или собрать: cargo install --locked brevier --features save.

Сертификаты Минцифры

Если корневой сертификат Минцифры установлен в систему, сайты с ним открываются в Linux вне Flatpak (проверено на sberbank.ru). Во Flatpak и на Android — пока нет: в песочнице Brevier видит только корни рантайма, а на Android — только системные, без установленных пользователем. В Windows должен работать через системное хранилище, но пока не тестировал.

Эпилог. Присоединяйтесь к квесту!

Brevier — это свободное программное обеспечение под лицензией MIT или Apache-2.0, разрабатываемое в открытом доступе на GitHub. Категорически приветствуются сообщения от пользователей в разделе Issues, а также патчи (пожалуйста, не прикрепляйте драконов). Манифест описывает обещания Brevier, а дорожная карта показывает, куда проект движется дальше. Новые релизы доставляет ворон: лента релизов.

Автор: lucius

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js