Полезная информация

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№155126-05-2024 16:49:48

Ultima2m
Участник
 
Группа: Members
Откуда: Россия
Зарегистрирован: 28-11-2013
Сообщений: 608
UA: Firefox 115.0

Re: UCF - ваши кнопки, скрипты…

В скрипте есть ссылка на иконку "..." (я думаю)
chrome://global/skin/icons/more.svg
Хочу заменить ее на иконку браузера. Кто-нибудь знает ссылку?
А то я не в курсе, где копать.

Отсутствует

 

№155226-05-2024 17:17:23

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 1215
UA: Firefox 126.0

Re: UCF - ваши кнопки, скрипты…

Ultima2m
chrome://branding/content/icon16.png
chrome://branding/content/icon32.png

Отсутствует

 

№155326-05-2024 18:48:03

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2225
UA: Firefox 78.0

Re: UCF - ваши кнопки, скрипты…

Dobrov пишет

Но ведь удобно, когда

При чём здесь «удобно»?
Я не говорил, что это не удобно, и вообще,
вопрос удобства даже не рассматривался как таковой.


«Вот уж нет!» — относится к слову «правильно».
Считаю, что это слово, зачастую, слишком категоричное,
и когда оно такое, то его использования в вопросе следует избегать.


Я заменил 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)();
                }
            })();


Для чего используется конструкция await (async () => null)();
Почему не просто сразу 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

Отсутствует

 

№155426-05-2024 19:38:56

Ultima2m
Участник
 
Группа: Members
Откуда: Россия
Зарегистрирован: 28-11-2013
Сообщений: 608
UA: Firefox 115.0

Re: UCF - ваши кнопки, скрипты…

xrun1 пишет

chrome://branding/content/icon16.png
chrome://branding/content/icon32.png

Спасибо. :beer:

Отсутствует

 

№155526-05-2024 20:49:31

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2186
UA: Firefox 127.0

Re: UCF - ваши кнопки, скрипты…

Dumby пишет

Для чего используется конструкция 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);

Dumby пишет

чуть упростить код.
Если path не вычислился, использовать инструкцию throw

Да можно конечно, правда упрощать там особо нечего, две строчки

Dumby пишет

Стиль добавляется, даже если type не указан.
Наверно, undefined рассматривается как ноль, то есть AGENT_SHEET

Тогда можно сделать, если не указанно то чтобы был USER_SHEET

Отредактировано Vitaliy V. (26-05-2024 20:50:19)

Отсутствует

 

№155626-05-2024 22:37:21

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2225
UA: Firefox 78.0

Re: UCF - ваши кнопки, скрипты…

Vitaliy V. пишет

попробуй в консоле несколько тестов

Ооо, круто! Просто вынос мозга. Спасибо.


И, вообще жесть — вот так получается null

скрытый текст

Выделить код

Код:

var Test = (async () => {
  return Test = await null;
})();
setTimeout(() => console.log("Test", Test), 100);

Отсутствует

 

№155727-05-2024 02:26:33

Dobrov
Участник
 
Группа: Members
Зарегистрирован: 04-10-2011
Сообщений: 471
UA: Firefox 124.0

Re: UCF - ваши кнопки, скрипты…

Dumby пишет

Я заменил trg.tooltipText на trg.title — у меня тултип появился, и сообщил об этом тебе. Возможно, это чем-то помогло.

Да, спасибо! Пока код в работе, на гитхабе скрипты часто обновляю и новые фишки скоро будут.


Как получить число зарегистрированных Worker'ов и включенных расширений?
Они перечислены на about:debugging#/runtime/this-firefox


Иногда нужно видеть важную информацию о состоянии [firefox], скрытую в опциях или вообще недоступную.
Хочу выводить в строке статуса инфу при mouseenter на кнопке «Расширения», считаю полезным такое:
"Включенные расширения: 14, Service Workers 56, другие Workers 4"

Отсутствует

 

№155827-05-2024 19:08:10

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2186
UA: Firefox 127.0

Re: UCF - ваши кнопки, скрипты…

Dumby пишет

вот так получается null

Да точно, можно и так, я привык писать await перед асинхронными функциями


Dobrov
обновил скрипт https://forum.mozilla-russia.org/viewto … 07#p809407
почти переписан полностью, думаю тебе будет полезно для yt-dlp и ffmpeg
из нового:

скрытый текст
* @param {String} tooltip: (optional)
*   Подсказка для пункта меню
* @param {String} args: (optional)
*   `Аргументы через пробел "то что в двойных кавычках считается за один аргумент"`,
*   Собственные аргументы:
*   %ProfD% - путь до профиля
*   %FilePicker% - выбор папки, например для скачивания
*   %Prompt(message)% - вызвать диалоговое окно для изменения текста, например названия медиа файла
* @param {String} rcargs: (optional)
*   Тоже что и args но выполняется по правому клику
* @param {Boolean} clipboard: (optional)
*   Адрес из буфера обмена

и разные изменения...

Отредактировано Vitaliy V. (27-05-2024 19:15:24)

Отсутствует

 

№155928-05-2024 08:37:04

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2225
UA: Firefox 78.0

Re: UCF - ваши кнопки, скрипты…

Dobrov пишет

Как получить число зарегистрированных 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, подсчитать те, которые сочтёшь достойными подсчёта.

Отсутствует

 

№156028-05-2024 17:38:03

Dobrov
Участник
 
Группа: Members
Зарегистрирован: 04-10-2011
Сообщений: 471
UA: Firefox 124.0

Re: UCF - ваши кнопки, скрипты…

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());

Отсутствует

 

№156128-05-2024 20:50:24

aivazkin
Участник
 
Группа: Members
Зарегистрирован: 24-05-2024
Сообщений: 2
UA: Firefox 91.0

Re: UCF - ваши кнопки, скрипты…

Впервые решил попробовать UserChromeFiles от Vitaliy V.
Подскажите, пожалуйста, как здесь что-нибудь включить? Не вижу куда ставить галочки.

скрытый текст
METRVCS_t.png

Отсутствует

 

№156228-05-2024 21:51:22

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2225
UA: Firefox 78.0

Re: UCF - ваши кнопки, скрипты…

Dobrov пишет

у меня всего 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, и слушать ответы.


И, это всё глобальные вещи, не оконные.
Оно того стоит?

Отсутствует

 

№156328-05-2024 22:16:01

Farby
Участник
 
Группа: Members
Зарегистрирован: 21-11-2012
Сообщений: 290
UA: Google 2.1

Re: UCF - ваши кнопки, скрипты…

aivazkin
Суда по вашей картинке и как это должно быть в оригинале:

UserChromeFiles_Settings
UserChromeFiles_Settings.png
Могу предположить три варианта

  • Последний UCF yже не поддерживает [firefox] 91, но это не факт
  • Попробуйте заменить стили для 115 [firefox] fix https://github.com/VitaliyVstyle/Vitali … 15_ESR.zip
  • Ну или на худой случай искать что у вас мешает отображению всяких разных фишек

Предполагаю и вас не голый [firefox]??!! Может какие ошибки в консоле есть??
Да ещё Dobrov у себя выложил версию для [firefox] 78+ https://github.com/VicDobrov/UserChromeFiles


Жизнь иногда такое выкидывает, что хочется подобрать...

Отсутствует

 

№156428-05-2024 22:41:00

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2186
UA: Firefox 127.0

Re: UCF - ваши кнопки, скрипты…

Dobrov пишет

let URL = ((clipboard && !(shiftKey || button === 1)) || shiftKey || button === 1) ...

Странно в прошлой версии сам же удалил аргумент а теперь он понадобился. Что то длинная проверка, попробуй так

скрытый текст

Выделить код

Код:

let URL = !clipboard === !(e.shiftKey || e.button === 1) ? (gContextMenu?.linkURI?.displaySpec || this.getCurrentURL()) : this.readFromClipboard();

Farby пишет

Последний UCF yже не поддерживает [firefox] 91, но это не факт

Факт, новый UCF поддерживает 115+ (с заменой стилей) 117+ (без замены)

Отредактировано Vitaliy V. (28-05-2024 22:53:49)

Отсутствует

 

№156529-05-2024 09:22:51

aivazkin
Участник
 
Группа: Members
Зарегистрирован: 24-05-2024
Сообщений: 2
UA: Firefox 91.0

Re: UCF - ваши кнопки, скрипты…

Farby
Спасибо! Помог UserChromeFiles_Fix_115_ESR
Это я сюда писал из 91[firefox], а применял в 115.11.0esr

Отсутствует

 

№156630-05-2024 00:58:41

Dobrov
Участник
 
Группа: Members
Зарегистрирован: 04-10-2011
Сообщений: 471
UA: Firefox 124.0

Re: UCF - ваши кнопки, скрипты…

Vitaliy V. пишет

Факт, новый 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;

Отсутствует

 

№156730-05-2024 10:23:41

unter_officer
Участник
 
Группа: Members
Откуда: Санкт-Петербург
Зарегистрирован: 27-03-2011
Сообщений: 591
UA: Firefox 115.0

Re: UCF - ваши кнопки, скрипты…

Dobrov пишет

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»

Отсутствует

 

№156830-05-2024 14:34:41

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2186
UA: Firefox 127.0

Re: UCF - ваши кнопки, скрипты…

Dobrov пишет

Стили фикса не очень отличаются от 117+

Наверно ты не допонял, в плане результата, они вообще не отличаются.
В CSS nesting синтаксис схожий с SCSS но обрабатывается модулем браузера а не на этапе компиляции [firefox]. Естественно я использую новые фишки и в UCF, тем более в этом есть преимущество, например не писать один и тот же селектор много раз.

Dobrov пишет

Ещё вопрос: в чём преимущество нового UCF 2024 в сравнении со старым ?
UCF 78+ тоже обеспечивает работу тех же стилей/скриптов!

В том что он совместим с новыми версиями [firefox] это же очевидно. UCF 78+ работу стилей/скриптов может и обеспечивает (пока), но вот с панелями там есть изменения.

Dobrov пишет

добавить в config.js, user_chrome.js, prefs.js: var Services = globalThis.Services || ChromeUtils.import("resource://gre/modules/Services.jsm").Services;

Если ты предлагаешь добавить это в новый UCF для совместимости с [firefox] 78, то этого не достаточно, там нет поддержки ESM, Fluent ...

Отредактировано Vitaliy V. (30-05-2024 16:01:48)

Отсутствует

 

№156904-06-2024 03:48:46

Dobrov
Участник
 
Группа: Members
Зарегистрирован: 04-10-2011
Сообщений: 471
UA: Firefox 123.0

Re: UCF - ваши кнопки, скрипты…

Код занятой браузером памяти показал ~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));
})();

Отсутствует

 

№157004-06-2024 22:07:02

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2225
UA: Firefox 78.0

Re: UCF - ваши кнопки, скрипты…

Dobrov пишет

.memory;

Это вот «memory», вместо residentSetSize и residentUniqueSize,
запилили в этом баге.
Быть может, в отличие от меня, ты поймёшь о чём там речь.


Но мне никогда и не казалось, что это может быть
хоть сколько-нибудь как-то верно подсчитано.


Интерес представляет лишь относительная разница между процессами,
и относительная динамика жора памяти во времени как таковая.
А обрести какое-то точное абсолютное значение — наверно, обломись.

Отсутствует

 

№157105-06-2024 00:37:35

Dobrov
Участник
 
Группа: Members
Зарегистрирован: 04-10-2011
Сообщений: 471
UA: Firefox 124.0

Re: UCF - ваши кнопки, скрипты…

Dumby пишет

Но мне никогда и не казалось, что это может быть хоть сколько-нибудь как-то верно подсчитано.

Может возврат на старый код красные строки Bug 1665318 даст более правдоподобный результат, но не хочу усложнять.
Сделал в ucf_hookClicks.js при mouseenter на кнопку "Расширения" вывод в статус "Занято ОЗУ примерно ~(результат/делённый на 1.2)".

Отсутствует

 

№157206-06-2024 13:11:21

gg.user
Участник
 
Группа: Members
Зарегистрирован: 21-12-2012
Сообщений: 89
UA: Firefox 115.0

Re: UCF - ваши кнопки, скрипты…

Здравствуйте,

добавил панель 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)

Отсутствует

 

№157306-06-2024 15:17:00

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 1215
UA: Firefox 126.0

Re: UCF - ваши кнопки, скрипты…

gg.user
Пользуюсь кнопкой и Sidebar tabs, чтобы посмотреть загрузки (ПКМ на стандартной кнопке, открывает Sidebar tabs на соответствующей вкладке). Может, пригодится. Кнопка здесь под спойлером.

Отсутствует

 

№157406-06-2024 16:02:48

gg.user
Участник
 
Группа: Members
Зарегистрирован: 21-12-2012
Сообщений: 89
UA: Firefox 115.0

Re: UCF - ваши кнопки, скрипты…

xrun1 пишет

gg.user
Пользуюсь кнопкой и Sidebar tabs, чтобы посмотреть загрузки (ПКМ на стандартной кнопке, открывает Sidebar tabs на соответствующей вкладке). Может, пригодится. Кнопка здесь под спойлером.

пойдет) работает!) так тоже сойдет - спасибо!!

Отсутствует

 

№157507-06-2024 00:53:08

Dobrov
Участник
 
Группа: Members
Зарегистрирован: 04-10-2011
Сообщений: 471
UA: Firefox 124.0

Re: UCF - ваши кнопки, скрипты…

Вопрос: как открыть сайт в 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)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]