Пользователей Firefox осталось не так, чтобы очень много, но они ещё есть, так что, думаю, кому-то мой пост да пригодится. В общем, в чем суть: допёкло меня окончательно контекстное меню браузера, которое обрастает от патча к патчу совершенно ненужными пунктами меню. Дошло уже до того, что нужную строку приходится выискивать в этом хаотическом нагромождении. Вообще, изменения дизайна браузера мне нравятся всё меньше и меньше (старею, видимо), но если по части общего внешнего вида помогает Firefox-UI-Fix, то с контекстным меню пришлось решение искать самостоятельно, так как все старые дополнения, позволяющие настроить браузер через интерфейс давно не работают.
Между тем, в браузере сохранилась возможность многое, что касается внешнего вида, настроить через userChrome.css. Если решите загуглить, то найдёте много интересного про него, здесь оставлю самую суть, описанную в заголовке.
Для начала, поддержку этого файла надо включить. Делается это через about:config - просто вводите указанное "словосочетание" в адресную строку браузера, соглашаетесь с предупреждением о возможном коллапсе планеты в чёрную дыру и далее в окне поиска открывшейся странице вбиваете "toolkit.legacyUserProfileCustomizations.stylesheets". указанному параметру нужно присвоить статус True (просто делаем двойной щелчок по строке).
Следующий этап - таким же макаром зайти в about:support. Здесь в группе "Сведения о приложении" есть пункт "Папка профиля" и кнопка "Открыть папку" напротив него. Открываем и далее действуем через файловый менеджер (в моем случае проводник). В этом каталоге нужно создать папку Chrome (если её ещё нет), а в созданной папке файлик с названием userChrome.css. В данном файле, как я уже сказал, можно переписать множество деталей интерфейса, сменить стиль и т.п., но меня интересует именно меню.
Я для себя сформировал такие настройки, которые честно позаимствовал где-то на просторах интернета (сразу скажу, что разделять пункты на два блока вовсе не обязательно, можно прописать всё вместе, разделение используется только для наглядности)
#context-sep-selectall,#context-sep-viewsource-commands,#context-sep-navigation,#context-inspect-a11y,#context-sep-navigation,#context-savepage,#context-pocket,#context-sendpagetodevice,#context-sep-sendpagetodevice,#context-selectall,#context-print-selection,#context-take-screenshot,#context-viewsource { display: none; }
#context-stripOnShareLink,#context-sep-open,#context-sep-navigation,#context-openlinkprivate,#context-openlinkinusercontext-menu,#context-openlinkincontainertab,#context_reopenInContainer,#context-bookmarklink,#context-savelink,#context-savelinktopocket,#context-sendlinktodevice { display: none; }
Для ленивых просто вставляем оба куска кода в файл, сохраняем и перезагружаем браузер.
Теперь для не ленивых. Каким образом понять что мы делаем и как допилить меню под свои задачи? Базовая функция указанного выше кода - скрыть те пункты, которые нам не нужны. При желании, вы можете исключить из него нужные вам или, наоборот, добавить что-то своё. Как это сделать? Нам нужны названия нужных пунктов. Для их получения есть два варианта: просто загуглить, либо же попробовать почувствовать себя хацкером и получить их самостоятельно штатными средствами браузера.
В Firefox для этого есть довольно интересный инструмент - средства разработчика. В базовой версии он позволяет исследовать код сайтов, экспериментировать с их стилями, заниматься отладкой и т.п. Но можно таким же образом наглядно изучать структуру самого браузера. Только эта опция по умолчанию отключена. Чтобы её включить, нажимаем Ctrl + Shift + I, затем в открывшейся панели заходим в её настройки (проще всего просто нажать F1). Нам нужно отметить галочкой два пункта: "Включить инструменты отладки browser chrome и дополнений" и "Включить удалённую отладку".
Наконец, мы можем запустить инструменты в режиме отладки браузера через сочетание Ctrl + Shift + Alt + I. Разрешаем входящее соединение в появившемся предупреждении и наблюдаем окно "Инструменты родительского процесса браузера". Нас здесь интересует такой инструмент, как выбор элемента со странице (надо нажимать мышкой, подписанный шорткат ctrl+shift+C работать в нашем случае не будет).
Теперь, водя курсором по элементам браузера, мы видим служебную информацию по ним, а сделав щелчок мышью, откроем в инспекторе строку с их кодом. Честно сказать, я не уверен, что смогу кратко объяснить все нюансы работы с "отладчиком". Если вы используете его для изучения кода сайтов, то и так всё понимаете, если нет... ну тогда, наверное, проще всего будет изучить методом "тыка". Для нас же, напомню, важно контекстное меню. Чтобы изучить его пункты, нужно в режиме выбора элемента нажать ПКМ, чтобы вывести контекстное меню и начать елозить по пунктам. Отображаться всё будет как обычно, только теперь у вас появится служебная информация.
В этом месте имеется баг: в других случаях служебная информация, содержащая в том числе название элемента (а это как раз то, ради чего мы всё и затеяли) отображается перед ним, но у контекстного меню жестко зашито положение "слоя" выше всех остальных, в результате чего название прячется за самим меню и его названия не видно.
Но если мы кликнем по этому пункту меню в режиме изучения, то вместо нужного действия браузера, у нас в инспекторе выберется строка с кодом этого пункта. Например, если мы в контекстном меню изображения (ПКМ по любой картинке) выберем таким образом пункт "Скопировать ссылку на изображение", то в инспекторе нас перенесёт на эту строку следующего содержания:
<menuitem xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" id="context-copyimage" data-l10n-id="main-context-menu-image-copy-link" oncommand="gContextMenu.copyMediaLocation();" label="Копировать ссылку на изображение" accesskey="б"><label class="menu-text" crop="end" aria-hidden="true" value="Копировать ссылку на изображение" accesskey="б"/><hbox class="menu-accel-container" aria-hidden="true"><label class="menu-accel"/></hbox></menuitem>
Видите в этом коде id="context-copyimage? Вот в нём как раз и содержится название пункта нужного нам. То есть, context-copyimage. Копируем его и прописываем в userChrome.css также, как в моём образце, то есть добавляем к названию решётку. Главное сохраняйте структуру стиля в файле: параметр display: none должен идти после перечисления пунктов, так это, собственно, и есть команда на сокрытие пункта. К примеру, если нам нужно удалить только вышеуказанный пункт, то код должен выглядеть таким образом:
#context-copyimage { display: none; }
В дополнение ещё один хинт. Разделители (полоски между группами пунктов) тоже имеют свой уникальный id и их тоже можно скрыть. Нужно это хотя бы для того, что при массовом геноциде пунктов, у вас в меню образуются группировки этих разделителей (когда их будет идти сразу подряд 2-3 штуки, а между ними ничего не будет, так как пункты скрыты).
Опять сохраняем userChrome.css, перезагружаем браузер. Наслаждаемся результатом.