ID нужен для того чтобы не было той ошибки которая возникла у вас
Да, если вставить в manifest.json ID, то можно использовать для установки темы новый код для конфига.
Наверное можно не переживать, что проверка циф. подписи у меня теперь отключена. Что в ней проку, когда с сайта Mozilla люди скачивают подписанное расширение, а потом оказывается, что оно вредоносное? Ставить неизвестное расширение - всегда риск, что с подписью, что без.
Отредактировано linlin (19-12-2020 23:09:48)
Отсутствует
b0ttle
"KeyQ": { "true_true_false": (e, nocache = false) => { // Ctrl+Alt+Q if (this.insertText) return; e.preventDefault(); var cancelQuit = Cc["@mozilla.org/supports-PRBool;1"].createInstance(Ci.nsISupportsPRBool); Services.obs.notifyObservers(cancelQuit, "quit-application-requested", "restart"); if (cancelQuit.data) return false; if (nocache) Services.appinfo.invalidateCachesOnRestart(); var restart = Services.startup; restart.quit(restart.eAttemptQuit | restart.eRestart); }, "true_true_true"(e) { // Ctrl+Alt+Shift+Q this["true_true_false"](e, true); }, "true_false_true"(e) { // Ctrl+Shift+Q для linux if (AppConstants.platform == "linux") this["true_true_false"](e, true); }, },
С Вашими поправками и таким кодом
зачем убрали это правило
#urlbar-container, #search-container { padding-block: var(--v-urlbar-search-container) !important; margin-inline: 0px !important; }
Отсутствует
Vitaliy V.
Спасибо !!!
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); #urlbar[breakout][breakout-extend] { top: calc((var(--urlbar-toolbar-height) - var(--urlbar-height)) / 2) !important; left: 0 !important; width: 100% !important; } #urlbar[breakout][breakout-extend] > #urlbar-input-container { height: var(--urlbar-height) !important; padding-block: 0px !important; padding-inline: 0px !important; } #urlbar[breakout][breakout-extend][breakout-extend-animate] > #urlbar-background { animation-name: none !important; } #urlbar[breakout][breakout-extend] > #urlbar-background { box-shadow: none !important; } #page-action-buttons > :not(#star-button-box) { display: none !important; } .urlbar-history-dropmarker { display: none !important; } /* Change Title/tabs height */ #tabbrowser-tabs { --tab-min-height: 22px !important; margin-left: 1px !important; height: 22px !important; } #TabsToolbar { --toolbarbutton-outer-padding: 4px !important; --toolbarbutton-inner-padding: 0px !important; } #urlbar:not(:-moz-lwtheme) > #urlbar-background, #searchbar:not(:-moz-lwtheme) { border-color: transparent !important; } *|*:root[uidensity="compact"] { --toolbarbutton-outer-padding: 4px !important; --toolbarbutton-inner-padding: 2px !important; --v-urlbar-search-container: 0px; } #urlbar-container, #search-container { padding-block: var(--v-urlbar-search-container) !important; margin-inline: 0px !important; } #urlbar-search-splitter { min-width: 0px !important; width: 0px !important; margin: 0 0px !important; } .tabbrowser-tab image.tab-icon-image { display: none !important; } .tab-content { padding: 0 1px !important; } .tab-close-button { margin: 2 !important; } .tab-label { line-height: 1.3em !important; -moz-box-flex: 1 !important; text-align: center !important; } * { font-size: 11pt !important; font-family: "Corbel"; font-weight: bold !important; }
С таким пока останусь кодом )))
Потом с тёмной Adwaita проверить .
Благодарю за помощь и потраченное время !
Ещё б подсказали какой параметр за "тень" кнопки закрытия вкладки отвечает ? В этом коде , вроде , нет его .
Отредактировано skichmen (20-12-2020 00:48:21)
Отсутствует
Ещё б подсказали какой параметр за "тень" кнопки закрытия вкладки отвечает ?
fill: цвет крестика и фона
fill-opacity: прозрачность фона
.tab-close-button { fill-opacity: 0 !important; fill: currentColor !important; } .tab-close-button:hover { fill-opacity: 0.1 !important; } .tab-close-button:hover:active { fill-opacity: 0.2 !important; }
Отсутствует
Vitaliy V.
Спасибо !!!
В качестве прикола ...
Отсутствует
skichmen
Очень круто, не надо столько править всего.
Только все немного размыто.
Vitaliy V.
Здравствуйте, хотел спросить вы в full-theme не добавляли темные темы для некоторых сайтов?
Если так, то как можно добавить в список и другие?
Отредактировано b0ttle (21-12-2020 16:20:38)
Отсутствует
b0ttle
У меня нормально . Размыто , может быть от несовпадения Dpi . Как это в винде проверить незнаю . В about:config это параметр layout.css.dpi . По умолчанию значение -1 , т.е. - автоматически . Попрубуйте поставить свои параметры . Или это
Если Firefox не может определить корректное значение автоматически, то частота смены кадров будет равняться 60. Задайте параметру layout.frame_rate частоту смены кадров используемого монитора (например, 144 для монитора с частотой 144 Гц), чтобы изменить данное поведение вручную.
Только запоминайте , что меняете ( я записываю ))) .
Отсутствует
b0ttle
нет никакого списка, только настройка ui.systemUsesDarkTheme - 1
у меня она включается если тема темная. Поэтому и контент становится темным -
служебные страницы и сайты которые это поддерживают.
Поддержка может быть реализована на одном CSS
prefers-color-scheme
Отсутствует
возник вопрос по использованию user_chrome_files:
Было несколько кодов прописанных в файле custom_script.js. Я их решил вынести в отдельные файлы и прописать через @import url("./js/script_name.js") - всё получилось и работает.
А вот с кодами из файла custom_script_win.js такое не прокатило. Сами коды были прописаны в самом низу файла. Импорты помещал и туда же, и в начало, и в середину (после строки // Здесь может быть ваш код который сработает по событию "load" не раньше) - не срабатывают...
Какие могут быть варианты?
Добавлено:
всё таки еще не прошел импорт кода Switch Keyboard Layout button в файл custom_script.js...
Отредактировано Inko7 (22-12-2020 21:38:22)
Отсутствует
Как добавить под хоткей mute/unmute.
есть Ctrl+M
или добавляйте с этим
gBrowser.toggleMuteAudioOnMultiSelectedTabs(gBrowser.selectedTab);
Я их решил вынести в отдельные файлы и прописать через @import url("./js/script_name.js") - всё получилось и работает.
не могло такое работать, это синтаксис для CSS
Для custom_script.js 3 спойлер https://forum.mozilla-russia.org/viewto … 58#p784558
можно и для custom_script_win.js использовать
Отсутствует
не могло такое работать, это синтаксис для CSS
да, действительно, ложное впечатление было...
а в сам userChrome.css импорт можно делать?
@import url("./css/style_name.css") - никак не срабатывает
Отредактировано Inko7 (23-12-2020 10:51:01)
Отсутствует
В начале документа, до всего остального.
а я после строки @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); вставлял.
поместил до нее и всё заработало
спасибо
Отсутствует
Для custom_script.js 3 спойлер https://forum.mozilla-russia.org/viewto … 58#p784558
можно и для custom_script_win.js использовать
что-то не получается
поместил в конец файла custom_script.js такой код:
(() => { var loadscript = name => { try { Services.scriptloader.loadSubScript(`chrome://user_chrome_files/content/custom_scripts/${name}`, globalThis, "UTF-8"); } catch(e) {} }; loadscript("kbd_layout.js"); loadscript("MiddleMouse_Paste.js"); })();
сами файлики скриптов положил в этой же папке
ничего не заработало
та же история и с custom_script_win.js
Отсутствует
Неужели так трудно README прочесть...
https://github.com/VitaliyVstyle/Vitali … eenshot_03
Отредактировано Vitaliy V. (24-12-2020 19:01:52)
Отсутствует
Inko7, а kbd_layout.js это отсюда скрипт? Он довольно старый, может, он не подходит для FF84? У меня он не заработал, подключать пробовал в custom_script.js и в custom_script_win.js (тоже люблю, когда скрипты отдельно).
Отсутствует
kazarin
нет не отсюда
порт с кнопки custom buttons для файла custom_script.js:
// Switch Keyboard Layout button (порт с СВ) try {(keybUtils => CustomizableUI.createWidget({ type: "custom", id: "SwitchKeyboardLayout", onBuild(doc) { var btn = doc.createXULElement("toolbarbutton"); btn.id = this.id; btn.label = btn.tooltipText = "Switch Keyboard Layout"; btn.image = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAk1BMVEX///8/Pz8BAQF8fHwJCQkCAgIJCQl8fHx9fX0AAABJSUkBAQENDQ0wMDBVVVUAAABra2t0dHR7e3thYWEBAQEAAAAAAAABAQEAAAAgICABAQEBAQH8/Pzw8PDp6en39/fj4+Pe3t41V9I/YeWKioqDg4N9fX0jRa8wUrVoaGhkhuxWeNx1dXVCZMhvb28kRqsqTL4KidXxAAAAHHRSTlMAAABndwAAAAA0blVZcm1naWhNa6hrcJ8AAKRU4jk/3gAAAHVJREFUeF6FyMUCwjAUBdEbaQupUMOjqMv/fx1dQN6yZ3aDcWnyw6ezoRWNYc15kqKQZCFlgTKQQwgllL/dn5f3+bPb+6P3CpWNw56srdCZOMzDmA61i8O9nKvRaHLVukEryFKIFtnkj7ENYxmNdd5v+5xj1BcJ/w9Kj6K7ZAAAAABJRU5ErkJggg=="; btn.setAttribute("oncommand", "linkedObj.switch(document);"); btn.className = "toolbarbutton-1 chromeclass-toolbar-additional"; btn.linkedObj = this; return btn; }, switch(doc) { var br = doc.activeElement; br && br.localName == "browser" && br.isRemoteBrowser ? br.messageManager.loadFrameScript(this.url, false) : this.keybUtils.switchSelKeybLayout(); }, get url() { delete this.url; return this.url = `data:;charset=utf-8,(${ encodeURIComponent(keybUtils) }).switchSelKeybLayout()`; }, get keybUtils() { delete this.keybUtils; var def = "let{KeyEvent,HTMLInputElement,HTMLTextAreaElement}=Cu.getGlobalForObject(Services);"; var url = `data:;charset=utf-8,${def}%0Athis.keybUtils=${encodeURIComponent(keybUtils)}`; Services.scriptloader.loadSubScript(url, this); var {id} = this; this.keybUtils.getFocusedElement = function(_subCall, _focusFixed) { var window = Services.focus.activeWindow, {document} = window; var button = document.getElementById(id); if( !_focusFixed && "closeMenus" in window && document.commandDispatcher.focusedElement == button ) { window.closeMenus(button); window.setTimeout(function(_this) { _this.switchSelKeybLayout(_subCall, true); }, 0, this); return; } return document.commandDispatcher.focusedElement; } return this.keybUtils; } }))(`{ //== Options noSelBehavior: { // Shift+Home ctrlKey: false, altKey: false, shiftKey: true, metaKey: false, keyCode: KeyEvent.DOM_VK_HOME, charCode: 0 }, // 0 - do nothing // 1 - convert all text // Or use object like following to simulate "keypress" event: convTableForward: { // ru -> en "\\"": "@", ":": "^", ";": "$", "?": "&", ",": "?", "/": "|", ".": "/", "э": "'", "б": ",", "ю": ".", "Ж": ":", "ж": ";", "Б": "<", "Ю": ">", "Э": "\\"", "х": "[", "ъ": "]", "ё": "\`", "Х": "{", "Ъ": "}", "Ё": "~", "№": "#", "Ф": "A", "ф": "a", "И": "B", "и": "b", "С": "C", "с": "c", "В": "D", "в": "d", "У": "E", "у": "e", "А": "F", "а": "f", "П": "G", "п": "g", "Р": "H", "р": "h", "Ш": "I", "ш": "i", "О": "J", "о": "j", "Л": "K", "л": "k", "Д": "L", "д": "l", "Ь": "M", "ь": "m", "Т": "N", "т": "n", "Щ": "O", "щ": "o", "З": "P", "з": "p", "Й": "Q", "й": "q", "К": "R", "к": "r", "Ы": "S", "ы": "s", "Е": "T", "е": "t", "Г": "U", "г": "u", "М": "V", "м": "v", "Ц": "W", "ц": "w", "Ч": "X", "ч": "x", "Н": "Y", "н": "y", "Я": "Z", "я": "z", __proto__: null }, //== End of options get convTableBackward() { var ctb = { __proto__: null }; var ctf = this.convTableForward; for(var c in ctf) ctb[ctf[c]] = c; delete this.convTableBackward; return this.convTableBackward = ctb; }, inPrimaryLayout: function(s) { for(var i = 0, l = s.length; i < l; ++i) { var c = s.charAt(i); if(c in this.convTableForward) return true; if(c in this.convTableBackward) return false; } return false; }, switchKeybLayout: function(s, convTable) { var res = ""; for(var i = 0, l = s.length; i < l; ++i) { var c = s.charAt(i); res += c in convTable ? convTable[c] : c; } return res; }, getFocusedElement: function() { return Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager) .getFocusedElementForWindow(content, true, {}); }, switchSelKeybLayout: function(_subCall, _focusFixed) { var fe = this.getFocusedElement(_subCall, _focusFixed); if(!fe) return; if(fe instanceof HTMLInputElement || fe instanceof HTMLTextAreaElement) { var ta = fe; try { var val = ta.value; var sel = val.substring(ta.selectionStart, ta.selectionEnd); } catch(e) { // Non-text HTMLInputElement return; } if(!sel && val && this.noSelBehavior && !_subCall) { if(this.noSelBehavior == 1) { ta.selectionStart = 0; ta.selectionEnd = val.length; sel = val; } else { this.handleNoSel(ta); return; } } if(!sel) return; var res = this.switchKeybLayout( sel, this.inPrimaryLayout(sel) ? this.convTableForward : this.convTableBackward ); if(res != sel) this.insertText(ta, res); } else if(fe.contentEditable == "true") { var doc = fe.ownerDocument; var docURI = doc.documentURI; if( docURI.substr(0, 5) == "data:" && docURI.indexOf("chrome://browser/skin/devtools/") != -1 ) { //~ todo: seems like we only can use paste from clipboard here... return; } var sel = doc.defaultView.getSelection(); var rng = sel.rangeCount && sel.getRangeAt(0); var tmpNode; if(!rng || rng.collapsed) { if(!this.noSelBehavior || _subCall) return; if(this.noSelBehavior == 1) { var r = doc.createRange(); r.selectNodeContents(fe); sel.removeAllRanges(); sel.addRange(r); tmpNode = fe.cloneNode(true); } else { this.handleNoSel(fe); return; } } else { tmpNode = doc.createElementNS("http://www.w3.org/1999/xhtml", "div"); tmpNode.appendChild(rng.cloneContents()); } var orig = tmpNode.innerHTML; var convTable = this.inPrimaryLayout(tmpNode.textContent) ? this.convTableForward : this.convTableBackward; var _this = this; var parseChildNodes = function(node) { if(node instanceof Element) { var childNodes = node.childNodes; for(var i = childNodes.length - 1; i >= 0; --i) parseChildNodes(childNodes[i]); } else if(node.nodeType == node.TEXT_NODE) { var text = node.nodeValue; var newText = _this.switchKeybLayout(node.nodeValue, convTable); if(newText != text) node.parentNode.replaceChild(doc.createTextNode(newText), node); } } parseChildNodes(tmpNode); var res = tmpNode.innerHTML; if(res != orig) doc.execCommand("insertHTML", false, res); } }, handleNoSel: function(node) { this.select(node); this.switchSelKeybLayout(true); }, select: function(node) { var e = this.noSelBehavior; if(!e || typeof e != "object") return; var evt = node.ownerDocument.createEvent("KeyboardEvent"); evt.initKeyEvent( "keypress", true /*bubbles*/, true /*cancelable*/, node.ownerDocument.defaultView, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.keyCode, e.charCode ); node.dispatchEvent(evt); }, insertText: function(ta, text) { //var editor = ta.QueryInterface(Components.interfaces.nsIDOMNSEditableElement).editor var editor = ta.editor .QueryInterface(Components.interfaces.nsIPlaintextEditor || Ci.nsIEditor); if(editor.flags & editor.eEditorReadonlyMask) return; var sTop = ta.scrollTop; var sHeight = ta.scrollHeight; var sLeft = ta.scrollLeft; // var sWidth = ta.scrollWidth; if(text) editor.insertText(text); else editor.deleteSelection(0, 0); ta.scrollTop = sTop + (ta.scrollHeight - sHeight); ta.scrollLeft = sLeft; // + (ta.scrollWidth - sWidth); } }`)} catch(ex) {Cu.reportError(ex);}
// Назначить клавишу F8 для исправления раскладки введенного текста // код SwitchKeyboardLayout в файле custom_script.js try {(id => { var listener = { get obj() { var obj = document.getElementById(id); if (obj) obj = obj.linkedObj; else { obj = Cu.import("resource:///modules/CustomizableUI.jsm", {}) .gPalette.get(id); if (obj) obj = obj.implementation; else { Services.console.logStringMessage(id + " not found"); return this.destroy() || {switch() {}}; } } delete this.obj; return this.obj = obj; }, handleEvent(e) { if (e.key != "F8" || e.ctrlKey || e.shiftKey || e.altKey || e.repeat) return; //e.preventDefault(); //e.stopPropagation(); this.obj.switch(document); }, destroy: function destroy() { removeEventListener("keydown", this, true); removeEventListener("unload", destroy); } }; addEventListener("keydown", listener, true); addEventListener("unload", listener.destroy); })("SwitchKeyboardLayout");} catch(ex) {Cu.reportError(ex);}
эти коды помещенные в сами файлы работают нормально, а вот с импортом пока не разберусь
Отсутствует
Inko7
проверил работает.
Запакуйте вашу папку custom_scripts с файлами и выложите посмотреть как вы пытаетесь сделать.
Отсутствует
Vitaliy V.
Обновил ucf
было
стало
Причем, горизонтальная панель это дополнительная и с ней, как видим, все нормально.
Как вернуть цвет вертикальной панели, назад к стандартным для темы значениям?
Win 7, Aero, стандартная темная тема + стили.
Забыл добавить.
Панели с прозрачностью. Вот пару окон в фоне добавил, для наглядности.
Отредактировано _zt (24-12-2020 12:49:25)
Отсутствует
Inko7
кодировка файлов должна быть UTF-8 (лучше без BOM)
а у вас какая угодно только не такая.
Теперь вам лучше не перекодировать, а создать файлы UTF-8 и вставить заново эти коды.
Добавлено 24-12-2020 13:09:03
+ стили
Видимо из-за них. Панели с прозрачностью это стили или тема ? На картинке ничего невидно.
Отредактировано Vitaliy V. (24-12-2020 13:11:04)
Отсутствует
Vitaliy V.
Стиль конечно, откуда бы взятся прозрачности в стандартной темной теме.
*|*:root:-moz-lwtheme {
--toolbar-bgcolor: rgba(0,0,0,.6) !important;
Не видно измененный цвет вертикальной панели?
Ну тогда не знаю. Пусть просто вертикальная панель подхватывает тему панелей браузера, как это должно быть и как это было в предыдущей версии ucf. А не занимается самодеятельностью. Ваша дополнительная панель вполне с этим справляется, или это тоже на скринах не видно? Или вы скрины не видите? Я не понял.
Отсутствует
Не видно измененный цвет вертикальной панели?
последний скриншот - непонятное пятно.
Да я там обновлял цвета панелей в связи с переменной --lwt-additional-images в некоторых темах работало некорректно
Проверьте если в vertical_top_bottom_bar.css заменить
#add-additional-vertical-box:-moz-lwtheme > #add-additional-vertical-bar, #add-additional-bottom-bar:-moz-lwtheme { color: var(--toolbar-color, inherit) !important; background-repeat: repeat-y !important; background-size: auto auto !important; background-attachment: fixed !important; background-position: right top, var(--lwt-background-alignment, right top) !important; background-color: var(--lwt-accent-color, white) !important; background-image: linear-gradient(var(--toolbar-bgcolor, rgba(255,255,255,.4)), var(--toolbar-bgcolor, rgba(255,255,255,.4))), var(--lwt-header-image, var(--lwt-additional-images, var(--v-lwt-header-image, none))) !important; } #add-additional-vertical-box:-moz-lwtheme-brighttext > #add-additional-vertical-bar, #add-additional-bottom-bar:-moz-lwtheme-brighttext { background-color: var(--lwt-accent-color, black) !important; }
#add-additional-vertical-box:-moz-lwtheme > #add-additional-vertical-bar, #add-additional-bottom-bar:-moz-lwtheme { color: var(--toolbar-color, inherit) !important; background-repeat: repeat-y !important; background-size: auto auto !important; background-attachment: fixed !important; background-position: right top, var(--lwt-background-alignment, right top) !important; background-color: transparent !important; background-image: linear-gradient(var(--toolbar-bgcolor, rgba(255,255,255,.4)), var(--toolbar-bgcolor, rgba(255,255,255,.4))), var(--lwt-header-image, var(--lwt-additional-images, var(--v-lwt-header-image, none))) !important; } #add-additional-vertical-box[vertautohide="true"]:-moz-lwtheme > #add-additional-vertical-bar { background-color: var(--lwt-accent-color, white) !important; } #add-additional-vertical-box[vertautohide="true"]:-moz-lwtheme-brighttext > #add-additional-vertical-bar { background-color: var(--lwt-accent-color, black) !important; }
Отредактировано Vitaliy V. (24-12-2020 14:17:33)
Отсутствует