В последних версиях Gnome появилось довольно назойливое окно переключения прокси серверов и это стало весьма напрягать при включении и отключении моего прокси, к тому же на сколько я помню в опере имелась кнопочка отключить картинки или иногда хочется отключить анимацию GIF. Разумеется для всего этого есть различные расширения но суть этих расширений сводится к изменению одной или двух внутренних для Firefox переменных и я не вижу особого смысла в их установке
Покопавшись во внутренностях Firefox я выяснил, что он как большое вебприложение и состоит их XML и JS, то-есть, при желании, его можно подстроить под себя, к тому же код этого приложения удивительно легко читается, можно сказать, что все примеры находятся прямо в самом Firefox
Итак, задача добавить в меню "Инструменты" кнопку включающую и выключающую прокси
Как известно настройками прокси управляет переменная network.proxy.type. При значении 0 прокси не используется, а при значении 5 используется сервер заданный в настройках рабочего стола, это легко увидеть меняя настройки и глядя на закладку about:config.
То-есть Я должен добавить меню с функцией которая изменяет значение этой переменной. Итак, нужно отредактировать всего два файла
sudo vim /usr/lib/firefox-3.6.3/chrome/browser.jar
в полученном списке файлов выбираем файл content/browser/browser.xul находим раздел подменю id="tools-menu" и добавляем туда новый пункт меню "Switch proxy" (вставка должна соответствовать стандартам XML)
<menuseparator id="imageprefs"/>
<menuitem id="menu_switchproxy" label="Switch proxy" oncommand="switch_proxy()"/>
сохраняем и переходим в конец файла content/browser/browser.js и добавляем туда функцию
function switch_proxy(){
if (gPrefService.getIntPref("network.proxy.type") == 5) {
gPrefService.setIntPref("network.proxy.type", 0);
}else{
gPrefService.setIntPref("network.proxy.type", 5);
}
}
Сохраняем файл (если редактировать через vim то нет нужны запариваться с обновлением jar архива) и перезапускаем Firefox. У меня всё работает. Таким же образом можно сделать переключатель управляеющий анимацией и автоматической закачкой картинок, для этого необходимо обрабатывать переменные:
image.animation_mode -- true-включение анимации, false-выключение
permissions.default.image -- 1-закачивать картинки, 2-не закачивать