Обзор минималистского Web-браузера Dillo
Программное обеспечение
Статья была опубликована 1 февраля 2010 года в 00:00, а последний раз правилась 1 февраля 2010 года в 10:46.
Постоянная ссылка: http://www.nixp.ru/articles/51.html
За флагманами мира браузеров (Opera, Firefox) и за движками, которые у всех на слуху (Gecko, WebKit), мы обычно не обращаем внимание на менее известные и раскрученные проекты. Существует какой-то браузер — и ладно. А ведь они и живут своей жизнью.
Примечание: Статья была впервые опубликована в электронном издании «Open Source» (выпуск №038 от 30.01.2009). Ее размещение на nixp.ru производится в соответствии с разрешением со стороны редакции и автора материала.
За флагманами мира браузеров (Opera, Firefox) и за движками, которые у всех на слуху (Gecko, WebKit), мы обычно не обращаем внимание на менее известные и раскрученные проекты. Существует какой-то браузер — и ладно. А ведь они и живут своей жизнью. И Elinks, и Lynx, и… Dillo. (Прим. ред.: Во избежание путаницы сразу заметим, что Dillo здесь поставлен в один ряд с консольными не из-за командного интерфейса, а по причине своей легковесности. Впрочем, об этом см. ниже.)
История появления Dillo
Web-браузер Dillo разрабатывается уже 8 лет. И вопреки расхожему мнению, он не писался с нуля. Поначалу в качестве движка рендеринга в Dillo использовались наработки проекта Gzilla (www.levien.com/gzilla), развитие которого застыло в теперь уже далеком 1999 году. Вероятно, именно благодаря ему Dillo корнями прирос к библиотеке GTK+ (тогда еще первой версии) и сохранял эту зависимость вплоть до 2008 года. Ветка, написанная на основе GTK+1, жила даже в то время, когда все старые GTK-программы перешли на GTK+2.
Номер версии самого Dillo не переваливал за единицу до 2008 года, когда Dillo 1 (как назвали GTK-ветку) был объявлен устаревшим и разработчики, ведомые бессменным главой проекта, чилийцем Хорхе Сидом, взялись за новую ветку — Dillo 2.
Dillo — основной проект Сида. Сид посвящает ему всё время, нигде больше не работая. Вот почему в сети иногда появляются воззвания на тему «поможем Dillo». Уже готовые исходники Dillo 2 Сид не хотел выкладывать, пока кто-нибудь не сделал бы проекту денежное пожертвование. Но теперь исходники уже доступны. К слову о пожертвованиях: на сайте проекта есть страничка «Donate», где можно осуществить денежный перевод через PayPal. Но поскольку Dillo не поддерживает защищенное соединение (HTTPS), механизм пожертвований через сам Dillo не работает, и создатели сайта просят зайти на страничку каким-нибудь другим браузером.
Среди основных целей существования и разработки Dillo заявлена «демократизация доступа к интернету». Понимать это следует как запуск на старых или слабых компьютерах программного обеспечения с современными возможностями. Вот, наверное, еще одна причина, по которой программисты Dillo так долго держались за устаревшую первую версию GTK+. Надо полагать, запуск программ на основе Qt или GTK+2 не входит в демократические рамки, поэтому вторую версию Dillo завязали на совершенно другом краеугольном камне. Какую же библиотеку выбрали разработчики? Fox toolkit? Нет! FLTK, причем нестабильной ветки 2.
FLTK (читается как «фуллтик») работает на всех популярных платформах и, кроме виджетов, предоставляет средства вывода графики через OpenGL. Прежний Dillo был написан на C, а FLTK 2 — на С++. В результате, код Dillo 2 представляет собой смесь из файлов, написанных на чистом C и С++. Свидетельствует ли это, что портирование «старого» Dillo в новую ветку находится на промежуточном этапе, или C-код останется в основной ветке, как есть? Не знаю. Для пользователя такой подход не создает видимых помех.
Знакомство с браузером
Устанавливается Dillo без ритуального танца с бубном. Я подразумеваю установку из исходников, ибо в хранилищах пакетов можно найти, как правило, только Dillo 1. Хотя на сайте Dillo есть готовые пакеты Dillo 2 для Debian (Etch и Lenny, под архитектуры i386 и amd64) и Openmoko. Также вам придется установить FLTK2 и, вероятно, тоже из исходников.
Первое, на что обращаешь внимание при запуске Dillo, — это скорость. И самого запуска, и отображения страниц. Даже если сравнивать с Firefox (с включенной обрезкой рекламы и без Flash), Dillo показывает страницы быстрее. Вот любопытное сравнение потребления памяти:
- Dillo 2.0.1, открыто несколько страниц: 2156 килобайт;
- Opera 9.62, открыто ноль страниц: 16672 килобайт;
- Firefox 3.0.5, ноль страниц, установлено около десятка дополнений: 36488 килобайт.
Однако для работы своих плагинов (закладки, браузер локальной файловой системы, поддержка cookies) Dillo запускает в отдельном процессе целый сервер (dpid). После выхода из Dillo сервер и плагины (с расширением dpi, подгружаются в зависимости от используемых вами функций браузера) остаются в памяти. Архитектура такова: сервер представляет собой посредника между плагинами и запущенными экземплярами Dillo. Что мешает завершать сервер, когда последний экземпляр Dillo закрылся, непонятно. Для ручной остановки сервера после завершения работы Dillo надо дать команду:
$ dpidc stop
Интерфейс у Dillo — привычный, «табовый». Вот только корешки вкладок помещаются выше главного меню, сразу под заголовком окна. Кнопок для закрытия вкладок нет. Можно использовать либо пункт меню File -> Close, либо нажимать Ctrl-Q. Стало быть, одной только мышью быстро закрыть страницу не получится, если только она не открыта в отдельном окне. «Главное меню» на деле состоит из единственного пункта — File.
Еще у Dillo есть контекстное меню, вызываемое вполне традиционно нажатием правой кнопки мыши. В нем можно найти пару любопытных пунктов, которых нет в других браузерах. Во-первых, кроме привычного Bookmark this page, можно сделать закладку на изображение — Bookmark this image. Картинку можно также изолировать от текста (пункт Isolate), а еще открыть в новом окне или вкладке (Open Image In New Tab/Window). Поиск по тексту тоже вызывается из контекстного меню, хотя намного быстрее это делается по Ctrl-F. Конечно же, строка поиска — никаких лишних окон.
В Dillo вообще нет вспомогательных окон, если не считать просмотрщик исходника страницы (либо ошибок) и диалогового окна выбора файла. Все настройки браузера осуществляются либо через графический интерфейс прямо на экране (настроек, прямо скажем, мало), либо посредством правки файла настроек (dillorc).
Справа от адресной строки расположена кнопка с изображением лупы. Правый щелчок мыши по ней переключает внешний вид панели, на которой расположена сама строка, кнопки и меню. Пользуясь Dillo, всегда следует помнить о скрытых возможностях, предоставляемых правой, а то и средней кнопкой мыши. Так, щелчок по ссылке средней кнопкой (или колесиком) открывает ссылку в новой вкладке, а не в новом окне.
В Dillo есть кнопка отключения картинок — ее переключение действует после загрузки новой страницы. Мгновенного результата для текущей, уже загруженной, страницы нет. Эта кнопка прячется в нижнем правом углу окна Dillo, рядом с другой мелкой кнопкой, на которой изображена галочка. Если страница содержит ошибки разметки, то на кнопке вместо галочки — красная божья коровка и количество ошибок. Щелчок по ней вызывает к жизни окно со списком ошибок. Страницы, верные с точки зрения W3C, благородны и для Dillo. Проверку можно даже ужесточить, прописав в файле настроек строку:
w3c_plus_heuristics=NO
Некоторые возможности
Если в других браузерах цвет страницы по умолчанию — белый, то в Dillo — «кофе с молоком», причем молока там гораздо больше, чем кофе. Этот и другие цвета для элементов страницы (включая виджеты форм) можно переопределять в секции COLORS упомянутого выше dillorc. Но цвета и картинки в браузере — не самое главное. Как быть с поддержкой разных технологий и протоколов? Обычный http — пожалуйста. Но вот https, который используется, например, для доступа к Gmail, в Dillo по умолчанию отключен, а его поддержка находится в альфа-стадии, и для ее включения разработчики дают совет удалить строку номер 72 из файла dpi/https.c, а затем пересобрать браузер. А более правильный способ таков:
- Настройте исходник Dillo, передав configure параметр enable-ssl:
$ ./configure --enable-ssl
- В dpi/https.c вместо строки #undef ENABLE_SSL напишите #define ENABLE_SSL.
- Пересоберите Dillo.
Движка для поддержки JavaScript в браузере попросту нет. И, в отличие от Elinks, внешний движок не подключается. Об обычной Java, а также Flash я и говорить не буду — не о чем рассказывать. Сайты с фреймами Dillo отображает так: показывается пустая страница со списком фреймов, и вы должны выбрать, какой из них показывать. CSS вообще не поддерживается.
Cookies по умолчанию выключены. Чтобы они работали, надо в файле ./dillo/cookiesrc поменять строку DEFAULT DENY на DEFAULT ACCEPT, либо, оставив ее, разрешать прием cookies отдельно для каждого сайта, примерно так:
foo.bar.org ACCEPT
В Dillo отсутствует и полноценная история посещенных страниц и кэш. Вернее, кэш всё же существует — только временный, для загруженных в текущей сессии картинок, и находится он в оперативной памяти, а в каталогах ./dillo и временном я никаких признаков сохраненных данных не обнаружил. Истории нет как в виде «календаря» со списком страниц, так и в качестве автоматического дополнения в адресной строке. Хотя казалось бы, это не так трудно сделать и такая функция важнее, чем показ исходника страницы во внутреннем виджете или счетчик ошибок. Список посещенных страниц доступен разве что по правому щелчку на кнопках навигации Back и Forward.
Dillo поддерживает протокол file, так что если набрать в адресной строке «file:» и нажать Enter, вы попадете в список файлов вашего домашнего каталога. Т.е. Dillo можно использовать в качестве простого просмотрщика локальных HTML-документов и картинок — правда, без возможности масштабировать последние. Кстати, браузер умеет открывать файлы, сжатые с gzip. Речь идет о единичных файлах с расширением gz, а не о «вхождении» в ZIP-архивы с внутренней структурой каталогов.
Для скачивания файлов Dillo использует wget. Диалог выбора места сохранения не отличается удобством: при смене в нем каталога содержимое поля с именем файла заменяется на имя текущего каталога. То бишь при желании сохранить файл где-либо вне каталога, который Dillo предлагает по умолчанию, имя файла вам придется набирать вручную.
В Dillo 1 поддержка кодировок была слабым местом. Dillo 2 в этом плане отображает страницы правильно — во всяком случае страницы на русском языке читать можно. Жители стран бывшего СССР вне России обычно не могут достучаться до сайтов, расположенных на бесплатном хостинге by.ru, получая в ответ страницу «403. Доступ закрыт». Однако Dillo каким-то образом обходит это ограничение и показывает сайты на by.ru вне зависимости от того, где находится пользователь. Ни один другой браузер, которые я пробовал, на такое чудо не способен.
Итоги
В настоящее время Dillo очень интересен с технической точки зрения. Проект живой, развивается, позволяет себе не идти на поводу у стандартов в оформлении и поведении. Это хорошо.
С практической же точки зрения есть множество браузеров, которые дают больше функций и сопоставимы по скромности потребления ресурсов. Возьмем, к примеру, NetFront, довольно часто встречающийся в мобильных телефонах (и даже не смартфонах). Он требует 2 мегабайта оперативной памяти и при этом поддерживает CSS, JavaScript и защищенные соединения. Или другой пример — Opera Mini. Браузер написан на Java, jar-архив для установки в мобильный телефон занимает чуть больше ста килобайт.
Сейчас трудно говорить, какую нишу может занять Dillo. Без поддержки защищенного соединения, JavaScript и кэша посещенных страниц Dillo выглядит средством для быстрого просмотра нехитрых сайтов. Москва тоже не сразу строилась, но чем быстрее у Dillo появятся нужные пользователям возможности, тем больше у него будет аудитория. Поживем — увидим.
-
Популярные в этом разделе:
- «Обзор системы фильтрации спама rspamd: возможности, конфигурация, работа»,
- «Защищаем себя средствами GnuPG»,
- «Своё интернет-радио с Icecast».
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1