в скрипте Save
Там же не одна иконка, в меню ещё много...
Для панели можно так заменить в Save.js self.image = ...
self.image = ((img = `${_id.toLowerCase()}-img`) => { Services.io.getProtocolHandler("resource") .QueryInterface(Ci.nsIResProtocolHandler) .setSubstitution(img, Services.io.newURI("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'><path style='fill:none;stroke:context-fill rgb(142, 142, 152);stroke-opacity:context-fill-opacity;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round;' d='M3 .6C1.6.6.6 1.6.6 3v10c0 1.4 1 2.4 2.4 2.4h10c1.4 0 2.4-1 2.4-2.4V4.84L11.2.602Zm5.4 5.8h2V1m-2 0v5.4H7L5.6 5V1m-2 14v-2.6l1-1h6.8l1 1V15'/></svg>")); return `resource://${img}`; })();
она какаято тусклая
А где используете? Так просто она не заработает через протокол data: нужно регистрировать resource:// как в кнопках в теме UCF
либо включить настройку svg.context-properties.content.enabled = true
Но лучше просто положить файл svg где нибудь в директории например user_chrome_files/custom_styles/svg
и подключить в css
Вот эта пойдет?
Норм
[spoiler][code]data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'><path style='fill:context-fill rgb(142, 142, 152);fill-opacity:context-fill-opacity;' d='M1 0 0 1l2.2 3.081a1 1 0 0 0 .815.419h.07a1 1 0 0 1 .708.293l2.675 2.675-2.617 2.654A3.003 3.003 0 0 0 0 13a3 3 0 1 0 5.878-.851l2.654-2.617.968.968-.305.914a1 1 0 0 0 .242 1.023l3.356 3.356a1 1 0 0 0 1.414 0l1.586-1.586a1 1 0 0 0 0-1.414l-3.356-3.356a1 1 0 0 0-1.023-.242L10.5 9.5l-.96-.96 2.68-2.643A3.005 3.005 0 0 0 16 3q0-.405-.102-.777l-2.14 2.141L12 4l-.364-1.757L13.777.102a3 3 0 0 0-3.675 3.68L7.462 6.46 4.793 3.793a1 1 0 0 1-.293-.707v-.071a1 1 0 0 0-.419-.814zm9.646 10.646a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708M3 11l.471.242.529.026.287.445.445.287.026.529L5 13l-.242.471-.026.529-.445.287-.287.445-.529.026L3 15l-.471-.242L2 14.732l-.287-.445L1.268 14l-.026-.529L1 13l.242-.471.026-.529.44
сделайте пожалуйста вот этот svg-фаил для кнопки ucf-open-about-config
Этот файл плохо подходит, много мелких деталей совсем неразличимы в разрешении 16x16 px, надо что то вроде этого
data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'><path style='fill:none;stroke:context-fill rgb(142, 142, 152);stroke-opacity:context-fill-opacity;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round;' d='M15 3c1.4-1.4-.6-3.4-2-2L7 7s-3.6-1.4-5.5.5S1 12 1 12l2-2c2-2 5 1 3 3l-2 2s2.6 1.4 4.5-.5S9 9 9 9Z'/></svg>
А с about:cfg
Надо было выложить сам about:cfg полностью, а то ссылки недействительны кроме https://forum.mozilla-russia.org/viewto … 48#p806748
а там нет папки locale.
Вариант как и было с окном about:cfg
[spoiler][code](async (
id = "ucf-open-old-about-config",
label = "about:config",
tooltiptext = "ЛКМ: Открыть about:config\nCtrl+ЛКМ: Искать выделенное / буфер в about:config\nПКМ: Открыть окно about:cfg\nCtrl+ПКМ: Искать выделенное / буфер в окне about:cfg",
img = "data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'><g style='fill:none;stroke:context-fill rgb(142, 142, 152);stroke-opacity:context-fill-opacity;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round;'><path d='m 8.66,15.4 h -1.2 c -0.69,0 -1.3,-0.5 -1.5,-1.2 L 5.58,13 C 5.32,12.9 5.07,12.7 4.82,12.5 L 3.41,12.9 C 2.76,13 2.04,12.8 1.69,12.1 L 1.09,11.2 C 0.748,10.5 0.838,9.75 1.31,9.33 l 1,-1
Можно еще пару кнопок обновить
[spoiler][code]//about_config..........................................
(async (
id = "ucf-open-about-config",
label = "about:config",
tooltiptext = "ЛКМ: Открыть about:config\nСКМ: Искать выделенное в about:config\nПКМ: Открыть about:about",
img = "data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'><g style='fill:none;stroke:context-fill rgb(142, 142, 152);stroke-opacity:context-fill-opacity;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round;'><path d='m 8.66,15.4 h -1.2 c -0.69,0 -1.3,-0.5 -1.5,-1.2 L 5.58,13 C 5.32,12.9 5.07,12.7 4.82,12.5 L 3.41,12.9 C 2.76,13 2.04,12.8 1.69,12.1 L 1.09,11.2 C 0.748,10.5 0.838,9.75 1.31,9.33 l 1,-1 V 7.52 L 1.32,6.55 C 0.842,6.06 0.748,5.36 1.1,4.78 L 1.7,3.8 C 2.04,3.22 2.75,2.93 3.4,3.08 L 4.84,3.4 C 5.1,3.24 5.34,3.1 5.58,2.99 L 5.96,1.72 C 6.16,1.08 6.77,0.631 7.46,0.629 h 1.2 C 9.35,0.629 9.94,1.
egorsemenov06
[spoiler][code]//Ссылки кликабельны
(async (
id = "ucf-text-to-link",
label = "Текст URL в кликабельные ссылки",
tooltiptext = "Превратить текст URL в кликабельные ссылки",
img = "data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'><path style='fill:none;stroke:context-fill rgb(142, 142, 152);stroke-opacity:context-fill-opacity;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round;' d='m5.6 10.4 4.8-4.8m-8.9 4.9c-2.6 2.6 1.4 6.6 4 4l1-1c2.6-2.6-1.4-6.6-4-4zm9-9c2.6-2.6 6.6 1.4 4 4l-1 1c-2.6 2.6-6.6-1.4-4-4z'/></svg>",
texttolink = {
_registerActor() {
if (this.registerActor) return;
ChromeUtils.registerWindowActor("UcfTextToLinkActor", {
child: {
esModuleURI: "chrome://user_chrome_files/content/custom_scripts/UcfTextToLinkActorChild.mjs"
},
allFrames: true,
mess
Можно их как-то вытащить в отдельные скрипты в ucf?
Ну хорошо, только сначала нужно обновить UCF, незначительное обновление добавлен модуль ExtensionParent, может пригодится и для других скриптов.
Upd: + файл настроек CustomStylesScripts.mjs вынесен в корень user_chrome_files
[spoiler][code](async (
id = "ucf-aom-button",
label = "Дополнения",
tooltiptext = "ЛКМ: Меню дополнений\nСКМ: Отладка дополнений\nПКМ: Открыть менеджер дополнений",
img = "data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'><path style='fill:none;stroke:context-fill rgb(39, 174, 129);stroke-opacity:context-fill-opacity;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round;' d='M12.9 15.3H3.2c-.88 0-1.6-.6-1.6-1.4v-2.7c0-.4.33-.6.74-.6h1.72c.7 0 1.25-.64 1.25-1.2 0-.64-.55-1.15-1.25-1.15H2.34c
Я так переделал, и всё работает
Нет я же написал это не пойдет, открой второе окно и понажимай там пункт, перезагружаться будет в первом окне
Кнопка не видит функции
Ну с cmd.toString() это не представляется возможным,
попробуй может заменить
item.setAttribute("oncommand", cmd.toString().replace(
/cmd\(.*?\){/, "{var trg = event.target || event;"));
на
item.addEventListener("command", cmd);
Upd: нет так не пойдет в другом окне работать не будет,
зачем вообще в оконном скрипте делать CustomizableUI.createWidget ...
Вот если немного переделать для custom_script.js
[spoiler][code](async id => { // UserMenu
var BrowserReloadEx = (win, skip) =>{ // ошибка –> Uncaught ReferenceError is not defined
if(parseInt(Services.appinfo.version) < 126)
skip ? win.BrowserReloadSkipCache() : win.BrowserReload();
else
skip ? win.BrowserCommands.reloadSkipCache() : win.BrowserCommands.reload();
};
var G = {
v: "permissions.default.image",
Pref(key,set){key = [key];
var t = Services.prefs.getPrefType(key[0]), m = {b:"Bool",n:"I
я выше писал об этом
Видел но у меня [nightly][linux][windows] не падает, скорее всего баг [nightly],
я так понял у вас не работает с параметром centerscreen
попробуйте заменить
let features = ...;
на
let features = "chrome,dialog=no,resizable,centerscreen";
а потом так например
let features = "chrome,dialog=no,resizable,screenX=10,screenY=10";
И удалить xulstore.json
Vitaliy V.
Можете этот скрипт для [nightly] переделать, не работает.
Это тоже с BrowserCommands связано, добавил совместимость с [nightly]
Я что то пропустил, что за настройка?
Наверняка знаете давно сделали toolkit.legacyUserProfileCustomizations.stylesheets не помню с какой версии
Dobrov
ES модули и background скрипты загруженные в песочницу не одно и тоже, в песочнице globalThis не равно Cu.getGlobalForObject(Cu)
а UcfPrefs.customSandbox дает ссылку именно на песочницу, надеюсь теперь понятно
самое логичное место для одиночного файла пользовательских настроек (CustomStylesScripts.mjs) это корень user_chrome_files
Да возможно так и сделаю это уже мелочи, в принципе и сами можете в двух местах пути подправить в user_chrome.js и StylesScriptsChild.mjs
сделать автозагрузку скриптов
Нет этого делать не буду, это может задерживать запуск [firefox] не случайно же даже для userChrome.css userContent.css сделали настройку чтобы не искать файлы в директории
Или не автозагрузку, а кнопку/окно с меню лежащих в папках скриптов. Закинул в папку скрипт и включил галку в браузере
Я не любитель gui там где это не к чему, не потому что это сложно сделать, хотя и это тоже это вам не userChromeJS (или как там называется) где одинаковые оконные скрипты по одному событию загружаются и все. Так что кому нужны gui, автозакрузки ищите замену если найдете
…идея была в том, чтобы вырезать весь интерналс в отдельную папку.
...
А рядом с этой пользовательской папкой user_chrome_files
другая — (условно) user_chrome_files_internal
Т.е. в папке chrome две папки UserChromeFiles ? По моему это излишне...
А так почти все что обновляется и так в одной папке user_chrome,
вот только user_chrome.manifest и папка locales двойного назначения, юзер может редактировать или добавлять файлы локали,
а и ещё остались custom_script_win.js custom_script_all_win.js но они тоже редко обновляются или можно вообще убрать их в следующем обновлении UCF ?
BrowserOpenTab() и BrowserOpenFileWindow()
которых в 126 уже нет.
BrowserOpenAddonsMgr()
Спс, исправил.
В новой версии можно проще общие объекты подключать к UCF вместо браузера?
Например из поста №1440
эту часть кода
Cu.getGlobalForObject(
Cc["@mozilla.org/network/protocol/a
если будет обновление UCF, то заодно,
возможно, стоит рассмотреть добавить.Вот есть scope.UcfPrefs = UcfPrefs;
а рядом, наоборот, что-то типа UcfPrefs.userbox = scope;
Обновил, добавил UcfPrefs.customSandbox, в случае если отключены в настройках фоновые скрипты
вызов UcfPrefs.customSandbox создает песочницу но при этом скрипты если подключены в CustomStylesScripts.mjs не загружаются.
Для всех:
В этом обновлении CustomStylesScriptsChild.mjs удалён, настройки из него перемещены в CustomStylesScripts.mjs см. Сontent Settings
и подчистил этот файл оставил там только то что нужно для редактирования.
вкладки снизу в несколько строк под #nav-bar -
можно сделать вкладки снизу без скрипта, только стилем, учитывая панель меню?
Не вижу такой возможности нет атрибутов в нужном месте или prefs, разве что панель меню ниже панели навигации, или постоянное автоскрытие панели меню, показать при наведении или Alt, F10.
Для вкладок в один ряд есть возможность сделать стилем.
что делает этот скрипт?
Подключил, но при поиске из строки адреса ничего не изменилось…
При клике ЛКМ по значкам поисковиков [firefox] по умолчанию входит в режим поиска данного поисковика, тут надо заметить что влияет настройка browser.search.openintab если true то страница поиска открывается в новой вкладке сразу после клика, но например на about:newtab поведение остается прежним. Скрипт делает везде чтобы поиск происходил сразу, а с зажатой клавишей Shift входил в режим поиска, т.е. делает наоборот раньше нужно было зажать Shift для немедленного поиска.
без тренарного оператора
Точно он там лишний это я машинально записал не задумываясь
вот для красоты кому надо можно так записать
(async ({UrlbarSearchOneOffs}) => { var orig = UrlbarSearchOneOffs.prototype.handleSearchCommand; UrlbarSearchOneOffs.prototype.handleSearchCommand = function handleSearchCommand() { var e = arguments[0]; Object.defineProperty(e, "shiftKey", { enumerable: true, configurable: true, writable: false, value: !e.shiftKey, }); return orig.apply(this, arguments); }; })(ChromeUtils.importESModule("resource:///modules/UrlbarSearchOneOffs.sys.mjs"));
b0ttle
вот такое придумалось, проверил на win 11 вроде проблем не наблюдается
:root { --v-titlebar-menubar-margin-inline-start: 50vw; } #titlebar { margin-bottom: calc(-1 * (2 * var(--tab-block-margin) + var(--tab-min-height))) !important; margin-inline-start: var(--v-titlebar-menubar-margin-inline-start) !important; z-index: 1 !important; #toolbar-menubar { position: relative !important; margin-inline-start: calc(-1 * var(--v-titlebar-menubar-margin-inline-start)) !important; } } #nav-bar { min-height: calc(2 * var(--tab-block-margin) + var(--tab-min-height)) !important; padding-inline-start: var(--v-main-menubar-min-width, 0) !important; margin-inline-end: calc(100vw - var(--v-titlebar-menubar-margin-inline-start)) !important; }
darex
но, возможно,
для решения исходной задачи, стоит искать какой-то совсем другой принцип.
Да тут же достаточно event.shiftKey изменить и все.
В custom_script.js
(async () => { var {UrlbarSearchOneOffs} = ChromeUtils.importESModule("resource:///modules/UrlbarSearchOneOffs.sys.mjs"); var orig = UrlbarSearchOneOffs.prototype.handleSearchCommand; UrlbarSearchOneOffs.prototype.handleSearchCommand = function() { Object.defineProperty(arguments[0], "shiftKey", { enumerable: true, configurable: true, writable: false, value: !arguments[0].shiftKey ? true : false, }); return orig.apply(this, arguments); } })();
6e73epo
чтобы стиль точно соответствовал я бы так записал, это не единственный вариант
egorsemenov06
[spoiler][code]/* Добавляет отображение названия браузера в строке меню */
#main-menubar::after {
display: flex;
content: attr(version);
height: 1.25em;
min-height: var(--v-main-menubar-min-height, 1.25em);
flex-direction: row;
align-items: center;
padding-inline
а со стилями вроде другое, у меня они в all
Ну если не заморачиваться можно и в all, однако я не подключаю много стилей в all documents, для всех это то и значит вообще всех при каждом открытии страницы сайта, фрейма все эти стили будут загружаться а если отсутствует @-moz-document url то и пытаться применится где не надо, потому они и не включены по умолчанию. Короче в all подключаю стили для сайтов и общие, те стили для интерфейса что работают в userChrome.css в chrome, для служебных страниц в CustomStylesScriptsChild.mjs
еще и этот стиль обновить
Да вроде нечего обновлять, у меня только оформленно по новому
[spoiler][code]@-moz-document url("chrome://browser/content/browser.xhtml") {
:root {
--v-main-menubar-min-height: 20px;
--v-main-menubar-min-width: 15px;
--v-main-menubar-color: rgb(255, 255, 255);
--v-main-menubar-background-color: rgb(0, 116, 232);
--v-main-menubar-background-color-hover: rgb(23, 139, 255);
--v-main-menubar-background-color-active: rgb(0, 89, 232);
&[uidensity="touch"] { /* мобильный режим */
--v-main-menubar-min-height: 26px;
--v-main-menubar-min-width: 21px;
}
}
#titlebar {
/* Классическое меню - показывать при наведении или при нажатии клавиши "Alt" --> */
& > #toolbar-menubar[autohide="true"] #main-menubar > menu {
appearance: none !important;
border: none !important;
border-radius: 0px !important;
background: var(--v-main-menubar-background-color) !important;