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)
Отсутствует
Vitaliy V.
последний скриншот - непонятное пятно.
Последний скриншот демонстрирует прозрачность панелей, и больше ничего.
это решает вашу проблему?
Да. спасибо. Вертикальная и нижняя панели опять подхватывают общий стиль браузера и рефлексию Aero.
Отредактировано _zt (24-12-2020 16:11:15)
Отсутствует
обновил, заодно на всякий случай добавил скрытую настройку extensions.user_chrome_files.custom_safemode
если переключить в false custom-стили-скрипты будут загружаться в safe mode
Отсутствует
обновил, заодно на всякий случай добавил скрытую настройку extensions.user_chrome_files.custom_safemode
Вот это отлично, пригодится, чтоб не править в user_chrome.js. Добавил в config.js строку lockPref("extensions.user_chrome_files.custom_safemode", false); Спасибо!
Отсутствует
b0ttle
Строка переключает эту настройку. Ну я добавляю нек. параметры about:config в config.js.
То бишь перезапуск с отключенными дополнениями, в то время как стили и скрипты остаются включенными.
Отсутствует
Здравствуйте. Подскажите, пожалуйста, код для скрытия галочки "показать историю"в адресной строке Firefox 68.12 ESR. Точно помню, что находил его где-то здесь, но вот уже час ковыряю форум, а код не находится...
Отсутствует
metlbist
Отсутствует
Здравствуйте, как сделать вкладки чтобы были одни иконки, а действующий нормальный размер, ну средний там?
.Еще вопрос, можно при наведений сделать так чтобы иконка вкладки превращалась в крестик закрытия? так то в основном пользуюсь Ctrl+W, но как альтернатива.
.Крестик скрыт пока на него не наведешь, на действующей вкладке также.
Отредактировано b0ttle (06-01-2021 15:19:22)
Отсутствует
Всех с праздником!
Поставил Aris-t2 v3.1.8 перетащил вкладки вниз, а верхняя строка очень широкая - вопрос как уменьшить?
Спасибо!
Отредактировано GENNADICH (08-01-2021 16:37:15)
Отсутствует
foxnub пишетА в настройках кода можно подшаманить циферки - чтобы панелька была побольше, подлинее?Добавил ещё настроек см. комментарии в коде https://forum.mozilla-russia.org/viewto … 86#p782586
Можно ли добавить возможность поиска по всем открытым вкладкам одновременно и видеть на какой вкладке совпадение? Или может расширение/скрипт есть более подходящие? Спасибо)
Отсутствует
Добрый день!
Вернулся с хрома на мозиллу спустя три года. Вроде все ок. Но при работе с адресной строкой появляется рамка синяя, сильно отвлекает. Как через userChrome сделать адресную строку неизменяемую, без синей рамки? Скрины ниже.
https://i.imgur.com/RVyEk9X.png
https://i.imgur.com/0r2tWLi.png
ps для того, чтобы все работало надо жеж создать в папке профиля папку chrome и там userChrome.css?
Отсутствует
LittleMontana
Ну, с возвращением, беглец
Как вернуть старый вид адресной строки в Firefox 75 и выше
и/или
Сообщение
Отсутствует
zzzephire
Спасибо! А что добавить, чтобы вообще не было синей рамочки? Не разбираюсь в стилях, пробовал поискать сам, но чет не особо находится. Поэтому спрашиваю в лоб)
И подскажите пожалуйста, как добавить в контекстное меню вкладки опцию "выключить звук на сайте" и обратную опцию "включить звук на сайте"? В FF приходится отключать звуки на каждой вкладке по отдельности, а это не очень удобно и занимает много времени.
Отредактировано LittleMontana (24-01-2021 02:48:44)
Отсутствует
Добрый день, хотел бы узнать как сделать так, что бы контекстное меню было "прибито" к месту клика и разворачивалось всегда одинаково, под стрелкой (вниз) и что бы не сворачивалось в тех случаях когда не вмещается. Сейчас если увести окно слишком вниз, вне экрана (под меню пуск к примеру), контекстное меню будет вылазить в видимую область.
Отредактировано melkichelik (25-01-2021 17:48:52)
Отсутствует
Сместил #nav-bar вверх, но при перетаскивании вкладок получается баг. Подскажите, как исправить:
#nav-bar:not([inFullscreen=true]) { margin-top: -16px !important; margin-left: 70px !important; margin-bottom: 1px !important; }
Отсутствует