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

Будьте в курсе последних изменений в мире Mozilla, следя за нашим микроблогом в Twitter.

№55129-09-2022 18:13:08

LGS
Участник
 
Группа: Members
Зарегистрирован: 17-09-2022
Сообщений: 44
UA: Firefox 78.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Dumby

Dumby пишет

Ну и настраивать код, конечно, придётся.

На Win10 почти идеально выглядит без правок:
Titlebar.1664463242.png
и текст не подменяется. Реально круто, спасибо!

Dumby пишет

если пишу
#bookmarks-view > treechildren::-moz-tree-separator {
    margin-right: 16px !important;
}

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

Dumby пишет

ничего не получилось

Разве такое может быть..?

Отсутствует

 

№55220-10-2022 14:09:39

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Отсутствует

 

№55320-10-2022 15:51:22

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

xrun1 пишет

"подставляющий модификаторы поиска"

попробовал запустить код через userCromeJS от Ксяо на [firefox] 106.0.1, не заработала только очистка мышкой #searchbar. брал из второго спойлера с пометкой Update, может в этом проблема...


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

Отсутствует

 

№55420-10-2022 16:22:25

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

xrun1
Сходил по ссылке, вставил код в 108.0a1, пункт есть.

Отсутствует

 

№55520-10-2022 17:14:18

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Dumby
Работает, даже не знаю, что у меня было.:beer:

Отсутствует

 

№55601-11-2022 13:47:13

sn260591
Участник
 
Группа: Members
Зарегистрирован: 26-09-2015
Сообщений: 89
UA: Firefox 106.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Подскажите код, который осуществляет перезапуск браузера с текущими аргументами командной строки. Взятый отсюда https://forum.mozilla-russia.org/viewto … 43#p798943 перезапускает без аргументов.

Отсутствует

 

№55706-11-2022 06:44:50

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Обновил Demo-ПРОФИЛЬ для Firefox 84+
Скрипт меню сократил, но добавил всплывающих подсказок. Многие скрипты обновлены.
В зависимости от операционной системы, подключаются дополнительные стили для custom_styles_all_user.css.
Теперь у кнопок 2 режима работы - переключаются долгим кликом по Attributes Inspector в левой панели.
Пока режимы работы отличаются только подсказками, но возможно сделать полностью 2 различных профиля кнопок.
Например, в одном режиме у кнопок есть двойной клик, в другом долгое нажатие.
В одном режиме (Экспертном) подключены одни кнопки, во втором (простом) другие.

Отредактировано Dobrov (06-11-2022 06:53:57)

Отсутствует

 

№55807-11-2022 15:06:53

LGS
Участник
 
Группа: Members
Зарегистрирован: 17-09-2022
Сообщений: 44
UA: Firefox 68.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Dumby, можно заставить работать эти скрипты FirefoxTaskManager part1, part2 (не знаю, почему автор разбил на две части) и aboutconfig_menu.uc.js в 68ESR..? Размеры, конечно, не хилые, но, может, посмотрите, что можно сделать..?

Отсутствует

 

№55907-11-2022 18:57:19

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

LGS пишет

и aboutconfig_menu.uc.js в 68ESR

Сначала убрать, на всякий случай, строку console.log("aboutconfig_menu.uc.js");
Затем заменить btn.type = 'menu'; на btn.setAttribute("type", "menu");


И должно работать. Ну, иконку ещё заменить, в 68 нет никакого «ion.svg».
Расположить, разумеется, в custom_script.js, а не в окно.


А FirefoxTaskManager — вот тут не знаю.
Для меня всё упирается в CSS. Если JS ещё могу поправить,
то как спозиционировать то, что скрипт суёт во вкладки, так, как в 102, я совершенно без понятия.

Отсутствует

 

№56007-11-2022 20:53:00

LGS
Участник
 
Группа: Members
Зарегистрирован: 17-09-2022
Сообщений: 44
UA: Firefox 78.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Dumby

Dumby пишет

должно работать

Спасибо, работает.

Dumby пишет

что скрипт суёт во вкладки, так, как в 102, я совершенно без понятия

А если упростить задачу: вот этот адаптировать под 68. На 78 проверял, там, вроде, только выпадающий список без "вторжения" во вкладки.
Судя по потрохам скрипта, задачу это не упрощает. Отбой, извиняюсь за отнятое время.

Отредактировано LGS (07-11-2022 23:00:20)

Отсутствует

 

№56108-11-2022 13:38:06

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

LGS пишет

там, вроде, только выпадающий список без "вторжения" во вкладки

Вторжение есть, div.tabBars добавляется в табский vbox.tab-background
Но да, что-то никакого видимого тултипа это не образует.
Так что попробуем вернуться к предыдущему варианту.


Насчёт позиционирования, оно работает, если .tab-content'у назначить position: relative
Как бы это чего-нибудь не сломало, надо приглядеться.


Кстати вот про «не знаю, почему автор разбил на две части»,
надо полагать, это потому, что скрипты сделаны под «xiaoxiaoflood's uc loader»,
и у второго (part2) присутствует директива @onlyonce, то есть он должен исполняться только один раз.


Итак, part2.
Убираем строку console.log("taskmonitor_part2.js");
Меняем btn.type = 'menu'; на btn.setAttribute("type", "menu");
В стиль (он там в конце) добавляем
tab.tabbrowser-tab .tab-content {position: relative !important;}
И перемещаем скрипт в custom_script.js, если он ещё не там.


part1
Меняем (все) document.body на просто document
то есть убираем «.body», в 68 у документа нет никакого body
И меняем эти четыре строки

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

Выделить код

Код:

/*
        var insertNode = tabNode.getElementsByClassName("tab-content")[0];
*/
        var insertNode = document.getAnonymousElementByAttribute(tabNode, "class", "tab-content");


/*
        var close_button = tabNode.getElementsByClassName("tab-content")[0].getElementsByClassName("tab-close-button")[0];
*/
        var close_button = insertNode.querySelector(":scope > .tab-close-button");


/*
            if ( _btnNode ) btnNode = _btnNode.getElementsByClassName("toolbarbutton-badge-stack")[0];
*/
            if (_btnNode) btnNode =  document.getAnonymousElementByAttribute(_btnNode, "class", "toolbarbutton-badge-stack");


/*
            contParent = document.createXULElement("div");
*/
            contParent = document.createXULElement("box");

Отсутствует

 

№56208-11-2022 18:43:43

LGS
Участник
 
Группа: Members
Зарегистрирован: 17-09-2022
Сообщений: 44
UA: Firefox 68.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Dumby, круто, как всегда, огромное спасибо:

скрытый текст
Taskbar-4.1667918402.png   Taskbar-5.1667918423.png   Taskbar-6.1667918439.png

Только пришлось помимо четырех строк еще три заменить, а то консоль ошибки выдавала и по щелчку ЛКМ в окошке с голубым фоном значения не выводились:
скрытый текст
// var menu_task_obj = win.documen.getElementsByClassName( "fftm_widget_task" )[i;
    var menu_task_obj = document.getElementById( "fftm_widget_task_"+i );

// var fftm_widget = win.documen.getElementsByClassName("fftm_widget_class")[0];
   var fftm_widget = document.getElementById("fftm_widget");

// var _btnNode = win.documen.getElementsByAttribute("data-extensionid",addonId)[0];
    var _btnNode = document.getElementsByAttribute("data-extensionid",addonId


Хорошо, что у автора они прописаны были выше под комментариями (стр. 700, к примеру)... наугад попробовал строку с ошибкой закомментировать, авторскую активировать - получилось.

Отредактировано LGS (08-11-2022 18:49:02)

Отсутствует

 

№56308-11-2022 19:14:08

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

LGS пишет

пришлось помимо четырех строк еще три заменить

Видимо реплейс «.body» прошёл кривовато.
В приведённых строках везде «win.documen»
без буквы «t» на конце слова документ.

Отсутствует

 

№56408-11-2022 19:35:15

LGS
Участник
 
Группа: Members
Зарегистрирован: 17-09-2022
Сообщений: 44
UA: Firefox 68.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Dumby пишет

В приведённых строках везде «win.documen»
без буквы «t» на конце слова документ.

Мой косяк, когда в редакторе замену делал document.body на document букву t потерял. В оригинале все нормально. Странно, что вообще сработала замена трех строк.

Вернул букву t, три строки привел в первоначальное состояние - все нормально. Невнимательность повлекла за собой лишние телодвижения.

Отредактировано LGS (08-11-2022 19:44:39)

Отсутствует

 

№56517-11-2022 16:47:05

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Случайно заметил, что обновился скрипт от Alice0775 memoryMinimizationButton.uc.js. Убрал 3 сообщения слева снизу и заменил "всплывашкой". Кнопка у меня в боковой панели, добавил отступ - в [firefox] v.107 прижалась влево к границе окна. Если кто пользуется, в CustomStylesScripts.jsm секция load: [ // По событию "load"
{ path: "memoryMinimizationButton.uc.js", ucfobj: false, },

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

Выделить код

Код:

// ==UserScript==
// https://raw.githubusercontent.com/alice0775/userChrome.js/master/108/memoryMinimizationButton.uc.js
// @name           memoryMinimizationButton.uc.js
// @namespace      http://space.geocities.yahoo.co.jp/gl/alice0775
// @description    memory minimization button
// @charset        utf-8
// @include        main
// @include        about:processes?memoryMinimizationButton
// @compatibility  Firefox 108
// @author         Alice0775
// @version        2022/10/18 10:00 fix Bug 1790616
// @version        2022/06/18 00:00 kil process
// @version        2018/10/09 00:00 fix CSS
// @version        2018/09/07 23:00 fix initial visual status
// ==/UserScript==
var memoryMinimizationButton = {
  get memoryMinimizationButton(){
    return document.getElementById("memoryMinimizationButton");
  },

  get statusinfo() {
    if ("StatusPanel" in window) {
      // fx61+
      return StatusPanel._labelElement.value;
    } else {
      return XULBrowserWindow.statusTextField.label;
    }
  },

  set statusinfo(val) {
    if ("StatusPanel" in window) {
      // fx61+
      StatusPanel._label = val;
    } else {
      XULBrowserWindow.statusTextField.label = val;
    }
    if(this._statusinfotimer)
      clearTimeout(this._statusinfotimer);
    this._statusinfotimer = setTimeout(() => {this.hideStatusInfo();}, 2000);
    this._laststatusinfo = val;
    return val;
  },

  init: function() {
    let style = `
      #memoryMinimizationButton {
          width: 16px;
          height: 16px;
          margin-left: 5px; /* со 107-й сломалось, добавил */
        list-style-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjEuMWMqnEsAAAFdSURBVFhH7VbLbsMwDMsef5dc8z/53F13GXZYm5kaZciqnKro2hxaAkRkmkqI2gI6KNZ1vStPEJluyS6WZVlB3xDpWc3q/Ewf6ASClwicLkhojc5PxaDvgQIU4dWSPjEa/Z1y1ed5fqPUeCmJVhAGUC9YNzz4ghNEelYDrI5aAozjeNyD5QBqgF34DJAN8GN4oGb3cJ527fftumEqgAVurdk7Um680zR92bXWEdMBWB+s14+TegFf93hpgF5dgylK/cFSPSGvOgKA9afWgP4y+lR/xKuOwMN6AdwFXff4H0eAqfhWnU9Mhdx+rrtMBSjER3TUtLYaqOMYjaldN8wGuBmfAWqAcmMPe1ACYF6lIBUZXXFO29I3/5IVoFMpcLoA2iX96gVLiBb0bb6gINSy/WLsgb4HDgBD0BzqXsv0i8nDm+/JCC8lKW5zY4SGvT9LBdbVS0g/64q4fxh+AZvdJHHKcZdFAAAAAElFTkSuQmCC');
      }
      @media (min-resolution: 1.1dppx) {
        #memoryMinimizationButton {
          width: 32px;
          height: 32px;
        }
      }
     `.replace(/\s+/g, " ");

    let sss = Components.classes['@mozilla.org/content/style-sheet-service;1']
                .getService(Components.interfaces.nsIStyleSheetService);
    let newURIParam = {
        aURL: 'data:text/css,' + encodeURIComponent(style),
        aOriginCharset: null,
        aBaseURI: null
    }
    let cssUri = Services.io.newURI(newURIParam.aURL, newURIParam.aOriginCharset, newURIParam.aBaseURI);
    if (!sss.sheetRegistered(cssUri, sss.AUTHOR_SHEET))
      sss.loadAndRegisterSheet(cssUri, sss.AUTHOR_SHEET);

    if (this.memoryMinimizationButton)
      return;

    ChromeUtils.import("resource:///modules/CustomizableUI.jsm");
    try {
      CustomizableUI.createWidget({ //must run createWidget before windowListener.register because the register function needs the button added first
        id: 'memoryMinimizationButton',
        type:  'custom',
        defaultArea: CustomizableUI.AREA_NAVBAR,
        onBuild: function(aDocument) {
          var toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
          var props = {
            id: "memoryMinimizationButton",
            class: "toolbarbutton-1 chromeclass-toolbar-additional",
            tooltiptext: "Memory minimization(shift+click; kill other tabs)",
            oncommand: "memoryMinimizationButton.doMinimize(event);",
            type: CustomizableUI.TYPE_TOOLBAR,
            label: "Memory minimization",
            removable: "true"
          };
          for (var p in props) {
            toolbaritem.setAttribute(p, props[p]);
          }
          
          return toolbaritem;
        },
      });
    } catch(ee) {}
  },

  doMinimize: function(event) {
    function doGlobalGC()  {
       Services.obs.notifyObservers(null, "child-gc-request");
       Cu.forceGC();
    }

    function doCC()  {
      Services.obs.notifyObservers(null, "child-cc-request");
      if (typeof window.windowUtils != "undefined")
        window.windowUtils.cycleCollect();
      else
      window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
            .getInterface(Components.interfaces.nsIDOMWindowUtils).cycleCollect();
    }

    function doMemMinimize(event) {
      if (event.button == 1 || event.shiftKey || event.altKey || event.ctrlKey)
        memoryMinimizationButton.kill();
      Services.obs.notifyObservers(null, "child-mmu-request");
      var gMgr = Cc["@mozilla.org/memory-reporter-manager;1"]
             .getService(Ci.nsIMemoryReporterManager);
//      gMgr.minimizeMemoryUsage(() => {if (!(event.button == 1 || event.shiftKey || event.altKey)) memoryMinimizationButton.displayStatus("Memory minimization done")});
      gMgr.minimizeMemoryUsage(() => {if (!(event.button == 1 || event.shiftKey || event.altKey)) memoryMinimizationButton.displayStatus("")});
    }
    function sendHeapMinNotifications()  {
      function runSoon(f) {
        var tm = Cc["@mozilla.org/thread-manager;1"]
                  .getService(Ci.nsIThreadManager);

        tm.mainThread.dispatch({ run: f }, Ci.nsIThread.DISPATCH_NORMAL);
      }

      function sendHeapMinNotificationsInner() {
        var os = Cc["@mozilla.org/observer-service;1"]
                 .getService(Ci.nsIObserverService);
        os.notifyObservers(null, "memory-pressure", "heap-minimize");

        if (++j < 3)
          runSoon(sendHeapMinNotificationsInner);
      }

      var j = 0;
      sendHeapMinNotificationsInner();
    }

//    this.displayStatus("Memory minimization start")
    doGlobalGC();
    doCC();
    //sendHeapMinNotifications();
    // Добавил всплывашку
    setTimeout((event)=> {doMemMinimize(event);}, 1000, event);
    var alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService);
    alertsService.showAlertNotification("chrome://user_chrome_files/content/custom_styles/icons/information-16.png", "Memory", "Потребление памяти минимизировано!");
    setTimeout(() => alertsService.closeAlert(), 2000);
  },
  
  _statusinfotimer: null,
  _laststatusinfo: null,
  displayStatus: function(val) {
    this.statusinfo = val;
  },
  hideStatusInfo: function() {
    if(this._statusinfotimer)
      clearTimeout(this._statusinfotimer);
    this._statusinfotimer = null;
    if (this._laststatusinfo == this.statusinfo)
      this.statusinfo = "";
  },

  kill: function() {
    this.browser = document.createXULElement("browser");
    this.browser.src = "about:processes?memoryMinimizationButton";
    document.documentElement.appendChild(this.browser);
    setTimeout(() => {
      this.browser.src = "about:blank";
      document.documentElement.removeChild(this.browser);
      delete this.browser;
//      Services.console.logStringMessage("killing done");
//      this.displayStatus("Memory minimization done")
    }, 8000);
  }
}

if (location.href == "chrome://browser/content/browser.xhtml") {
  memoryMinimizationButton.init();
} else if (location.href == "about:processes?memoryMinimizationButton") {
//  Services.console.logStringMessage("killing start");
  setTimeout(() => {
    let closeButtons = document.querySelectorAll("tr.process > td.close-icon");
    for(let closeButton of closeButtons) {
      let row = closeButton.parentNode;
      let canKill = true;
      for (let childRow = row.nextSibling;
           childRow && !childRow.classList.contains("process");
           childRow = childRow.nextSibling ) {
        let win = childRow.win;
        if (win?.tab?.tab?.selected) {
          canKill = false;
          break;
        }
      }
      if (canKill)
        Control._handleKill(closeButton);
    }
    return;
    /*
    let closeButtons = document.querySelectorAll("tr.process > td.close-icon");
    for(let closeButton of closeButtons) {
      closeButton.click();
    }
    */
  }, 5000);
}


И кнопка в панель адреса, вроде от Dumby, ссылки нет.
scriptsbackground: [ // В фоне [System Principal]
скрытый текст

Выделить код

Код:

(async id => ({

  delay: 2e3,

  val: "",
  init(topic, mm) {
    Services.obs.addObserver(mm = this, topic);
    Services.obs.addObserver(function quit(s, t) {
      this.timer?.cancel();
      Services.obs.removeObserver(mm, topic);
      Services.obs.removeObserver(quit, t);
    }, "quit-application-granted");
  },
  observe(win) {
    var df = win.MozXULElement.parseXULToFragment(
      `<hbox id="${id}" tooltiptext="${
        "ЛКМ: Минимизировать потребление памяти&#xA;ПКМ: about:performance&#xA;Ctrl+ПКМ: about:debugging#/runtime/this-firefox"
      }" onclick="event.button || ${
        "memoryMinimizationButton.doMinimize(event)"
      }"><label id="${id += "-label"}"/></hbox>`
    );
    this.timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
    (this.observe = async win => {
      this.timer.cancel();
      await new Promise(ChromeUtils.idleDispatch);
      var clone = win.document.importNode(df, true);
      clone.firstChild.oncontextmenu = this.about;
      win.document.getElementById("star-button-box").after(clone);
      this.notify();
    })(win);
  },
  about(e) {
    var gb = e.view.gBrowser;
    gb.selectedTab = gb.addTrustedTab(`about:${
      e.ctrlKey ? "debugging#/runtime/this-firefox" : "performance"
    }`);
  },
  async notify() {
    var info = await ChromeUtils.requestProcInfo();
    var bytes = info.memory;
    for(var child of info.children) bytes += child.memory;
    this.timer.initWithCallback(this, this.delay, this.timer.TYPE_ONE_SHOT);

    var prev = this.val;
    if ((this.val = this.mgb(bytes)) != prev)
      for(var win of CustomizableUI.windows) {
        var lab = win.document.getElementById(id);
        if (lab) lab.value = this.val;
      }
  },
  mgb: bytes => bytes < 1073741824
    ? Math.round(bytes / 1048576) + "MB"
    : (bytes / 1073741824).toFixed(2) + "GB"
}).init("browser-delayed-startup-finished"))("ucf-mem-indicator");


Если что напутал, поправьте.
UPD: Скрипт заменил на 108+

Отредактировано xrun1 (28-12-2022 13:34:33)

Отсутствует

 

№56619-11-2022 16:19:27

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

xrun1
Кнопка в панель адреса
+ та и следующая страница обсуждения, если на кнопку в строке адреса надо повесить функцию очистки по клику и ...
   
А секция sendHeapMinNotifications() разве не к уведомлениям в статусе относится?

Отсутствует

 

№56720-11-2022 11:07:13

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

_zt пишет

секция sendHeapMinNotifications() разве не к уведомлениям в статусе относится?

Это функция и вызов её закомментарил, там всего одно место как раз перед моей "всплывашкой". Правильно это или что-то ф-ция делает ещё - не знаю...
За ссылку на разговор о кнопке спасибо. Я помню, что-то было на пару страниц, читал, но ссылку у себя не сохранил.
Что касается очистки по клику, так это есть. Скрипт создаёт свою кнопку, но я ей не пользуюсь, она сидит в боковой панели. А по клику ЛКМ на кнопке в строке адреса как раз и вызывается функция из скрипта memoryMinimizationButton.doMinimize(event). Я кнопку компоновал из нескольких сообщений, в том числе из Вашего.

Отсутствует

 

№56821-11-2022 09:07:26

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

xrun1
Понятно. Только непонятно, нужна ли мне последняя секция?

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

Выделить код

Код:

var memoryMinimizationButton = {
  get memoryMinimizationButton(){
    return document.getElementById("memoryMinimizationButton");
  },

  doMinimize: function(event) {
    function doGlobalGC()  {
       Services.obs.notifyObservers(null, "child-gc-request");
       Cu.forceGC();
    }

    function doCC()  {
      Services.obs.notifyObservers(null, "child-cc-request");
      if (typeof window.windowUtils != "undefined")
        window.windowUtils.cycleCollect();
      else
      window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
            .getInterface(Components.interfaces.nsIDOMWindowUtils).cycleCollect();
    }

    function doMemMinimize(event) {
      memoryMinimizationButton.kill();
      Services.obs.notifyObservers(null, "child-mmu-request");
      var gMgr = Cc["@mozilla.org/memory-reporter-manager;1"]
             .getService(Ci.nsIMemoryReporterManager);
    }

    doGlobalGC();
    doCC();
    // Всплывашка
    setTimeout((event)=> {doMemMinimize(event);}, 1000, event);
    var alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService);
    alertsService.showAlertNotification("chrome://user_chrome_files/content/custom_styles/icons/information-16.png", "Memory Minimization", "Минимизация памяти выполнена!");
    setTimeout(() => alertsService.closeAlert(), 2000);
  },

  kill: function() {
    this.browser = document.createXULElement("browser");
    this.browser.src = "about:processes?memoryMinimizationButton";
    document.documentElement.appendChild(this.browser);
    setTimeout(() => {
      this.browser.src = "about:blank";
      document.documentElement.removeChild(this.browser);
      delete this.browser;
    }, 8000);
  }
}

if (location.href == "about:processes?memoryMinimizationButton") {
  setTimeout(() => {
    let closeButtons = document.querySelectorAll("tr.process > td.close-icon");
    for(let closeButton of closeButtons) {
      closeButton.click();
    }
  }, 5000);
}

Отсутствует

 

№56921-11-2022 10:33:52

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

_zt пишет

нужна ли мне последняя секция?

Думаю, нет. Как я понял, по задумке автора по shift+click должны закрываться другие табы. У меня не закрываются. Может потому, что у меня нет кнопки закрытия вкладки, а в этой секции скрипт кликает по ней.))

Отсутствует

 

№57024-11-2022 22:38:38

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

https://hg.mozilla.org/mozilla-central/rev/49cefc94b9bd

Отсутствует

 

№57130-11-2022 02:45:42

egorsemenov06
Участник
 
Группа: Members
Зарегистрирован: 12-06-2018
Сообщений: 296
UA: Firefox 107.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Dumby посмотрите пожалуйста кнопку Куки а то там такая фигня по ПКМ

скрытый текст
8874acab75388702e75a1f26300be490.png

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

Выделить код

Код:

//Переключить Куки
try {(() => {
    var id = "ucf-cookie-toggle",
    label = "Переключить Куки",
    tooltiptext = "ЛКМ: Переключить Куки\nСКМ: Удалить куки домена текущей страницы\nПКМ: Управление куками",
    gpref = "network.cookie.cookieBehavior",
    img = "data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='32'><path style='fill:none;stroke:context-fill;stroke-opacity:context-fill-opacity;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round;' d='M12.5 10.5v-1h-1v1h1m-4-4h1v1h-1v-1m0 7h1v-1h-1v1m-6-7h1v1h-1v-1m4 4v-1h-1v1h1m-3 3v-1h-1m3-9h1v1h-1v-1M8 .6C8 5 11 8 15.4 8c0 4-3.4 7.4-7.4 7.4S.6 12 .6 8 4 .6 8 .6M12.5 26.5v-1h-1v1h1m-4-4h1v1h-1v-1m0 7h1v-1h-1v1m-6-7h1v1h-1v-1m4 4v-1h-1v1h1m-3 3v-1h-1m3-9h1v1m2-3.5v.5h1V17m2 2.5v1h1v-1h-1m3.5 3h-.5v1h.5m-8.5-3h-1v-1M8 16.6c4 0 7.4 3.4 7.4 7.4S12 31.4 8 31.4.6 28 .6 24 4 16.6 8 16.6'/></svg>";

    var tbarbtns = {
        initialised: false,
        get network_cookie_cookieBehavior() {
            delete this.network_cookie_cookieBehavior;
            try {
                return this.network_cookie_cookieBehavior = Services.prefs.getIntPref(gpref);
            } catch(e) { }
            return this.network_cookie_cookieBehavior = null;
        },
        init() {
            if (this.initialised) return;
            this.initialised = true;
            Services.prefs.addObserver(gpref, this);
        },
        prefToggleNumber(pref, next) {
            Services.prefs.setIntPref(pref, next[Services.prefs.getIntPref(pref)]);
        },
        getETDL(uri) {
            var eTLD = "";
            try {
                eTLD = Services.eTLD.getBaseDomain(uri);
            } catch (e) {
                try {
                    eTLD = uri.asciiHost;
                } catch (e) {}
            }
            return eTLD;
        },
        async viewCookies(win) {
            var uri = win.gBrowser.selectedBrowser.currentURI;
            try {
                let _uri = win.ReaderMode.getOriginalUrl(uri.spec);
                if (_uri)
                    uri = Services.io.newURI(_uri);
            } catch(e) {}
            uri = this.getETDL(uri);
            var type = "Browser:SiteDataSettings", id = "SiteDataSettingsDialog";
            var _win = Services.wm.getMostRecentWindow(type);
            if (!_win) {
                await win.SiteDataManager.updateSites();
                let url = "chrome://browser/content/preferences/dialogs/siteDataSettings.xhtml", xs = Services.xulStore;
                let sx = xs.getValue(url, id, "screenX");
                let sy = xs.getValue(url, id, "screenY");
                let wh = xs.getValue(url, id, "width");
                let ht = xs.getValue(url, id, "height");
                let sm = xs.getValue(url, id, "sizemode");
                let features = `chrome,dialog=no,resizable,${sx && sy ? `screenX=${sx !== "0" ? sx : "1"},screenY=${sy !== "0" ? sy : "1"}` : "centerscreen"}${wh && ht ? `,width=${wh},height=${ht}` : ""}`;
                _win = win.openDialog(url, type, features);
                await new Promise(resolve => {
                    _win.windowRoot.addEventListener("DOMContentLoaded", () => {
                        _win.windowRoot.addEventListener("MozUpdateWindowPos", () => {
                            if (sm === "maximized")
                                _win.maximize();
                        }, { once: true, capture: true });
                        resolve();
                    }, { once: true });
                });
            }
            var doc = _win.document;
            var docEl = doc.documentElement;
            docEl.setAttribute("windowtype", type);
            docEl.id = id;
            docEl.setAttribute("persist", "screenX screenY width height sizemode");
            _win.focus();
            var filter = doc.querySelector("#searchBox");
            if (!filter) return;
            filter.value = uri;
            filter.focus();
            filter.dispatchEvent(new _win.Event("input", { bubbles: true }));
        },
        callWithEachWindow(buttonID, atr) {
            var getW = CustomizableUI.getWidget(buttonID);
            if (getW.instances.length)
                for (let {node} of getW.instances) {
                    if (!node) continue;
                    for (let a in atr)
                        node.setAttribute(a, atr[a]);
                }
            else
                for (let win of CustomizableUI.windows) {
                    let node = getW.forWindow(win).node;
                    if (!node) continue;
                    for (let a in atr)
                        node.setAttribute(a, atr[a]);
                }
        },
        observe(subject, topic, pref) {
            if (pref == gpref) {
                delete this.network_cookie_cookieBehavior;
                let network_cookie_cookieBehavior = this.network_cookie_cookieBehavior = Services.prefs.getIntPref(pref);
                this.callWithEachWindow(id, {badge: network_cookie_cookieBehavior, badgeStyle: `background: ${network_cookie_cookieBehavior !== 2 ? "#0074e8" : "#e31b5d"}; color: #ffffff; font-size: 10px; line-height: 10px; box-shadow: none; text-shadow: none; padding-block: 0 1px !important; padding-inline: 2px !important; min-width: 0 !important;`});
            }
        },
        uninit() {
            if (!this.initialised) return;
            Services.prefs.removeObserver(gpref, this);
            this.initialised = false;
        },
    };
    CustomizableUI.createWidget({
        id: id,
        type: "custom",
        label: label,
        tooltiptext: tooltiptext,
        localized: false,
        defaultArea: CustomizableUI.AREA_NAVBAR,
        onBuild(document) {
            var win = document.defaultView, trbn = document.createXULElement("toolbarbutton");
            trbn.id = id;
            trbn.className = "toolbarbutton-1 chromeclass-toolbar-additional badged-button";
            trbn.setAttribute("badged", "true");
            trbn.setAttribute("constrain-size", "true");
            trbn.setAttribute("label", label);
            trbn.setAttribute("context", "false");
            trbn.setAttribute("tooltiptext", tooltiptext);
            var cookieBehavior = tbarbtns.network_cookie_cookieBehavior;
            if (cookieBehavior !== null) {
                trbn.setAttribute("badge", cookieBehavior);
                trbn.setAttribute("badgeStyle", `background: ${cookieBehavior !== 2 ? "#0074e8" : "#e31b5d"}; color: #ffffff; font-size: 10px; line-height: 10px; box-shadow: none; text-shadow: none; padding-block: 0 1px !important; padding-inline: 2px !important; min-width: 0 !important;`);
                trbn.addEventListener("click", e => {
                    if (e.button == 0)
                        tbarbtns.prefToggleNumber(gpref, [1,2,3,4,5,0]);
                    else if (e.button == 1) {
                        if (!win.gIdentityHandler?._uriHasHost || win.gIdentityHandler._pageExtensionPolicy)
                            return;
                        let baseDomain = win.SiteDataManager.getBaseDomainFromHost(win.gIdentityHandler._uri.host);
                        win.SiteDataManager.hasSiteData(baseDomain).then(hasData => {
                            if (hasData && win.SiteDataManager.promptSiteDataRemoval(win, [baseDomain]))
                                win.SiteDataManager.remove(baseDomain);
                        });
                    } else if (e.button == 2) {
                        e.preventDefault();
                        e.stopPropagation();
                        tbarbtns.viewCookies(win);
                    }
                });
            }
            var btnstyle = "data:text/css;charset=utf-8," + encodeURIComponent(`
                #${id} {
                    list-style-image: url("${img}") !important;
                    -moz-image-region: rect(0px, 16px, 16px, 0px) !important;
                }
                #${id}[badge="0"] {
                    -moz-image-region: rect(16px, 16px, 32px, 0px) !important;
                }
                #${id}[badge="2"] {
                    fill: color-mix(in srgb, currentColor 20%, #e31b5d) !important;
                }
            `);
            try {
                win.windowUtils.loadSheetUsingURIString(btnstyle, win.windowUtils.USER_SHEET);
            } catch (e) {}
            tbarbtns.init();
            return trbn;
        },
        onDestroyed(doc) {
            tbarbtns.uninit();
        },
    });
})();} catch(e) {}

[firefox] 107.0.1

Отредактировано egorsemenov06 (30-11-2022 02:48:10)

Отсутствует

 

№57230-11-2022 18:10:46

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

egorsemenov06 пишет

Dumby посмотрите пожалуйста кнопку Куки а то там такая фигня по ПКМ

Посмотрел. Такой фигни не вижу.

Отсутствует

 

№57330-11-2022 18:48:16

egorsemenov06
Участник
 
Группа: Members
Зарегистрирован: 12-06-2018
Сообщений: 296
UA: Firefox 107.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

Dumby пишет
egorsemenov06 пишет

Dumby посмотрите пожалуйста кнопку Куки а то там такая фигня по ПКМ

Посмотрел. Такой фигни не вижу.

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

Отредактировано egorsemenov06 (30-11-2022 18:51:45)

Отсутствует

 

№57430-11-2022 20:47:16

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

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

egorsemenov06 пишет

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

У меня окно кук в [firefox] 107.0.1 выглядит так:

скрытый текст
Untitled-3.jpg
Я могу потянуть окно за низ и добиться нужного размера.
Но после перезапуска [firefox] окно опять принимает первоначальный вид, т.е. размеры окна не сохраняются.


«The Truth Is Out There»

Отсутствует

 

№57530-11-2022 21:59:15

egorsemenov06
Участник
 
Группа: Members
Зарегистрирован: 12-06-2018
Сообщений: 296
UA: Firefox 107.0

Re: UCF - ваши кнопки, темы, дополнения, скрипты…

unter_officer пишет

Я могу потянуть окно за низ и добиться нужного размера.
Но после перезапуска [firefox] окно опять принимает первоначальный вид, т.е. размеры окна не сохраняются.

решилось созданием нового профиля

Отсутствует

 

Board footer

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