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

Заказывай стафф с атрибутикой Mozilla и... пусть все вокруг завидуют тебе! Быть уникальным - быть с Mozilla!

№727616-12-2019 20:59:27

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

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

Vitaliy V. пишет

kokoss пишет:

    скрыть синюю линию между панелью навигации и вкладок?

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

Класс! Этот стиль не только линию скрыл, но и изменил фон в "identity box"  :beer:

Vitaliy V. пишет

kokoss пишет:

    сдвинуть в право кнопки управления окном

Нельзя на аеро теме, можно только заменить их - добавить поверх другие кнопки

А хотя бы скрыть светлую полоску(при использовании тёмной темы) с права, на скрине она видна ?

Отредактировано kokoss (16-12-2019 21:07:38)


Win7

Отсутствует

 

№727716-12-2019 21:06:31

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

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

solombala пишет

Да нашел я

там же вместе с добавленными кнопками ровнять надо, пробуй так,  добавь в стиль кнопки или @-moz-document  url-prefix("chrome://mozapps/content/extensions/") { сюда }

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

addon-card .cb-cloned-buttons-container,
addon-card .more-options-menu {
    display: flex !important;
    align-items: end !important;
    align-self: end !important;
    margin-top: 0 !important;
}

addon-card panel-list[valign="top"] {
    bottom: 20px !important;
}


Добавлено 16-12-2019 21:07:55

kokoss пишет

А хотя бы скрыть светлую полоску(при использовании тёмной темы) с права, на скрине она видна ?

Надо в 7 посмотреть позже гляну

Добавлено 16-12-2019 21:10:17

kokoss пишет

но и изменил фон в "identity box"

Нет такого не должно быть, наверно у вас где то ошибка синтаксиса была или появилась

Отредактировано Vitaliy V. (16-12-2019 21:10:17)

Отсутствует

 

№727816-12-2019 21:20:19

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

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

Vitaliy V. пишет

kokoss пишет:

    но и изменил фон в "identity box"

Нет такого не должно быть, наверно у вас где то ошибка синтаксиса была или появилась

Вы правы, просто была отключена строка: @import "./css/locationbar/identitybox_colors.css"; /**/ в стилях Arisa.


Win7

Отсутствует

 

№727916-12-2019 21:33:08

shadow_user
Участник
 
Группа: Members
Зарегистрирован: 14-02-2007
Сообщений: 169
UA: Firefox 68.0

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

Vitaliy V. пишет

может не это окно а только загрузки https://github.com/alice0775/userChrome … ager.uc.js
размеры окна и расположение запоминаются в about:config
browser.download.manager.size.XXX

Не могу даже увидеть, что это, увы, смог только сохранить этот .js. Непонятно, как его применить, куда поместить. По параметру для about:config тоже непонятно, такого, даже без .ХХХ, в нем нет. Его создать в таком виде: browser.download.manager.size = 720? Прошу помощи.

Отредактировано shadow_user (16-12-2019 21:42:04)

Отсутствует

 

№728016-12-2019 21:35:21

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

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

Окончательный код для скрытия заголовка и панели вкладок опубликован здесь - https://forum.mozilla-russia.org/viewto … 56#p775956 Пока вроде все.

Vitaliy V.
Сделал как вы сказали. Спасибо!

Раньше думал, что не получится привести вид браузера к такому же виду как в 30-50 версиях у меня было. Однако мечты сбываются. :beer:

Отредактировано _zt (16-12-2019 21:58:27)


Fx 91 esr

Отсутствует

 

№728116-12-2019 22:07:55

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

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

shadow_user
Здесь инструкция по установке - https://github.com/Aris-t2/CustomJSforFx


Fx 91 esr

Отсутствует

 

№728217-12-2019 00:02:27

sandro79
Участник
 
Группа: Members
Откуда: Ставрополье
Зарегистрирован: 15-11-2017
Сообщений: 1512
UA: Firefox 68.0

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

shadow_user пишет: По параметру для about:config тоже непонятно, такого, даже без .ХХХ, в нем нет.

Ну этот параметр скорее всего создаёт сам скрипт. Залил на диск Яндекса три комплекта с авто-стартом русифицированного окна загрузок с использованием скрипта для 68 версии.
Комплект на базе user_chrome_files с окном загрузок и кнопкой паузы. Огромное Спасибо Виталию за комплект, а также за раннее оказанную помощь в подключении скрипта и кнопки паузы к комплекту. Комплект сегодня обновил и пересобрал. Файл user_style теперь custom_style_user и перекочевал в папку custom_styles, поближе к импортируемым стилям, что наверное положительный момент. Присутствует снимки самого окна загрузок и окна нужных для его работы - включенных стиля и скриптов.
Комплект для запуска скрипта окна загрузок и само окно на базе скриптов Alice0775 для 68 версии. Для 71-ой версии уже требуется другие userChrome.js и userChrome.xml и конечно ucjsDownloadsManager.uc.js. Этот вариант мне не по душе, дюже уж громоздкий userChrome.js.
Комплект на базе второго метода от Aris-a с окном загрузок для 68 версии. Кнопку паузы к последним двум комплектам прикрутить естественно мне не удалось. Перед использованием комплектов скриптов, при их смене, добавлении новых скриптов, редактировании скриптов - обязательна очистка папки startupCache.

Скрин забыл добавить
0f29bfeb9385.png

Отредактировано sandro79 (17-12-2019 00:26:24)

Отсутствует

 

№728317-12-2019 00:06:38

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

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

kokoss
возможно у вас какой то стиль переопределяет этот код

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

Выделить код

Код:

:root[sizemode="maximized"] .titlebar-buttonbox {
    margin-inline-end: 3px !important;
}


там должен быть отступ 3px или попробуйте 4px но может вначале вылезти

Отсутствует

 

№728417-12-2019 00:21:03

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

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

Vitaliy V. пишет

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

там должен быть отступ 3px или попробуйте 4px но может вначале вылезти

Проверял и без стилей, то же самое. Полностью не скрывает, как вы и указали, если убрать с левой стороны, вылазит с правой. Спасибо за помощь!


Win7

Отсутствует

 

№728517-12-2019 00:23:10

shadow_user
Участник
 
Группа: Members
Зарегистрирован: 14-02-2007
Сообщений: 169
UA: Firefox 68.0

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

sandro79 пишет

Залил на диск Яндекса три комплекта с авто-стартом русифицированного окна загрузок

Спасибо огромное, пробую. До этого по инструкциям с обеих сайтов делал, но бесполезно, не получилось.

Добавлено 17-12-2019 00:34:58
Успел проверить второй комплект, как самый простой в реализации, заработал совершенно без вопросов. Заметил, если окно загрузок после предыдущей загрузки не закрыто, а в фоне, то при старте следующей загрузки оно не берет фокус. У вас тоже так?
Премного благодарен!

Отредактировано shadow_user (17-12-2019 00:36:15)

Отсутствует

 

№728617-12-2019 00:49:17

sandro79
Участник
 
Группа: Members
Откуда: Ставрополье
Зарегистрирован: 15-11-2017
Сообщений: 1512
UA: Firefox 68.0

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

shadow_user пишет: Заметил, если окно загрузок после предыдущей загрузки не закрыто, а в фоне, то при старте следующей загрузки оно не берет фокус. У вас тоже так?

Аналогично, но хоть такой костыль. Предпочтительнее всё же первый или третий вариант реализации. Первый вообще может работать при перезапуске браузера в безопасный режим. И это очень круто, ИМХО. И перед использованием комплектов скриптов, при их смене, добавлении новых скриптов, редактировании скриптов - обязательна очистка папки startupCache.

shadow_user пишет: До этого по инструкциям с обеих сайтов делал, но бесполезно, не получилось.

Ну правильно, вы же наверно использовали код ucjsDownloadsManager.uc.js для 69-72 по ссылке из этого сообщения.

Русифицированный ucjsDownloadsManager.uc.js для firefox 69-72

Выделить код

Код:

if (location.href == "chrome://browser/content/browser.xhtml") {
  Cu.import("resource://gre/modules/Services.jsm");

  window.ucjs_downloadManager = {
    _summary: null,
    _list: null,

    createElement: function(localName, arryAttribute) {
      let elm = document.createXULElement(localName);
      for(let i = 0; i < arryAttribute.length; i++) {
        elm.setAttribute(arryAttribute[i].attr, arryAttribute[i].value);
      }
      return elm;
    },

    init: function() {
      window.addEventListener("unload", this, false);

      let ref = document.getElementById("menu_openDownloads");
      let menu = ref.parentNode.insertBefore(
        this.createElement("menuitem",
          [{attr: "label", value:"Менеджер загрузок"},
           {attr : "oncommand", value: "ucjs_downloadManager.openDownloadManager(true);"}
          ]), ref);

      XPCOMUtils.defineLazyModuleGetter(this, "Downloads",
                "resource://gre/modules/Downloads.jsm");
      // Ensure that the DownloadSummary object will be created asynchronously.
      if (!this._summary) {
        this.Downloads.getSummary(this.Downloads.ALL).then(summary => {
          this._summary = summary;
          return this._summary.addView(this);
        }).then(null, Cu.reportError);
      }

      if (!this._list) {
        this.Downloads.getList(this.Downloads.ALL).then(list => {
          this._list = list;
          return this._list.addView(this);
        }).then(null, Cu.reportError);
      }
    },

    uninit: function() {
      window.removeEventListener("unload", this, false);

      if (this._summary) {
        this._summary.removeView(this);
      }
      if (this._list) {
        this._list.removeView(this);
      }
    },

    handleEvent: function(event) {
      switch (event.type) {
        case "unload":
          this.uninit();
          break;
      }
    },

    openDownloadManager: function ucjs_openDownloadManager(aForceFocus) {
      var enumerator = Services.wm.getEnumerator(null);
      while(enumerator.hasMoreElements()) {
        var win = enumerator.getNext();
        if (win.location == "chrome://browser/content/downloads/contentAreaDownloadsView.xul"
          && PrivateBrowsingUtils.isWindowPrivate(window) ==
             PrivateBrowsingUtils.isWindowPrivate(win)) {
          if (aForceFocus)
            win.focus();
          return;
        }
      }

      try {
        var height = Math.max(100,Services.prefs.getIntPref("browser.download.manager.size.height"));
        var width  = Math.max(300,Services.prefs.getIntPref("browser.download.manager.size.width"));
        var screenX = Math.min(Math.max(0,Services.prefs.getIntPref("browser.download.manager.size.screenX")), screen.availWidth - width);
        var screenY = Math.min(Math.max(0,Services.prefs.getIntPref("browser.download.manager.size.screenY")), screen.availHeight - height);
      } catch(r){
        height = 300;
        width  = 600;
        screenX = 0;
        screenY = 0;
      }
      var win = window.open("chrome://browser/content/downloads/contentAreaDownloadsView.xul",
                            "Download" +
                              (PrivateBrowsingUtils.isWindowPrivate(window) ? " - Private Window"
                                                                            : ""),
                            "outerWidth=" + width + ",outerHeight=" + height +
                            ",left=" + screenX + ",top=" + screenY +
                            ",chrome,toolbar=yes,dialog=no,resizable");
    },

    closeDownloadManager: function ucjs_closeDownloadManager() {
      var enumerator = Services.wm.getEnumerator(null);
      while(enumerator.hasMoreElements()) {
        var win = enumerator.getNext();
        if (win.location == "chrome://browser/content/downloads/contentAreaDownloadsView.xul") {
          win.close();
          return;
        }
      }
    },

    onDownloadAdded: function (aDownload) {
      var showWhenStarting = true;
      try {
        showWhenStarting = Services.prefs.getBoolPref("browser.download.manager.showWhenStarting");
      } catch(e) {}
      var numDls = 0;
      if (showWhenStarting) {
        if (this._list) {
          this._list.getAll().then(downloads => {
            for (let download of downloads) {
              if (!download.stopped)
                numDls++;
            }
            if (numDls > 0)
              this.openDownloadManager(false);
          }).then(null, Cu.reportError);
        }
      }
    },

    onDownloadChanged: function (aDownload) {
      if (!this._list)
        return;
      this._list.getAll().then(downloads => {
        var num = 0;
        for (let download of downloads) {
          if (!download.succeeded)
            num++;
        }
        if (num == 0) {
          var closeWhenDone = false;
          try {
            closeWhenDone = Services.prefs.getBoolPref("browser.download.manager.closeWhenDone");
          } catch(e) {}
          if (closeWhenDone) {
            this.closeDownloadManager();
          }
        }
      }).then(null, Cu.reportError);
    }
  };
  ucjs_downloadManager.init();
}


if (window.opener && location.href == "chrome://browser/content/downloads/contentAreaDownloadsView.xul") {
  
  Cu.import("resource://gre/modules/Services.jsm");
  Cu.import("resource://gre/modules/DownloadIntegration.jsm");

  window.ucjs_downloadManagerMain = {
    originalTitle:"",
    _summary: null,
    _list: null,
    _wait:false,

    createElement: function(localName, arryAttribute) {
      let elm = document.createXULElement(localName);
      for(let i = 0; i < arryAttribute.length; i++) {
        elm.setAttribute(arryAttribute[i].attr, arryAttribute[i].value);
      }
      return elm;
    },

    createElementNS: function(NS, localName, arryAttribute) {
      let elm = document.createElementNS(NS, localName);
      for(let i = 0; i < arryAttribute.length; i++) {
        elm.setAttribute(arryAttribute[i].attr, arryAttribute[i].value);
      }
      return elm;
    },

    init: function() {
      window.addEventListener("unload", this, false);

      // xxx remove in-content css
      var elements = document.childNodes;
      for (var i = 0; i <= elements.length; i++) {
        var element = elements[i];
        if (element.nodeValue.indexOf("chrome://browser/skin/downloads/contentAreaDownloadsView.css") > -1) {
          document.removeChild(element);
          break;
        }
      }
      /*
      var style = ' \
        @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); \
        #contentAreaDownloadsView { \
          padding: 0 ; \
        } \
        #downloadsRichListBox:empty + #downloadsListEmptyDescription { \
          pointer-events: none; \
        } \
       '.replace(/\s+/g, " ");
      var sspi = document.createProcessingInstruction(
        'xml-stylesheet',
        'type="text/css" href="data:text/css,' + encodeURIComponent(style) + '"'
      );
      document.insertBefore(sspi, document.documentElement);
      sspi.getAttribute = function(name) {
        return document.documentElement.getAttribute(name);
      };
      */
      let ref = document.documentElement;
      ref = ref.appendChild(this.createElement("hbox", []));
      ref.appendChild(this.createElement("button",
        [{attr: "id", value: "ucjs_clearListButton"},
         {attr: "label", value: "Очистить загрузки"},
        ]));
      ref.appendChild(this.createElement("spacer",
        [{attr: "flex", value: "1"}]));
      ref.appendChild(this.createElementNS("http://www.w3.org/1999/xhtml", "input",
        [{attr: "id", value: "ucjs_downloadManagerMain_input"},
         {attr: "clickSelectsAll", value: "true"},
         {attr: "type", value: "search"},
         {attr: "placeholder", value: "Поиск..."},
         {attr: "aria-autocomplete", value: "list"}
        ]));

        document.getElementById("ucjs_clearListButton").addEventListener("command", function(event) {
            ucjs_downloadManagerMain.clearDownloads();
          });
        document.getElementById("ucjs_downloadManagerMain_input")
                .addEventListener("input", function(event) {
            ucjs_downloadManagerMain.doSearch(event.target.value);
          });

      this.originalTitle = document.title +
                           (PrivateBrowsingUtils.isWindowPrivate(window) ? " - Private Window"
                                                                         : "");

/*
      // xxx Bug 1279329 "Copy Download Link" of context menu in Library is grayed out
      var listBox = document.getElementById("downloadsRichListBox");
      var placesView = listBox._placesView;
      var place = placesView.place;
      placesView.place= null;
      placesView.place = place;
*/

      setTimeout(function(){this._wait = true}.bind(this), 0);

      // Ensure that the DownloadSummary object will be created asynchronously.
      if (!this._summary) {
        Downloads.getSummary(Downloads.ALL).then(summary => {
          this._summary = summary;
          return this._summary.addView(this);
        }).then(null, Cu.reportError);
      }

      if (!this._list) {
        Downloads.getList(Downloads.ALL).then(list => {
          this._list = list;
          return this._list.addView(this);
        }).then(null, Cu.reportError);
      }

      try {
        var showProgressInTaskButton = Services.prefs.getBoolPref("browser.download.manager.showProgressInTaskButton")
      } catch(ex) {
        showProgressInTaskButton = true; //default
      }
      if (showProgressInTaskButton)
        setTimeout(function() {
          try {
            let docShell = window.QueryInterface(Ci.nsIInterfaceRequestor)
                                  .getInterface(Ci.nsIWebNavigation)
                                  .QueryInterface(Ci.nsIDocShellTreeItem).treeOwner
                                  .QueryInterface(Ci.nsIInterfaceRequestor)
                                  .getInterface(Ci.nsIXULWindow).docShell;
            let gWinTaskbar = Components.classes["@mozilla.org/windows-taskbar;1"]
                                      .getService(Components.interfaces.nsIWinTaskbar);
            this._taskbarProgress = gWinTaskbar.getTaskbarProgress(docShell);
          } catch(ex) {
            this._taskbarProgress = null;
          }
        }.bind(this), 10);
    },

    uninit: function() {
      window.removeEventListener("unload", this, false);

      this._taskbarProgress = null;
      if (this._wait)
        this.saveSizePosition();

      if (this._summary) {
        this._summary.removeView(this);
      }
      if (this._list) {
        this._list.removeView(this);
      }
    },

    handleEvent: function(event) {
      switch (event.type) {
        case "unload":
          this.uninit();
          break;
      }
    },

    saveSizePosition: function() {
      if (window.windowState == 3) {
        Services.prefs.setIntPref("browser.download.manager.size.height", window.outerHeight);
        Services.prefs.setIntPref("browser.download.manager.size.width", window.outerWidth);
        Services.prefs.setIntPref("browser.download.manager.size.screenX", window.screenX);
        Services.prefs.setIntPref("browser.download.manager.size.screenY", window.screenY);
      }
    },

    onSummaryChanged: function () {
      if (!this._summary)
        return;
      if (this._summary.allHaveStopped || this._summary.progressTotalBytes == 0) {
        document.title = this.originalTitle;
        if (this._taskbarProgress) {
          this._taskbarProgress.setProgressState(
                                     Ci.nsITaskbarProgress.STATE_NO_PROGRESS, 0, 0);
        }
        Cu.import("resource://gre/modules/Services.jsm");
        var enumerator = Services.wm.getEnumerator("navigator:browser");
        while(enumerator.hasMoreElements()) {
          return;
        }

        var closeWhenDone = false;
        try {
          closeWhenDone = Services.prefs.getBoolPref("browser.download.manager.closeWhenDone");
        } catch(e) {}
        if (closeWhenDone) {
          DownloadIntegration._store.save();
          window.close();
        }

      } else {

        // If the last browser window has been closed, we have no indicator any more.
        if (this._taskbarProgress) {
          if (this._summary.allHaveStopped || this._summary.progressTotalBytes == 0) {
            this._taskbarProgress.setProgressState(
                                     Ci.nsITaskbarProgress.STATE_NO_PROGRESS, 0, 0);
          } else {
            // For a brief moment before completion, some download components may
            // report more transferred bytes than the total number of bytes.  Thus,
            // ensure that we never break the expectations of the progress indicator.
            let progressCurrentBytes = Math.min(this._summary.progressTotalBytes,
                                                this._summary.progressCurrentBytes);
            this._taskbarProgress.setProgressState(
                                     Ci.nsITaskbarProgress.STATE_NORMAL,
                                     progressCurrentBytes,
                                     this._summary.progressTotalBytes);
          }
        }

        // Update window title
        var numDls = 0;
        if (!this._list)
          return;
        this._list.getAll().then(downloads => {
          for (let download of downloads) {
            if (download.hasProgress && !download.succeeded)
              numDls++;
          }

          let progressCurrentBytes = Math.min(this._summary.progressTotalBytes,
                                            this._summary.progressCurrentBytes);
          let percent = Math.floor(progressCurrentBytes / this._summary.progressTotalBytes * 100);
          let text = percent + "% из " + numDls + (numDls < 2 ? " файла - " : " файлов - ") ;
          document.title = text + this.originalTitle;
        }).then(null, Cu.reportError);
      }
    },

    clearDownloads: function ucjs_clearDownloads() {
      var DO_NOT_DELETE_HISTORY = true; /* custmizable true or false */
      var richListBox = document.getElementById("downloadsRichListBox");

      var places = [];
      function addPlace(aURI, aTitle, aVisitDate) {
        places.push({
          uri: aURI,
          title: aTitle,
          visits: [{
            visitDate: (aVisitDate || Date.now()) * 1000,
            transitionType: Ci.nsINavHistoryService.TRANSITION_LINK
          }]
        });
      }
      function moveDownloads2History(d) {
        if (DO_NOT_DELETE_HISTORY &&
            !PrivateBrowsingUtils.isWindowPrivate(window)) {
          for (let element of richListBox.childNodes) {
            let download = element._shell.download;
            let aURI = makeURI(download.source.url);
            // let aTitle = document.getAnonymousElementByAttribute(element, "class", "downloadTarget").value
            let aTitle = download.target.path;
            aTitle = aTitle.match( /[^\\]+$/i )[0];
            aTitle = aTitle.match( /[^/]+$/i )[0];

            let aVisitDate = download.endTime || download.startTime;
            addPlace(aURI, aTitle, aVisitDate)
          }
        }

        // Clear List
        richListBox._placesView.doCommand('downloadsCmd_clearDownloads');

        if (DO_NOT_DELETE_HISTORY &&
            !PrivateBrowsingUtils.isWindowPrivate(window)) {
          if (places.length > 0) {
            var asyncHistory = Components.classes["@mozilla.org/browser/history;1"]
                     .getService(Components.interfaces.mozIAsyncHistory);
              asyncHistory.updatePlaces(places);
          }
        }
      }
      var btn = document.getElementById("ucjs_clearListButton");
      moveDownloads2History(0);
    },

    doSearch: function ucjs_doSearch(filterString) {
      var richListBox = document.getElementById("downloadsRichListBox");
      richListBox._placesView.searchTerm = filterString;
    }
  };
  ucjs_downloadManagerMain.init();
}

Отредактировано sandro79 (17-12-2019 09:19:37)

Отсутствует

 

№728717-12-2019 11:06:18

shadow_user
Участник
 
Группа: Members
Зарегистрирован: 14-02-2007
Сообщений: 169
UA: Firefox 68.0

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

sandro79 пишет

И перед использованием комплектов скриптов, при их смене, добавлении новых скриптов, редактировании скриптов - обязательна очистка папки startupCache.

Когда тренировался, чистил. А ваш второй комплект заработал без чистки. Надеюсь сегодня посмотреть первый и третий.

Отсутствует

 

№728817-12-2019 14:20:08

solombala
Забанен
 
Группа: Members
Зарегистрирован: 20-07-2019
Сообщений: 652
UA: Firefox 71.0

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

Vitaliy V.
Ну, вставил я кнопку Эта ? Кнопка установить появится тоже, если есть обнова..
mq7ujzoo.png
Иконки бы еще сдвинуть на этом popup  влево и т.д  , по отдельности неохота...

panel-item ----icon ? (
  margin-left: xx;
  margin-lright: xx;
  )
или
.more-options-menu ?

Отредактировано solombala (17-12-2019 15:21:21)

Отсутствует

 

№728917-12-2019 15:19:27

Ovod
Участник
 
Группа: Members
Зарегистрирован: 10-06-2015
Сообщений: 123
UA: Firefox 66.0

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

shadow_user
https://www.upload.ee/files/10858219/chrome.zip.html
все кажись

Отсутствует

 

№729017-12-2019 15:56:56

sandro79
Участник
 
Группа: Members
Откуда: Ставрополье
Зарегистрирован: 15-11-2017
Сообщений: 1512
UA: Firefox 71.0

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

shadow_user пишет: А ваш второй комплект заработал без чистки.

Действительно, с этими скриптами чистка не требуется, видимо потому что скрипты запускаются не из директории установки Firefox, а из папки chrome профиля.
Этот метод имеет ещё особенность, - можно запустить нужный скрипт, просто поместив его в папку chrome, при этом не требуется прописывать никаких путей в скрипте userChrome.js. В 72+ уже этот метод работать не будет и требуется запуск из директории установки Firefox.

Ovod пишет: все кажись

Работает!? Значит всё!!!

Отредактировано sandro79 (17-12-2019 16:07:23)

Отсутствует

 

№729117-12-2019 16:23:01

shadow_user
Участник
 
Группа: Members
Зарегистрирован: 14-02-2007
Сообщений: 169
UA: Firefox 68.0

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

sandro79 пишет

В 72+ уже этот метод работать не будет и требуется запуск из директории установки Firefox.

Думаю, я надолго на 68, слишком хлопотный процесс перехода. В 1 комплекте, видимо, нужно пути прописывать, поэтому я его не смог запустить. 3 комплект заработал без проблем, на нем и остановился.
Побочный эффект от экспериментов :D - имевшимися у меня файлами и вашими (2 + 2) смог оживить переставший работать родной прогресс загрузки, теперь тоже всплывает при каждой загрузке. Будет запасной вариант. Спасибо еще раз!

Ovod пишет

все кажись

Можно и так. В окне по звездочке можно отключить экран с превью и увеличить размер окна. Для первого https://forum.mozilla-russia.org/viewto … 19#p770819
для второго часть кода отсюда https://forum.mozilla-russia.org/viewto … 79#p728779

Отсутствует

 

№729217-12-2019 18:03:34

sandro79
Участник
 
Группа: Members
Откуда: Ставрополье
Зарегистрирован: 15-11-2017
Сообщений: 1512
UA: Firefox 68.0

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

shadow_user пишет: В 1 комплекте, видимо, нужно пути прописывать, поэтому я его не смог запустить. 3 комплект заработал без проблем, на нем и остановился.

Да нет, всё уже прописано и готово к использованию, только птички расставить в настройках комплекта user_chrome_files(скрин есть в архиве) и перезапустить браузер через окно настроек. Если содержимое архива размещено как указано в инструкции, то проблем быть не должно. Может с профилем чего.
Да, третий вариант наверное самое то, если не требуются доп. панели и запуск специфических скриптов и стилей. Рад был помочь.
ucjsDownloadsManager.uc для 71 версии https://yadi.sk/d/hEdZ7lMUwFLrqg, упаковал  файл в архив, а то скачивался как txt.

На всякий случай
[img]06c2abeb9301.png

Отредактировано sandro79 (18-12-2019 00:22:34)

Отсутствует

 

№729317-12-2019 19:41:41

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

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

solombala пишет

Иконки бы еще сдвинуть на этом popup  влево и т.д

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

Выделить код

Код:

link[href$="panel-item.css"] ~ button {
    background-position: 4px center !important;
    padding-inline-start: 24px !important;
}

link[href$="panel-item.css"] ~ button:dir(rtl) {
    background-position: right 4px center;
}


sandro79
вы кажется просили обновить стиль about:addons для [firefox] 72+
проверяйте
скрытый текст

Выделить код

Код:

@-moz-document  url-prefix("chrome://mozapps/content/extensions/aboutaddons.") {
:root {
    --v-content-button-border-color: rgba(12,12,13,0.3);
    --v-content-button-background-hover: rgba(12,12,13,0.15);
    --v-content-button-background-active: rgba(12,12,13,0.2);
    --v-content-button-color: rgb(12,12,13);
    --v-content-button-color-hover: rgb(12,12,13);
    --v-content-button-color-active: rgb(12,12,13);
    --v-main-max-width: 1000px;
    --card-padding: 8px !important;
    --section-width: 664px !important;
    --addon-icon-size: 32px !important;
}
@supports -moz-bool-pref("browser.in-content.dark-mode") {
@media (prefers-color-scheme: dark) {
:root {
    --v-content-button-border-color: rgba(249,249,250,0.2);
    --v-content-button-background-hover: rgba(249,249,250,0.15);
    --v-content-button-background-active: rgba(249,249,250,0.2);
    --v-content-button-color: rgb(249,249,250);
    --v-content-button-color-hover: rgb(249,249,250);
    --v-content-button-color-active: rgb(249,249,250);
}
}
}
body {
    min-width: 500px !important;
    margin: 0 !important;
}
#main {
    max-width: var(--v-main-max-width) !important;
    margin-inline-start: 6px !important;
    margin-inline-end: 6px !important;
    --v-list-display-flex: flex;
    --v-buttons-border-width: 1px;
    --v-buttons-font-size: 13px;
    --v-buttons-font-weight: bold;
    --v-buttons-width: auto;
}
addon-card .card-contents {
    width: auto !important;
    overflow-x: hidden !important;
    flex-grow: 1 !important;
}
addon-card .card {
    display: grid !important;
    grid-template-columns: auto minmax(0px, min-content) !important;
}
addon-card .card > * {
    grid-column-start: 1 !important;
    grid-column-end: 3 !important;
}
addon-card .card > .addon-card-collapsed {
    grid-column-start: 1 !important;
    grid-column-end: 2 !important;
    grid-row-start: 1 !important;
    overflow-x: hidden !important;
}
addon-card .card > addon-options {
    grid-column-start: 2 !important;
    grid-column-end: 3 !important;
    grid-row-start: 1 !important;
    align-self: start !important;
    min-width: 0 !important;
    overflow-x: hidden !important;
}
img.card-heading-image {
    margin: calc(var(--card-padding) * -1) calc(var(--card-padding) * -1) 8px !important;
    width: 488px !important;
    height: 64px !important;
}
addon-card .card > img.card-heading-image:not([hidden]) {
    display: inline !important;
}
addon-card .card > img.card-heading-image:not([hidden]) + .addon-card-collapsed,
addon-card .card > img.card-heading-image:not([hidden]) + .addon-card-collapsed ~ addon-options {
    grid-row-start: 2 !important;
}
addon-card .addon-name-container {
    margin-top: 0 !important;
}
button.more-options-button[action="more-options"],
addon-card panel-item[action="expand"],
div.arrow.top, div.arrow.bottom,
addon-card panel-item-separator {
    display: none !important;
}
addon-card panel-list {
    position: static !important;
    display: block !important;
    background: none !important;
    border: none !important;
    border-radius: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    min-width: 0 !important;
}
addon-card panel-item {
    padding: 0 !important;
    margin: 0 !important;
}
style + div.container {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}
addon-card .toggle-button,
addon-card button.theme-enable-button,
link[href$="panel-item.css"] ~ button {
    width: var(--v-buttons-width, 100%) !important;
    min-height: 0 !important;
    height: 24px !important;
    line-height: 1.3em !important;
    padding: 3px 6px !important;
    margin: 0 1px !important;
    background: none !important;
    border-color: var(--v-content-button-border-color) !important;
    border-style: solid !important;
    border-width: var(--v-buttons-border-width, 0px) !important;
    color: var(--v-content-button-color) !important;
    border-radius: 2px !important;
    font-weight: var(--v-buttons-font-weight, inherit) !important;
    font-size: var(--v-buttons-font-size, inherit) !important;
    -moz-appearance: none !important;
    box-shadow: none !important;
    outline: none !important;
}
addon-card .toggle-button:-moz-any(:focus,:enabled:hover),
addon-card button.theme-enable-button:-moz-any(:focus,:enabled:hover),
link[href$="panel-item.css"] ~ button:-moz-any(:focus,:enabled:hover) {
    background-color: var(--v-content-button-background-hover) !important;
    color: var(--v-content-button-color-hover) !important;
}
addon-card .toggle-button:enabled:hover:active,
addon-card button.theme-enable-button:enabled:hover:active,
link[href$="panel-item.css"] ~ button:enabled:hover:active {
    background-color: var(--v-content-button-background-active) !important;
    color: var(--v-content-button-color-active) !important;
}
addon-card .toggle-button::-moz-focus-inner,
addon-card button.theme-enable-button::-moz-focus-inner,
link[href$="panel-item.css"] ~ button::-moz-focus-inner {
    border: none !important;
}
link[href$="panel-item.css"] ~ button::after {
    top: 0px !important;
    left: 0px !important;
    right: 0px !important;
    height: 3px !important;
    width: auto !important;
    border-radius: 0 !important;
}
addon-card .toggle-button::before {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    content: "Отключить" !important;
    transform: none !important;
    background: none !important;
    height: auto !important;
    width: auto !important;
    margin: 0 !important;
    border-radius: 0 !important;
    outline: none !important;
    transition: none !important;
    white-space: nowrap !important;
}
addon-card .card[active="false"] .toggle-button::before {
    content: "Включить" !important;
}
addon-card .more-options-menu {
    flex-grow: 0 !important;
    position: static !important;
    margin: 0 !important;
    align-self: start !important;
}
div.arrow.top ~ div.list {
    display: var(--v-list-display-flex, block) !important;
    justify-content: end !important;
}
addon-card .addon-name,
addon-card .addon-description{
    white-space: nowrap !important;
    overflow-x: hidden !important;
    text-overflow: ellipsis !important;
}
}



[firefox] 87+

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

Выделить код

Код:

@-moz-document  url("about:addons"), url("chrome://mozapps/content/extensions/aboutaddons.html") {
:root {
    --v-content-button-border-color: rgba(12,12,13,0.3);
    --v-content-button-background-hover: rgba(12,12,13,0.15);
    --v-content-button-background-active: rgba(12,12,13,0.2);
    --v-content-button-color: rgb(12,12,13);
    --v-content-button-color-hover: rgb(12,12,13);
    --v-content-button-color-active: rgb(12,12,13);
    --v-main-max-width: 1000px;
    --card-padding: 8px !important;
    --section-width: 664px !important;
    --addon-icon-size: 32px !important;
}

@media (prefers-color-scheme: dark) {
:root {
    --v-content-button-border-color: rgba(249,249,250,0.2);
    --v-content-button-background-hover: rgba(249,249,250,0.15);
    --v-content-button-background-active: rgba(249,249,250,0.2);
    --v-content-button-color: rgb(249,249,250);
    --v-content-button-color-hover: rgb(249,249,250);
    --v-content-button-color-active: rgb(249,249,250);
}
}

body {
    min-width: 500px !important;
    margin: 0 !important;
}
#main {
    max-width: var(--v-main-max-width) !important;
    margin-inline-start: 6px !important;
    margin-inline-end: 6px !important;
    --v-list-display-flex: flex;
    --v-buttons-border-width: 1px;
    --v-buttons-font-size: 13px;
    --v-buttons-font-weight: bold;
    --v-buttons-width: auto;
}
addon-card .card-contents {
    width: auto !important;
    overflow-x: hidden !important;
    flex-grow: 1 !important;
}
addon-card .card {
    display: grid !important;
    grid-template-columns: auto minmax(0px, min-content) !important;
}
addon-card .card > * {
    grid-column-start: 1 !important;
    grid-column-end: 3 !important;
}
addon-card .card > .addon-card-collapsed {
    grid-column-start: 1 !important;
    grid-column-end: 2 !important;
    grid-row-start: 1 !important;
    overflow-x: hidden !important;
}
addon-card .card > addon-options {
    grid-column-start: 2 !important;
    grid-column-end: 3 !important;
    grid-row-start: 1 !important;
    align-self: start !important;
    min-width: 0 !important;
    overflow-x: hidden !important;
}
img.card-heading-image {
    margin: calc(var(--card-padding) * -1) calc(var(--card-padding) * -1) 8px !important;
    width: 488px !important;
    height: 64px !important;
}
addon-card .card > img.card-heading-image:not([hidden]) {
    display: inline !important;
}
addon-card .card > img.card-heading-image:not([hidden]) + .addon-card-collapsed,
addon-card .card > img.card-heading-image:not([hidden]) + .addon-card-collapsed ~ addon-options {
    grid-row-start: 2 !important;
}
addon-card .addon-name-container {
    margin-top: 0 !important;
}
button.more-options-button[action="more-options"],
addon-card panel-item[action="expand"],
div.arrow.top, div.arrow.bottom,
addon-card panel-item-separator {
    display: none !important;
}
addon-card panel-list {
    position: static !important;
    display: block !important;
    background: none !important;
    border: none !important;
    border-radius: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    min-width: 0 !important;
}
addon-card panel-item {
    padding: 0 !important;
    margin: 0 !important;
}
style + div.container {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}
addon-card .toggle-button,
addon-card button.theme-enable-button,
link[href$="panel-item.css"] ~ button {
    width: var(--v-buttons-width, 100%) !important;
    min-height: 0 !important;
    height: 24px !important;
    line-height: 1.3em !important;
    padding: 3px 6px !important;
    margin: 0 1px !important;
    background: none !important;
    border-color: var(--v-content-button-border-color) !important;
    border-style: solid !important;
    border-width: var(--v-buttons-border-width, 0px) !important;
    color: var(--v-content-button-color) !important;
    border-radius: 2px !important;
    font-weight: var(--v-buttons-font-weight, inherit) !important;
    font-size: var(--v-buttons-font-size, inherit) !important;
    -moz-appearance: none !important;
    box-shadow: none !important;
    outline: none !important;
}
addon-card .toggle-button:-moz-any(:focus,:enabled:hover),
addon-card button.theme-enable-button:-moz-any(:focus,:enabled:hover),
link[href$="panel-item.css"] ~ button:-moz-any(:focus,:enabled:hover) {
    background-color: var(--v-content-button-background-hover) !important;
    color: var(--v-content-button-color-hover) !important;
}
addon-card .toggle-button:enabled:hover:active,
addon-card button.theme-enable-button:enabled:hover:active,
link[href$="panel-item.css"] ~ button:enabled:hover:active {
    background-color: var(--v-content-button-background-active) !important;
    color: var(--v-content-button-color-active) !important;
}
addon-card .toggle-button::-moz-focus-inner,
addon-card button.theme-enable-button::-moz-focus-inner,
link[href$="panel-item.css"] ~ button::-moz-focus-inner {
    border: none !important;
}
link[href$="panel-item.css"] ~ button::after {
    top: 0px !important;
    left: 0px !important;
    right: 0px !important;
    height: 3px !important;
    width: auto !important;
    border-radius: 0 !important;
}
addon-card .toggle-button::before {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    content: "Отключить" !important;
    transform: none !important;
    background: none !important;
    height: auto !important;
    width: auto !important;
    margin: 0 !important;
    border-radius: 0 !important;
    outline: none !important;
    transition: none !important;
    white-space: nowrap !important;
}
addon-card .card[active="false"] .toggle-button::before {
    content: "Включить" !important;
}
addon-card .more-options-menu {
    flex-grow: 0 !important;
    position: static !important;
    margin: 0 !important;
    align-self: start !important;
}
div.arrow.top ~ div.list {
    display: var(--v-list-display-flex, block) !important;
    justify-content: end !important;
}
addon-card .addon-name,
addon-card .addon-description{
    white-space: nowrap !important;
    overflow-x: hidden !important;
    text-overflow: ellipsis !important;
}
}

Отредактировано Vitaliy V. (24-03-2021 11:18:29)

Отсутствует

 

№729417-12-2019 20:26:21

sandro79
Участник
 
Группа: Members
Откуда: Ставрополье
Зарегистрирован: 15-11-2017
Сообщений: 1512
UA: Firefox 73.0

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

Vitaliy V. Благодарю! Проверил, вроде и придраться не к чему. Всё отлично, как по мне. Я понял, что в 72+ стало ещё сложнее привести about:addons к привычному виду, т.к. уже появились в коде - content: "Включить" !important; и content: "Отключить" !important;, ну т.е. приходится назначать уже вручную текст на кнопках. Немного рихтанул код - на всю ширину окна растянул --v-main-max-width: none !important;. Отлично, спасибо!

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

Отсутствует

 

№729517-12-2019 20:38:13

shadow_user
Участник
 
Группа: Members
Зарегистрирован: 14-02-2007
Сообщений: 169
UA: Firefox 68.0

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

sandro79 пишет

Да нет, всё уже прописано и готово к использованию, только птички расставить в настройках комплекта user_chrome_files(скрин есть в архиве)

Не смог я получить то, что на скрине.

Отсутствует

 

№729617-12-2019 20:39:12

solombala
Забанен
 
Группа: Members
Зарегистрирован: 20-07-2019
Сообщений: 652
UA: Firefox 71.0

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

Vitaliy V.
Как всегда, круто и в тему !
oonmascq.png

Отсутствует

 

№729717-12-2019 21:35:00

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

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

sandro79
нужно в custom_script_all_win.js добавить этот код

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

Выделить код

Код:

if (window.opener && location.href.startsWith("chrome://browser/content/downloads/contentAreaDownloadsView.x")) {
            try {
                Services.scriptloader.loadSubScript("chrome://user_chrome_files/content/custom_scripts/places_win.js", window, "UTF-8");
            } catch(e) {}
        }


а в custom_script.js ничего и подключать не обязательно
это надо было раньше когда не было custom_script_all_win.js

Отредактировано Vitaliy V. (17-12-2019 21:35:34)

Отсутствует

 

№729817-12-2019 22:31:26

sandro79
Участник
 
Группа: Members
Откуда: Ставрополье
Зарегистрирован: 15-11-2017
Сообщений: 1512
UA: Firefox 68.0

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

Vitaliy V. пишет

нужно в custom_script_all_win.js добавить этот код...

Да, да. У меня там несколько другой код, где // Здесь может быть ваш код который сработает по событию "load" не раньше

custom_script_all_win.js

Выделить код

Код:

try {
            Services.scriptloader.loadSubScript("chrome://user_chrome_files/content/custom_scripts/ucjsDownloadsManager.uc.js", window, "UTF-8");
        } catch(e) {}


И я выложил немного другой вариант. Изначально здесь был ещё код для custom_script.js + places_win.js + стиль. И Вы мне помогли всё это собрать с кнопкой паузы именно в окне загрузок скрипта ucjsDownloadsManager.uc. Поэтому custom_script.js я использую. И этот вариант, по мне, даже предпочтительнее чем кнопка паузы в окне библиотек. А без custom_script.js кнопка паузы доступна только в окне библиотеки, а в авто-стартующем окне её нет.
custom_script.js (observer)

Выделить код

Код:

var observer = {
    observe: function(aSubject, aTopic, aData) {
        if (aTopic == "domwindowopened" && aSubject instanceof Ci.nsIDOMWindow) {
            aSubject.addEventListener("load", function domLoad() {
                aSubject.removeEventListener("load", domLoad, false);
                var loc = aSubject.location;
                if (loc && loc.href.startsWith("chrome://browser/content/downloads/contentAreaDownloadsView.x")) {
                    try {
                        Services.scriptloader.loadSubScript("chrome://user_chrome_files/content/custom_scripts/places_win.js", aSubject, "UTF-8");
                    } catch(e) {}
                }
            }, false);
        }
    }
};
Services.obs.addObserver(observer, "domwindowopened", false);

Отсутствует

 

№729918-12-2019 00:29:55

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

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

sandro79 пишет

А без custom_script.js кнопка паузы доступна только в окне библиотеки, а в авто-стартующем окне её нет.

В [firefox] 68 всё работает без custom_script.js
а в [firefox] 71 могут не загрузится иконки (в окне загрузок вызываемом ucjsDownloadsManager.uc.js не важно с custom_script.js или без)
Content Security Policy: Параметры страницы заблокировали загрузку ресурса data:image/....
можно сделать отдельные иконки .svg или .png

sandro79 пишет

Да, да. У меня там несколько другой код

Вот именно, добавьте мой код и заработает

Отредактировано Vitaliy V. (18-12-2019 00:33:24)

Отсутствует

 

№730018-12-2019 10:00:13

sandro79
Участник
 
Группа: Members
Откуда: Ставрополье
Зарегистрирован: 15-11-2017
Сообщений: 1512
UA: Firefox 68.0

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

Vitaliy V. пишет: В [firefox] 68 всё работает без custom_script.js

Да, действительно, добавил код в конец скрипта и заработало без custom_script.js. Что-то я сразу не понял и начал его совать вместо того, что запускает ucjsDownloadsManager.uc.js с мыслью, - а разве так будет работать? Непонятно, вот переклинило меня именно заменить, а не добавить, хотя ясно было сказано - добавить. Спасибо. Виталий, ещё один момент хотел уточнить, по второму комплекту из этого сообщения, для расширения кругозора. Если удалить из скрипта ucjsDownloadsManager полностью шапку со всякими пояснениями и историей версий, то в окне загрузок пропадают кнопка очистки загрузок и фиктивная строка поиска, а также пункт в панели меню Инструменты? Но опытным путём было выяснено, что обязательно наличие четырёх строк с содержанием ниже. В чём причина, почему наличие именно этих строк обязательно для нормальной работы этого скрипта, может из-за того что не требуется прописывать пути к запускаемым скриптам в этом методе или другая причина? Скрипт, перезалитый уже третий раз, для 71 в сообщении чуть выше.
Да, в 71 иконка конечно отвалилась в окне ucjsDownloadsManager.uc.js, но хоть пауза при нажатии работает. Виталий, может сделаете стиль для иконок, если не сильно хлопотно, а иконки я сам попытаюсь сделать или может из omni.ja достану. Спасибо.

Наличие этих строк обязательно
// ==UserScript==
// @include        main
// @include        chrome://browser/content/downloads/contentAreaDownloadsView.xul
// ==/UserScript==

Отсутствует

 

Board footer

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