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

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.

№910105-09-2020 14:34:30

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

Re: Настройка внешнего вида Firefox в userChrome.css

_zt
sandro79
Попробуйте так в custom_script_all_win.js или custom_script_win.js (если в окне библиотеки не требуется)

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

Выделить код

Код:

(() => {
            var load_scripts_by_url = {
                "chrome://browser/content/browser.xhtml": (win) => {
                    var box;
                    if (win != window || !(box = document.querySelector("#sidebar-box"))) return;
                    var listener = e => {
                        var doc = e.target || ({});
                        load_scripts_by_url[doc.documentURI]?.(doc.defaultView);
                    };
                    box.addEventListener("pageshow", listener);
                    this.wheretoopenlinkmod = {
                        destructor: function() {
                            box.removeEventListener("pageshow", listener);
                        }
                    };
                    this.unloadlisteners.push("wheretoopenlinkmod");
                    window.whereToOpenLink = eval(`(${`${window.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, `
                        try {
                            let node;
                            if (gBrowser.selectedTab.isEmpty ||
                                !((node = arguments[0].composedTarget) && node.closest("#bookmarksMenuPopup,#BMB_bookmarksPopup,#PanelUI-bookmarks,#goPopup,#PanelUI-history,.search-go-button")) ||
                                (node._placesNode && node._placesNode.uri.startsWith("javascript")))
                                return "current";
                            return "tab";
                        } catch(e) { return "current"; };
                    `)})`);
                },
                "chrome://browser/content/places/places.xhtml": (win) => {
                    win.whereToOpenLink = eval(`(${`${win.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, `
                        try {
                            if (window.opener && window.opener.gBrowser.selectedTab.isEmpty)
                                return "current";
                           let ev = arguments[0], tree = ev.composedTarget.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row);
                            if (row.uri.startsWith("javascript"))
                               return "current";
                            return "tab";
                        } catch(e) { return "current"; };
                    `)})`);
                },
                "chrome://browser/content/places/bookmarksSidebar.xhtml": (win) => {
                    win.whereToOpenLink = eval(`(${`${win.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, `
                        try {
                            if ((window._ucf_top || (window._ucf_top = Services.wm.getMostRecentWindow("navigator:browser"))).gBrowser.selectedTab.isEmpty)
                                return "current";
                            let ev = arguments[0], tree = ev.composedTarget.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row);
                            if (row.uri.startsWith("javascript"))
                                return "current";
                            return "tab";
                        } catch(e) { return "current"; };
                    `)})`);
                },
                "chrome://browser/content/places/historySidebar.xhtml": (win) => {
                    win.whereToOpenLink = eval(`(${`${win.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, `
                        try {
                            if ((window._ucf_top || (window._ucf_top = Services.wm.getMostRecentWindow("navigator:browser"))).gBrowser.selectedTab.isEmpty)
                                return "current";
                            let ev = arguments[0], tree = ev.composedTarget.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row);
                            if (row.uri.startsWith("javascript"))
                                return "current";
                            return "tab";
                        } catch(e) { return "current"; };
                    `)})`);
                },
            };
            load_scripts_by_url[location.href]?.(window);
        })();


Вообще это нужно вам самим перенести такие части как win.whereToOpenLink = eval(...);
к этому коду https://forum.mozilla-russia.org/viewto … 25#p784425
в соответствии с их URL
А этот код подойдет для тех кому не нужно загружать отдельные скрипты.

razoo пишет

но неопределяемые html элементы было достаточно отделять ">" или "> stack >". Это до сих пор работает для старых расширений (у меня точно работает на старом счётчике табов)

Это вы путаете с анонимным контентом XBL, а html элементы были и раньше в интерфейсе хоть и немного.

razoo пишет

Короче говоря, как теперь корректней оформить usercrome?  Универсальное решение на будущее? (Сколько там ещё продержится зул и поддержка кастомных стилей.)

Оформляйте как вам удобней, полагаю удобней для вас будет вообще без пространства имен,
это не так уж и важно на самом деле есть в userChrome.css пространства имен или нет.
Этот вопрос не ко мне, разработчики сами то знают что будет дальше с [firefox] ?!

Отредактировано Vitaliy V. (07-09-2020 12:15:19)

Отсутствует

 

№910205-09-2020 15:01:10

sibirnik
Участник
 
Группа: Members
Зарегистрирован: 11-08-2016
Сообщений: 63
UA: Firefox 78.0

Re: Настройка внешнего вида Firefox в userChrome.css

Помогите пожалуйста заменить в панели меню цвет полосы выделения на #00299E и цвет шрифта под этой полосой выделения на белый.
Это касается всех меню и подменю(где есть) в панели меню. (Файл, Правка, Вид, Журнал, Закладки, Инструменты, Справка).

Отсутствует

 

№910305-09-2020 15:09:22

kokoss
Участник
 
Группа: Members
Зарегистрирован: 15-02-2018
Сообщений: 1740
UA: Firefox 52.0

Re: Настройка внешнего вида Firefox в userChrome.css

Vitaliy V. пишет

Попробуйте так в custom_script_all_win.js или custom_script_win.js (если в окне библиотеки не требуется)
скрытый текст

Благодарю :beer:


Win7

Отсутствует

 

№910405-09-2020 15:50:16

razoo
Участник
 
Группа: Members
Зарегистрирован: 23-07-2009
Сообщений: 48
UA: Firefox 78.0

Re: Настройка внешнего вида Firefox в userChrome.css

Vitaliy V

вообще без пространства имен

Спасибо. Вы по-русски подтвердили рекомендации userchrome.org В прошлогодней статье о стандарте они предлагают вообще не указывать пространство имен ("omit all mention of namespaces"), но при появлении проблем ограничивать блоки правилом @-moz-document.
Я тогда удивился, но ваш стиль для тулбаров - целиком из этих блоков - прояснил.

Vitaliy V. пишет

разработчики сами то знают что будет дальше с [firefox] ?!

не знаю насколько уместно, но зашёл недавно за расширениями...

Сначала испугался - подумал: "разрабы".
Потом вроде отлегло: "целевая группа".
А когда вдумался, понял: "уж лучше бы были разрабы".
76ab32c2b86043640c7b02486ea6127f-full.jpg
И спасибо за разъяснение с анонимыми XBL.

Отсутствует

 

№910505-09-2020 18:31:22

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

Re: Настройка внешнего вида Firefox в userChrome.css

kokoss
Поясните там http://forum.ru-board.com/topic.cgi?for … rt=3260#21
что перенос вправо работает только когда боковая панель слева, если нужно в любом случае сделать поиск
справа тогда требуется из стиля удалить правила содержащие #sidebar-box[positionend="true"]

Отсутствует

 

№910605-09-2020 19:45:11

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1750
UA: Firefox 80.0

Re: Настройка внешнего вида Firefox в userChrome.css

Vitaliy V. пишет

Попробуйте так в custom_script_all_win.js или custom_script_win.js (если в окне библиотеки не требуется)

Благодарю! Да, работает, но только в боковой панели и в библиотеке. Ещё бы добавить по ссылкам из журнала в панели меню "Журнал" и из значка журнала, добавленного на панель меню из хранилища - вообще бы идеально было. Открываю из трёх точек, по ситуации. Может отдельным скриптом, если не сильно много мороки. И вообще хорошо бы из строки поиска по нажатию на стрелку, ну этот баг поправить.

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

sibirnik пишет

Помогите пожалуйста заменить в панели меню цвет полосы выделения на #00299E и цвет шрифта под этой полосой выделения на белый.
Это касается всех меню и подменю(где есть) в панели меню. (Файл, Правка, Вид, Журнал, Закладки, Инструменты, Справка).

Кое-что вроде есть, взято с правкой отсюда.

скрытый текст
1fef0f271415.png

Выделить код

Код:

#main-menubar > menu:-moz-any(:hover,[open],[_moz-menuactive]) {
  background: #00299E !important;
  color: White !important;
}

Отсутствует

 

№910705-09-2020 20:42:22

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

Re: Настройка внешнего вида Firefox в userChrome.css

sandro79 пишет

И вообще хорошо бы из строки поиска по нажатию на стрелку, ну этот баг поправить.

а это я добавлял, вы что этот код не заметили window.whereToOpenLink = eval(...); для "chrome://browser/content/browser.xhtml" ?
чтобы добавить что-то ещё меняем
matches(".search-go-button")
на
closest("#goPopup,#PanelUI-history,.search-go-button")
можете сюда добавить ещё селекторов через запятую, которые можно позаимствовать из вашего скрипта там где switch (node.id) {... только в css с добавлением #

Отсутствует

 

№910805-09-2020 21:26:51

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1750
UA: Firefox 80.0

Re: Настройка внешнего вида Firefox в userChrome.css

Vitaliy V. пишет

а это я добавлял, вы что этот код не заметили window.whereToOpenLink = eval(...); для "chrome://browser/content/browser.xhtml" ?

Заметил, но не допонял. Заменил я для начала matches(".search-go-button") на closest("#goPopup,#PanelUI-history,.search-go-button"), не знаю, ничего не поменялось. startupCache чистил вручную. Подключал к custom_script_win.js импортом, так сказать, потом вниз custom_script_win.js, всё равно работает только из сайдбара. Виталий, в общем буду разбираться, искать проблему у себя. Буду пробовать уже на чистом профиле и чистом user_chrome_files, искать виновника.


скрытый текст
Почти разобрался. На чистом user_chrome_files скрипт работает как надо. Код добавлял в custom_script_win.js в секцию // Здесь может быть ваш код который сработает по событию "load" не раньше Теперь буду копать дальше.


В общем получилась такая вот конструкция, всё работает как надо.

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

Выделить код

Код:

/* ************************************************ */
        try { this.urlbarhistorydropmarker.constructor(); } catch (e) {}
        this.contextmenuopenwith.constructor();
        // Здесь может быть ваш код который сработает по событию "load" не раньше
        (() => {
            var load_scripts_by_url = {
                "chrome://browser/content/browser.xhtml": () => {
                    var box = document.querySelector("#sidebar-box"),
                    listener = e => {
                        var doc = e.target;
                        (load_scripts_by_url[doc.documentURI] || (() => {}))(doc);
                    };
                    box.addEventListener("pageshow", listener);
                    this.wheretoopenlinkmod = {
                        destructor: function() {
                            box.removeEventListener("pageshow", listener);
                        }
                    };
                    this.unloadlisteners.push("wheretoopenlinkmod");
                    window.whereToOpenLink = eval(`(${`${window.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, `
                        try {
                            if (gBrowser.selectedTab.isEmpty || !arguments[0].composedTarget.closest("#goPopup,#PanelUI-history,.search-go-button"))
                                return "current";
                            return "tab";
                        } catch(e) { return "current"; };
                    `)})`);
                },
                "chrome://browser/content/places/places.xhtml": () => {
                    window.whereToOpenLink = eval(`(${`${window.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, `
                        try {
                            let ev = arguments[0], node = ev.composedTarget;
                            if (node.ownerGlobal.opener.gBrowser.selectedTab.isEmpty)
                                return "current";
                            let tree = node.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row);
                            if (row.uri.startsWith("javascript"))
                                return "current";
                            return "tab";
                        } catch(e) { return "current"; };
                    `)})`);
                },
                "chrome://browser/content/places/bookmarksSidebar.xhtml": (doc) => {
                    var win = doc.defaultView;
                    win.whereToOpenLink = eval(`(${`${win.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, `
                        try {
                            let ev = arguments[0], node = ev.composedTarget;
                            if (node.ownerGlobal.parent.gBrowser.selectedTab.isEmpty)
                                return "current";
                            let tree = node.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row);
                            if (row.uri.startsWith("javascript"))
                                return "current";
                            return "tab";
                        } catch(e) { return "current"; };
                    `)})`);
                },
                "chrome://browser/content/places/historySidebar.xhtml": (doc) => {
                    var win = doc.defaultView;
                    win.whereToOpenLink = eval(`(${`${win.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, `
                        try {
                            let ev = arguments[0], node = ev.composedTarget;
                            if (node.ownerGlobal.parent.gBrowser.selectedTab.isEmpty)
                                return "current";
                            let tree = node.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row);
                            if (row.uri.startsWith("javascript"))
                                return "current";
                            return "tab";
                        } catch(e) { return "current"; };
                    `)})`);
                },
            };
            (load_scripts_by_url[location.href] || (() => {}))();
        })();
setTimeout(() => {
            var loadScripts = ((name) => {
                try {
                    Services.scriptloader.loadSubScript(`chrome://user_chrome_files/content/custom_scripts/${name}`, window, "UTF-8");
                } catch(e) {}
            });
            loadScripts("favicon_in_urlbar.uc.js");
            loadScripts("search_engine_icon.uc.js");
            // loadScripts("openNewTab.uc.js");
            loadScripts("Tabs_Focus.uc.js");
            loadScripts("tabstoolbar_doubleclick_opennewtab.uc.js");
            loadScripts("restart_item_in_menu.uc.js");
            loadScripts("add_a_bookmark_to_the_bookmarks_menu.uc.js");
            // и так далее
        }, 0);
        /* ************************************************ */

Отредактировано sandro79 (05-09-2020 22:54:48)

Отсутствует

 

№910905-09-2020 22:56:44

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

Re: Настройка внешнего вида Firefox в userChrome.css

sandro79
если потребуется ещё и для закладок в меню (#bookmarksMenuPopup,#BMB_bookmarksPopup,#PanelUI-bookmarks) то замените на это

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

Выделить код

Код:

window.whereToOpenLink = eval(`(${`${window.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, `
                        try {
                            let node;
                            if (gBrowser.selectedTab.isEmpty ||
                                !((node = arguments[0].composedTarget) && node.closest("#bookmarksMenuPopup,#BMB_bookmarksPopup,#PanelUI-bookmarks,#goPopup,#PanelUI-history,.search-go-button")) ||
                                (node._placesNode && node._placesNode.uri.startsWith("javascript")))
                                return "current";
                            return "tab";
                        } catch(e) { return "current"; };
                    `)})`);

Отредактировано Vitaliy V. (05-09-2020 23:52:48)

Отсутствует

 

№911005-09-2020 23:08:15

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1750
UA: Firefox 80.0

Re: Настройка внешнего вида Firefox в userChrome.css

Vitaliy V. пишет

sandro79
если потребуется ещё и для закладок в меню (#bookmarksMenuPopup,#BMB_bookmarksPopup,#PanelUI-bookmarks) то замените на это

Да-да, отлично, можно тоже использовать. Главное разобрался. Отдельным файлом импортом не пошло, оставлю в custom_script_win.js. Спасибо ещё раз, теперь всё работает.


Переместил скрипт в custom_script_all_win.js, чтоб в окне библиотеки ещё работал, для порядка.

Отредактировано sandro79 (05-09-2020 23:51:54)

Отсутствует

 

№911106-09-2020 04:45:30

sibirnik
Участник
 
Группа: Members
Зарегистрирован: 11-08-2016
Сообщений: 63
UA: Firefox 78.0

Re: Настройка внешнего вида Firefox в userChrome.css

sandro79

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

sandro79 пишет
Выделить код

Код:

#main-menubar > menu:-moz-any(:hover,[open],[_moz-menuactive]) {
  background: #00299E !important;
  color: White !important;
}


Сдвиг есть - отлично. Спасибо. Вот ещё бы и дальше так же сделать:
скрытый текст

sibirnik пишет

Это касается всех меню и подменю(где есть) в панели меню. (Файл, Правка, Вид, Журнал, Закладки, Инструменты, Справка).

Отредактировано sibirnik (06-09-2020 05:26:17)

Отсутствует

 

№911206-09-2020 10:56:58

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1750
UA: Firefox 80.0

Re: Настройка внешнего вида Firefox в userChrome.css

Vitaliy V.
Но почему не получается полноценно отдельным файлом запустить, чтоб работало везде где указано closest("#goPopup,#PanelUI-history,.search-go-button")? А работает импортом только по сайдбару в custom_script_win.js и + в окне библиотек в custom_script_all_win.js.
Пробовал уже другой код импорта, с под последнего спойлера, всё равно только в сайдбаре работает. Профиль и комплект чистые использовал. Может есть какой-то вариант запустить импортом в custom_script_win.js, в custom_script_all_win.js необязательно.

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

Выделить код

Код:

/* ************************************************ */

        // Здесь может быть ваш код который сработает по событию "load" не раньше
(() => {
    var loadscript = name => {
        try {
            Services.scriptloader.loadSubScript(`chrome://user_chrome_files/content/custom_scripts/${name}`, globalThis, "UTF-8");
        } catch(e) {}
    };
    loadscript("openNewTab.js");
    // и т. д.
})();
        /* ************************************************ */


Сейчас у меня в в custom_script_all_win.js

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

Выделить код

Код:

/* ************************************************ */
(() => {
            var load_scripts_by_url = {
                "chrome://browser/content/browser.xhtml": () => {
                    var box = document.querySelector("#sidebar-box"),
                    listener = e => {
                        var doc = e.target;
                        (load_scripts_by_url[doc.documentURI] || (() => {}))(doc);
                    };
                    box.addEventListener("pageshow", listener);
                    this.wheretoopenlinkmod = {
                        destructor: function() {
                            box.removeEventListener("pageshow", listener);
                        }
                    };
                    this.unloadlisteners.push("wheretoopenlinkmod");
                    window.whereToOpenLink = eval(`(${`${window.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, `
                        try {
                            if (gBrowser.selectedTab.isEmpty || !arguments[0].composedTarget.closest("#goPopup,#PanelUI-history,.search-go-button"))
                                return "current";
                            return "tab";
                        } catch(e) { return "current"; };
                    `)})`);
                },
                "chrome://browser/content/places/places.xhtml": () => {
                    window.whereToOpenLink = eval(`(${`${window.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, `
                        try {
                            let ev = arguments[0], node = ev.composedTarget;
                            if (node.ownerGlobal.opener.gBrowser.selectedTab.isEmpty)
                                return "current";
                            let tree = node.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row);
                            if (row.uri.startsWith("javascript"))
                                return "current";
                            return "tab";
                        } catch(e) { return "current"; };
                    `)})`);
                },
                "chrome://browser/content/places/bookmarksSidebar.xhtml": (doc) => {
                    var win = doc.defaultView;
                    win.whereToOpenLink = eval(`(${`${win.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, `
                        try {
                            let ev = arguments[0], node = ev.composedTarget;
                            if (node.ownerGlobal.parent.gBrowser.selectedTab.isEmpty)
                                return "current";
                            let tree = node.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row);
                            if (row.uri.startsWith("javascript"))
                                return "current";
                            return "tab";
                        } catch(e) { return "current"; };
                    `)})`);
                },
                "chrome://browser/content/places/historySidebar.xhtml": (doc) => {
                    var win = doc.defaultView;
                    win.whereToOpenLink = eval(`(${`${win.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, `
                        try {
                            let ev = arguments[0], node = ev.composedTarget;
                            if (node.ownerGlobal.parent.gBrowser.selectedTab.isEmpty)
                                return "current";
                            let tree = node.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row);
                            if (row.uri.startsWith("javascript"))
                                return "current";
                            return "tab";
                        } catch(e) { return "current"; };
                    `)})`);
                },
            };
            (load_scripts_by_url[location.href] || (() => {}))();
        })();
        // Здесь может быть ваш код который сработает по событию "load" не раньше
        setTimeout(() => {
            var loadScripts = ((name) => {
                try {
                    Services.scriptloader.loadSubScript(`chrome://user_chrome_files/content/custom_scripts/${name}`, window, "UTF-8");
                } catch(e) {}
            });
            var url = location.href.replace(/\..*$/, "");
            switch (url) {
                case "chrome://browser/content/browser":
                    loadScripts("ucjsDownloadsManager.uc.js");
                    break;
                case "chrome://browser/content/downloads/contentAreaDownloadsView":
                    loadScripts("ucjsDownloadsManager2.uc.js");
                    break;
            }
        }, 0);
        /* ************************************************ */


_zt пишет

sandro79
Есть, выше ссылку Vitaliy V. дал, в том посте где код этого скрипта опубликован.

Да я так и подумал, что только через него импортировать, но я с этим вряд ли разберусь. Если только так, то вопрос снимаю. Чуть позже попробую всё же, а пока буду использовать в custom_script_all_win.js, как под спойлером выше.


А, ну выше же было сказано, а я бьюсь импортом запустить :D

Vitaliy V. пишет

А этот код подойдет для тех кому не нужно загружать отдельные скрипты.

Отредактировано sandro79 (06-09-2020 12:34:07)

Отсутствует

 

№911306-09-2020 11:39:56

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 1644
UA: Firefox 78.0

Re: Настройка внешнего вида Firefox в userChrome.css

Vitaliy V.
Не получается. Не работает в SidebarModoki и в библиотеке открываемой во вкладке (речь только про историю).
Разместил целиком (без импорта) в custom_script_all_win.js, так как требуется везде. Код тот же что у Sandro + замена секции которую вы выше давали.
Работает в обычном сайдбаре и в библиотеке открываемой в окне.
   
sandro79
Есть, выше ссылку Vitaliy V. дал, в том посте где код этого скрипта опубликован.

Отредактировано _zt (06-09-2020 12:06:28)

Отсутствует

 

№911406-09-2020 13:45:16

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

Re: Настройка внешнего вида Firefox в userChrome.css

Перестал менять цвет фона в меню боковой панели (самая верхняя строка) такой код:

Выделить код

Код:

#sidebarMenu-popup > .panel-arrowcontainer > .panel-arrowcontent { background: lavender !important; }

Можно поправить?

Отсутствует

 

№911506-09-2020 15:02:25

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

Re: Настройка внешнего вида Firefox в userChrome.css

_zt пишет

Код тот же что у Sandro

Этот и не обязан работать с SidebarModoki я писал что вам нужно самим добавить к этому коду https://forum.mozilla-russia.org/viewto … 25#p784425
Ну да ладно попробую отдельным скриптом.


sandro79
_zt
Удаляйте все загрузчики скриптов из custom_script_all_win.js
добавляйте этот

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

Выделить код

Код:

(async () => {
            var loadscript = (relpath, win) => {
                try {
                    Services.scriptloader.loadSubScript(`chrome://user_chrome_files/content/custom_scripts/${relpath}`, win, "UTF-8");
                    return true;
                } catch(e) {
                    if (!window.Services) {
                        try {
                            ChromeUtils.import("resource://gre/modules/Services.jsm", window);
                            Services.scriptloader.loadSubScript(`chrome://user_chrome_files/content/custom_scripts/${relpath}`, win, "UTF-8");
                            return true;
                        } catch(e) {}
                    }
                }
                return false;
            },
            load_scripts_by_url = {
                "chrome://browser/content/browser.xhtml": win => {
                    if (win != window) return;
                    var box = document.querySelector("#browser") || window;
                    var listener = e => {
                        var doc = e.target || ({});
                        load_scripts_by_url[doc.documentURI]?.(doc.defaultView);
                    };
                    box.addEventListener("pageshow", listener);
                    this.loadscriptsallwinorsidebar = {
                        destructor() {
                            box.removeEventListener("pageshow", listener);
                        }
                    };
                    this.unloadlisteners.push("loadscriptsallwinorsidebar");
                    //>>>>>>>>>>| Загрузка скриптов для browser.xhtml |>>>>>>>>>>
                    // loadscript("ucf_wheretoopenlink.js", win) && win.ucf_where_to_open_link.browser();
                    // loadscript("ucjsDownloadsManager.uc.js", win);

                    //<<<<<<<<<<| Загрузка скриптов для browser.xhtml |<<<<<<<<<<
                },
                //>>>>>>>>>>| Загрузка скриптов для др. документов |>>>>>>>>>>
                "chrome://browser/content/places/places.xhtml": win => {
                    // loadscript("ucf_wheretoopenlink.js", win) && win.ucf_where_to_open_link.places();

                },
                "chrome://browser/content/downloads/contentAreaDownloadsView.xhtml": win => {
                    // loadscript("ucjsDownloadsManager2.uc.js", win);

                },
                "about:downloads": win => {
                    // loadscript("ucjsDownloadsManager2.uc.js", win);

                },
                "chrome://browser/content/places/bookmarksSidebar.xhtml": win => {
                    // loadscript("ucf_wheretoopenlink.js", win) && win.ucf_where_to_open_link.bookmarksSidebar();

                },
                "chrome://browser/content/places/historySidebar.xhtml": win => {
                    // loadscript("ucf_wheretoopenlink.js", win) && win.ucf_where_to_open_link.historySidebar();

                },
                //<<<<<<<<<<| Загрузка скриптов для др. документов |<<<<<<<<<<
            };
            load_scripts_by_url[location.href]?.(window);
        })();


там добавлены уже в закомментированном виде скрипты:
ucjsDownloadsManager.uc.js
ucjsDownloadsManager2.uc.js
остальные добавите сами


и сам скрипт ucf_wheretoopenlink.js

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

Выделить код

Код:

var ucf_where_to_open_link = {
    browser() {
        window.whereToOpenLink = eval(`(${`${window.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, `
            try {
                let node;
                if (gBrowser.selectedTab.isEmpty ||
                    !((node = arguments[0].composedTarget) && node.closest("#bookmarksMenuPopup,#BMB_bookmarksPopup,#PanelUI-bookmarks,#goPopup,#PanelUI-history,.search-go-button")) ||
                    (node._placesNode && node._placesNode.uri.startsWith("javascript")))
                    return "current";
                return "tab";
            } catch(e) { return "current"; };
        `)})`);
    },
    places() {
        window.whereToOpenLink = eval(`(${`${window.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, `
            try {
                if (window.opener && window.opener.gBrowser.selectedTab.isEmpty)
                    return "current";
                let ev = arguments[0], tree = ev.composedTarget.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row);
                if (row.uri.startsWith("javascript"))
                    return "current";
                return "tab";
            } catch(e) { return "current"; };
        `)})`);
    },
    bookmarksSidebar() {
        this.historySidebar();
    },
    historySidebar() {
        window.whereToOpenLink = eval(`(${`${window.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, `
            try {
                if ((window._ucf_top || (window._ucf_top = Services.wm.getMostRecentWindow("navigator:browser"))).gBrowser.selectedTab.isEmpty)
                    return "current";
                let ev = arguments[0], tree = ev.composedTarget.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row);
                if (row.uri.startsWith("javascript"))
                    return "current";
                return "tab";
            } catch(e) { return "current"; };
        `)})`);
    },
};

Добавлено 06-09-2020 15:18:13
sibirnik
Так вам вообще везде надо? Я же сказал в общем стиле для меню правте
xrun1

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

Выделить код

Код:

#sidebarMenu-popup {
  --arrowpanel-background: lavender !important;
  --arrowpanel-color: black !important;
}

Отредактировано Vitaliy V. (05-07-2021 21:48:16)

Отсутствует

 

№911606-09-2020 15:36:29

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1750
UA: Firefox 80.0

Re: Настройка внешнего вида Firefox в userChrome.css

Всё сразу подхватилось и отлично работает. Огромное Вам Спасибо! :beer:

Отсутствует

 

№911706-09-2020 17:34:07

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 1644
UA: Firefox 78.0

Re: Настройка внешнего вида Firefox в userChrome.css

Vitaliy V.
Я те скрипты в custom_script_win.js переподключал. Сейчас обратно вернул все в custom_script_all_win.js.
В стандартном сайдбаре работает, в библиотеке в окне работает, в SidebarModoki работает.
Не работает в библиотеке во вкладке и из закладки-меню "последние открытые" ( place:queryType=0&sort=8&maxResults=20 ), открывает используя активную вкладку. Речь про историю.
   
И что делать с секцией в //>>>>>>>>>>| Загрузка скриптов для browser.xhtml |>>>>>>>>>>, у меня там это есть

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

Выделить код

Код:

var smbox = document.querySelector("#SM_toolbox");
                        if (smbox) {
                            smbox.addEventListener("pageshow", listener);
                            this.sidebarmodokibox = {
                                destructor: function() {
                                    smbox.removeEventListener("pageshow", listener);
                                }
                            };
                            this.unloadlisteners.push("sidebarmodokibox");
                        }

Оставить или выкинуть? Для чего это?
   
UP
Из закладки с историей добавил #PlacesToolbarItems.

Отредактировано _zt (06-09-2020 18:26:32)

Отсутствует

 

№911806-09-2020 18:41:55

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

Re: Настройка внешнего вида Firefox в userChrome.css

_zt пишет

Не работает в библиотеке во вкладке

Исправил там ucf_wheretoopenlink.js и загрузчик, и теперь все скрипты вот так оформляйте
loadscript("My_Script.js", win);

_zt пишет

Оставить или выкинуть? Для чего это?

Это уже не нужно листенер пришлось перенести на #browser теперь будет слушать ещё и что открывается во вкладках (но не всё в многопроцессном режиме)
т.к. вам нужно

в библиотеке во вкладке

sandro79
теперь если открыть во вкладке chrome://browser/content/downloads/contentAreaDownloadsView.xhtml
то ваш ucjsDownloadsManager2.uc.js должен там сработать
Если хотите добавьте ещё "about:downloads"

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

Выделить код

Код:

"about:downloads": (win) => {
                    loadscript("ucjsDownloadsManager2.uc.js", win);
                },

Отредактировано Vitaliy V. (06-09-2020 20:07:37)

Отсутствует

 

№911906-09-2020 20:54:56

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1750
UA: Firefox 80.0

Re: Настройка внешнего вида Firefox в userChrome.css

Vitaliy V. пишет

sandro79
теперь если открыть во вкладке chrome://browser/content/downloads/contentAreaDownloadsView.xhtml...

Виталий, спасибо за ещё одну фишку, но не совсем понял куда именно в загрузчик добавить код "about:downloads"? Я добавил после

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

Выделить код

Код:

"chrome://browser/content/downloads/contentAreaDownloadsView.xhtml": (win) => setTimeout(() => {
                    loadscript("ucjsDownloadsManager2.uc.js", win);

                }, 0),

5176aacab433.png

но во вкладке chrome://browser/content/downloads/contentAreaDownloadsView.xhtml и about:downloads (если и там должно), ничего не поменялось, только строка загрузки, кнопка паузы и отмены. Или должна открыться вкладка при старте загрузки? Простите за нубство, но может действительно будет полезно и стоит попробовать.


Коды были обновлены.

Отредактировано sandro79 (06-09-2020 20:59:20)

Отсутствует

 

№912006-09-2020 21:01:58

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

Re: Настройка внешнего вида Firefox в userChrome.css

sandro79
а загрузчик обновили?
+ надо удалить из ucjsDownloadsManager2.uc.js (отделённую часть от ucjsDownloadsManager.uc.js)
if (window.opener && location.href == "chrome://browser/content/downloads/contentAreaDownloadsView.xhtml") { }
то что в скобках разумеется оставить.

Добавлено 06-09-2020 21:10:27

sandro79 пишет

но не совсем понял куда именно в загрузчик добавить код "about:downloads"? Я добавил после

да правильно
P.S. И таким же образом можно добавлять другие URL документов и загружать скрипты.

Отредактировано Vitaliy V. (07-09-2020 14:05:48)

Отсутствует

 

№912106-09-2020 21:18:26

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1750
UA: Firefox 80.0

Re: Настройка внешнего вида Firefox в userChrome.css

Vitaliy V.
Да, удалил, теперь сработало! Вижу разницу :D Так и оставлю, лишним не будет. Огромное Спасибо!

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


И Огромное Спасибо также за кнопку "Настройки расширений". Приноровился быстро, очень удобно.

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

Отредактировано sandro79 (06-09-2020 21:36:10)

Отсутствует

 

№912207-09-2020 15:32:26

momo2000
Участник
 
Группа: Members
Зарегистрирован: 03-09-2015
Сообщений: 237
UA: Firefox 68.0

Re: Настройка внешнего вида Firefox в userChrome.css

sandro79 пишет

И Огромное Спасибо также за кнопку "Настройки расширений". Приноровился быстро, очень удобно.

А как её установить, через скрипты или CB?

Отсутствует

 

№912307-09-2020 15:52:15

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 1644
UA: Firefox 78.0

Re: Настройка внешнего вида Firefox в userChrome.css

momo2000
Через скрипты изначально она и была.
   
Vitaliy V.
Спасибо.

т.к. вам нужно в библиотеке во вкладке

Не нравятся мне отдельные окна, тем более библиотека. Хотя, в случае истории, можно было бы и обойтись, но тогда не было бы такого замечательного и универсального скрипта. )

Отредактировано _zt (07-09-2020 15:53:03)

Отсутствует

 

№912407-09-2020 18:42:09

razoo
Участник
 
Группа: Members
Зарегистрирован: 23-07-2009
Сообщений: 48
UA: Firefox 78.0

Re: Настройка внешнего вида Firefox в userChrome.css

Ещё два вопроса по интерфейсу:
1.
После переезда на 78 пришлось отказаться от кнопки со списком закрытых табов. Очень не хватает.
Все расширения с этим функционалом плохи: деффектные или неудобные. Нативный лист устраивает, однако в гамбургере он закопан аж за четыре клика. В меню - ближе, но тоже неэргономично.
Нельзя ли, с помощью стиля, пункт меню из History "Recently Closed Tabs" продублировать, например, крайним правым на PersonalToolbar, имитируя дропмаркер как у alltabs-button, или, если кому удобней, кнопку?
2.
Как сделать, чтобы new-tab-button был всегда прижат в крайнее правое положение, даже когда его не смещает туда arrowscrollbox? У меня эту кнопку сейчас просто спейсинг подпирает с минусовым отступом (как табуретка - не изящно).

Отсутствует

 

№912507-09-2020 19:19:52

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1750
UA: Firefox 80.0

Re: Настройка внешнего вида Firefox в userChrome.css

momo2000 пишет

через скрипты

У меня подключено в user_chrome_files в скрипт custom_script.js импортом(3-ий спойлер) из ExtensionOptionsMenu.js, но можно и просто добавить в custom_script.js код по третьей ссылке.


В 68 у меня не запустилась, видимо и не должна, там about:addons отличается.

Отредактировано sandro79 (07-09-2020 20:59:57)

Отсутствует

 

Board footer

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