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

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

№810122-03-2020 14:58:42

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

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

Ovod пишет

да, перекидывает!

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

Ovod пишет

добавил, а толку - то !

user.js нужно добавить в корневую папку профиля а не в chrome
именно user.js а не userPref.js

Отсутствует

 

№810222-03-2020 15:29:55

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

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

Vitaliy V.
а новый профиль можно создать с сохранением моих закладок всех?

Отсутствует

 

№810322-03-2020 15:37:25

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

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

Ovod
да скопируйте из старого  places.sqlite и favicons.sqlite (необязательно)
если ещё нужны пароли то key4.db и logins.json

Отсутствует

 

№810422-03-2020 16:02:50

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

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

Vitaliy V.
и последнее
как в том же коде
   

Выделить код

Код:

/* Подсветка посещенных и непосещенных ссылок */
a:link {color: #FFFFFF !important;} /* Белый цвет непосещенной ссылки */
a:visited {color: ##00ff00 !important;} /* Темно-зеленый цвет посещенной ссылки */

/* Подчеркивать ссылки при наведении на них */
a[href]:hover {
text-decoration: underline !important;
}

уточнить, что фон именно что черный, текст белый?
за userjs спасибо - ширина полос меню, пункты меню и цвет ссылок стал как надо

Отсутствует

 

№810522-03-2020 17:31:49

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

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

Ovod пишет

уточнить, что фон именно что черный

в смысле уточнить?
разве что добавить background к ссылкам
background-color: black !important;

Отсутствует

 

№810623-03-2020 11:44:19

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

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

Vitaliy V.
Эту шнягу можно разрулить? Это в 66 и это хорошо
uub4ifdm.jpg
А это в 74 и не хорошо
tft6jisg.jpg
Вопрос снят ! Нашел  dialog.css , туда коды button.dialog-button и все дела...

Отредактировано solombala (23-03-2020 12:50:49)

Отсутствует

 

№810723-03-2020 16:23:36

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

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

Vitaliy V.

Vitaliy V. пишет

в смысле уточнить?

в том смысле уточнить, что встречаются страницы,где цветовая схема дикаяЁ
2020-03-23_152915.jpg

Добавлено 23-03-2020 16:27:31
у меня черный фон и белый текст в настройках браузера а тут вона что!
(в обычных настроках - не сss)

По поводу бакграунда

Vitaliy V. пишет

background-color: black !important;

- не надо двоеточия буквы а разве?
Как указать белый текст кодом?

Добавлено 23-03-2020 16:42:46

Выделить код

Код:

a:link {color: #FFFFFF !important;} /* Белый цвет непосещенной ссылки */
a:visited {color: ##00ff00 !important;} /* Темно-зеленый цвет посещенной ссылки */
background-color: #000000 !important;
color: #FFFFFF !important;

right all 7

Добавлено 23-03-2020 16:43:32
?

Отредактировано Ovod (23-03-2020 16:43:32)

Отсутствует

 

№810823-03-2020 16:45:20

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

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

Ovod
я имел ввиду добавить к вашему коду

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

Выделить код

Код:

a:link {
    color: #FFFFFF !important;
    background-color: #000000 !important;
}

Отсутствует

 

№810923-03-2020 16:49:47

ALEX_45_ORP
Участник
 
Группа: Members
Зарегистрирован: 18-01-2018
Сообщений: 162
UA: Firefox 73.0

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

solombala пишет

Вопрос снят ! Нашел  dialog.css , туда коды button.dialog-button и все дела...

можно поподробней: где найти dialog.css и где взять коды button.dialog-button, а то в твоей 73 это окно тоже достало уже ...


Win 10х64

Отсутствует

 

№811023-03-2020 17:52:51

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

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

ALEX_45_ORP
omni.ja/chrome/toolkit/skin/classic/global/dialog.css

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

Выделить код

Код:

/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

/* ===== dialog.css =====================================================
  == Styles used by the XUL dialog element.
  ======================================================================= */

@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");

/* ::::: dialog ::::: */

dialog { 
  padding-top: 8px;
  padding-bottom: 10px;
  padding-inline-start: 8px;
  padding-inline-end: 10px;
}

/* ::::: dialog buttons ::::: */

.dialog-button {
  font: menu;
  margin-top: 6px;
}

button.dialog-button:hover {
   -moz-appearance: none !important;
  border-radius: 3px !important;
  background: linear-gradient(rgb(72, 85, 108),rgb(20, 25, 34)) !important;
  cursor: pointer !important;
  color: #00ffff !important;
  padding: 2px  !important}

button.dialog-button{
  -moz-appearance: none !important;
  border-radius: 3px !important;
  cursor: pointer !important;
  padding: 2px  !important;
  background: linear-gradient(#aaa,#444) !important;
  color: #fff !important}

dialog button, toolbar[printpreview="true"] button {
  -moz-appearance: none !important;
  border-radius: 3px !important;
  background: linear-gradient(#aaa,#444) !important;
  cursor: pointer !important;
  color: #fff !important;
  padding: 2px !important}

dialog button:hover, toolbar[printpreview="true"] button:hover {
  background: linear-gradient(rgb(72, 85, 108),rgb(20, 25, 34)) !important;
  color: #00ffff !important}

button[dlgtype="accept"] > .button-box > .button-icon,
button[dlgtype="finish"] > .button-box > .button-icon,
button[id="save-chrome"] > .button-box > .button-icon,
button[id="save-content"] > .button-box > .button-icon,
button[id="save-js"] > .button-box > .button-icon,
button[oncommand="doOKButton();"] > .button-box > .button-icon,
dialog[id="exceptiondialog"] button[dlgtype="extra1"] > .button-box > .button-icon,
button[oncommand="enigmailKeygenStart();"] > .button-box > .button-icon,
button[id="editBookmarkPanelDoneButton"] > .button-box > .button-icon,
button[id="restart-button"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/subskin/icons/ok.png") !important;
  margin-right: 5px !important;
  margin-left: -2px !important;
}
button[dlgtype="accept"][disabled="true"] > .button-box > .button-icon,
button[dlgtype="finish"][disabled="true"] > .button-box > .button-icon,
button[id="save-chrome"][disabled="true"] > .button-box > .button-icon,
button[id="save-content"][disabled="true"] > .button-box > .button-icon,
button[id="save-js"][disabled="true"] > .button-box > .button-icon,
button[oncommand="doOKButton();"][disabled="true"] > .button-box > .button-icon,
dialog[id="exceptiondialog"] button[dlgtype="extra1"][disabled="true"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/subskin/icons/ok-dis.png") !important;
  margin-right: 4px !important;
  margin-left: -3px !important;
}

button[dlgtype="cancel"] > .button-box > .button-icon,
button[oncommand="doCancelButton();"] > .button-box > .button-icon,
button[id="clearFilter"] > .button-box > .button-icon,
button[id="clearListButton"] > .button-box > .button-icon,   /* Download Manager - downloads.css */
button[id="editBookmarkPanelDeleteButton"] > .button-box > .button-icon,
button[id="cancel-button"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/icons/clear-small.png") !important;
  -moz-image-region: rect(0px 16px 16px 0px) !important;
  margin-right: 4px !important;
  margin-left: -4px !important;
}
button[dlgtype="cancel"][disabled="true"] > .button-box > .button-icon,
button[oncommand="doCancelButton();"][disabled="true"] > .button-box > .button-icon,
button[id="clearFilter"][disabled="true"] > .button-box > .button-icon,
button[id="clearListButton"][disabled="true"] > .button-box > .button-icon {   /* Download Manager - downloads.css */
  list-style-image: url("chrome://global/skin/icons/clear-small.png") !important;
  -moz-image-region: rect(48px 16px 64px 0px) !important;
  margin-right: 4px !important;
  margin-left: -4px !important;
}

button[id="button-close"] > .button-box > .button-icon,
button[id="closeButton"] > .button-box > .button-icon,
button[id="donebutton"] > .button-box > .button-icon,
button[id="Close"][class="spell-check"] > .button-box > .button-icon,
button[id="editBookmarkPanelRemoveButton"] > .button-box > .button-icon {
   list-style-image: url("chrome://global/skin/icons/clear-small.png") !important;
  -moz-image-region: rect(0px 16px 16px 0px) !important;
  margin-right: 4px !important;
  margin-left: -4px !important;
}
button[id="button-close"][disabled="true"] > .button-box > .button-icon,
button[id="closeButton"][disabled="true"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/icons/close.png") !important;
  -moz-image-region: rect(48px 16px 64px 0px) !important;
  margin-right: 2px !important;
}

button[dlgtype="help"] > .button-box > .button-icon,
button[id="HelpButton"] > .button-box > .button-icon,
button[oncommand="doHelpButton();"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/icons/question-16.png") !important;
  margin-right: 2px !important;
}

button[id="editMessageButton"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/subskin/icons/edit.png") !important;
  margin-right: 2px !important;
}

button[id$=".advancedbutton"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/subskin/icons/advanced-prefs.png") !important;
  margin-right: 2px !important;
}

button[id="more-panels-link"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/icons/search.png") !important;
  margin-right: 2px !important;
}

/* "Don't Save" and "Quit" (there are no unique identifiers except the label ) */
dialog[id="commonDialog"] button[dlgtype="extra1"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/icons/close.png") !important;
  -moz-image-region: rect(0px 16px 16px 0px) !important;
  margin-right: 2px !important;
}

/* For the Software Update wizard - this cannot be grouped above */
wizard[id="updates"] .wizard-button[dlgtype="extra1"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/icons/close.png") !important;
  -moz-image-region: rect(0px 16px 16px 0px) !important;
  margin-right: 2px !important;
}
wizard[id="updates"] .wizard-button[dlgtype="extra2"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/subskin/icons/stop.png") !important;
  margin-right: 2px !important;
}

/* View Cookie Manager button on Privacy dialog */
dialog[id="p3pDialog"] button[dlgtype="extra1"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/subskin/icons/cookie.png") !important;
  margin-right: 2px !important;
}

button[dlgtype="extra2"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/icons/information-16.png") !important;
  margin-right: 2px !important;
}
button[dlgtype="extra2"][disabled="true"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/subskin/icons/information-16-dis.png") !important;
  margin-right: 2px !important;
}

button[id="launch"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/subskin/icons/launch.png") !important;
  margin-right: 2px !important;
}
button[id="launch"][disabled="true"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/subskin/icons/launch-dis.png") !important;
  margin-right: 2px !important;
}

button[id="pauseResume"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/subskin/icons/pause.png") !important;
  margin-right: 2px !important;
}
button[id="pauseResume"][disabled="true"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/subskin/icons/pause-dis.png") !important;
  margin-right: 2px !important;
}

button[label="Resume"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/subskin/icons/go.png") !important;
  margin-right: 2px !important;
}

button[id="download-button"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/subskin/icons/download.png") !important;
  margin-right: 2px !important;
}

wizard[currentpageid="updatesfound"] .wizard-button[dlgtype="next"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/subskin/icons/install.png") !important;
  margin-right: 2px !important;
}

button[id="backButton"] > .button-box > .button-icon,
button[dlgtype="back"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/subskin/icons/back.png") !important;
  margin-right: 2px !important;
}
button[dlgtype="back"][disabled="true"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/subskin/icons/back-dis.png") !important;
  margin-right: 2px !important;
}

button[dlgtype="next"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/subskin/icons/next.png") !important;
  margin-right: 2px !important;
}
button[dlgtype="next"][disabled="true"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/subskin/icons/next-dis.png") !important;
  margin-right: 2px !important;
}

/* Override for Console2 extension */
dialog[id="Console2BlacklistDialog"] button[dlgtype="extra2"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/icons/clear-small.png") !important;
  -moz-image-region: rect(0px 16px 16px 0px) !important;
  margin-right: 4px !important;
  margin-left: -3px !important;
}
dialog[id="Console2BlacklistDialog"] button[dlgtype="extra2"][disabled="true"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/icons/clear-small.png") !important;
  -moz-image-region: rect(48px 16px 64px 0px) !important;
  margin-right: 5px !important;
  margin-left: -3px !important;
}

/* Override to make sure "OK" and "Apply" are always the ok image (English only) */
button[label="OK"] > .button-box > .button-icon,
button[label="Apply"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/subskin/icons/ok.png") !important;
  margin-right: 4px !important;
  margin-left: -4px !important;
}
button[label="OK"][disabled="true"] > .button-box > .button-icon,
button[label="Apply"][disabled="true"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/subskin/icons/ok-dis.png") !important;
  margin-right: 4px !important;
  margin-left: -3px !important;
}

/* Override to make sure "Cancel" is always the cancel image (English only) */
button[label="Cancel"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/icons/clear-small.png") !important;
  -moz-image-region: rect(0px 16px 16px 0px) !important;
  margin-right: 4px !important;
  margin-left: -3px !important;
}
button[label="Cancel"][disabled="true"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/icons/clear-small.png") !important;
  -moz-image-region: rect(48px 16px 64px 0px) !important;
  margin-right: 4px !important;
  margin-left: -3px !important;
}

/* Override to make sure "Close" is always the close image (English only) */
button[label="Close"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/icons/close.png") !important;
  -moz-image-region: rect(0px 16px 16px 0px) !important;
  margin-right: 2px !important;
}
button[label="Close"][disabled="true"] > .button-box > .button-icon {
  list-style-image: url("chrome://global/skin/icons/close.png") !important;
  -moz-image-region: rect(48px 16px 64px 0px) !important;
  margin-right: 2px !important;
}

.small-button .button-icon,   /* Override for searchDialog and filterDialog */
#notification-popup button.popup-notification-menubutton .button-icon {   /* Don't display button images inside the notification popup */
  display: none !important;
}


Иконки - сам мастырь, если надо...

Отредактировано solombala (23-03-2020 17:54:05)

Отсутствует

 

№811123-03-2020 18:20:55

ALEX_45_ORP
Участник
 
Группа: Members
Зарегистрирован: 18-01-2018
Сообщений: 162
UA: Firefox 73.0

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

solombala пишет

Иконки - сам мастырь, если надо...

не понял для чего иконки?
просто заменил в dialog.css код на твой, надеюсь это окно теперь не будет выскакивать?


Win 10х64

Отсутствует

 

№811223-03-2020 18:38:20

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

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

Будет , но не такое.
frue2np3.jpg

Отсутствует

 

№811323-03-2020 18:52:25

ALEX_45_ORP
Участник
 
Группа: Members
Зарегистрирован: 18-01-2018
Сообщений: 162
UA: Firefox 73.0

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

solombala пишет

Будет , но не такое.

это значит вместо светлых кнопок будут черные :D (понятно, что текст "Закрыть Firefox" лучше читается), я думал избавиться вообще от этого окна как от бага ...

Отредактировано ALEX_45_ORP (23-03-2020 21:50:42)


Win 10х64

Отсутствует

 

№811423-03-2020 18:58:44

Dan Dare
Участник
 
Группа: Members
Зарегистрирован: 28-06-2015
Сообщений: 321
UA: Firefox 52.0

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

Приветствую!
Для 68 и старше есть дополнение, чтоб переместить строку вкладок вниз, как было в старых FF ?
С января работаю на обновлённом FF и так никак не могу понять зачем какой-то идиот табы наверх зафутболил..
В интернете ссылки на какие-то стили, но пишут, что они после обновлений постоянно слетают..


Dan Dare: Pilot Of The Foretime

Отсутствует

 

№811523-03-2020 21:49:23

serg792
Участник
 
Группа: Members
Зарегистрирован: 17-12-2017
Сообщений: 25
UA: Firefox 74.0

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

Dan Dare пишет

Приветствую!
Для 68 и старше есть дополнение, чтоб переместить строку вкладок вниз, как было в старых FF ?
С января работаю на обновлённом FF и так никак не могу понять зачем какой-то идиот табы наверх зафутболил..
В интернете ссылки на какие-то стили, но пишут, что они после обновлений постоянно слетают..

Вот вкладки внизу без стиля вложи в папку Chrome /* Вкладки внизу */

#main-window:not([inFullscreen]) #navigator-toolbox > #PersonalToolbar {
    -moz-box-ordinal-group: 1 !important;}
#main-window:not([inFullscreen])[tabsintitlebar][sizemode="normal"] #navigator-toolbox {
    -moz-appearance: -moz-window-titlebar !important;}
#main-window:not([inFullscreen])[tabsintitlebar][sizemode="maximized"] #navigator-toolbox {
    -moz-appearance: -moz-window-titlebar-maximized !important;}
#main-window:not([inFullscreen])[tabsintitlebar]:-moz-lwtheme #navigator-toolbox {
    visibility: hidden !important;}
#main-window:not([inFullscreen])[tabsintitlebar]:-moz-lwtheme #navigator-toolbox > *:not([collapsed="true"]) {
    visibility: visible;}
#navigator-toolbox > #titlebar {
    -moz-appearance: none !important;
    -moz-box-ordinal-group: 100 !important;
    --v-control-buttons-left: auto;
    --v-control-buttons-right: 0;
    position: static !important;}
#navigator-toolbox > #titlebar:-moz-locale-dir(rtl) {
    --v-control-buttons-left: 0;
    --v-control-buttons-right: auto;}/* Зум вкладок */
#main-window:not([uidensity="touch"]) :-moz-any(#titlebar,#TabsToolbar,#tabbrowser-tabs) {
    --tab-min-height: 24px !important;
    --toolbarbutton-inner-padding: 3px !important;
}#add-additional-top-bar,
#add-additional-bottom-bar {
    --toolbarbutton-outer-padding: 0px !important;
    --toolbarbutton-inner-padding: 2px !important;
    min-height: 20px !important;
}
#add-additional-bottom-closebutton {
    padding: 0 !important;
}
:-moz-any(#add-additional-top-bar,#add-additional-bottom-bar) .toolbarbutton-badge {
    margin-inline-end: calc(-1 * (var(--toolbarbutton-outer-padding) + var(--toolbarbutton-inner-padding))) !important;
}

Отсутствует

 

№811624-03-2020 00:44:28

Siovar
Участник
 
Группа: Members
Зарегистрирован: 15-09-2019
Сообщений: 13
UA: Firefox 56.0

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

Всем привет.
Подскажите на [firefox] 56 работает автоскрытие боковой панели закладки, когда мышь не подведена к краю на сколько я понял это Sidebar.Automod из св "Меню"

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

Выделить код

Код:

//
//toButtonAction: if (!event.target) this.click();
//Menu .349

const id = "Compact-Menu-menupopup", attrs = {
id: id,
position: "after_start",
oncontextmenu: "event.preventDefault()",
oncommand: "event.stopPropagation()"
};

var itemTimers = {}, menubar, anchItem, menusOriginPopups, popup = document.getElementById(id), popupOpen = false;
if(popup)popup.remove();
if(self.parentNode.getAttribute("id").indexOf('alette') > 0 || self.parentNode.parentNode.getAttribute("id").indexOf('alette') > 0) return;
popup = self.appendChild(document.createElement("menupopup"));
itemTimers.Mmenu = setTimeout(function() {
for(var attr in attrs) popup.setAttribute(attr, attrs[attr]);
anchItem = document.getElementById("menu_openDownloads").parentNode.firstChild;
menubar = (document.getElementById("file-menu")||document.getElementById("edit-menu")||document.getElementById("view-menu")).parentNode;
var menus = Array.slice(menubar.childNodes), menusFiltedPopups = [];
menusOriginPopups = new Array(menus.length);
for(var iM = 0; iM < menus.length; iM++){
if(menus[iM] !== null && menus[iM].firstChild){
menusFiltedPopups.push(menus[iM].firstChild);
menusOriginPopups[iM] = menus[iM].firstChild;
var clonedMenu = menus[iM].cloneNode(false);
clonedMenu.hidden = false;
clonedMenu.disabled = false;
popup.appendChild(clonedMenu);
if(menusOriginPopups[iM].id == 'goPopup'){
["", "Window"].forEach(function(str) {
var node = menusOriginPopups[iM].getElementsByAttribute("id", "historyUndo" + str + "Popup")[0];
var attr = node.getAttribute("onpopupshowing");
if(!attr.startsWith("this.parentNode.parentNode.parentNode"))node.setAttribute("onpopupshowing", "this.parentNode.parentNode.parentNode" + attr.substring(39));
});
};
} else menusOriginPopups[iM] = null;
};
popup.addEventListener("mouseenter", function onPS(e) {
if(popupOpen) return;
popupOpen = true;
for(var ip = 0; ip < popup.childNodes.length && ip < menusFiltedPopups.length; ip++)popup.childNodes[ip].appendChild(menusFiltedPopups[ip]);
for(var ip = 0; ip < menus.length; ip++)if(menusOriginPopups[ip])menus[ip].style.visibility = 'visible';
}, false);

popup.addEventListener("popuphidden", function onPH(e) {
if(e.originalTarget != this) return;
for(var ip = 0; ip < menubar.childNodes.length && ip < menusOriginPopups.length; ip++)menubar.childNodes[ip].appendChild(menusOriginPopups[ip]);
popupOpen = false;
}, false);

self.onclick = function(e) {
if (!e.button && e.target == self) popup.openPopup(self);
if (e.button == 2  && e.target == self && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey){
e.preventDefault();
PanelUI.show();
//popup.openPopup(self);
}
if(e.button == 1)stopTor();
};
}, 1000);

addDestructor(()=> {
for (itemTimer in itemTimers)clearTimeout(itemTimers[itemTimer]);
if(popupOpen && menubar)for(var idd = 0; idd < menubar.childNodes.length && idd < menusOriginPopups.length; idd++)menubar.childNodes[idd].appendChild(menusOriginPopups[idd]);
if(anchItem)while(anchItem.previousSibling)anchItem.previousSibling.remove();
});

var temp1, temp2;

// "Дублировать вкладку" в контекстном меню вкладки, от 27.09.2016. .................
(tabContextMenu => {
var menuitem = document.createElement("menuitem");                
menuitem.setAttribute("label", "Дублировать вкладку");
menuitem.onclick =()=> {
temp1 = cbu.getPrefs("browser.tabs.insertRelatedAfterCurrent");
cbu.setPrefs("browser.tabs.insertRelatedAfterCurrent", true);
setTimeout(() => cbu.setPrefs("browser.tabs.insertRelatedAfterCurrent", temp1), 300);
gBrowser.selectedTab = gBrowser.duplicateTab(TabContextMenu.contextTab);
};
tabContextMenu.insertBefore(menuitem, tabContextMenu.children[0]); // [1] определяет место нахождение пункта меню
addDestructor(()=> menuitem.remove());   
})(document.getElementById("tabContextMenu"));

// Добавить новый пункт "Перезапуск" в главном меню, от 20.06.2016. ......................
(()=> {
var menuItem = document.createElement("menuitem");
menuItem.setAttribute("id", "restart_firefox");               
menuItem.setAttribute("label", "Перезапуск");
menuItem.onclick =()=> setTimeout(()=> {var startup = Services.startup; startup.quit(startup.eForceQuit | startup.eRestart)}, 0);    
itemTimers.restartmenu = setTimeout(function() {popup.appendChild(menuItem)}, 1600);
})();

// Предотвращаем постоянную работу по кругу скрипта построения эскизов, когда он на каком-то зависает.
(()=> {
var captTimer, ccash = true;
function unlockCapturing() {
if(content.location.toString() != 'about:newtab') return;
if(ccash){
cbu.setPrefs('browser.newtab.preload', false);    
cbu.setPrefs('browser.pagethumbnails.capturing_disabled', false);
};
ccash = false;
clearTimeout(captTimer);
captTimer = setTimeout(function() {
cbu.setPrefs('browser.pagethumbnails.capturing_disabled', true);
cbu.setPrefs('browser.newtab.preload', true);
ccash = true;
clearTimeout(captTimer);
}, 20000);
};
function lockCapturing() {
if(ccash)return;
//cbu.setPrefs('browser.pagethumbnails.capturing_disabled', true);
cbu.setPrefs('browser.newtab.preload', true);
//ccash = true;
//clearTimeout(captTimer);
};

if(!cbu.getPrefs('browser.cache.disk.parent_directory')) {
getBrowser().addEventListener("mouseenter", unlockCapturing, false);
document.getElementById("tabbrowser-tabs").addEventListener("mouseenter", lockCapturing, false);
addDestructor(() => {
getBrowser().removeEventListener("mouseenter", unlockCapturing, false);
document.getElementById("tabbrowser-tabs").removeEventListener("mouseenter", lockCapturing, false);
cbu.setPrefs('browser.pagethumbnails.capturing_disabled', true);
cbu.setPrefs('browser.newtab.preload', true);
});
} else cbu.setPrefs('browser.pagethumbnails.capturing_disabled', true);
})();

// Настройка экспресс-панели
(()=> {
var Ewidth;//ширина оригинальной плитки - 294 пикселя
if(!window.opener && (Ewidth = cbu.getPrefs('CB.elementwidth')) && Ewidth && (Ewidth = parseInt(Ewidth,10)) && Ewidth){
var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
Ewidth = Ewidth < 50 ? 50 : Ewidth;
var Eheight = 32 + Math.floor(Ewidth*0.58);
var styles = '@-moz-document url("about:newtab"){\
.newtab-cell  {max-height:'+Eheight+'px !important;max-width:'+Ewidth+'px!important;margin:0px 5px!important;}\
#newtab-margin-top {display:none!important;}\
.newtab-side-margin {max-width:10px!important;width:10px!important;}\
#newtab-grid {overflow:auto!important;max-height:none!important;max-width:none!important;height:auto!important;width:auto!important;padding:0!important;margin:0!important;border:none!important;-moz-box-flex:5!important;}\
#newtab-margin-bottom {max-height:20px!important;height:20px!important;}\
}\
';
stylesuri = makeURI("data:text/css," + encodeURIComponent(styles));
try {
sss.unregisterSheet(stylesuri, 0)
} catch(e) {};
sss.loadAndRegisterSheet(stylesuri, 0);
};
})();

//Добавить новый пункт "Восстановить иконки всех закладок" в меню "Закладки", от 04.10.2016. ..............
(()=> {
//Создать новый пункт в меню "Закладки" ....
var menuitem = document.createElement("menuitem");
//var sep = document.getElementById("organizeBookmarksSeparator");
itemTimers.restBmenu = setTimeout(function() {
anchItem.parentNode.insertBefore(menuitem, anchItem);
}, 2800);
menuitem.setAttribute("label", "Восстановить иконки всех закладок");
menuitem.onclick =e=> chooseBookmarks();    

// Перебрать все http(s) закладки ....
function chooseBookmarks(id = 1) {
var folder = PlacesUtils.getFolderContents(id).root;

folder.QueryInterface(Ci.nsINavHistoryContainerResultNode);
folder.containerOpen = true;

for ( var i = 0; i < folder.childCount; i++ ) {
var child = folder.getChild(i);

PlacesUtils.nodeIsFolder(child)
? chooseBookmarks(child.itemId)
: child.uri.startsWith("http") && child.icon == '' && getSiteFavicon(child.uri);
}

folder.containerOpen = false;
};


// Добавить иконки к закладкам с одинаковыми адресами ....  
function setBookFavicon(siteURI, faviconURI) {
var iconURI = Services.io.newURI( faviconURI, null, null);
var bookmarkURI = Services.io.newURI( siteURI, null, null );

PlacesUtils.favicons.setAndFetchFaviconForPage(
bookmarkURI,
iconURI,
false,
this.FAVICON_LOAD_NON_PRIVATE,
null,
Services.scriptSecurityManager.getSystemPrincipal()
)
};


// Получить адрес иконки закладки и запустить установку иконки .... 
function getSiteFavicon(siteURI) {
var hostURI = "http://" + siteURI.split(/\/+/g)[1] + "/";
var faviconURI = hostURI + "favicon.ico";  // адрес иконки, если не получить адрес иконки из сайта

// получить адрес иконки из документа сайта закладки
var xhr = new XMLHttpRequest();
xhr.open("GET", siteURI, true);
xhr.responseType = "document";      
xhr.onload = xhr.onerror =()=> {
var doc = xhr.responseXML;
if ( doc !== null ) {
var links = doc.getElementsByTagName("link");
[...links].forEach(link=> {
if ( /(?:^|\s)icon(?:\s|$)/.test(link.rel.toLowerCase()) ) faviconURI = link.href });
}

setBookFavicon(siteURI, faviconURI);  // запустить установку иконки   
}
xhr.send();
};   

})();

//Ariadne.Flip
custombuttons.alertSlide1 = function(sTitle) {
var as = Components.classes["@mozilla.org/alerts-service;1"].getService(Components.interfaces.nsIAlertsService);
as.showAlertNotification('chrome://global/skin/icons/information-16.png', "", sTitle, false, "", null);
setTimeout(() => as.closeAlert(), 999);
};

(()=> {
var showCount = 0, noFlip = false, unlockTimer,
lastShownTab = function() {
let orderMax = 0,
currentOrder = gBrowser.selectedTab.getAttribute('showOrder'),
tabOrder = 0,
lST = null;
currentOrder = currentOrder ? parseInt(currentOrder, 10) : 0;
for(ii = 0; ii < gBrowser.tabs.length; ii++) {
tabOrder = parseInt(gBrowser.tabs[ii].getAttribute('showOrder'), 10);
if(tabOrder != currentOrder){
gBrowser.tabs[ii].removeAttribute('_YesClck');
if(tabOrder > orderMax) {
lST = gBrowser.tabs[ii];
orderMax = tabOrder;
}
}
};
if(lST) return lST;

for(ii = 0; ii < gBrowser.tabs.length; ii++) {
tabOrder = -parseInt(gBrowser.tabs[ii].getAttribute('showOrder'), 10);
if(-tabOrder != currentOrder) {
gBrowser.tabs[ii].setAttribute('showOrder', tabOrder);
if(tabOrder > orderMax) {
lST = gBrowser.tabs[ii];
orderMax = tabOrder;
}
}
};
return lST;
};

function clickToFlip(event) {
if(event.button || noFlip || !event.target.hasAttribute('_YesClck')) return;
event.stopPropagation();
event.target.removeAttribute('_YesClck');
let lShowT = lastShownTab();
if(lShowT) {
event.target.setAttribute('showOrder', -parseInt(event.target.getAttribute('showOrder'), 10));
gBrowser.selectedTab = lShowT;
} else {
setTimeout(() => custombuttons.alertSlide1("Нет других просмотренных ранее вкладок"), 100);
setTimeout(() => gBrowser.selectedTab.setAttribute('_YesClck', true), 800);
};
};

function onTabClose(e) {
if(gBrowser.selectedTab != e.target)return;
let lastSh = lastShownTab();
if(lastSh) gBrowser.selectedTab = lastSh;
};

setTimeout(() => {
if(gBrowser.selectedTab) {
if(parseInt(gBrowser.selectedTab.getAttribute('showOrder'), 10) > 0) {
showCount = parseInt(gBrowser.selectedTab.getAttribute('showOrder'), 10);
} else {
gBrowser.selectedTab.setAttribute('showOrder', ++showCount);
gBrowser.selectedTab.setAttribute('_YesClck', true);
}
};
}, 800);

function onTabselect(e) {
setTimeout(() => gBrowser.selectedTab.setAttribute('_YesClck', true), 150);
for(ii = 0; ii < gBrowser.tabs.length; ii++)gBrowser.tabs[ii].removeAttribute('_YesClck');
e.target.setAttribute('showOrder', ++showCount);
};

function onMouseDown(e) {
if(!e.target.hasAttribute('_YesClck')){
noFlip = true;
clearTimeout(unlockTimer);
unlockTimer = setTimeout(function() {
noFlip = false;
clearTimeout(unlockTimer);
}, 2000);
}
};

function onMouseUp(e) {
clearTimeout(unlockTimer);
setTimeout(() => noFlip = false, 100);
};

addEventListener("mouseup", onMouseUp, false, gBrowser.tabContainer);
addEventListener("mousedown", onMouseDown, false, gBrowser.tabContainer);
addEventListener("TabSelect", onTabselect, false, gBrowser.tabContainer);
addEventListener("TabClose", onTabClose, false, gBrowser.tabContainer);
addEventListener("click", clickToFlip, false, gBrowser.tabContainer);
addDestructor(()=>{
removeEventListener("mouseup", onMouseUp, false, gBrowser.tabContainer);
removeEventListener("mousedown", onMouseDown, false, gBrowser.tabContainer);
removeEventListener("TabSelect", onTabselect, false, gBrowser.tabContainer);
removeEventListener("TabClose", onTabClose, false, gBrowser.tabContainer);
removeEventListener("click", clickToFlip, false, gBrowser.tabContainer);
});
})();

// Раскукоживатель коротких ссылок, от 28.08.2016
((cntxtMenu, elm, mItem) => {
mItem.id = "cb-unshorten-url";
mItem.setAttribute("label", "Раскукожить ссылку");
mItem.setAttribute("class", "menuitem-iconic");
mItem.setAttribute("image", self.image);
elm.parentNode.insertBefore(mItem, elm);

const alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService);

var url, link, isUnshortened,
// Сервисы сокращения ссылок. Можно добавлять свои. Работать, в теории, должно с любыми
shortenerServices = [
"tinyurl.com",
"po.st",
"img.ly",
"bit.ly",
"goo.gl",
"youtu.be",
"t.co",
"db.tt",
"u.to",
"shortlinks.de"
],
// Опции:
options = {
replaceShortenedLinks: true, // Заменять адрес ссылки на странице раскукоженной
showAlert: true, // Показывать всплывающие уведомления
clickAlertToOpen: true, // Клик по уведомлению с раскукоженной ссылкой - откроет ее в новой вкладке
showOnShortenedTextLinks: true, // Показывать пункт контекстного меню на выделенных текстовых ссылках
promptDialogForTextLinks: true, // Показывать диалог с результатом для текстовых ссылок
copyToClipboard: true, // Копировать раскукоженную ссылку в буфер обмена
changeColorForUnshortenedLinks: true, // Индикация цветом ссылки ожидания ответа и результата
changeColorBackAfterTimeout: false, // Возвращать цвет ссылок к исходному, после паузы
unshortenedLinksColor: "lightgreen" // Цвет раскукоженных ссылок
},
isFF32 = (parseFloat(Services.appinfo.platformVersion) >= 32);

function isShortenedURL(aURL) {
if (aURL && (gContextMenu && (gContextMenu.onLink && !gContextMenu.isTextSelected || gContextMenu.onPlainTextLink)
|| !aURL.match(/\s/) && !!aURL.match(/\//))) {

if (!aURL.startsWith('http')) aURL = 'http://' + aURL.split(/^((\w+)?:\/\/)?(.+)/)[3];

var host = aURL.split(/http(s)?:\/\/([\w\.-]+)/)[2];

if (shortenerServices.indexOf(host) !== -1) {
url = aURL;
return true;
}
}
return false;
};

function promptDialog(aURL) {
var input = {value: aURL};
var prompt = Services.prompt.prompt(null, options.copyToClipboard ? "Раскукоженная ссылка скопирована!" : "Ссылка раскукожена!",
"Отредактировать и открыть в новой вкладке?",
input, null, {value: false});
if (prompt)
gBrowser.selectedTab = gBrowser.addTab(input.value);
};

function xhr(aURL, cb) {
let reURL = null;
let xhr = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Ci.nsIXMLHttpRequest);
let alertListener = {
observe: function(aSubject, aTopic, aData) {
if (aTopic != 'alertclickcallback') return;
gBrowser.selectedTab = gBrowser.addTab(aData);
}
}

let handler = ev => {
evf(m => xhr.removeEventListener(m, handler, !1));
switch (ev.type) {
case 'load':
if (xhr.status == 200 || (isFF32 ? xhr.responseURL : xhr.channel.URI.spec) != aURL) {
reURL = isFF32 ? xhr.responseURL : xhr.channel.URI.spec;
cb(reURL);
options.showAlert && (options.clickAlertToOpen
? alertsService.showAlertNotification(self.image, self.label,
'Ссылка раскукожена!\nНажмите, чтобы открыть в новой вкладке:\n' + (reURL.length > 100 ? ([reURL.slice(0,45), reURL.slice(-45)]).join('...') : reURL),
true, reURL, alertListener, "")
: alertsService.showAlertNotification(self.image, self.label,
'Ссылка раскукожена:\n' + (reURL.length > 100 ? ([reURL.slice(0,45), reURL.slice(-45)]).join('...') : reURL),
false, "", null, ""));
break;
}

default:
cb(reURL);
options.showAlert && alertsService.showAlertNotification(self.image, self.label,
'Ошибка при попытке получить ссылку: ' + xhr.statusText + ' [' + ev.type + ':' + xhr.status + ']',
false, "", null, "");
break;
}
};

let evf = f => ['load', 'error', 'abort'].forEach(f);
evf(m => xhr.addEventListener(m, handler, false));

try {
xhr.mozBackgroundRequest = true;
xhr.open('HEAD', aURL, true);
xhr.channel.loadFlags |= Ci.nsIRequest.LOAD_ANONYMOUS | Ci.nsIRequest.LOAD_BYPASS_CACHE | Ci.nsIRequest.INHIBIT_CACHING;
xhr.setRequestHeader("User-Agent", "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)", false);
xhr.setRequestHeader("Accept", "text/html,text/xml", false);
xhr.send(null);
}
catch (ex) {
cb(reURL);
options.showAlert && alertsService.showAlertNotification(self.image, self.label,
'Неправильная ссылка: ' + (ex.toString().length > 100 ? ([ex.toString().slice(0,45), ex.toString().slice(-45)]).join('...') : ex.toString()),
false, "", null, "");
}
};

function shouldDisplay() {
mItem.label = "Раскукожить ссылку";

if (gContextMenu.onLink && !gContextMenu.isTextSelected) {
url = gContextMenu.getLinkURL();
link = gContextMenu.link;
isUnshortened = link.getAttribute("cb-short-url");
if (isUnshortened) mItem.label = "Скукожить ссылку";
}

if (gContextMenu.onPlainTextLink) {
url = gContextMenu.linkURL;
}

if (!gContextMenu.onPlainTextLink && gContextMenu.isTextSelected) {
url = document.commandDispatcher.focusedWindow.content.document.getSelection().toString().trim();
}

mItem.hidden = !((gContextMenu.onLink || (gContextMenu.onPlainTextLink || gContextMenu.isTextSelected)
&& options.showOnShortenedTextLinks) && isShortenedURL(url)
|| gContextMenu.onLink && isUnshortened);
};
cntxtMenu.addEventListener("popupshowing", shouldDisplay, false);
addDestructor(()=> {
cntxtMenu.removeEventListener("popupshowing", shouldDisplay, false);
cntxtMenu.removeChild(mItem);
});

mItem.onclick =()=> {
if (gContextMenu.onLink && !gContextMenu.isTextSelected) {
if (!isUnshortened) {
if (options.changeColorForUnshortenedLinks) {
var linkClr = link.style.getPropertyValue('color');
linkClr && link.style.setProperty('-cb-old-color', linkClr, link.style.getPropertyPriority('color'));
var oldClr = link.style.getPropertyValue('-cb-old-color');
var oldClrPrrt = link.style.getPropertyPriority('-cb-old-color');
link.style.setProperty("color", "orangered", "important");
}

xhr(url, reURL => {
if (!reURL) {
options.changeColorForUnshortenedLinks
&& (oldClr ? (link.style.setProperty("color", oldClr, oldClrPrrt),
link.removeProperty('-cb-old-color')) : link.style.removeProperty("color"));
return;
}

if (options.changeColorForUnshortenedLinks) {
link.style.setProperty("color", options.unshortenedLinksColor, "important");
options.changeColorBackAfterTimeout
&& setTimeout(()=> oldClr ? (link.style.setProperty("color", oldClr, oldClrPrrt),
link.removeProperty('-cb-old-color')) : link.style.removeProperty("color"), 1000);
}

options.copyToClipboard && gClipboard.write(reURL);

options.replaceShortenedLinks && (link.setAttribute("cb-short-url", link.href),
link.setAttribute("href", reURL));
})
}
else {
oldClr ? (link.style.setProperty("color", oldClr, oldClrPrrt),
link.removeProperty('-cb-old-color')) : link.style.removeProperty("color");

link.setAttribute("href", isUnshortened);
link.removeAttribute("cb-short-url");
}
}
else {
xhr(url, reURL => {
if (!reURL) return;

options.copyToClipboard && gClipboard.write(reURL);
options.promptDialogForTextLinks && promptDialog(reURL);
})
}
};
/*
this._handleClick =()=> {
url = gClipboard.read();

if (!url || !isShortenedURL(url)) {
options.showAlert && alertsService.showAlertNotification(self.image, self.label,
'Неправильная ссылка!', false, "", null, "");
return;
}

xhr(url, reURL => {
if (!reURL) return;

options.copyToClipboard && gClipboard.write(reURL);
promptDialog(reURL);
})
};
this.tooltipText = "ПКМ: Раскукожить ссылку в буфере обмена";*/
})(document.getElementById("contentAreaContextMenu"), document.getElementById("context-sep-open"), document.createElement("menuitem"));


//Sidebar.Switch
(()=> {
var txtSwitchTo = 'Показать ', txtBookmarks = 'Закладки', txtHistory = 'Журнал';

var sidebarheader = document.getElementById("sidebar-header");
var sidebarBox = document.getElementById("sidebar-box");
var sidebartitl = document.getElementById("sidebar-title");
var sidebartitlValu = sidebartitl.getAttribute("value");

function showSwitch() {
if(!sidebartitl.getAttribute("value").startsWith(txtSwitchTo)) sidebartitlValu = sidebartitl.getAttribute("value");
sidebartitl.style.setProperty('background-color','#EDF5F7','important');
if(sidebarBox.getAttribute("sidebarcommand") != 'viewBookmarksSidebar') {
sidebartitl.setAttribute("value", txtSwitchTo+txtBookmarks);
} else {
sidebartitl.setAttribute("value", txtSwitchTo+txtHistory);
}
};

function showSwitchOut() {
sidebartitl.setAttribute("value", sidebartitlValu);
sidebartitl.style.setProperty('background-color','','');
};

function showSwitchOut2(e) {
e.stopPropagation();
sidebartitl.setAttribute("value", sidebartitlValu);
sidebartitl.style.setProperty('background-color','','');
};

function clickToSwitch(e) {
if(e.button > 0) return;
if(e.target.tagName == 'toolbarbutton') {
e.stopPropagation();
return;
};
if(sidebarBox.getAttribute("sidebarcommand") != 'viewBookmarksSidebar') {
SidebarUI.toggle('viewBookmarksSidebar');

} else {
SidebarUI.toggle('viewHistorySidebar');
}
setTimeout(() => {
if(!sidebartitl.getAttribute("value").startsWith(txtSwitchTo)) {
sidebartitlValu = sidebartitl.getAttribute("value");
if(sidebarBox.getAttribute("sidebarcommand") != 'viewBookmarksSidebar') {
sidebartitl.setAttribute("value", txtSwitchTo+txtBookmarks);
} else {
sidebartitl.setAttribute("value", txtSwitchTo+txtHistory);
}
}
}, 10);
};

sidebarheader.addEventListener('mouseover', showSwitch, false);
sidebarheader.addEventListener('mouseout', showSwitchOut, false);
sidebarheader.getElementsByTagName('toolbarbutton')[0].addEventListener('mouseover', showSwitchOut2, false);
sidebarheader.getElementsByTagName('toolbarbutton')[0].addEventListener('mouseout', showSwitch, false);
sidebarheader.addEventListener('click', clickToSwitch, false);
addDestructor(()=>{
sidebarheader.removeEventListener('mouseover', showSwitch, false);
sidebarheader.removeEventListener('mouseout', showSwitchOut, false);
sidebarheader.getElementsByTagName('toolbarbutton')[0].removeEventListener('mouseover', showSwitchOut2, false);
sidebarheader.getElementsByTagName('toolbarbutton')[0].removeEventListener('mouseout', showSwitch, false);
sidebarheader.removeEventListener('click', clickToSwitch, false);
});
})();

[b]//Sidebar.Automod[/b]
var vso = {
name: "Sidebar.Automod",
btn: this,
toolbarContextMenu: document.getElementById("toolbar-context-menu"),
deck: document.getElementById("content-deck"),
id: "cb-am",

init: function() {
if(gBrowser.currentURI.spec == "about:customizing") return;

var vt = this.initVT();
var vso = this;
this.sidebarSplitter = document.getElementById("sidebar-splitter");
this.sidebarBox = document.getElementById("sidebar-box");

this.lastSidebar = this.sidebarBox.getAttribute("sidebarcommand");
this.sidebarBox.removeEventListener("mouseleave", this, false);
this.sidebarBox.addEventListener("mouseleave", this, false);
window.addEventListener("resize", this, false);
window.addEventListener("fullscreenchange", this, false);
window.addEventListener("beforecustomization", this, false);
this.toolbarContextMenu.addEventListener("command", this, false);
this.resize();
this.deck.style.setProperty('margin-left', '4px', 'important');
this.vt.addEventListener("mouseenter", this, false);
this.vt.addEventListener("mouseout", this, false);
getBrowser().removeEventListener("mousemove", vso.mousemove, false);
if(!vso.sidebarBox.getAttribute("hidden")) getBrowser().addEventListener("mousemove", vso.mousemove, false);
vso.btn._destructors.push({
context: vso,
destructor: vso.destroy
});
},

fullscreenchange: function(e) {
if(!document.fullscreenElement){
if(vso.vt && !vso.vt.collapsed)vso.deck.style.setProperty('margin-left', '4px', 'important');
} else  vso.deck.style.setProperty('margin-left', '', '');
},

mouseleave: function(e) {
getBrowser().removeEventListener("mousemove", vso.mousemove, false);
getBrowser().addEventListener("mousemove", vso.mousemove, false);
},

mouseenter: function(e) {
clearTimeout(this.Timer);
if(this.sidebarBox.getAttribute("hidden")) {
let dY = e.screenY - vso.vt.boxObject.screenY;
this.Timer = setTimeout(function() {
if(vso.sidebarBox.getAttribute("hidden")) {
SidebarUI.show(vso.lastSidebar ? vso.lastSidebar : 'viewBookmarksSidebar');
getBrowser().removeEventListener("mousemove", vso.mousemove, false);
getBrowser().addEventListener("mousemove", vso.mousemove, false);
};
}, (e.relatedTarget && e.relatedTarget.id == 'browser-panel' ? 300 : 0)+(dY > 50 ? 150 : -dY*10 + 650));
};
},

mouseout: function(e) {
clearTimeout(this.Timer);
if(e.relatedTarget && vso.sidebarBox.getAttribute("hidden") && (e.relatedTarget.id != 'browser-panel' || window.windowState == 3) && e.screenY > vso.vt.boxObject.screenY + 20){
SidebarUI.show(vso.lastSidebar ? vso.lastSidebar : 'viewBookmarksSidebar');
getBrowser().removeEventListener("mousemove", vso.mousemove, false);
getBrowser().addEventListener("mousemove", vso.mousemove, false);
}
},

beforecustomization: function(e) {
vso.destroy();
},

mousemove: function(e) {
if(vso.sidebarBox.getAttribute("hidden")) {
getBrowser().removeEventListener("mousemove", vso.mousemove, false);
} else {
if(e.screenX > (50 + vso.sidebarSplitter.boxObject.screenX)) {
getBrowser().removeEventListener("mousemove", vso.mousemove, false);
vso.lastSidebar = vso.sidebarBox.getAttribute("sidebarcommand");
SidebarUI.hide();
}
}
},

destroy: function(reason) {
window.removeEventListener("resize", this, false);
window.removeEventListener("fullscreenchange", this, false);
window.removeEventListener("beforecustomization", this, false);
if(this.vt) {
this.vt.removeEventListener("mouseenter", this, false);
this.vt.removeEventListener("mouseout", this, false);
this.vt.parentNode && this.vt.parentNode.removeChild(this.vt);
};
this.sidebarBox.removeEventListener("mouseleave", this, false);
getBrowser().removeEventListener("mousemove", vso.mousemove, false);
this.deck.style.setProperty('margin-left', '', '');
this.toolbarContextMenu.removeEventListener("command", this, false);
},

handleEvent: function(e) this[e.type](e),

command: function(e) {
if(e.target.id != "toggle_" + this.id) return;
e.preventDefault();
if(this.vt.collapsed) {
if(this.vt) {
this.vt.removeEventListener("mouseenter", this, false);
this.vt.removeEventListener("mouseout", this, false);
};
this.sidebarBox.removeEventListener("mouseleave", this, false);
getBrowser().removeEventListener("mousemove", vso.mousemove, false);
this.deck.style.setProperty('margin-left', '', '');
} else {
if(this.vt) {
this.vt.addEventListener("mouseenter", this, false);
this.vt.addEventListener("mouseout", this, false);
};
this.sidebarBox.removeEventListener("mouseleave", this, false);
this.sidebarBox.addEventListener("mouseleave", this, false);
getBrowser().removeEventListener("mousemove", vso.mousemove, false);
if(!vso.sidebarBox.getAttribute("hidden")) getBrowser().addEventListener("mousemove", vso.mousemove, false);
this.deck.style.setProperty('margin-left', '4px', 'important');
};
},

resize: function(e) {
this.vt.style.maxHeight = this.deck.boxObject.height - 1 + "px";
},

initVT: function() {
var id = this.id;
var vt = this.vt =
document.getElementById(id) ||
document.createElement("toolbar");
var attrs = {
id: id,
mode: "icons",
iconsize: "small",
orient: "vertical",
customizable: "false",
persist: "collapsed",
toolbarname: this.name,
fullscreentoolbar: "true",
class: "chromeclass-toolbar",
style: "-moz-appearance: none; display: -moz-box; height: 100%;border:0!important;padding:0px!important; position: fixed;background: #AAAAAA; min-width: 2px;outline: 3px solid #BBBBBB;margin-top:3px!important;"
};
for(var attr in attrs) vt.setAttribute(attr, attrs[attr]);
if(!vt.parentNode) gNavToolbox.appendChild(vt);
return vt;
}
};
if(!cbu.getPrefs('CB.noautomod'))vso.init();

//Custom.Torifier
var imgOrig = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAB7CAAAewgFu0HU+AAABG0lEQVR42mP8//8/AxgY2Hv+90vM+c8IE2EE8SCMzNz1fz59D2CAAhYQ8fD+fRifAa4HLuAVnQIX+f33NwMLCxsHXPbft/8MLHdvXkfVArLl+omzAYyMjAyY4D+mJeiAiYEAAFvBxykUgE3l7+8/CVvBqGFk9f8fA6YDQRo1LYw3sMipqgE9y4LbBIJWeEQk/2fj5MQq+eLRQyJM0LZyxqlCWV9rA2NkZsV/Vk52DMl/QPzp+7sNBK0gGNI61i7/RUXFGdjZ2UnS+PPnD4aP798xUO4CUFzfPnMhAGIOI5Ha/oNTkYqpwQZwFKpo6zKwMbOSZPPv37+Ji2mCXjBzC/gvLS/PwM7JDXQWcV74B/TCz2/fGF49e0K5CwCQq3eH2QS1RAAAAABJRU5ErkJggg=="
var imgOrange = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAB7CAAAewgFu0HU+AAABEElEQVR42q1T3UrDMBT+TnKGQze77gcEZfhCfRQRvPFWUPDOh1lvBRGvFAR9C2EqddKiW9Ojia6gZrRjfoSQnJ985y8kInC4POjJ7elQaC4he3OHu6PhaMpFhG+w3dJxOr+j9CkFNyc7paQwAtZalVoRA548vP50sSyP4yQCEXz4Q/IbChVwFLrDkc+0yItqCjrfCwQ+m0/H/qATc6vfgtL+DJDXyIKuj7eFWXuVaZLVeOFiP1xoEYbtmO7PdkWxrwiASfK4kqKy0jaEZrAG1dBLOZqZwTSbYfUIbK+fnifRV7fqPkZu9bqbsRvyYKsNxbQUsx13vOMfUrg6HMhGdx26oRZ9Ct8cuiJmL2+rR/ABvC57Gs27SRgAAAAASUVORK5CYII=";
var imgGreen = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAB7CAAAewgFu0HU+AAABHElEQVR42mP8//8/Axgoz+n8b7l+3n9GmAgjiAdmmG/u3fT/B48vAxSwgIhX797C+AxwPXABs9Uz4SJ//v5BGAYCv3//YWB5/uoFqhaQLU8efvFlZGRkwABA8zEsQQdMDAQA2AoeNhlfRgZMK/78/UfYCka5KU3//2F1338GGXmezSyioqIMzEy4nPKFCCtMVs38z8rKilXy/fv3RJigMLMNpwpxKfbNjA7bVvxnYcZ05H8g/PLryWaCVhAMaYVZbf/5efgZWFlYSNL4+/dvhm/fvzFQ7gJQXD9//A2aaBmJ1AZMZkAoIcu5GexuKQkpBhZmVpJs/gtM7v8Y3lPBCxoL+v4LCwoysLKxMzAS6QVQFP7+9Zvhw0cquAAAZAyCFY7eC5cAAAAASUVORK5CYII=";
var imgSGreen = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAB7CAAAewgFu0HU+AAAA90lEQVR42q1SSw6CMBCdKQUC4ofoeXSpG+7kXk6jJyDRxIUxceEtNC5MNFDKSEXxBwGjb9FM55P3+qZIRKCgTYY++Qd/jPcMdjbuNcLmdjRl4dKDG7g6olN0v0M+kyfa606eIUqAo4aPsmTAw2P4OqJYxC7wAOETVEDyDgYVuFIYbOUVFVOR1RRoBRZRiUC9N5hxwzHSNiycTqAOhbLuxa0niJOoI3Jul3Zwtz/jlmsDltgV1fGh0mlrYZNu8pSFfTVIMgEp5B8UqF3H+yDbNdalz5p5NzVJhWbL/P4JCYGEf5jYWDpk2Dqgxsq+1Cc7ZSaKc/y7ggu8xW7YWfjMLwAAAABJRU5ErkJggg==";
var imgRed = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAB7CAAAewgFu0HU+AAABAElEQVR42qVSPU/DQAz1C86lV4agSgxsVCpSB/4AAxsDS/8s+TGoVcWHhMTQoRMtSQ8euYRGggYuVd9wOttnv2efQVIqzMZ9Pl+fEFsPvFVfbtI7vslEvqH+yBfF1pYmp3E8XaWNh46iUDRRH9H31/xnimdZzfOJQHbBFpLfiCSAikJVWyl89SAF7oeWdQO7AvujJNPeqREc/VMhSPFYji5StAaL5aZDhenI/vmid24yvNwOCKC1C+dcFqQITnp6YRmnsSDGXoksKG71IYcr8H+9fijqpe0qgvVbOzRZteT2LBGYPVtwrCod3sL88phmYCRKSgXoqKIk/dyw26aE8AV8bnPNy+EmrQAAAABJRU5ErkJggg==";
var imgViol = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAB7CAAAewgFu0HU+AAAA/0lEQVR42q2SO4+CQBDHZ5ZdFC/nq/Q78T2vIFdIZ2Fz5fko1PgNLDXB4oAFxlmiJKeQxei/2LDz+s0Og0QEpb57K5oPd4Q3C5pb+RH0N9M+og9XSXNEaXy7Q5VTGWaDbWUp2CklYuXNgA3H5O9/iqFkaexDgx4g9xJgUYmYKMUIfHDmVNgR+OX9EjTESLcbypHb5eJYGxBxdTtiNtiQxPrHRDptUSHwFs0RqhPiz3hPTi2C4KB1aEXYJ+0tqackOCieSswZHOcZvKED/te5TnzzJmyZdF18cMyQTIGREL5AfIps1v1UFG8Y4vRjTZ9uB5TpoG0XDM14lc9avz7ECyYbf9iUaPRTAAAAAElFTkSuQmCC";

var origTxt = 'Меню';
var txtTCErr = origTxt + '\nНет интернет-соединения через TOR';
var txtCC = origTxt + '\nИнтернет исправен. Проверка интернет-соединения производится.';
var txtCE = origTxt + '\nНет интернет-соединения.';
var txtOF = origTxt + '\nВ браузере включен оффлайн-режим';
var txtOFT = origTxt + '\nВключен оффлайн-режим. Соединение настроено через TOR';
var txtTErr = origTxt + '\nНет связи с процессом Tor.exe. В браузере включен режим через TOR';
var txtTM = origTxt + '\nВключен режим интернет-соединения через TOR';
var txtTMC = origTxt + '\nИнтернет исправен. Включен режим соединения через TOR';
var txtStopStart = 'Остановить запуск';

var menuItemT1 = document.createElement("menuitem");
menuItemT1.setAttribute("id", "start_tor");
menuItemT1.setAttribute("label", "Использовать TOR");
menuItemT1.setAttribute('type', 'checkbox');
itemTimers.usetor = setTimeout(function() {popup.insertBefore(menuItemT1, popup.lastChild)}, 1800);
menuItemT1.onclick = () => setTimeout(() => {
if(!!menuItemT1.getAttribute('checked')) {
if(menuItemT1.getAttribute('label') != txtStopStart) {
startTor();
menuItemT1.setAttribute("label", txtStopStart);
} else {
stopTor();
}
} else {
stopTor();
}
}, 100);

var menuItemT2 = document.createElement("menuitem");
menuItemT2.setAttribute("id", "restart_tor");
menuItemT2.setAttribute("label", "TOR рестарт");
menuItemT2.onclick = () => setTimeout(() => restartTor(), 10);

var menuItemCC = document.createElement("menuitem");
menuItemCC.setAttribute("id", "check_conn");
menuItemCC.setAttribute("label", "Проверять наличие интернет-соединения");
menuItemCC.setAttribute('type', 'checkbox');
itemTimers.checkmenu = setTimeout(function() {anchItem.parentNode.insertBefore(menuItemCC, anchItem)}, 1800);

self.onmouseenter = function(e) {
menuItemCC.setAttribute('checked', !!cbu.getPrefs('CB.ct.checkconnection'));
menuItemT1.setAttribute('checked', isTorMod);
if(isTorMod) {
if(!document.getElementById("restart_tor")) popup.insertBefore(menuItemT2, popup.lastChild);
} else {
if(document.getElementById("restart_tor")) menuItemT2.remove();
}
};

menuItemCC.onclick = () => setTimeout(() => {
isCheckConnection = !!menuItemCC.getAttribute('checked');
cbu.setPrefs('CB.ct.checkconnection', isCheckConnection);
clearCheckTimeouts();
if(isCheckConnection) {
itIsPrimWin = Date.now().toString();
cbu.setPrefs('CB.ct.primwintime', itIsPrimWin);
sendCheck(rndBeacon());
} else {
if(sCount < 35)cbu.setPrefs('CB.ct.neterror', false);
}
}, 100);

if(!cbu.getPrefs('CB.ct.nogooglebeacons')){
var netBeacons = ['http://google.com', 'http://google.ru', 'http://google.com.ua', 'http://google.co.in', 'http://google.co.jp', 'http://google.de', 'http://google.co.uk', 'http://google.fr', 'http://google.it', 'http://google.es', 'http://google.com.hk', 'http://google.ca'];
}else{
var netBeacons = ['http://duckduckgo.com?', 'http://otf.msn.com/c.gif?', 'http://ask.com', 'http://office.com', 'http://bing.com', 'http://microsoft.com', 'http://adobe.com', 'http://ask.fm', 'http://aolsearch.com', 'http://answers.com', 'http://stackexchange.com'];
};

var rndBeacon = function() {
let iB = Math.floor(Math.random() * netBeacons.length * 0.66);
let rndB = netBeacons[iB];
netBeacons.splice(iB, 1);
netBeacons.push(rndB);
return rndB;
};

var onlineMode = navigator.onLine ? 1 : 0;
var relativPathToTor_bat = '\\TorExpertBundle\\StartTor.bat';
var sCount = 0;
var itIsPrimWin = '';
var torReady = false;
var acccheckTor = true;
var startInProc = 0;
var restartInProc = 0;
var cacheParams = ['network.proxy.ftp', 'network.proxy.ftp_port', 'network.proxy.http', 'network.proxy.http_port', 'network.proxy.no_proxies_on', 'network.proxy.socks', 'network.proxy.socks_port', 'network.proxy.socks_remote_dns', 'network.proxy.socks_version', 'network.proxy.type'];
var accFlag = true;
var goodCnt = 0;
var attCnt = 0;
var xhrInProc = 0;
var nextCheckTimer;
var checkTorTimer;
var noResponseTimer;
var noResponseTimer2;
var preventTimer;
var preventTimer2;
var Rtimer;
var blinksInterv;
var digi = /^\d+$/;
var xhrB;
var isTorMod = !!cbu.getPrefs('CB.ct.tormode');
var isCheckConnection = !!cbu.getPrefs('CB.ct.checkconnection');
var noRestFlag = isTorMod && onlineMode && !window.opener;

var torPort = function() {
let torport = cbu.getPrefs("CB.torport");
if(torport && parseInt(torport, 10) > 0)return parseInt(torport, 10);
return 9050;
};

var isAccesXHR = function() {
if(xhrInProc && isCheckConnection && onlineMode && itIsPrimWin && accFlag && !sCount) return true;
return false;
};

var sendCheck = function(url) {
if(xhrInProc || !isCheckConnection || !onlineMode || !itIsPrimWin || !accFlag || sCount) return;
preventTimer = setTimeout(function() {
if(xhrInProc++ || !isAccesXHR()) {
clearTimeout(preventTimer);
return;
};
xhrB = new XMLHttpRequest();
Services.console.logStringMessage('sendCheck to ' + url + '/abc');
noResponseTimer = setTimeout(function() {
if(isAccesXHR()) {
Services.console.logStringMessage('ResendCheck to ' + url + '/def');
xhrB.open("HEAD", url + '/' + Math.random().toString(36).slice(4, 7));
xhrB.send();
noResponseTimer2 = setTimeout(function() {
if(xhrB) xhrB.abort();
xhrB = null;
if(isAccesXHR()) notconnect();
xhrInProc = 0;
clearTimeout(noResponseTimer2);
}, 4000);
if(isTorMod) checkTorTimer = setTimeout(function() {
if(isAccesXHR() && isTorMod) checkTor()
clearTimeout(checkTorTimer);
}, 3000);
} else {
if(xhrB) xhrB.abort();
xhrB = null;
xhrInProc = 0;
return;
}
clearTimeout(noResponseTimer);
}, 3000);

xhrB.onreadystatechange = function(e) {
if(xhrB.readyState < 2) {
return;
}
if(xhrB.status > 99) {
clearTimeout(noResponseTimer);
clearTimeout(noResponseTimer2);
clearTimeout(checkTorTimer);
if(xhrB) xhrB.abort();
xhrB = null;
preventTimer2 = setTimeout(function() {
if(isAccesXHR()) goodconnect();
xhrInProc = 0;
clearTimeout(preventTimer2);
}, 5 + Math.random() * 20);
} else return
};
xhrB.open("HEAD", url + '/' + Math.random().toString(36).slice(4, 7));
xhrB.send();
clearTimeout(preventTimer);
}, 5 + Math.random() * 20);
};

document.addEventListener('offline', function() {
if(!onlineMode) return;
onlineMode = 0;
clearCheckTimeouts();
setColor();
}, false);

function clearCheckTimeouts() {
clearTimeout(nextCheckTimer);
clearTimeout(noResponseTimer);
clearTimeout(noResponseTimer2);
clearTimeout(preventTimer);
clearTimeout(preventTimer2);
if(xhrB) try {
xhrB.abort()
} catch(e) {};
xhrB = null;
xhrInProc = 0;
goodCnt = 0;
attCnt = 0;
accFlag = true;
};

document.addEventListener('online', function() {
if(onlineMode) return;
onlineMode = 1;
setColor();
if(itIsPrimWin) {
setTimeout(() => {
if(onlineMode++ > 1) return;
clearCheckTimeouts();
sendCheck(rndBeacon());
}, 5 + Math.random() * 20);
}
}, false);

function goodconnect() {
if(!accFlag) return;
accFlag = false;
attCnt = 0;
if(!goodCnt++)cbu.setPrefs('CB.ct.neterror', false);
nextCheckTimer = setTimeout(function() {
accFlag = true;
sendCheck(rndBeacon());
clearTimeout(nextCheckTimer);
}, 15000 + Math.random() * 7000);
};

function notconnect() {
if(!accFlag) return;
accFlag = false;
if(isTorMod && !torReady) {
cbu.setPrefs('CB.ct.neterror', true);
setTimeout(() => self.tooltipText = txtTErr, 200);
connectToTor();
return;
}
nextCheckTimer = setTimeout(function() {
accFlag = true;
sendCheck(rndBeacon());
clearTimeout(nextCheckTimer);
}, (attCnt++ < 55) ? 99+(250 + Math.random() * 125)*attCnt : 14000 + Math.random() * 7000);
if(attCnt == 2) {
goodCnt = 0;
cbu.setPrefs('CB.ct.neterror', true);
}
};

gPrefService.addObserver('CB.ct.neterror', setColor, false);
gPrefService.addObserver('CB.ct.tormode', setColor, false);
gPrefService.addObserver('CB.ct.checkconnection', setColor, false);

function setColor() {
isCheckConnection = !!cbu.getPrefs('CB.ct.checkconnection');
isTorMod = !!cbu.getPrefs('CB.ct.tormode');
if(!onlineMode){
self.image = imgOrange;
if(isTorMod) {
self.tooltipText = txtOFT;
} else {
self.tooltipText = txtOF;
}
}else{
if(!cbu.getPrefs('CB.ct.neterror')) {
if(!isCheckConnection) {
if(isTorMod) {
self.image = imgGreen;
self.tooltipText = txtTM;
} else {
self.image = imgOrig;
self.tooltipText = origTxt;
}
} else {
if(isTorMod) {
self.image = imgSGreen;
self.tooltipText = txtTMC;
} else {
self.image = imgOrig;
self.tooltipText = txtCC;
}
}
} else {
if(isTorMod) {
self.image = imgViol;
if(sCount > 34){
self.tooltipText = txtTErr;
}else{
self.tooltipText = txtTCErr;
}

} else {
self.image = imgRed;
self.tooltipText = txtCE;
}
}
}
};

function connectToTor() {
setTimeout(() => {
if(startInProc++ || restartInProc) return;
clearInterval(blinksInterv);
sCount = 12;
self.image = imgGreen;
blinksInterv = setInterval(torBlinksFunc, 300);
}, 10 + Math.random() * 20);
}

function restartTor() {
setTimeout(() => {
if(restartInProc++) return;
clearInterval(blinksInterv);
sCount = 0;
self.image = imgGreen;
BATcommand('taskkill /im tor.exe');
blinksInterv = setInterval(torBlinksFunc, 300);
}, 10 + Math.random() * 20);
}

function startTor() {
setTimeout(() => {
if(startInProc++ || restartInProc) return;
sCount = 3;
noRestFlag = false;
self.image = imgGreen;
clearCheckTimeouts();
runBAT();
blinksInterv = setInterval(torBlinksFunc, 300);
}, 5 + Math.random() * 20);
}

function torBlinksFunc() {
if(sCount++ == 2) {
clearCheckTimeouts();
noRestFlag = false;
runBAT();
};
if(sCount == 15) {
if(noRestFlag)noRestFlag = noRestFlag && gBrowser.tabs.length < 2 && content && content.location.protocol == "about:" && Math.abs(Date.now() - parseInt(cbu.getPrefs('CB.ct.primwintime'), 10)) < 6000;
clearCheckTimeouts();
itIsPrimWin = Date.now().toString();
cbu.setPrefs('CB.ct.primwintime', itIsPrimWin);
torReady = false;
};
if(!(sCount & 1)) {
self.image = imgGreen;
if(sCount > 16) {
if(torReady) {
sCount = 0;
if(!isCheckConnection)cbu.setPrefs('CB.ct.neterror', false);
menuItemT1.setAttribute("label", 'Использовать TOR');
menuItemT1.setAttribute('checked', true);
startInProc = 0;
restartInProc = 0;
plugTor();
setColor();
clearInterval(blinksInterv);
return;
} else {
if(sCount == 24 && noRestFlag) {
menuItemT1.setAttribute("label", 'Использовать TOR');
menuItemT1.setAttribute('checked', false);
if(!isCheckConnection)cbu.setPrefs('CB.ct.neterror', false);
startInProc = 0;
restartInProc = 0;
sCount = 0;
clearInterval(blinksInterv);
clearCheckTimeouts();
unplugTor();
return;
};
if(sCount > 150) { // ошибка - не запущен процесс tor.exe или оффлайн мод
if(!isTorMod) { //выходим, если настройки сети не на tor
menuItemT1.setAttribute("label", 'Использовать TOR');
if(!isCheckConnection)cbu.setPrefs('CB.ct.neterror', false);
startInProc = 0;
restartInProc = 0;
sCount = 0;
setColor();
clearInterval(blinksInterv);
if(!onlineMode && sCount < 9999) {
plugTor();
menuItemT1.setAttribute('checked', true);
return;
}
clearCheckTimeouts();
sendCheck(rndBeacon());
return;
}
};
if(!!((sCount/2) & 1))checkTor();
}
}
} else {
if(!isTorMod) {
if(!onlineMode) {
self.image = imgOrange;
} else {
if(!cbu.getPrefs('CB.ct.neterror')) {
self.image = imgOrig;
} else {
self.image = imgRed;
}
}
} else {
if(sCount < 150) {
if(!onlineMode) {
self.image = imgOrange;
} else {
if(!cbu.getPrefs('CB.ct.neterror')) {
if(sCount == 35)cbu.setPrefs('CB.ct.neterror', true);
self.image = imgOrig;
} else {
if(sCount == 37)self.tooltipText = txtTErr;
self.image = imgViol;
}
}
} else {
self.image = imgViol;
}
}
}
};

var checkTor = function() {
if(!acccheckTor) return;
acccheckTor = false;
var xhrT = new XMLHttpRequest(),
noResponseTimerT = setTimeout(function() {
xhrT.abort();
xhrT = null;
acccheckTor = true;
torReady = false;
}, 500);

xhrT.onreadystatechange = function(e) {
if(xhrT.readyState < 2) {
return;
}
if(xhrT.status > 99) {
try {
clearTimeout(noResponseTimerT)
} catch(e) {};
xhrT.abort();
xhrT = null;
acccheckTor = true;
torReady = true;
} else return
};
xhrT.open("HEAD", 'http://127.0.0.1:' + torPort().toString());
//Services.console.logStringMessage('chek tor ' + 'http://127.0.0.1:' + torPort().toString());
xhrT.send();
};

function stopTor() {
clearCheckTimeouts();
itIsPrimWin = Date.now().toString();
cbu.setPrefs('CB.ct.primwintime', itIsPrimWin);
menuItemT1.setAttribute("label", 'Использовать TOR');
setTimeout(() => menuItemT1.setAttribute('checked', false), 10);
BATcommand('taskkill /im tor.exe');
startInProc = 0;
restartInProc = 0;
clearInterval(blinksInterv);
sCount = 0;
if(!isCheckConnection)cbu.setPrefs('CB.ct.neterror', false);
setColor();
unplugTor();
};

function plugTor() {
if(!(!cbu.getPrefs('network.proxy.http') && cbu.getPrefs('network.proxy.type') == 1 && cbu.getPrefs('network.proxy.socks') == '127.0.0.1' && cbu.getPrefs("network.proxy.socks_port") > 0)) {
let cachedParams = new Array(cacheParams.length);
for(var iT = 0; iT < cacheParams.length; iT++) {
cachedParams[iT] = cbu.getPrefs(cacheParams[iT]);
}
cbu.setPrefs("CB.ct.savednetsettings", JSON.stringify(cachedParams));
}
cbu.setPrefs('network.proxy.ftp', '');
cbu.setPrefs('network.proxy.ftp_port', 0);
cbu.setPrefs('network.proxy.http', '');
cbu.setPrefs('network.proxy.http_port', 0);
cbu.setPrefs('network.proxy.no_proxies_on', 'localhost, 10.0.0.0/8, 127.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16');
cbu.setPrefs('network.proxy.socks', '127.0.0.1');
cbu.setPrefs('network.proxy.socks_port', torPort());
cbu.setPrefs('network.proxy.socks_remote_dns', true);
cbu.setPrefs('network.proxy.socks_version', 5);
cbu.setPrefs('network.proxy.type', 1);
cbu.setPrefs('CB.ct.tormode', true);
if(!document.getElementById("restart_tor")) popup.insertBefore(menuItemT2, popup.lastChild);
sendCheck(rndBeacon());
};

function unplugTor() {
let cachedParams = cbu.getPrefs('CB.ct.savednetsettings');
if(cachedParams) {
cachedParams = JSON.parse(cachedParams);
for(var iT = 0; iT < cacheParams.length; iT++) {
cbu.setPrefs(cacheParams[iT], cachedParams[iT]);
}
}
cbu.setPrefs('CB.ct.tormode', false);
sendCheck(rndBeacon());
};

function BATcommand(Command) {
var CMDfile = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
CMDfile.initWithPath(
Components.classes["@mozilla.org/process/environment;1"]
.getService(Components.interfaces.nsIEnvironment)
.get("ComSpec")
);
var processC = Components.classes["@mozilla.org/process/util;1"]
.createInstance(Components.interfaces.nsIProcess);
processC.init(CMDfile);
processC.run(false, ['/C', Command], 2);
};

function runBAT() {
var fileB = Services.dirsvc.get('CurProcD', Ci.nsIFile);
var MozExeDir = fileB.path.split('\\').slice(0,-1).join('\\');
fileB.initWithPath(MozExeDir + relativPathToTor_bat);
if(!fileB.exists()) {
self.image = imgViol;
sCount = 9999;
custombuttons.alertBox("File not found!", MozExeDir + relativPathToTor_bat);
return;
};
var processB = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
processB.init(fileB);
processB.run(false, [(parseInt(cbu.getPrefs("CB.torport"), 10) > 0 ? ' -SOCKSPort ' + cbu.getPrefs("CB.torport").toString() : '')], 1);
};

function primWinReq() {
if(!(temp2 = cbu.getPrefs('CB.ct.primwintime')) || !temp2 || temp2.length < 2 || temp2.length > 14 || !digi.test(temp2) || (Math.abs(Date.now() - parseInt(temp2, 10)) > 2500)) {
cbu.setPrefs('CB.ct.primwintime', 'R');
Rtimer = setTimeout(function() {
clearTimeout(Rtimer);
if(cbu.getPrefs('CB.ct.primwintime').length < 2) {
itIsPrimWin = Date.now().toString();
cbu.setPrefs('CB.ct.primwintime', itIsPrimWin);
clearCheckTimeouts();
if(isTorMod) {
connectToTor();
} else {
preventTimer = setTimeout(function() {clearTimeout(preventTimer);sendCheck(rndBeacon())}, 600);
};
} else {
itIsPrimWin = '';
clearCheckTimeouts();
};
gPrefService.addObserver('CB.ct.primwintime', setPrim, false);
}, 100);
} else {
itIsPrimWin = '';
clearCheckTimeouts();
gPrefService.addObserver('CB.ct.primwintime', setPrim, false);
}
};

function cHandl(cTime) {
if(cTime == 'R') {
Rtimer = setTimeout(function() {
clearTimeout(Rtimer);
if(cbu.getPrefs('CB.ct.primwintime').length < 2) {
Rtimer = setTimeout(function() {clearTimeout(Rtimer);primWinReq()}, 3000 + Math.random() * 1000);
} else {
itIsPrimWin = '';
clearCheckTimeouts();
gPrefService.addObserver('CB.ct.primwintime', setPrim, false);
};
}, 100);
} else {
if(Math.abs(Date.now() - parseInt(cTime, 10)) > 2500) {
Rtimer = setTimeout(function() {clearTimeout(Rtimer);primWinReq()}, 200 + Math.random() * 300);
} else {
itIsPrimWin = '';
clearCheckTimeouts();
gPrefService.addObserver('CB.ct.primwintime', setPrim, false);
};
}
};

if(!(temp2 = cbu.getPrefs('CB.ct.primwintime')) || !temp2 || temp2 == '0' || temp2.length > 14 || (temp2 != 'R' && !digi.test(temp2))) {
Rtimer = setTimeout(function() {
clearTimeout(Rtimer);
if(!(temp2 = cbu.getPrefs('CB.ct.primwintime')) || !temp2 || temp2 == '0' || temp2.length > 14 || (temp2 != 'R' && !digi.test(temp2))) {
itIsPrimWin = Date.now().toString();
cbu.setPrefs('CB.ct.primwintime', itIsPrimWin);
clearCheckTimeouts();
if(isTorMod) {
connectToTor();
} else {
preventTimer = setTimeout(function() {clearTimeout(preventTimer);sendCheck(rndBeacon())}, 900);
};
gPrefService.addObserver('CB.ct.primwintime', setPrim, false);
} else cHandl(temp2);
}, Math.random() * 100);
} else cHandl(temp2);

function setPrim() {
temp2 = cbu.getPrefs('CB.ct.primwintime');
if(itIsPrimWin) {
if(temp2 == itIsPrimWin) {
return;
} else {
if(!temp2 || temp2.length < 2 || temp2.length > 14 || !digi.test(temp2)) {
cbu.setPrefs('CB.ct.primwintime', itIsPrimWin);
} else {
itIsPrimWin = '';
clearCheckTimeouts();
};
}
} else {
if(!temp2 || temp2 == '0' || temp2.length > 14 || (temp2 != 'R' && !digi.test(temp2))) {
clearTimeout(Rtimer);
Rtimer = setTimeout(function() {
if(!(temp2 = cbu.getPrefs('CB.ct.primwintime')) || !temp2 || temp2 == '0' || temp2.length > 14 || (temp2 != 'R' && !digi.test(temp2))) {
itIsPrimWin = Date.now().toString();
cbu.setPrefs('CB.ct.primwintime', itIsPrimWin);
clearTimeout(Rtimer);
clearCheckTimeouts();
sendCheck(rndBeacon());
};
}, 100 + Math.random() * 200);
} else {
if(temp2 == 'R') {
clearTimeout(Rtimer);
Rtimer = setTimeout(function() {
if(cbu.getPrefs('CB.ct.primwintime') == 'R') {
itIsPrimWin = Date.now().toString();
cbu.setPrefs('CB.ct.primwintime', itIsPrimWin);
clearTimeout(Rtimer);
clearCheckTimeouts();
sendCheck(rndBeacon());
};
}, 3000 + Math.random() * 1000);
} else {
clearTimeout(Rtimer);
}
}
}
};

setTimeout(() => setColor(), 100);

addDestructor(() => {
clearCheckTimeouts();
clearInterval(blinksInterv);
clearTimeout(Rtimer);
gPrefService.removeObserver('CB.ct.primwintime', setPrim, false);
gPrefService.removeObserver('CB.ct.neterror', setColor, false);
gPrefService.removeObserver('CB.ct.tormode', setColor, false);
gPrefService.removeObserver('CB.ct.checkconnection', setColor, false);
if(itIsPrimWin) cbu.setPrefs('CB.ct.primwintime', '0');
});

//Buttons.Restorator
(()=> {
var restMenu = ['Сохранить расположение кнопок', 'Восстановить расположение кнопок', 'Восстановить оригинальное расположение'];
var tabsToSave = ['nav-bar', 'TabsToolbar'];
itemTimers.restmenu = setTimeout(function() {
for(var ir = 0; ir < restMenu.length; ir++) {
var mItemr = document.createElement("menuitem");
mItemr.setAttribute("label", restMenu[ir]);
if(ir == 0) mItemr.onclick = () => customSave();
if(ir == 1) mItemr.onclick = () => {
customRestor(false);
setTimeout(() => customRestor(false), 600);
};
if(ir == 2) mItemr.onclick = () => {
customRestor(true);
setTimeout(() => customRestor(true), 600);
};
anchItem.parentNode.insertBefore(mItemr, anchItem);
};
}, 2100);

function customSave() {
for(let toolbarId of tabsToSave) cbu.setPrefs('CB.buttons.restore.saved_' + toolbarId, document.getElementById(toolbarId).getAttribute("currentset"));
};

function customRestor(flag) {
if(window._inRest == '1') return;
window._inRest = '1';
setTimeout(() => window._inRest = '0', 100);
let notFound = '';
let palette = document.getElementById("navigator-toolbox").palette;
var savedSet = '', movToPalette;
for(let toolbarId of tabsToSave)
if((savedSet = cbu.getPrefs('CB.buttons.restore.' + (flag ? 'origin_' : 'saved_') + toolbarId)) && savedSet.length) {
var toolbar = document.getElementById(toolbarId);
var currentsetArr = toolbar.getAttribute("currentset").split(",");
var savedsetArr = savedSet.split(",");
for(var ib = 0; ib < currentsetArr.length; ib++)
if(savedSet.indexOf(currentsetArr[ib]) == -1 && (movToPalette = document.getElementById(currentsetArr[ib])) && movToPalette) {
gCustomizeMode.removeFromArea(movToPalette);
toolbar.setAttribute("currentset", toolbar.currentSet);
document.persist(toolbar.id, "currentset");
try {
top.BrowserToolboxCustomizeDone(true)
} catch(e) {}
};
var currentSet = toolbar.getAttribute("currentset");
var currentsetArr = currentSet.split(",");
for(var sv = 0; sv < savedsetArr.length; sv++) {
if(currentSet.indexOf(savedsetArr[sv]) == -1) {
var isExist = false;
for(var ib = 0; ib < palette.childNodes.length; ib++)
if(palette.childNodes[ib].id == savedsetArr[sv]) {
isExist = true;
break;
};
} else var isExist = true;

if(!isExist) {
notFound = notFound + savedsetArr[sv] + ',';
} else {
if(savedsetArr[sv]!=currentsetArr[sv]){
let before = null;
for(var ib = sv + 1; ib < currentsetArr.length; ib++) {
before = document.getElementById(currentsetArr[ib]);
if(before) {
toolbar.insertItem(savedsetArr[sv], before);
break;
}
};
if(!before) {
toolbar.insertItem(savedsetArr[sv]);
};
toolbar.setAttribute("currentset", toolbar.currentSet);
document.persist(toolbar.id, "currentset");
try {
top.BrowserToolboxCustomizeDone(true)
} catch(e) {}
}
}
}
};
if(notFound) Services.console.logStringMessage('notFound: ' + notFound);
};

function check_n_rest() {
if(window._inRest == '1') return;
setTimeout(() => {
let navbarIds = document.getElementById('nav-bar').getAttribute("currentset");
let navbarArr = navbarIds.split(",");
if(navbarArr.indexOf('downloads-button') > 0 && (navbarArr.indexOf('home-button') - navbarArr.indexOf('downloads-button')) == 1 && navbarIds.indexOf('custombuttons-button') < 0){
customRestor(true);
setTimeout(() => customRestor(true), 600);
};
}, 300);
};

if(window._custAdded != '1') {
window.addEventListener('aftercustomization', check_n_rest, true);
if(!cbu.getPrefs('CB.setsearch'))setTimeout(() => {
var SearchService = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);
var searchEng = SearchService.getEngineByName('Google');
if(searchEng)SearchService.currentEngine = searchEng;
cbu.setPrefs('CB.setsearch', true);
}, 700);
};
window._custAdded = '1';
})();

//Adds.Menu
(()=> {
var contMenu = document.getElementById("contentAreaContextMenu");

var addMenufragm = document.createDocumentFragment('menupopup');
(contextMenu => {
var menuGl = contextMenu.appendChild(document.createElement("menuitem"));
menuGl.id = "content-googlel.";
menuGl.setAttribute("label", "Посмотреть ссылку через кэш Google");
menuGl.onclick = () => gBrowser.selectedTab = gBrowser.addTab("http://webcache.googleusercontent.com/search?q=cache:" + encodeURIComponent(normlink(gContextMenu.linkURI.spec)));

var menuAl = contextMenu.appendChild(document.createElement("menuitem"));
menuAl.id = "content-archivel.";
menuAl.setAttribute("label", "Посмотреть ссылку через Archive.org");
menuAl.onclick = () => gBrowser.selectedTab = gBrowser.addTab("http://web.archive.org/web/" + normlink(gContextMenu.linkURI.spec));

var menuW = contextMenu.appendChild(document.createElement("menuitem"));
menuW.id = "content-wot."
menuW.setAttribute("label", "Посмотреть отзывы о сайте в WOT");
menuW.onclick = () => gBrowser.selectedTab = gBrowser.addTab("https://www.mywot.com/ru/scorecard/" + normDom());

var menuG = contextMenu.appendChild(document.createElement("menuitem"));
menuG.id = "content-google.";
menuG.setAttribute("label", "Посмотреть страницу в кэше Google");
menuG.onclick = () => gBrowser.selectedTab = gBrowser.addTab("http://webcache.googleusercontent.com/search?q=cache:" + encodeURIComponent(normlink(gBrowser.currentURI.spec)));

var menuA = contextMenu.appendChild(document.createElement("menuitem"));
menuA.id = "content-archive.";
menuA.setAttribute("label", "Посмотреть страницу в Archive.org");
menuA.onclick = () => gBrowser.selectedTab = gBrowser.addTab("http://web.archive.org/web/" + normlink(gBrowser.currentURI.spec));

var menuM = contextMenu.appendChild(document.createElement("menu"));
menuM.id = "content-addmenu.";
menuM.setAttribute("label", "Дополнительно ...");

var menuAddPopup = menuM.appendChild(document.createElement("menupopup"));

var contextViewsource = document.getElementById("context-viewsource");

var contextViewsource2 = menuAddPopup.appendChild(contextViewsource.cloneNode(true));
contextViewsource2.id = "context-viewsource2.";
contextViewsource2.hidden = false;

var menuitem1 = menuAddPopup.appendChild(document.createElement("menuitem"));
menuitem1.setAttribute("label", "Узнать, кому принадлежит домен через Domaintools");
menuitem1.onclick = () => gBrowser.selectedTab = gBrowser.addTab("http://whois.domaintools.com/" + normDom());

var menuitem2 = menuAddPopup.appendChild(document.createElement("menuitem"));
menuitem2.setAttribute("label", "Узнать, кому принадлежит домен через Reg.ru");
menuitem2.onclick = () => gBrowser.selectedTab = gBrowser.addTab("https://www.reg.ru/whois/?dname=" + normDom());

var menuitem5 = menuAddPopup.appendChild(document.createElement("menuitem"));
menuitem5.setAttribute("label", "Поискать сохраненную копию страницы на Bing.com");
menuitem5.onclick = () => gBrowser.selectedTab = gBrowser.addTab("https://www.bing.com/search?q=" + encodeURIComponent(normlink(gBrowser.currentURI.spec)));


var menuitem3 = menuAddPopup.appendChild(document.createElement("menuitem"));
menuitem3.setAttribute("label", "Поискать сохраненную копию страницы на Yandex");
menuitem3.onclick = () => gBrowser.selectedTab = gBrowser.addTab("https://yandex.ru/search/?text=" + encodeURIComponent(normlink(gBrowser.currentURI.spec)));

var menuitem4 = menuAddPopup.appendChild(document.createElement("menuitem"));
menuitem4.setAttribute("label", "Проверить доступность сайта через isitdownrightnow");
menuitem4.onclick = () => gBrowser.selectedTab = gBrowser.addTab("http://www.isitdownrightnow.com/downorjustme.php?url=" + normDom());

var menuitem6 = menuAddPopup.appendChild(document.createElement("menuitem"));
menuitem6.setAttribute("label", "Проверить доступность через downforeveryoneorjustme");
menuitem6.onclick = () => gBrowser.selectedTab = gBrowser.addTab("http://downforeveryoneorjustme.com/" + normDom());

var menuitem7 = menuAddPopup.appendChild(document.createElement("menuitem"));
menuitem7.setAttribute("label", "Информация о сервере (netcraft)");
menuitem7.onclick = () => gBrowser.selectedTab = gBrowser.addTab("http://toolbar.netcraft.com/site_report?url=" + normDom());

var menu8 = menuAddPopup.appendChild(document.createElement("menuitem"));
menu8.id = "content-bugmen.";
menu8.setAttribute("label", "Поискать логины к сайту на BugMeNot.com");
menu8.onclick = () => gBrowser.selectedTab = gBrowser.addTab("http://bugmenot.com/view/" + normDom());


// Удалить куки текущего сайта в контекстном меню на странице, от 04.02.2017. ................bunda1
var menu = contextMenu.appendChild(document.createElement("menu"));
menu.id = "content-removeCookies.";
menu.setAttribute("label", "Удалить куки текущего сайта");
var menuPopup = menu.appendChild(document.createElement("menupopup"));
var menuitem = menuPopup.appendChild(document.createElement("menuitem"));               
menuitem.setAttribute("label", "Удалить (так же будут удалены все Flash-куки)");
menuitem.onclick =()=> {
var host = Services.eTLD.getBaseDomain(gBrowser.currentURI);

for ( var en = Services.cookies.enumerator; en.hasMoreElements(); ) {
var cookie = en.getNext().QueryInterface(Ci.nsICookie);
~cookie.host.indexOf(host.trim()) && Services.cookies.remove(cookie.host, cookie.name, cookie.path, false); 
}

var reversedDomain = host.split("").reverse().join("") + ".";
Cu.import("resource://gre/modules/FileUtils.jsm");
var file = FileUtils.getFile("ProfD", ["webappsstore.sqlite"]);
var dbConn = Services.storage.openDatabase(file);
dbConn.executeSimpleSQL("DELETE FROM webappsstore2 WHERE scope LIKE \"%" + reversedDomain +"%\"");
dbConn.close();
//удалить и все Flash куки. закомпанию.
var dir = Services.dirsvc.get('Home', Ci.nsIFile);
dir.append("Application Data");
dir.append("Macromedia");
dir.remove(true);
dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);
};

contMenu.addEventListener("popupshowing", () => {
contextViewsource.hidden = gBrowser.currentURI.scheme.startsWith("http") || gContextMenu.onLink;
menu.hidden = menuW.hidden = menuM.hidden = pophiddP();
menuA.hidden = menu.hidden || onWArch(gBrowser.currentURI.spec);
menuG.hidden = menu.hidden || onGCahe(gBrowser.currentURI.spec);
menuGl.hidden = !gContextMenu.linkURI || !gContextMenu.linkURI.scheme.startsWith("http");
menuAl.hidden = menuGl.hidden || onWArch(gContextMenu.linkURI.spec);
}, false);
addDestructor(() => {menuW.remove();menuG.remove();menuA.remove();menuGl.remove();menuAl.remove();menuM.remove();menu.remove()});
})(addMenufragm);

contMenu.insertBefore(addMenufragm, contMenu.lastChild);

var onGCahe = function(link) {
if((link.startsWith('https://webcache.googleusercontent.com/search?q=cache:') || link.startsWith('http://webcache.googleusercontent.com/search?q=cache:') || link.startsWith('http://www.google.com/search?q=cache:') || link.startsWith('https://www.google.com/search?q=cache:')) && link.indexOf(':http') > 0)return true;
return false;
};

var Glink = function(link) {
return decodeURIComponent(link.substring(link.indexOf(':http')+1).split('+&')[0].split('&')[0]);
};

var onWArch = function(link) {
if((link.startsWith('http://web.archive.org/web/') || link.startsWith('https://web.archive.org/web/')) && link.indexOf('/http') > 0)return true;
return false;
};

var Wlink = function(link) {
return link.substring(link.indexOf('://web.archive.org/web/')+23).match(/\/(https?:\/\/\S+)/)[1];
};

var normlink = function(link) {
if(onGCahe(link))return Glink(link);
if(onWArch(link))return Wlink(link);
return link;
};

var normDom =  function() {
let urispec = gBrowser.currentURI.spec;
let dom = '';
if(onGCahe(urispec)) dom =  Glink(urispec);
if(onWArch(urispec)) dom =  Wlink(urispec);
if(dom)return dom.replace(/^https?:\/\//,'').split('/')[0].split('?')[0].split('#')[0];
return content.location.hostname;
};

var pophiddP = function() {
if(!gBrowser.currentURI.scheme.startsWith("http") || gContextMenu.onVideo || gContextMenu.isContentSelected || gContextMenu.onLink || gContextMenu.onTextInput)return true;
return false;
};

})();


Хотелось бы на [firefox] esr 68.6.0 автооткрытие боковой панели закладок при подведении мыши, очень привык.
гиф'ка
12.gif

Отредактировано Siovar (24-03-2020 00:54:07)

Отсутствует

 

№811724-03-2020 05:19:19

oleg.sgh
Участник
 
Группа: Members
Зарегистрирован: 19-04-2014
Сообщений: 3155
UA: Firefox 68.0

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

Siovar
https://forum.mozilla-russia.org/viewtopic.php?pid=721919#p721919

Отсутствует

 

№811824-03-2020 13:09:28

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

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

Vitaliy V.
Почему это --panel-disabled-color: GrayText !important;     не работает в темах аэро?  Подставляю это и без толку

скрытый текст
@media (-moz-windows-glass) {
  :root {
    --panel-disabled-color: GrayText !important;
  }
}

Отсутствует

 

№811924-03-2020 13:56:33

Siovar
Участник
 
Группа: Members
Зарегистрирован: 15-09-2019
Сообщений: 13
UA: Firefox 56.0

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

oleg.sgh
Спасибо, боковая панель закладок, скрывается при убирании мыши :beer:. Ещё хорошо бы сделать, возможность регулировать ширину боковой панели. И чтобы она, не наезжала на страницу, а как бы сдвигала её. Было бы вообще шикардос.
12.gif

Отредактировано Siovar (24-03-2020 14:11:25)

Отсутствует

 

№812024-03-2020 14:14:26

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

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

Siovar пишет

Ещё хорошо бы сделать, возможность регулировать ширину боковой панели


P.S, или отрегулировать ширину в этой строке стиля ->   

--v-sidebar-max-width: 30em;

Отредактировано kokoss (24-03-2020 14:34:51)


Win7

Отсутствует

 

№812124-03-2020 14:46:34

Siovar
Участник
 
Группа: Members
Зарегистрирован: 15-09-2019
Сообщений: 13
UA: Firefox 56.0

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

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

oleg.sgh пишет

Siovar
https://forum.mozilla-russia.org/viewtopic.php?pid=721919#p721919

kokoss пишет

P.S, или отрегулировать ширину в этой строке стиля ->   

    --v-sidebar-max-width: 30em;

PS. попробую, но удобнее конечно, подвёл мышь потянул, настроил ширину. Хоть и не часто, но требуется изменять ширину боковой панели.
--v-sidebar-max-width: 22em; - пока остановился на этом значении.
kokoss
А что насчёт этого? Есть ли какие варианты?

Siovar пишет

чтобы она, не наезжала на страницу, а как бы сдвигала её.

Отредактировано Siovar (24-03-2020 15:04:33)

Отсутствует

 

№812224-03-2020 15:56:26

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

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

Siovar пишет

kokoss
А что насчёт этого? Есть ли какие варианты?

    Siovar пишет:

    чтобы она, не наезжала на страницу, а как бы сдвигала её.

Может быть и есть возможность что то изменить в стиле, что бы было как вы хотите, но я не в курсе. Предпочитаю тот вариант что есть!

Отредактировано kokoss (24-03-2020 16:03:14)


Win7

Отсутствует

 

№812324-03-2020 16:14:54

Etena
Участник
 
Группа: Members
Зарегистрирован: 24-03-2020
Сообщений: 5
UA: Firefox 74.0

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

Подскажите, пожалуйста, в том же gismeteo -
#extensions_gismeteo_com-browser-action .toolbarbutton-badge {color: white !important;}  - меняет цвет цифр на значке на белый,
а чем заменить фон этого оповещения (красный) на тот, что по умолчанию на других значках (или просто на другой)?

скрытый текст
09dc4c56f6526b905561739eb74d5eaf.jpg

Отсутствует

 

№812424-03-2020 16:50:13

Siovar
Участник
 
Группа: Members
Зарегистрирован: 15-09-2019
Сообщений: 13
UA: Firefox 56.0

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

kokoss пишет

Может быть и есть возможность что то изменить в стиле, что бы было как вы хотите, но я не в курсе.

Спасибо вам и oleg.sgh за быстрые ответы.

Подождём Vitaliy V., на него вся надежда.

Отсутствует

 

№812524-03-2020 19:48:44

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

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

solombala
не вижу связи с "аэро" темами, изменяется то что и должно, ну если не GrayText а что то другое,
нормально можешь сказать что ты ожидаешь этим изменить?

Siovar
сильно стиль переделывать не буду,
добавьте то что выделено в код

скрытый текст
transition-property: transform, opacity, margin !important;

#sidebar-box:hover,
#sidebar-box[sidebardrag] {
    transform: translateX(0px) !important;
    opacity: 1 !important;
    transition-delay: var(--v-sidebar-transition-delay-show) !important;
    --v-sidebar-margin-left-locale-dir: 0px !important;
    --v-sidebar-margin-right-locale-dir: 0px !important;

}


Etena
добавить туда же например
background-color: blue !important;

Отредактировано Vitaliy V. (24-03-2020 20:14:34)

Отсутствует

 

Board footer

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