Uzbl — web-браузер следующий unix-философии — «Пишите программы, делающие одну вещь, но делающие её хорошо». Официальный сайт: uzbl.org
Как устанавливать Uzbl в вашем дистрибутиве, вам уже должно быть известно лучше. Я ставил его в Ubuntu 9.10 из соответствующего PPA-репозитория. Запускается он с помощью команд uzbl-core или uzbl-browser.
После запуска uzbl вы не увидите всякие привычные виджеты типа кнопок «Вперёд» и «Назад». Доступна только строка статуса, да и то не факт что она не будет отключена в вашей конфигурации. Управление осуществляется с помощью множества горячих клавиш.
uzbl-core/uzbl-browser показывает только одну страницу и это лучшее решение. Оно даёт простоту реализации и делает браузер более безопасным.
Просмотр нескольких страниц можно разрешить разными способами:
-
на уровне оконного менеджера:
- разбросать окна по рабочим столам: почти любая графическая среда и оконный менеджер
- сгруппировать окна с помощью какой-нибудь фичи оконного менеджера (табы, мозайка, группировка в панели задач): fluxbox, kwin, pekwm и всякие tiled-wm
- …
-
на уровне приложения:
- с помощью сторонних приложений запускать uzbl в «контейнерах»: uzbl-tabbed, uzbltreetab, uzbltab, suckless tabbed
Далее, чтобы узнать какие комбинации клавиш существуют, читайте README, смотрите примеры конфигурационных файлов (у меня они нашлись в /usr/share/uzbl/examples/config/uzbl/).
Управление браузером можно осуществлять с помощью механизмов FIFO и SOCKET. Далее я покажу на примере применение FIFO.
Uzbl зависит от GTK, так как это требуется webkit’ом. Хотя используется и в некоторых других местах, но они не настолько значимы. Webkit даёт поддержку различных плагинов, javascript, стандартов html/css и многого другого.
Настройка uzbl
Уже давно считается нормой графический интерфейс с вкладками. По умолчанию с uzbl шёл uzbl-tabbed. Мне не понравились его стандартные настройки и настроить по своему не получалось. Недавно удалось чуть-чуть поработать с оконным менеджером pekwm, одной из интереснейших фич которого является группировка окон с переключением через вкладки в заголовке. В ~/.pekwm/autoproperties добавляем новую секцию:
Property = "^[uU]zbl.*,.*" { Group = "uzblgrp" { Size = "0" } ApplyOn = "New Start Reload Transient" }
Для дальнейшей настройки самого uzbl в ~/.config/uzbl/ были скопированы примеры конфигов из /usr/share/uzbl/examples/config/uzbl/.
Мне с самого начала не нравились стандартные комбинации клавиш такие как переход вперёд/назад, остановка загрузки страницы и обновление. Чтобы исправить такое положение в конфиг записал свои привязки:
@cbind <Alt><Left> = back @cbind <Alt><Right> = forward @cbind <Escape> = stop @cbind <F5> = reload @cbind <Up> = scroll vertical -20 @cbind <Down> = scroll vertical 20
Для быстрого доступа к любимым поисковикам и википедии сделал похожие на приведённые выше привязки горячих клавиш:
# --- Web searching binds --- @cbind gg<Google:>_ = uri http://www.google.com/search?q=%s @cbind wr<Wikipedia(ru):>_ = uri http://ru.wikipedia.org/w/index.php?title=Служебная:Search&search=%s @cbind we<Wikipedia(en):>_ = uri http://en.wikipedia.org/w/index.php?title=Special:Search&search=%s&go=Go @cbind nn<Nigma:>_ = uri http://nigma.ru/index.php?s=%s
Теперь как только два раза нажму клавишу «G» в строке состояния вместо адреса появится «Google:» и uzbl будет ождать ввода строки для поискового запроса. Аналогично работает переход к любой другой странице по нажатию на клавишу «O»
# --- Uri opening prompts --- @cbind o<uri:>_ = uri %s
Так как uzbl придерживается философии UNIX-way, то загружать файлы из инета он не умеет. С этим же могут гораздо лучше справиться специальные программы, как например, wget. В ~/.config/uzbl/scripts/download.sh уже лежит скрипт загрузки, но он не даёт возможности сохранить в любой каталог на выбор. Я его заменил на свой:
#!/bin/sh GET="wget" URL="$8" FILENAME=$(echo $URL | awk -F'/' '{print $NF}') DEST=$(zenity --file-selection --save --filename="$FILENAME" --title=Сохранение\ файла) if [ -n "$DEST" ] then wget -O "$DEST" "$URL" fi
С помощью zenity сначала покажем диалог сохранения файлов, а потом wget’ом загрузим туда файл по ссылке из браузера. За получение скриптов из домашнего каталога отвечает:
set scripts_dir = ~/.config/uzbl/scripts
Ещё была замечена проблема с ручным выбором кодировки. В uzbl есть переменная дефолтной кодировки и есть возможность управления через FIFO. В конфиг попала такая строчка:
@cbind !code _ = sh "echo 'set default_encoding = %s' > $4; echo 'reload' > $4"
Например, по вводу команды «!code UTF-8» будет установлено значение «UTF-8» в переменную «default_encoding» и командой «reload» обновлена страница. Обратите внимание на %s — строку идущую за командой, из которой ожидаем получить название кодировки и $4 — указатель на FIFO-файл.
В FAQ на сайте uzbl мне очень понравился последний вопрос и ответ:
Q: Вы действительно считаете всё это дружелюбным к пользователю?
A: Да. Если вы не согласны, не пользуйтесь этим 🙂
А что ничего не сказал про движок рендеринга страниц?
P.S. Возможно и сказал, просто я прочитал не всё =\