В скрипте есть ссылка на иконку "..." (я думаю)
chrome://global/skin/icons/more.svg
Хочу заменить ее на иконку браузера. Кто-нибудь знает ссылку?
А то я не в курсе, где копать.
Отсутствует
Но ведь удобно, когда
При чём здесь «удобно»?
Я не говорил, что это не удобно, и вообще,
вопрос удобства даже не рассматривался как таковой.
«Вот уж нет!» — относится к слову «правильно».
Считаю, что это слово, зачастую, слишком категоричное,
и когда оно такое, то его использования в вопросе следует избегать.
Я заменил trg.tooltipText на trg.title — у меня тултип появился,
и сообщил об этом тебе. Возможно, это чем-то помогло.
А задумываться над тем, что есть правильно — желания нет.
Vitaliy V.
Заглянул в StylesScriptsChild.mjs
Разреши попросить прокомментировать кое что.
Вот в этом куске кода:
// return this._preload = (async () => { try { let path = this.path || (((!this.isos || this.isos.includes(lazy.OS)) && (!this.ver || (!this.ver.min || this.ver.min <= lazy.VER) && (!this.ver.max || this.ver.max >= lazy.VER))) ? this.ospath.replace(/%OS%/g, lazy.OS) : undefined); if (!path) { obj.sheet = () => {}; return this._preload = await (async () => null)(); } return this._preload = await lazy.UcfSSS.preloadSheetAsync( Services.io.newURI(`chrome://user_chrome_files/content/custom_styles/${path}`), this.type ); } catch { obj.sheet = () => {}; return this._preload = await (async () => null)(); } })();
Вопрос не риторический, может на это есть причина,
но у меня никак не получается её ухватить,
поэтому я пребываю в замешательстве, прямо залип.
И, как тебе идея чуть упростить код.
Если path не вычислился, использовать инструкцию throw
То есть, if (!path) throw 0; или if (path) return …; else throw 0;
Тогда, если path не вычислился, исполнение кода свалится в блок catch {}
А в нём точно такой же код, как и в блоке try {} для этого случая.
Кстати, в UcfStylesScriptsChild, для stylescontent написано:
@param {String} type: (required)
Но, по факту, это не так. Стиль добавляется, даже если type не указан.
Наверно, undefined рассматривается как ноль, то есть AGENT_SHEET
Отсутствует
Для чего используется конструкция await (async () => null)();
Почему не просто сразу null;
Потому что видимо переменная сначала становится null, а потом обещанием
попробуй в консоле несколько тестов
var Test = (async () => { return Test = await (async () => null)(); })(); setTimeout(() => console.log("Test", Test), 100);
var Test = (async () => { return Test = null; })(); setTimeout(() => console.log("Test", Test), 100);
var Test = (async () => { Test = null; console.log("Test 1", Test); })(); setTimeout(() => console.log("Test 2", Test), 100);
чуть упростить код.
Если path не вычислился, использовать инструкцию throw
Да можно конечно, правда упрощать там особо нечего, две строчки
Стиль добавляется, даже если type не указан.
Наверно, undefined рассматривается как ноль, то есть AGENT_SHEET
Тогда можно сделать, если не указанно то чтобы был USER_SHEET
Отредактировано Vitaliy V. (26-05-2024 20:50:19)
Отсутствует
попробуй в консоле несколько тестов
Ооо, круто! Просто вынос мозга. Спасибо.
И, вообще жесть — вот так получается null
var Test = (async () => { return Test = await null; })(); setTimeout(() => console.log("Test", Test), 100);
Отсутствует
Я заменил trg.tooltipText на trg.title — у меня тултип появился, и сообщил об этом тебе. Возможно, это чем-то помогло.
Да, спасибо! Пока код в работе, на гитхабе скрипты часто обновляю и новые фишки скоро будут.
Как получить число зарегистрированных Worker'ов и включенных расширений?
Они перечислены на about:debugging#/runtime/this-firefox
Иногда нужно видеть важную информацию о состоянии , скрытую в опциях или вообще недоступную.
Хочу выводить в строке статуса инфу при mouseenter на кнопке «Расширения», считаю полезным такое:
"Включенные расширения: 14, Service Workers 56, другие Workers 4"
Отсутствует
вот так получается null
Да точно, можно и так, я привык писать await перед асинхронными функциями
Dobrov
обновил скрипт https://forum.mozilla-russia.org/viewto … 07#p809407
почти переписан полностью, думаю тебе будет полезно для yt-dlp и ffmpeg
из нового:
Отредактировано Vitaliy V. (27-05-2024 19:15:24)
Отсутствует
Как получить число зарегистрированных Worker'ов
Нашёл кого спросить. У меня-то откуда Worker'ы возьмутся?
Чисто теоретически, получаем nsIWorkerDebuggerManager
var wdm = Cc["@mozilla.org/dom/workers/workerdebuggermanager;1"].getService(Ci.nsIWorkerDebuggerManager);
И nsISimpleEnumerator Worker'ов
var en = wdm.getWorkerDebuggerEnumerator();
nsISimpleEnumerator уже довольно давно вещь итерируемая,
то есть, for of перечисляемая.
Перечисляться будут экземпляры nsIWorkerDebugger
каждый из которых имеет свойство type,
которое будет одним из типов, определённых в этом интерфейсе.
То есть, TYPE_DEDICATED, TYPE_SHARED, или TYPE_SERVICE
Вот, при перечислении, и посчитать сколько из них каких.
и включенных расширений?
Они перечислены на about:debugging
Мало ли что там перечислено.
Там перечислено под задачу, в контексте именно этой страницы.
Например, торчит включённая тема, а это не расширение, а... тема.
А включённых bootstrap расширений там не будет.
Как не будет и скрытых системных.
Не будет и встроенных поисковиков, которые,
до недавних пор, тоже считались за "расширения".
Вобщем, например, можно перечислить добро в XPIDatabase.addonDB
и, из тех, которые active, подсчитать те, которые сочтёшь достойными подсчёта.
Отсутствует
Dumby - у меня всего 1 Worker получился вместо полсотни:
var wdm = Cc["@mozilla.org/dom/workers/workerdebuggermanager;1"].getService(Ci.nsIWorkerDebuggerManager);
for (var worker of wdm.getWorkerDebuggerEnumerator())
console.log(worker);
Vitaliy V.
в прежнем ucf_contextmenuopenwith можно было нажатием Shift выбирать - брать адрес из буфера или нет. В новом флаг clipboard: true ждёт ссылку только из буфера, т.е выбора нет.
Удобней для строк с clipboard: true, чтоб Shift и Колёсико инвертировали выбор, т.е. приоритет у буфера обмена, но колёсико или клик с шифтом берут ссылку или адрес страницы:
let URL = ((clipboard && !(shiftKey || button === 1)) || shiftKey || button === 1)
? this.readFromClipboard()
: (gContextMenu?.linkURI?.displaySpec || this.getCurrentURL());
Отсутствует
у меня всего 1 Worker получился вместо полсотни
Ааа, точно, остальные же в других процессах.
Просто никогда не имел дела с Worker'ами вообще,
хотя, конечно, должен был догадаться.
Наверно, посмотреть в консоли можно так
Services.ppmm.loadProcessScript("data:," + encodeURIComponent(` var wdm = Cc["@mozilla.org/dom/workers/workerdebuggermanager;1"].getService(Ci.nsIWorkerDebuggerManager); for (var worker of wdm.getWorkerDebuggerEnumerator()) console.log(worker); `), false);
Теперь прикинь, как это оттуда выковыривать.
Либо регистрировать JSProcessActor и опрашивать их все
(но для этого нужен файл на диске).
Либо грузить process script, который отправляет message, и слушать ответы.
И, это всё глобальные вещи, не оконные.
Оно того стоит?
Отсутствует
aivazkin
Суда по вашей картинке и как это должно быть в оригинале:
Предполагаю и вас не голый ??!! Может какие ошибки в консоле есть??
Да ещё Dobrov у себя выложил версию для 78+ https://github.com/VicDobrov/UserChromeFiles
Жизнь иногда такое выкидывает, что хочется подобрать...
Отсутствует
let URL = ((clipboard && !(shiftKey || button === 1)) || shiftKey || button === 1) ...
Странно в прошлой версии сам же удалил аргумент а теперь он понадобился. Что то длинная проверка, попробуй так
let URL = !clipboard === !(e.shiftKey || e.button === 1) ? (gContextMenu?.linkURI?.displaySpec || this.getCurrentURL()) : this.readFromClipboard();
Последний UCF yже не поддерживает 91, но это не факт
Факт, новый UCF поддерживает 115+ (с заменой стилей) 117+ (без замены)
Отредактировано Vitaliy V. (28-05-2024 22:53:49)
Отсутствует
Факт, новый UCF поддерживает 115+ (с заменой стилей) 117+ (без замены)
Vitaliy V. - А зачем так усложнять с фиксом UCF для Fix_115_ESR ?
Стили фикса не очень отличаются от 117+, может улучшить совместимость и делать UCF сразу для 115+ ? Хоть на время, пока Mozilla поддерживает ESR 115 ?
Это будет удобнее для пользователей, исключит лишние вопросы и не нужен будет архив для 115+…
Ещё вопрос: в чём преимущество нового UCF 2024 в сравнении со старым ?
UCF 78+ тоже обеспечивает работу тех же стилей/скриптов!
добавить в config.js, user_chrome.js, prefs.js: var Services = globalThis.Services || ChromeUtils.import("resource://gre/modules/Services.jsm").Services;
Отсутствует
Vitaliy V. - А зачем так усложнять с фиксом UCF для Fix_115_ESR ?
Стили фикса не очень отличаются от 117+, может улучшить совместимость и делать UCF сразу для 115+ ? Хоть на время, пока Mozilla поддерживает ESR 115 ?
Это будет удобнее для пользователей, исключит лишние вопросы и не нужен будет архив для 115+…
А я хочу попросить продолжить поддержку UCF для 115 ESR и после прекращения поддержки Mozilla.
Отредактировано unter_officer (30-05-2024 10:36:14)
«The Truth Is Out There»
Отсутствует
Стили фикса не очень отличаются от 117+
Наверно ты не допонял, в плане результата, они вообще не отличаются.
В CSS nesting синтаксис схожий с SCSS но обрабатывается модулем браузера а не на этапе компиляции . Естественно я использую новые фишки и в UCF, тем более в этом есть преимущество, например не писать один и тот же селектор много раз.
Ещё вопрос: в чём преимущество нового UCF 2024 в сравнении со старым ?
UCF 78+ тоже обеспечивает работу тех же стилей/скриптов!
В том что он совместим с новыми версиями это же очевидно. UCF 78+ работу стилей/скриптов может и обеспечивает (пока), но вот с панелями там есть изменения.
добавить в config.js, user_chrome.js, prefs.js: var Services = globalThis.Services || ChromeUtils.import("resource://gre/modules/Services.jsm").Services;
Если ты предлагаешь добавить это в новый UCF для совместимости с 78, то этого не достаточно, там нет поддержки ESM, Fluent ...
Отредактировано Vitaliy V. (30-05-2024 16:01:48)
Отсутствует
Код занятой браузером памяти показал ~700Mb, но одна вкладка about:processes выдаёт для Firefox 345Мб, Расширения 230Мб .
Подскажите, почему у кода цифры больше ? Скрипт нашёл у Dumby.
Firefox и диспетчеры задач MacOS и Linux показывают меньше (вероятно, винда тоже)
(async ()=> { function formatBytes(b = 0,d = 1){ //объём байт…Тб let i = Math.log2(b)/10|0; return parseFloat((b/1024**(i=i<=0?0:i)).toFixed(d))+`${i>0?'KMGT'[i-1]:''}b`; } var info = await ChromeUtils.requestProcInfo(), bytes = info.memory; for(var child of info.children) bytes += child.memory; console.log(formatBytes(bytes)); })();
Отсутствует
.memory;
Это вот «memory», вместо residentSetSize и residentUniqueSize,
запилили в этом баге.
Быть может, в отличие от меня, ты поймёшь о чём там речь.
Но мне никогда и не казалось, что это может быть
хоть сколько-нибудь как-то верно подсчитано.
Интерес представляет лишь относительная разница между процессами,
и относительная динамика жора памяти во времени как таковая.
А обрести какое-то точное абсолютное значение — наверно, обломись.
Отсутствует
Но мне никогда и не казалось, что это может быть хоть сколько-нибудь как-то верно подсчитано.
Может возврат на старый код красные строки Bug 1665318 даст более правдоподобный результат, но не хочу усложнять.
Сделал в ucf_hookClicks.js при mouseenter на кнопку "Расширения" вывод в статус "Занято ОЗУ примерно ~(результат/делённый на 1.2)".
Отсутствует
Здравствуйте,
добавил панель Sidebar tabs https://forum.mozilla-russia.org/viewtopic.php?pid=784824#p784824
появилось пара вопросов
не как не могу понять как правильно добавить кнопку для панели - скрывать/показывать
кнопку добавляю в custom_script_win.js (как в инструкции в custom_script.js не работает) - кнопка появляется - но не работает - нажатие на нее нечего не дает
если скрыть панель крестиком на самой панели - то доставать её обратно не понятно как... кроме как сделать новый профиль
подскажите - как правильно кнопку добавить чтоб работала?
и можно ли в эту панель "Sidebar tabs" добавить вкладки?? или по аналогии с chrome браузерами - в этой панели открывать сайта - чтобы в 1м окне сразу 2 сайта смотреть? (родная панель сейчас занята tree style tabs)
Отсутствует
gg.user
Пользуюсь кнопкой и Sidebar tabs, чтобы посмотреть загрузки (ПКМ на стандартной кнопке, открывает Sidebar tabs на соответствующей вкладке). Может, пригодится. Кнопка здесь под спойлером.
Отсутствует
gg.user
Пользуюсь кнопкой и Sidebar tabs, чтобы посмотреть загрузки (ПКМ на стандартной кнопке, открывает Sidebar tabs на соответствующей вкладке). Может, пригодится. Кнопка здесь под спойлером.
пойдет) работает!) так тоже сойдет - спасибо!!
Отсутствует
Вопрос: как открыть сайт в Sidebar из скрипта ?
в документации и расширении open-link-in-sidebar это работает, но из скрипта нет.
Это API только для расширений. Но как это в скрипте сделать ?
Подключал панель Sidebar tabs от Vitaliy V., но открыть в ней сайт не получилось.
// в scriptschrome: и scriptsbackground: не работает. через DOM Inspector глянуть не могу, он опять «вылетает» browser.sidebarAction.setPanel({ panel: 'about:blank' }); browser.sidebarAction.setPanel({ panel: 'https://meteo7.ru' });
Отредактировано Dobrov (07-06-2024 01:02:56)
Отсутствует