Dumby
Большое спасибо.
«The Truth Is Out There»
Отсутствует
Можно реанимировать?
// https://web.archive.org/web/20211130053336/https://forum.mozilla-russia.org/viewtopic.php?pid=785023#p785023 ... try {(() => { var id = "ucf-aom-button", label = "Дополнения", tooltiptext = "ЛКМ: Меню дополнений\nСКМ: Отладка дополнений\nПКМ: Открыть менеджер дополнений", img="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAt0lEQVR42mP4//8/AzK269D+zxDPAMYgNro8OsYUsGf4L5IrAMYgNskGPHrzkAHmAhCbZAPAglFAA6II2w5WC/ZzGEQDDMO9gCQGUmNYr4dhKANPBgdcAyEMMgSrAWA/R0H8jdcALN5iQHYWLABJMgBbABJjACiKweFHigHwgIW6Eux1UryA1QD0QISzsQQqVi+gKEBLfeguwhqIBEM5ihQD4rEoQHaBLwEDQOGBHKggNiyl4sreAEpLK4gRQN5TAAAAAElFTkSuQmCC", //img = "data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' height='16' width='16' viewBox='0 0 48 48'><g><rect x='0' y='0' width='48' height='48' rx='3' ry='3' style='fill:rgb(0, 120, 173);'/><path style='opacity:0.25;fill:black;' d='M 24,4.5 18,12 3,23.7 12,32.7 3.9,44.1 7.8,48 H 45 C 46.7,48 48,46.7 48,45 V 26.1 L 34.8,12.9 31.8,12.3 Z'/><path style='fill:white;' d='M 19.88,3 C 16.93,3 14.55,4.662 14.55,6.701 14.63,7.474 15.11,8.438 15.37,8.762 16.59,10.41 16.59,11.44 16.29,12.06 H 6.299 C 4.476,12.06 3,13.53 3,15.35 V 23.68 C 3.625,24 4.65,24 6.299,22.77 6.625,22.52 7.587,22.02 8.363,21.94 10.4,21.94 12.06,24.35 12.06,27.29 12.06,30.24 10.4,32.65 8.363,32.65 7.725,32.63 6.774,32.07 6.299,31.82 4.65,30.59 3.625,30.59 3,30.91 V 41.71 C 3,43.53 4.476,45 6.299,45 H 19.58 C 19.88,44.38 19.88,43.35 18.65,41.71 18.4,41.38 17.91,40.42 17.82,39.65 17.82,37.6 20.23,35.94 23.18,35.94 26.14,35.94 28.55,37.6 28.55,39.65 28.53,40.28 27.97,41.23 27.71,41.71 26.47,43.35 26.47,44.38 26.79,45 H 32.65 C 34.47,45 35.96,43.53 35.96,41.71 V 32.55 C 36.56,32.23 37.59,32.23 39.23,33.47 39.72,33.73 40.68,34.29 41.29,34.29 43.35,34.29 45,31.91 45,28.94 45,25.99 43.35,23.59 41.29,23.59 40.54,23.67 39.58,24.17 39.23,24.41 37.59,25.65 36.56,25.65 35.96,25.33 V 15.35 C 35.96,13.53 34.47,12.06 32.65,12.06 H 23.49 C 23.19,11.44 23.19,10.41 24.41,8.762 24.66,8.287 25.22,7.337 25.23,6.713 25.23,4.662 22.85,3 19.88,3' /></g></svg>", checked = "data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' height='16' width='16'><path d='M 3,7 7,11 13,5' style='fill:none;stroke:white;stroke-width:1;'/></svg>", show_version = false, show_description = true, user_permissions = true, show_hidden = true, show_disabled = true, enabled_first = true, exceptions_listset = new Set([ ]), exceptions_type_listset = new Set([ ]); if (!("AddonManager" in this)) ChromeUtils.defineModuleGetter(this, "AddonManager", "resource://gre/modules/AddonManager.jsm"); if (!("GlobalManager" in this)) XPCOMUtils.defineLazyGetter(this, "GlobalManager", () => { const { GlobalManager } = ChromeUtils.import("resource://gre/modules/Extension.jsm", null); return GlobalManager; }); var extensionOptionsMenu = { get alertsService() { delete this.alertsService; return this.alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); }, get clipboardHelp() { delete this.clipboardHelp; return this.clipboardHelp = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper); }, get exceptions_type_listarr() { delete this.exceptions_type_listarr; var arr = ["extension", "theme", "locale", "dictionary"]; if (!exceptions_type_listset.size) return this.exceptions_type_listarr = arr; return this.exceptions_type_listarr = arr.filter(type => !exceptions_type_listset.has(type)); }, async populateMenu(e) { var popup = e.target, doc = e.view.document; var addons = await AddonManager.getAddonsByTypes(this.exceptions_type_listarr); var addonsMap = new WeakMap(), setAttributesMenu = (mi, addon, extension) => { var permissions, uuid, props = { label: `${addon.name}${show_version ? ` ${addon.version}` : ""}`, class: "menuitem-iconic", tooltiptext: `${(show_description && addon.description) ? `${addon.description}\n` : ""}ID: ${addon.id}${addon.isActive && (uuid = extension?.uuid) ? `\nUUID: ${uuid}` : ""}${(user_permissions && (permissions = addon.userPermissions?.permissions)?.length) ? `\nРазрешения: ${permissions.join(", ")}` : ""}\n${addon.optionsURL ? "\nЛКМ: Настройки" : ""}\nCtrl+ЛКМ: Копировать ID${uuid ? "\nShift+ЛКМ: Копировать UUID" : ""}${addon.creator?.url ? "\nCtrl+Shift+ЛКМ: Автор" : ""}${addon.homepageURL ? "\nСКМ: Домашняя страница" : ""}${!addon.isBuiltin ? "\nCtrl+СКМ: Просмотр источника" : ""}\nShift+СКМ: Просмотр источника во вкладке\nПКМ: Включить/Отключить${(!addon.isSystem && !addon.isBuiltin) ? "\nCtrl+ПКМ: Удалить" : ""}`, }; for (let p in props) mi.setAttribute(p, props[p]); if (addon.iconURL) mi.setAttribute("image", addon.iconURL); var cls = mi.classList; addon.isActive ? cls.remove("ucf-disabled") : cls.add("ucf-disabled"); addon.optionsURL ? cls.remove("ucf-notoptions") : cls.add("ucf-notoptions"); addon.isSystem ? cls.add("ucf-system") : cls.remove("ucf-system"); cls.add(`ucf-type-${addon.type}`); }; addons.filter(a => !(a.iconURL || "").startsWith("resource://search-extensions/")).sort((a, b) => { var ka = `${(enabled_first ? a.isActive ? "0" : "1" : "")}${a.type || ""}${a.name.toLowerCase()}`; var kb = `${(enabled_first ? b.isActive ? "0" : "1" : "")}${b.type || ""}${b.name.toLowerCase()}`; return (ka < kb) ? -1 : 1; }).forEach(addon => { if (!exceptions_listset.has(addon.id) && (!addon.hidden || show_hidden) && (!addon.userDisabled || show_disabled)) { let extension = GlobalManager.extensionMap.get(addon.id), mi = doc.createXULElement("menuitem"); setAttributesMenu(mi, addon, extension); mi._Addon = addon; mi._Extension = extension; popup.append(mi); addonsMap.set(addon, mi); } }); var click = e => { e.preventDefault(); e.stopPropagation(); this.handleClick(e); }; popup.addEventListener("click", click); var listener = { onEnabled: addon => { var mi = addonsMap.get(addon); if (mi) setAttributesMenu(mi, addon, mi._Extension); }, onDisabled: addon => { listener.onEnabled(addon); }, onInstalled: addon => { var extension = GlobalManager.extensionMap.get(addon.id), mi = doc.createXULElement("menuitem"); setAttributesMenu(mi, addon, extension); mi._Addon = addon; mi._Extension = extension; popup.prepend(mi); addonsMap.set(addon, mi); }, onUninstalled: addon => { var mi = addonsMap.get(addon); if (mi) { mi.remove(); addonsMap.delete(addon); } }, }; AddonManager.addAddonListener(listener); popup.addEventListener("popuphiding", () => { AddonManager.removeAddonListener(listener); popup.removeEventListener("click", click); addonsMap = null; for (let item of popup.querySelectorAll("menuitem")) item.remove(); }, { once: true }); }, handleClick(e) { var win = e.view, mi = e.target; if (!("_Addon" in mi) || !("_Extension" in mi)) return; var addon = mi._Addon, extension = mi._Extension; switch (e.button) { case 0: if (e.ctrlKey && e.shiftKey) { if (addon.creator?.url) win.gBrowser.selectedTab = this.addTab(win, addon.creator.url); } else if (e.ctrlKey) { this.clipboardHelp.copyString(addon.id); win.setTimeout(() => { this.alertsService.showAlertNotification(`${img}`, "ID в буфере обмена!", addon.id, false); }, 100); } else if (e.shiftKey) { if (extension?.uuid) { this.clipboardHelp.copyString(extension.uuid); win.setTimeout(() => { this.alertsService.showAlertNotification(`${img}`, "UUID в буфере обмена!", extension.uuid, false); }, 100); } } else if (addon.isActive && addon.optionsURL) this.openAddonOptions(addon, win); win.closeMenus(mi); break; case 1: if (e.ctrlKey) { if (!addon.isBuiltin) this.browseDir(addon); } else if (e.shiftKey) this.browseDir(addon, win); else if (addon.homepageURL) win.gBrowser.selectedTab = this.addTab(win, addon.homepageURL); win.closeMenus(mi); break; case 2: if (!e.ctrlKey) { let endis = addon.userDisabled ? "enable" : "disable"; if (addon.id == "screenshots@mozilla.org") Services.prefs.setBoolPref("extensions.screenshots.disabled", !addon.userDisabled); else if (addon.id == "webcompat-reporter@mozilla.org") Services.prefs.setBoolPref("extensions.webcompat-reporter.enabled", addon.userDisabled); addon[endis]({ allowSystemAddons: true }); } else if (!addon.isSystem && !addon.isBuiltin) { win.closeMenus(mi); if (Services.prompt.confirm(win, null, `Удалить ${addon.name}?`)) addon.uninstall(); } break; } }, openAddonOptions(addon, win) { switch (addon.optionsType) { case 5: win.BrowserOpenAddonsMgr(`addons://detail/${encodeURIComponent(addon.id)}/preferences`); break; case 3: win.switchToTabHavingURI(addon.optionsURL, true); break; } }, browseDir(addon, win) { try { if (!win) { let file = Services.io.getProtocolHandler("file") .QueryInterface(Ci.nsIFileProtocolHandler) .getFileFromURLSpec(addon.getResourceURI().QueryInterface(Ci.nsIJARURI).JARFile.spec); if (file.exists()) file.launch(); } else win.gBrowser.selectedTab = this.addTab(win, addon.getResourceURI().spec); } catch (e) {} }, addTab(win, url, params = {}) { params.triggeringPrincipal = Services.scriptSecurityManager.getSystemPrincipal(); params.relatedToCurrent = true; return win.gBrowser.addTab(url, params); }, }; CustomizableUI.createWidget({ id: id, type: "custom", label: label, tooltiptext: tooltiptext, localized: false, defaultArea: CustomizableUI.AREA_NAVBAR, onBuild(doc) { var btn = doc.createXULElement("toolbarbutton"), win = doc.defaultView, props = { id: id, label: label, context: "", tooltiptext: tooltiptext, type: "menu", class: "toolbarbutton-1 chromeclass-toolbar-additional", }; for (let p in props) btn.setAttribute(p, props[p]); btn.addEventListener("click", e => { if (e.button == 0) e.view.switchToTabHavingURI("about:debugging#/runtime/this-firefox", true, { ignoreFragment: "whenComparing", triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(), }); else if (e.button == 2) e.view.BrowserOpenAddonsMgr("addons://list/extension"); }); var mp = doc.createXULElement("menupopup"); mp.id = `${id}-popup`; mp.addEventListener("contextmenu", e => { e.preventDefault(); e.stopPropagation(); }); mp.addEventListener("popupshowing", e => { extensionOptionsMenu.populateMenu(e); }); btn.append(mp); var btnstyle = "data:text/css;charset=utf-8," + encodeURIComponent(` #${id}, #${id}-popup menuitem { list-style-image: url("${img}") !important; } #${id}-popup menuitem::after { display: -moz-box !important; content: "" !important; height: 16px !important; width: 16px !important; padding: 0 !important; border: 1px solid rgb(0, 116, 232) !important; border-radius: 0 !important; background-repeat: no-repeat !important; background-position: center !important; background-size: 16px !important; background-color: rgb(0, 116, 232) !important; background-image: url("${checked}") !important; opacity: 1 !important; } #${id}-popup menuitem.ucf-disabled::after { border-color: currentColor !important; background-color: transparent !important; background-image: none !important; opacity: .6 !important; } #${id}-popup menuitem.ucf-disabled > label, #${id}-popup menuitem.ucf-notoptions > label { opacity: .6 !important; } #${id}-popup menuitem.ucf-system > label { text-decoration: underline !important; text-decoration-style: dotted !important; } #${id}-popup menuitem > label { margin-inline-end: 0 !important; } #${id}-popup menuitem > .menu-accel-container { display: -moz-box !important; padding: 4px !important; margin: 0 !important; opacity: 1 !important; } #${id}-popup menuitem > .menu-accel-container .menu-iconic-accel { display: -moz-box !important; margin: 0 !important; height: 8px !important; width: 8px !important; border-radius: 4px !important; background-color: transparent !important; opacity: 1 !important; font-size: 0 !important; } #${id}-popup menuitem.ucf-type-dictionary > .menu-accel-container .menu-iconic-accel { background-color: rgb(227, 27, 93) !important; } #${id}-popup menuitem.ucf-type-locale > .menu-accel-container .menu-iconic-accel { background-color: rgb(48, 172, 55) !important; } #${id}-popup menuitem.ucf-type-theme > .menu-accel-container .menu-iconic-accel { background-color: rgb(219, 106, 0) !important; } `); try { win.windowUtils.loadSheetUsingURIString(btnstyle, win.windowUtils.USER_SHEET); } catch (e) {} return btn; }, }); })();} catch (e) {}
Отсутствует
Отсутствует
LGS
Похоже не работает, у меня не подхвотил с "//В фоне [System Principal]". Отдельно в файл, как в примере в шапке. И что-то вообще глухо, даже иконка не появилась. По мне, я что-то не то делаю. Даже старый код перестал показывать иконку. Странно. У вас работает?
Отредактировано b0ttle (25-03-2023 11:06:52)
Отсутствует
xrun1
Во, спасибо. Просто еще до вашего профиля не дошел. Свое еще не перебрал, много чего уже естественно не работает у меня. Давно заходил.
Ваша работает, только как бы решить проблему с этим extensions(значок который не убирается). Можно в стилях убрать, по идее. Ну ладно, с этим сам разберусь наверно. Одной проблемой меньше. Теперь одним кликом вкл/выкл дополнение.
Отредактировано b0ttle (25-03-2023 12:06:04)
Отсутствует
как бы решить проблему с этим extensions(значок который не убирается)
№694 и дальше (решения от ув. Dumby).
P.S. Кнопки, стили, где есть русский язык, сохраняйте обязательно в кодировке 65001 (UTF-8) без BOM. Проблема неработоспособности может быть в этом.
Отредактировано xrun1 (25-03-2023 14:20:29)
Отсутствует
Отсутствует
_zt, отлично, спасибо. В итоге, ваш вариант сейчас "причесываю".
Dumby, надеюсь, что не успел время отобрать. Уже не надо, выше подсказали.
Отсутствует
_zt, а причесать то не получается. Теперь не знаю как about:cfg заменить на chrome://user_chrome_files/content/aboutconfig/config.xhtml. Замена в строке aboutoldurl = "about:cfg" ничего не дает. Мне, в принципе, кнопка и нужна была для старого about:config.
В Add Toolbar Buttons адрес легко правится в parent.js. А здесь уперся.
Added: причесал, работает.
Отредактировано LGS (31-03-2023 22:38:17)
Отсутствует
LGS
about:cfg это и есть chrome://user_chrome_files/content/aboutconfig/config.xhtml
Там для 107+ нужна правка в config.js
document.getElementById("configDeck").setAttribute("selectedIndex", 0); вместо document.getElementById("configDeck").selectedIndex = 0;
Ссылку не сохранил, где то в этой теме, вроде.
Отсутствует
about:cfg это и есть chrome://user_chrome_files/content/aboutconfig/config.xhtml
Нет, без замены about:cfg на chrome://user_chrome_files/content/aboutconfig/config.xhtml вскрипте от Vitaly V. в вашей редакции (2-й спойлер) не срабатывает. Может это у меня что-то особенное:
После замены - открывает старый about:config:
Отсутствует
LGS
xrun1
В config.js два раза заменить надо, и в config.css еще - https://forum.mozilla-russia.org/viewto … 33#p802633 . После изменений кэш загрузки чистить обязательно, для уверенности - вручную.
Если нет, то просите Dumby исправить. У меня на 102 работает и из кнопки и из адресной строки/закладки.
aboutconfig то точно последний?
aboutconfigOLDv2.zip - в архиве без правок.
Отредактировано _zt (01-04-2023 22:02:16)
Отсутствует
У меня на 102 работает и из кнопки и из адресной строки/закладки
На 102 с пол-пинка завелось... на 111 тоже about:cfg заработал. Что мешало - не пойму, наверное что-то локальное.
Отсутствует
_zt
Спасибо, разобрался. У меня стоял старый ucf, когда было это сообщение. Сейчас поправил.
Отсутствует
Посмотри пожалуйста Add Toolbar Buttons, а то в 112 некоторые иконки раздвояйюца.
Да, как-то пробовал нарезать тамошние SVG'шки вручную.
Даже собрал комплект для самостоятельной правки.
Текстовая ссылка на страницу загрузки комплекта:
data:text/html;charset=utf-8,<!DOCTYPE html>%0A<html>%0A%09<head>%0A%09%09<title>ATB Bug 1817071</title>%0A%09%09<meta http-equiv="Content-Type" content="text/html; charset=utf-8">%0A%09</head>%0A%09<body style="padding-top: 16vh;">%0A%09%09<center><h1 style="font-family: Consolas, Verdana;">%0A%09%09%09<a%0A%09%09%09%09download="ATB_Bug_1817071.zip"%0A%09%09%09%09href="data:application/x-zip-compressed;base64,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"%0A%09%09%09>%0A%09%09%09%09ATB_Bug_1817071.zip</a>%0A%09%09</h1></center>%0A%09</body>%0A</html>
Отсутствует
Можно ли создать скрипт для создания кнопки расширений, как в старых версиях Firefox? Нажал кнопку левой кнопкой мыши -открылась страница управление дополнениями.А больше ничего и не надо..
Отсутствует
Да, как-то пробовал нарезать тамошние SVG'шки вручную.
Даже собрал комплект для самостоятельной правки.
Текстовая ссылка на страницу загрузки комплекта:
скрытый текст
Благодарю
Win7
Отсутствует