данный код убирает какую-либо подсветку/изменение цвета (при наведении курсора на неактивную вкладку)
и он отлично работает в моём фф-40 - через Stylish (2.0.2.1)
 

Выделить код

Код:

#TabsToolbar .tabbrowser-tab:not([selected]):not(:-moz-lwtheme) .tab-content {
      background-image: linear-gradient(transparent, hsla(0,0%,45%,.1) 1px, hsla(0,0%,32%,.2) 80%, hsla(0,0%,0%,.2)), linear-gradient(-moz-dialog, -moz-dialog) !important;
}

 
но почему-то никак не удаётся заставить его заработать напрямую (через userChrome.css или userContent.css)
 
как именно нужно подправить код, чтобы обойтись без расширения Stylish?
(все мои остальные немногочисленные Stylish-коды заработали напрямую, но не этот)

austri пишет

убирает какую-либо подсветку/изменение цвета (при наведении курсора на неактивную вкладку)

Вот этот убирает через userChrome.css в фф-40

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

Выделить код

Код:

.tabbrowser-tab:hover > .tab-stack > .tab-background:not([visuallyselected=true]) {
  background-image: none !important;
}

sandro79
благодарю за попытку помочь
но этот код не работает

austri пишет

этот код не работает

У меня FF40 нет, но есть FF38, и там этот код работает.
Но не с Classic Theme Restorer.

как именно нужно подправить код, чтобы обойтись без расширения Stylish?

Для начала, следует предоставить код userChrome.css.
Целиком, вместе с этим вписанным (и «неработающим») кодом.
Чтобы убедиться, что там не зарыта куриная лапа.

Dumby
я попробовал так:

Выделить код

Код:

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

.tabbrowser-tab:hover > .tab-stack > .tab-background:not([visuallyselected=true]) {
  background-image: none !important;
}

больше в этом экспериментальном файле userChrome.css я не оставил ничего

и в таком виде css-файла код тоже не работает

austri пишет

больше в этом экспериментальном файле userChrome.css я не оставил ничего

Да не этот код.
Я же написал, что он может не работать с Classic Theme Restorer.


Если уж пробовать userChrome.css только с одним кодом,
то с другим, тем, о котором был вопрос, и который работает в Stylish.

следует предоставить код userChrome.css

Выделить код

Код:

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

.tabbrowser-tab:hover > .tab-stack > .tab-background:not([visuallyselected=true]) {
  background-image: none !important;
}

@-moz-document domain("rutracker.org") {a:focus {color: #006699 !important;}}
@-moz-document domain("rutracker.org") {a:hover {color: #006699 !important;}}

@-moz-document url(chrome://browser/content/browser.xul) {
#navigator-toolbox #nav-bar .toolbarbutton-1, 
#nav-bar-customization-target > toolbarbutton, 
#nav-bar-customization-target > toolbarpaletteitem > toolbarbutton,
#personal-bookmarks toolbarbutton
{ border: none !important; padding: 0 0px !important; }

#navigator-toolbox #nav-bar .toolbarbutton-1, 
#nav-bar-customization-target > toolbarbutton
{ box-shadow: none !important; background: none !important; } }


.urlbar-history-dropmarker { display: none !important; }
#reader-mode-button,	#readinglist-addremove-button { display: none !important; }
							
#personal-bookmarks .toolbarbutton-icon { display: none !important; }
.tab-throbber { display: none !important }

#identity-box { display: none !important }

.tab-stack { -moz-margin-end: -1px !important; }

.urlbar-input-box { -moz-margin-start: -3px !important; }

menupopup > menuitem { margin-right: -2.4em !important; }

menuitem.bookmark-item > .menu-iconic-left { display: none; }
menu.bookmark-item, menuitem.bookmark-item { max-width: 40em !important; }
.openintabs-menuseparator, 	.openintabs-menuitem,	.bookmarks-actions-menuseparator { display: none !important; }

#notification-popup-box { display: none !important; }

#urlbar *|*.textbox-input::-moz-selection,
#urlbar *|*.textbox-input:focus::-moz-selection 
{background: rgba(176,176,176, 1.0) !important;
color: #fcfcfc !important;}

#urlbar { height: 27px !important; margin-top: -3px !important; margin-bottom: -3px !important; }
#urlbar { min-height: 27px !important; }
#urlbar { border-radius: 0 !important; }

#nav-bar>*{ margin-top: 0px !important }
#nav-bar>*{ margin-bottom: 0px !important; }
#nav-bar>*{ margin-right: -7px !important; }

#TabsToolbar>*{ margin-top: -2px !important }
#TabsToolbar>*{ margin-left: -4px !important }


.tabbrowser-tabs .tab-text { margin-top: -4px !important; }
.tabbrowser-tabs .tab-text { margin-left: -7px !important; }

#bookmarksMenuPopup { margin-left: 2px !important; }
#bookmarksMenuPopup { margin-top: 0px !important; }

#BrowserPreferences { height: 136ex !important; width: 102em !important; }

.abp-contextmenuitem { margin-left: -12px !important; }

.urlbar-input-box { padding-left: 2px !important; }

по поводу "classic theme restorer":
tab colors and text ---> squared tabs (classic) v2 ---> hovered ---> background (тут галочек нет: всё неактивно)
(и во всём разделе "tab colors and text" галочки нет ни одной)

Если уж пробовать userChrome.css только с одним кодом,
то с другим, тем, о котором был вопрос, и который работает в Stylish

я попробовал:

Выделить код

Код:

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

#TabsToolbar .tabbrowser-tab:not([selected]):not(:-moz-lwtheme) .tab-content { background-image: linear-gradient(transparent, hsla(0,0%,45%,.1) 1px, hsla(0,0%,32%,.2) 80%, hsla(0,0%,0%,.2)), linear-gradient(-moz-dialog, -moz-dialog) !important; }

и в итоге тоже самое (неактивные вкладки подсвечиваются при наведении курсора)

austri пишет

я попробовал

Это было актуально до того, как родил подробность,
что используется squared tabs (classic) v2.


Он задаёт свой background-image на .tab-content
и задаёт как AGENT_SHEET, тогда как userChrome.css — это USER_SHEET


Таким образом, непонятно как код работает в Stylish,
разве что есть комментарий /* AGENT_SHEET */ но об этом ни слова сказано не было.


Вобщем, остаётся только править сам Classic Theme Restorer, предположительно здесь:
%Classic Theme Restorer%\content\css\winaero\classictabsextrac2.css


Закомментировать это (второе вхождение), вот так:
/*.tabbrowser-tab:not([selected]):hover:not(:-moz-lwtheme) .tab-content*/


Предложение весьма теоретическое, поскольку у меня нет именно этой
версии Classic Theme Restorer, а уж Windows NT 5.2 и подавно.

у меня из css-файлов есть только эти:

Data\profile\adblockplus\elemhide.css
Data\profile\chrome\userChrome.css
Data\profile\chrome\userContent.css

ещё по поводу "classic theme restorer"
в нём есть: tab colors and text ---> squared tabs (classic) v2 ---> hovered ---> background
 
если в background проставить галочку и затем в его две строки вписать вот это (и я тут пробовал десятки вариантов):
hsla(0,0%,45%,.1) 1px, hsla(0,0%,32%,.2) 80%
hsla(0,0%,0%,.2)
 
то при наведении курсора: цвета неактивной вкладки вроде бы не меняются
(но при этом почему-то с серого на чёрный меняется 1-пиксельный цвет/рамка по трём краям вкладки, над которой появляется курсор: слева и сверху и справа)

austri пишет

в его две строки вписать

О! Довольно остроумно.
Теоретически, самая полная симуляция будет, если вписать


transparent, hsla(0,0%,45%,.1) 1px, hsla(0,0%,32%,.2) 80%, hsla(0,0%,0%,.2))
linear-gradient(-moz-dialog, -moz-dialog


Ну, и на крайний случай, можно попробовать
добавить в userChrome.css такой код (это XBL, считай скрипт).

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

Выделить код

Код:

@-moz-document url(chrome://browser/content/browser.xul) {
	tabs#tabbrowser-tabs > hbox {
		--code:(() => {
			var wu = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
				.getInterface(Components.interfaces.nsIDOMWindowUtils);

			wu.loadSheetUsingURIString("data:text/css," + encodeURIComponent(`
				#TabsToolbar .tabbrowser-tab:not([selected]):not(:-moz-lwtheme) .tab-content {
					background-image:
						linear-gradient(transparent, hsla(0,0%,45%,.1) 1px, hsla(0,0%,32%,.2) 80%, hsla(0,0%,0%,.2)),
						linear-gradient(-moz-dialog, -moz-dialog) !important;
				}
			`), wu.AGENT_SHEET);
		})();
		-moz-binding: url('data:text/xml,\
			<bindings xmlns="http://www.mozilla.org/xbl"><binding id="codeemitter"><implementation>\%0A\
				<constructor>eval(getComputedStyle(this).getPropertyValue("--code"));</constructor>\%0A\
			</implementation></binding></bindings>'
		);
	}
}

Dumby, cпасибо большое - самая полная симуляция вроде бы сработала
XBL я уже не пробовал, но себе сохранил на всякий случай
 
в качестве ответвления от решённой проблемы упомяну, что несколько часов назад (находясь в настройках "classic theme restorer")
я экспериментально делал фон всех вкладок полностью белым
 
что уже на тот момент как бы решало проблему с курсором/выделением, но выглядит оно ну очень непривычно
 
да и даже для серьёзной пробы не хватает нескольких нюансов:
а) фон у "bookmarks toolbar" тогда тоже обязан стать белым (это я возможно как-то и сделаю) (пока не знаю каким именно кодом)
 
б) с 1-пиксельными разделителями тоже придётся поморочиться:
- вертикальный: между "bookmarks toolbar" и "url-bar" (сейчас он чёрный, а должен будет отсутствовать) (или хотя бы стать белым)
 
- горизонтальный: между "bookmarks toolbar"+"url-bar" (они на одной строке - самой верхней) и "tab-bar" (вторая строка сверху):
      cейчас тут только виден чёрный над активной вкладкой (возможно, его стоит оставить - для быстрого визуального определения активной вкладки)
      и ещё виден серый под "url-bar", он же над "tab-bar" (этот разделитель должен будет отсутствовать) (или в качестве более простой/сомнительной альтернативы: стать чёрным)
 
  
  - горизонтальный чёрный: под "tab-bar" (этот разделитель должен будет отсутствовать) (или в качестве более простой/сомнительной альтернативы: остаться на месте)
        (a возможно, остаться только под активной вкладкой) (и пока непонятно как это реализовывать, да и будет ли это самым краcивым вариантом - тоже вопрос)

- помимо этого есть множество коротких вертикальных разделителей между вкладками:
       они везде серые (только вокруг активной вкладки - 2 чёрных) (возможно, здесь в итоге и менять ничего не придётся)
 
вот и буду думать - а стоит ли во всё это ввязываться?
но уж очень красиво/аккуратно всё это способно выглядеть - уже сейчас это чувствуется - просто при белом "tab-bar"
ну и побелить "bookmarks toolbar" я точно попытаюсь (просто, чтобы хоть глянуть на всё это в более полноценном варианте)

Dumby, поздравляю с сегодняшним десятилетием регистрации на этом форуме :)
 
я-таки всерьёз пробую настроить совсем другой цветовой подход для всей нестраничной зоны в моём фф-40, в котором есть только это:
 
- сверху первая строка/зона (bookmarks + url-bar)
       (все bookmarks - это просто текстовые кнопки)
       (в url-bar: никогда нет вообще ничего, кроме самого адреса)
- cверху вторая строка/зона (tar-bar)
- далее внизу только сама страница сайта
- максимум, что ещё может быть, так это вертикальный скрол cправа
 
главный вопрос на данный момент:
(в панели вкладок) как перекрасить верхнюю горизонтальную линию? из серого в чёрный
(шириной почти на весь монитор - примерно 1899 пикселей)
ничего совсем годного не получается и после примерно 50 попыток в течение нескольких дней
 
эта же линия, наверно, может быть названа нижней горизонтальной (у панелей: bookmarks + url-bar)
 
эта же линия частично уже выглядит как надо (чёрной), но только над активной вкладкой
(а надо, чтобы так было над всеми вкладками) (их у меня обычно 50-70)
 
если описанное выше получится реализовать, то визуально определять активную вкладку всё равно смогу по такому признаку:
у неё уже сейчас чёрные 1-пиксельные стороны/границы - и справа, и слева (у всех неактивных вкладок такого нет)
 
вот свежайший полноэкранный скрин-шот для наглядности:
2022-08-12-16-09-27.png
 
 
добавлено чуть позднее:
в качестве возможного совсем отличного варианта хотелось бы попробовать настроить вид
и bookmarks-bar   и url-bar   и tab-bar
совсем без всяких разделителей (точнее, чтобы они все просто стали белыми), но как это реализовать?
 
(активную вкладку в таком случае мне было бы удобно определять с помощью вот этого красивого цвета - #7a8bde - для текста активной вкладки)

austri
Хорошо, сделал FF 40.0.2 на NT 5.2, теперь нужны из твоего профиля
папки: extensions и chrome,
файлы: xulstore.json и prefs.js


Если хочешь, запакуй в zip-папку и выложи на upload.ee
чтобы можно было всё разместить и получилась как-бы похожая лисица.
Тогда будет на что смотреть и с чем возиться.

Dumby
я скинул ссылку в ПМ

austri
Да, забрал. Получилось весьма похоже.


На скриншоте не видно горизонтальной линии между тулбарами,
поскольку всё заполнено вкладками, но если вкладок немного то видна, после них.
Убрать можно, например, так:


В настройках Classic Theme Restorer снять галку
Toolbars (2) > "Top toolbars: additional toolbar separators (tabs not on top)"
(это в первом groupbox'е "Toolbars"),


и, тогда уж, наверно, удалить из userChrome.css строку 36
#TabsToolbar>*{ margin-top: -2px !important }

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

это очень странно, так как у меня она отчётливо видна в любом случае (например, если на этой странице просто нажать на миниатюру)

снять галку Toolbars (2) > "Top toolbars: additional toolbar separators (tabs not on top)"

уж сколько раз я её (и другие галки тоже) и снимал, и ставил: вот сейчас ещё раз попробовал (вместе с удалением 36 строки)
и в итоге не изменилось ничего - горизонтальная линия между тул-барами выглядит идентично: серая везде (но над активной вкладкой - чёрная)

с 36 строкой я вчера основательно возился - пробовались десятки вариантов (в различных сочетания): как минимум -1 и -3 и -4

по поводу вертикального разделителя между bookmarks и url-bar:
единственное, что в принципе пока тут можно было бы поменять (из найденного мной) - так это поставить галку в первой строке тут:
toolbars (2) > blue aero colors for toolbars (and tabs)
и это даёт изменениe цвета разделителя с чёрного на синий (наверно на синий) (oн очень похож на серый, но всё же не совсем серый)
 
этот способ не годится, но я упомянул его, так как больше мне с данным разделителем пока не удалось сделать вообще ничего
 
  
по поводу вертикальных разделителей между вкладками:
у меня пока ещё есть stylish (но уже точно будет удалён), и если в нём активировать вот это (в виде эксперимента):
 

Выделить код

Код:

/*AGENT_SHEET*/
#TabsToolbar .tabbrowser-tab .tab-content { -moz-border-start-width: 0px !important; }

 
то тогда разделители между вкладками пропадают, но даже этот способ годным считать было бы нельзя:
вертикальный разделитель справа от активной вкладки остаётся
 
не говоря уже про ряд других негодностей:
  - горизонтальный разделитель (сверху от активной вкладки) тоже виден
 
- при наведении курсора на неактивную вкладку становится виден серый горизонтальный разделитель (сверху от неё)
      (это происходит и без данного кода - но при условии, если сдвинуть чуть повыше таб-бар, чтобы не был виден горизонтальный разделитель сверху от него)
 
и ещё становится виден серый вертикальный разделитель (справа от неактивной вкладки)
      (но при этом, если неактивная вкладка является именно самой первой слева от активной вкладки, то
      только что упомянутые 2 серых разделителя в ней не появляются)
 
если же данный stylish-код (из двух строк) отключить, то тогда при наведении курсора на неактивную вкладку
дополнительно появляется только серый горизонтальный разделитель (сверху от неё)
но и тут неактивная вкладка (которaя самая первая слева от активной) ведёт себя точно так же по-особенному - у неё сверху разделитель не появляется

austri пишет

у меня она отчётливо видна

Да нету на скриншоте никакой линии между тулбарами.
Всё забито вкладками, и из-за отрицательного margin-top они её просто закрывают.
Если верхние границы вкладок выстроились в линию, то это не значит, что это она.


Я так понял, что речь была о двухпиксельной верхней границе #TabsToolbar'а.
Вот так она у меня отображается.

по поводу вертикального разделителя между bookmarks и url-bar

Вижу что так, например, работает

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

Выделить код

Код:

#main-window #navigator-toolbox #urlbar {
	border-left-color: white !important;
	border-top-left-radius: 0 !important;
	border-bottom-left-radius: 0 !important;
}

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

border-color: white вместо -moz-border-start-width: 0px
и всё, никаких разделителей вообще, сплошная текстовая каша.


Это всё я тоже про stylish-код (AGENT_SHEET).

Да нету на скриншоте никакой линии между тулбарами

есть - и я её вижу на этом новом "вот так она у меня отображается" скрине
 
веду речь о серой линии которая, например, в самом левом верхнем углу скрина:
- под словами "Часто посещаемые"
- над словами "Начальная ст..."
 
эта же линия переходит из серой в чёрную (над третьей вкладкой)
 
эта же линия снова переходит в серую (над 4й вкладкой "Новая вкладка")
 
далее она снова становится чёрной
 

Если верхние границы вкладок выстроились в линию, то это не значит, что это она

но ведь после последней 4й вкладки больше вкладок нет (а верхняя линия-то дальше всё равно есть)
 

Вижу что так, например, работает

пока мне это ничего не дало (пробую разбираться)
 
прошу прощения, если я напутал в какой-то терминологии
например, технически ведь у меня, видимо, нет никаких трёх панелей - есть только одна, на которой bookmarks + url
и ещё одна, на которой вкладки

austri пишет

эта же линия переходит из серой в чёрную

Нет никакой "этой же" линии. Есть вкладка, и у неё есть верхняя граница, у каждой вкладки своя.

но ведь после последней 4й вкладки больше вкладок нет (а верхняя линия-то дальше всё равно есть)

Да, есть. Это совсем другая линия. Она идёт вдоль всего тулбара.
Она есть и там, где вкладки, но вкладки её закрывают.
Иначе говоря, там, где вкладки, эта линия проходит как-бы под вкладками (по оси Z).
Не знаю как ещё объяснить.

Dumby
это всё хорошо (спорить не буду, так как это не продуктивно в данном случае)
 
важнее другое: ты же ведь понимаешь, о каких именно тонких визуальных частях браузера я веду речь?
 
особенно после моего снимка экрана всё должно быть предельно ясно о том, что конкретно является моей целью:
поубирать (но лучше, видимо, просто побелить) все вот эти вот линии
(серые/чёрные) (горизонтальные/вертикальные) (длинные/короткие)
 
и если ты всё это понимаешь, то зачем придираешься? (это я к тебе обращаюсь без малейшего негатива)
 
  
если вдруг тебе это как-то облегчит понимание всей ситуации, то я попробую через несколько часов
сделать и выложить новый снимок экрана
(такой же как и первый, но по-дилетантски отредактированный слегка - в программе paint)
и там будет чётко видно, к какому именно итоговому виду тех панелей я стремлюсь
 
дай знать, если это тебе хоть как-то интересно/пригодится для дальнейшей помощи,
на которую я продолжаю надеяться (ведь очевидно же, что ты хорошо разбираешься)
 
просто особого смысла в этом новом скрине не вижу, так как словами я уже всё очень подробно (и наверно не раз) пояснял:
конкретно для глаз: все те линии/разделители (в зоне над самой страницей) должны стать белыми
(это наиболее предпочтительный вариант)
 
в качестве вынужденной альтернативы я бы мог протестировать решение - если оно будет - только с серыми линиями
но нынешний разнобой (серые/чёрные) (где-то есть, где-то нет) мне не подходит, а застрял я на нём уже на несколько суток

austri пишет

зачем придираешься?

Затрудняюсь сходу ответить. Наверно я придира.

все те линии/разделители (в зоне над самой страницей) должны стать белыми

Да, вроде, всё уже рассказал, что делал у себя. Хорошо, ещё раз:


Линию, которая обсуждалась, убрал сняв галку в настройках CTR.
Остальное — AGENT_SHEET стиль для Stylish.

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

Выделить код

Код:

/* AGENT_SHEET */

#navigator-toolbox {
	background-color: white !important;
}

#TabsToolbar .tabbrowser-tab .tab-content {
	border-color: white !important;
}

#main-window #navigator-toolbox #urlbar {
	border-left-color: white !important;
	border-top-left-radius: 0 !important;
	border-bottom-left-radius: 0 !important;
}


Вот что получилось. Как видишь, никаких разделителей.

Остальное — AGENT_SHEET стиль для Stylish

мы, возможно, друг друга недопоняли, но: 1) про галку в настройках CTR помню, 2) а вот код этот вижу впервые (хотя третья его часть упоминалась явным образом, это да)
 
только что я его добавил в Stylish, и в течение секунды вид стал идеальным (по крайней мере на первый взгляд именно так кажется)
 
проблемка в том, что это совсем никак не решение, так как Stylish у меня должен был быть насовсем удалён ещё трое суток назад
(и я пока что планирую от этого плана не отступать)
 
жаль, если не найдётся другого способа (без этой безумной зависимости от одной жалкой строки "AGENT_SHEET" в расширении Stylish)
 
  
это, конечно, грустная для меня взаимосвязь, но вся эта тема-то началась как раз с того, чтобы избавиться от Stylish
      (из которого самый последний мой Stylish-код не хотел беспроблемно переноситься в css-файл - в отличие от всех других Stylish-кодов),
но не потеряв при этом нормального вида вкладок
 
и тогда нашими совместными усилиями было сделано вот это чудо (для двух строк в расширении "classic theme restorer"):

Выделить код

Код:

transparent, hsla(0,0%,45%,.1) 1px, hsla(0,0%,32%,.2) 80%, hsla(0,0%,0%,.2))
linear-gradient(-moz-dialog, -moz-dialog

 
  
добавлено чуть позднее:
а вот что-то типа этого:

Ну, и на крайний случай, можно попробовать
добавить в userChrome.css такой код (это XBL, считай скрипт)

не может cейчас помочь?
 
ещё одна мелкая добавка:
а вот этот последний код (AGENT_SHEET стиль для Stylish) нельзя ли всунуть в тело какого-нибудь другого xpi-файла? (не Stylish)
(xpi-файла, принадлежащего расширению, которое у меня точно есть и пока будет - например, тот же Tab Mix Plus)

austri пишет

третья его часть упоминалась явным образом

Вторая часть тоже упоминалась, но менее явным образом.
А первая да, не упоминалась. Добавил просто чтоб тулбар вкладок выглядел белым,
а то серый цвет торчит из-под него, сам-то он прозрачный.
Кстати, для первой этой части AGENT_SHEET не обязателен.

Stylish у меня должен был быть насовсем удалён

Да, это я понял. Но, полагаю, не раньше чем CSS-код будет окончательно готов,
ведь в Stylish его отлаживать весьма удобно, правда же.

не может cейчас помочь?

Хочешь попробовать? Выключай Stylish, добавляй это

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

Выделить код

Код:

@-moz-document url(chrome://browser/content/browser.xul) {
	toolbar#TabsToolbar > hbox.private-browsing-indicator {
		--code:(() => {

			// Whiter
			window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils)
				.loadSheetUsingURIString("data:text/css;charset=utf-8," + encodeURIComponent(`

					#navigator-toolbox {
						background-color: white !important;
					}

					#TabsToolbar .tabbrowser-tab .tab-content {
						border-color: white !important;
					}

					#main-window #navigator-toolbox #urlbar {
						border-left-color: white !important;
						border-top-left-radius: 0 !important;
						border-bottom-left-radius: 0 !important;
					}

			`), Ci.nsIDOMWindowUtils.AGENT_SHEET);

		})();
		-moz-binding: url('data:text/xml,\
			<bindings xmlns="http://www.mozilla.org/xbl"><binding id="codeemitter"><implementation>\%0A\
				<constructor>eval(getComputedStyle(this).getPropertyValue("--code"));</constructor>\%0A\
			</implementation></binding></bindings>'
		);
	}
}

нельзя ли всунуть в тело какого-нибудь другого xpi-файла

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


А в данном случае, можно даже не код добавлять, который необходим
всего лишь чтобы за-оверрайдить то, что навалил Classic Theme Restorer,
а порыться в коде и изменить (или удалить) непосредственно то, что неустраивает или ненужно.

(очень много часов форум не давал отправить это сообщение - "500 internal server error"
так что прошу прощения за большое количество текста, но форум дал слишком много времени на обдумывание/редактирование/добавление)

Dumby, искренне благодарю - вроде вот это стало хорошим решением:

Хочешь попробовать? Выключай Stylish, добавляй это

- сработало и c выключенным Stylish, и с включенным тоже
- пока не могу проверить вид панели вкладок в случае, если на этой панели есть свободное место, но надеюсь, что там ничего плохого не будет видно, а лишь белый цвет

мелкое уточнение: внутри файла userChrome.css (после данной добавки) в этом коде подсвечиваются жёлтым:
- пустой символ (в самом конце первой строки)
- всё начало второй строки (до символа #)
- и ещё слово text (в 7й строке снизу)
      (точно не знаю, поэтому спрашиваю: не является ли эта желтизна индикатором того, что файлу что-то не нравится? в этих местах кода)
 

ведь в Stylish его отлаживать весьма удобно, правда же

это да

Я тебе уже два раза предлагал править расширения,
но встречного энтузиазма не заметил

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

и вот просто пример: у меня вся оболочка операционки - это слегка (и давно) модифицированный мной файл explorer.exe (заодно переименованный в explore.exe)
- не говоря уже про зверски правленный notepad.exe (так-то это программа notepad2),
   всё главное меню которoй тотально и очень давно переделано, чтобы было удобнее (и заодно мной были назначены десятки своих сочетаний клавиш)
- и не говоря уже про некоторые другие модифицированныe мной файлы, например: msconfig.exe, taskmgr.exe

14-08-2022 23:18:28

всунуть в тело какого-нибудь другого xpi-файла

ну вот я часов 12 25 назад попробовал это провернуть с мелким xpi-файлом от расширения InlineDisposition 2 (0.1.1.1):
- соответствующий файл {d2a57db0-999d-11da-a72b-0800200c9b57}.xpi переименовал в zip
- открыл его в программе "win-rar 5.40" (и разархивировал содержимое во временную папку)
- в содержимом: в мелкий файл bootstrap.js (2,15 kb) добавил в самый низ вот это:

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

Выделить код

Код:

/* AGENT_SHEET */
 
#navigator-toolbox {
	background-color: white !important;
}
 
#TabsToolbar .tabbrowser-tab .tab-content {
	border-color: white !important;
}
 
#main-window #navigator-toolbox #urlbar {
	border-left-color: white !important;
	border-top-left-radius: 0 !important;
	border-bottom-left-radius: 0 !important;
}


- далее с помощью программы win-rar зазипил всё содержимое: META-INF, bootstrap.js (новый), install.rdf
- скормил браузеру этот новый xpi-файл от расширения InlineDisposition (оригинальный xpi-файл уже был переименован ранее) (и ничего не вышло)

- затем всё это повторил, но на этот раз ещё и отредактировал файл manifest.mf - я наугад произвёл такие изменения в его содержимом:

скрытый текст
было:
Name: bootstrap.js
MD5-Digest: vDORaKoORcocPzlilZJ5yA==
SHA1-Digest: 04DZ87EDLkN+zMGcPHN7eml9ZqM=

стало:
Name: bootstrap.js
MD5-Digest: d41d8cd98f00b204e9800998ecf8427e==
SHA1-Digest: da39a3ee5e6b4b0d3255bfef95601890afd80709=

новые MD5 и SHA1 (уже от отредактированного мной файла) я взял из программы "xyplorer", а именно из её команды "run script":
text hash("md5", "");
text hash("sha1", "");


- cнова скормил браузеру этот новый xpi от расширения InlineDisposition (и снова ничего не вышло)

можно даже не код добавлять, который необходим
всего лишь чтобы за-оверрайдить то, что навалил Classic Theme Restorer

ну в каком-то смысле вся этa возня с Classic Theme Restorer имеет место
"всего лишь, чтобы за-оверрайдить то, что навалила" mozilla (в более поздних версиях браузера):
      ещё осенью-2015 я пользовался версией FF-3.0.5
      и спокойно продолжал бы это делать и дальше, но увы - вынужденно перешёл на 40.0.2, который в 2015 настраивал с августа по октябрь,
      чтобы просто начать как-то пользоваться

а порыться в коде и изменить

именно на это у меня уже сил сейчас не найдётся (но предположу, что здесь речь идёт о каком-то коде внутри xpi-файла от Classic Theme Restorer)

14-08-2022 23:18:40
и совсем новый вопрос: пока эта тема с разделителями не была решена, я всерьёз обдумывал вариант полного убирания верхней строки
в которой размещены все bookmarks, ну и url-bar ещё справа
так вот, реально ли было бы перенести bookmarks (и даже может url-bar в каком-то особом варианте) в главное контекстное меню?
у меня там сейчас полно места - только 2 пункта: opened, closed (а на ссылках и вовсе 1 пункт - copy address)

то есть, допустим, есть страница: https://rutracker.org/forum/search.php
как для неё создать пункт "search"? (в главном контекстном меню браузера) (я пробовал на днях - в течение пары часов, но не вышло ничего)

и по поводу адресной строки: есть ли какие-то способы её визуального временного появления? (на случай отсутствия url-bar'a)
например, как по нажатию на ctrl+f появляется внизу мелкая аккуратная временная панелька
которая видна только пока нужна (и в которую можно что-то вписать, и пойдёт поиск этого текста)

а было бы что-то подобное, но для адресов сайтов, то можно было бы вписать адрес (или для поисковика что-то)
и оно бы переходило на этот сайт (как переходит из вписанного в url-bar текста) или переходило бы в результаты поисковика
но всё это было бы любопытно только, понятное дело, без добавления расширений

austri пишет

реально ли было бы перенести bookmarks (и даже может url-bar в каком-то особом варианте) в главное контекстное меню?
у меня там сейчас полно места - только 2 пункта: opened, closed (а на ссылках и вовсе 1 пункт - copy address)

Перенести? Нет. Можно создать там пункт, такой же как opened и closed,
но с содержимым папки «Панель закладок». При этом, сразу возникают вопросы типа
а как назвать, а в какое именно место в меню добавить, а когда пункт скрывать/показывать.


И тогда, можно убрать «bookmarks» с навигационного тулбара, таким образом
там останется только адресная строка, и переключать видимость самого тулбара
по какому-то действию (непонятно по какому).

можно создать там пункт, такой же как opened и closed

хорошо, что можно (не знаю как), но сейчас я уже сам (без помощи) не буду это пытаться делать, в том числе потому что именно этот эксперимент находится на дне моих приоритетов:
есть дела поважнее, например, вот тут и вот здесь и ещё там
  

а как назвать, а в какое именно место в меню добавить, а когда пункт скрывать/показывать

- назвать: pages
- в какое именно место в меню добавить: в третье из трёх (сразу под closed)
      но вообще-то я думал про прямое размещение всех bookmarks в основном списке главного контекстного меню: opened, closed, search (и так далее остальные bookmarks)
- когда пункт скрывать/показывать (никогда не скрывать - это же очевидно)
  

таким образом там останется только адресная строка

такой вариант полностью обрушивает всю эту теоретическую идею - так что пока, наверно, отложу её до каких-то других времён
  

переключать видимость самого тулбара по какому-то действию

переключать видимость тул-бара - это ужасное эргономическое зло: должно быть или всегда видно
или всегда не видно, а вызываться только иногда (и очень быстро/легко) (и без всяких мерзких tool-tips, или выезжающих при наведении куда-то панелей/кнопок) (а норм вариант это, например, пункт в контекстном меню)
  
Dumby, жаль, что ты отреагировал лишь только на самую малозначительную часть моего вчерашнего многострадального сообщения
      (13 часов я не мог его отправить, и в итоге форум всё равно сожрал в конце мои пробелы между абзацами, и отредактировать не даёт: всё то сообщение это, по сути, вынужденный сплав из трёх подряд сообщений):
a выше последней части текст был куда поважнее (ну да тебе точно виднее, на что и как именно отвечать, а я лучше просто в очередной раз поблагодарю тебя за реальную помощь)

Dumby пишет

добавить в userChrome.css такой код (это XBL, считай скрипт).

а когда eval() будет запускаться? при каждом создании элемента tabs#tabbrowser-tabs > hbox ?

CoolCmd пишет

а когда eval() будет запускаться? при каждом создании элемента tabs#tabbrowser-tabs > hbox ?

XBL-технология была выпилена ещё в Firefox 72, так что точно не помню.
Вроде при каждом подвешивании на DOM-дерево (и чтоб не hidden был),
но, в данном случае, это наверно одно и то же.


austri пишет

есть дела поважнее, например, вот тут

«вот тут» — песня. «какое-нибудь условное Ctrl+H» — вот уж нет,
только конкретно, какое именно сочетание клавиш, а не «условное».
И «появлялась менюшка/список страниц из истории этой же вкладки»,
ну помилосердствуй, появлялась где?

Ну, раз автокопирование получилось, тогда можно и InlineDisposition попробовать.
Код расширения мне не совсем понятен, но попытаюсь процитировать.
Увы, это не то, что я могу проверить, так что вслепую.
Добавить туда же, в конец click.js
Не слишком оптимально, но файл уже знаком, пусть всё будет в одном месте.

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

Выделить код

Код:

/*===================[ InlineDisposition ]===================*/
(id => {
	var g = Cu.getGlobalForObject(Services);
	if (id in g) return;
	g[id] = true;

	var {LOAD_DOCUMENT_URI, DISPOSITION_ATTACHMENT} = Ci.nsIChannel;
	var obs = channel => {
		if (
			channel instanceof Ci.nsIHttpChannel &&
			channel.loadFlags & LOAD_DOCUMENT_URI
		) try {
			hannel.contentDisposition == DISPOSITION_ATTACHMENT &&
			channel.setResponseHeader("Content-Disposition", `inline;filename="${
				channel.contentDispositionFilename
			}"`, false);
		} catch(ex) {}
	}
	var topic = "http-on-examine-response";
	Services.obs.addObserver(obs, topic, false);
	Services.obs.addObserver(function quit(s, t) {
		Services.obs.removeObserver(quit, t);
		Services.obs.removeObserver(obs, topic);
	}, "quit-application-granted", false);
})("InlineDisposition 2 Repl.");


Ещё там про «глючно-бесполезные символы», это непонятно, оставим на потом.
И про «надпись "Connecting..."», это я не могу увидеть.
При навигации могу, а именно «при обновлении вкладки» (видимо F5) не могу.

А там ты каких-то чудес хочешь, на мой взгляд.
Единственный известный мне вариант это сделать так,
чтобы браузер стартовал в режиме оффлайн, а когда всё прогрузится из кэша
(ну, то что сможет, конечно), тогда уже перевести в браузер в онлайн.

Dumby пишет

XBL-технология была выпилена ещё в Firefox 72

тогда вопрос снимается.

austri пишет

или всегда не видно, а вызываться только иногда (и очень быстро/легко) (и без всяких мерзких tool-tips, или выезжающих при наведении куда-то панелей/кнопок)

Это и есть «переключать видимость самого тулбара по какому-то действию»,
собственно как и «например, как по нажатию на ctrl+f появляется внизу мелкая аккуратная временная панелька».

a выше последней части текст был куда поважнее

Границы частей и важность текста "отсюда не видно". А что там?


«не является ли эта желтизна индикатором того, что файлу что-то не нравится?»
Главное чтобы лисьему CSS-парсеру нравилось, остальное не так важно.


«в мелкий файл bootstrap.js (2,15 kb) добавил в самый низ вот это:»
То есть, добавил CSS-код в JS-файл. Так и результата не получишь, и расширение испортишь.


«отредактировал файл manifest.mf»
Этот файл — часть подписюльки. Делать там что-либо абсолютно бесполезно,
разве что просто удалить папку META-INF, поскольку изменённое расширение
становится неподписанным и эта папка не имеет теперь никакого смысла.


«предположу, что здесь речь идёт о каком-то коде внутри xpi-файла от Classic Theme Restorer»
Верно. Могу попробовать рассказать что и где, если время будет.
Или забей, раз всё и иначе получилось. Вобщем, сам решай.


«допустим, есть страница: https://rutracker.org/forum/search.php»
Ну есть. Посетил. Перебросило на https://rutracker.org/forum/login.php?redirect=search.php
Я делам контентским и сетевым посторонен, то есть бесполезен здесь.


«как для неё создать пункт "search"?»
Пункт характеризуется описанием того, что он делает, а не названием.
Название всего лишь очень маленькая часть этого описания.

«какое-нибудь условное Ctrl+H» — вот уж нет, только конкретно, какое именно сочетание клавиш

Ctrl+H

ну помилосердствуй, появлялась где?

там где курсор

Добавить туда же, в конец click.js

очень жаль, но не сработало

Ещё там про «глючно-бесполезные символы», это непонятно, оставим на потом

ок (но если что: на моём скрине они изумительно видны)

И про «надпись "Connecting..."», это я не могу увидеть.
При навигации могу, а именно «при обновлении вкладки» (видимо F5) не могу

у меня надпись "Connecting..." видна, например, при любом первом нажатии на вкладку (если включена настройка "don't load the tab until selected")
но и без этой настройки данную надпись вижу часто

А там ты каких-то чудес хочешь, на мой взгляд

как по мне, то там озвучена одна из самых базовых (и обоснованных) хотелок по отношению к браузеру

сделать так, чтобы браузер стартовал в режиме оффлайн

можно ли это как-то полностью автоматизировать?
например, что-то типа такого: изменить фф-ярлык на "D:\FF\FirefoxPortable.exe -P -offline" (это у меня не сработало)
  
я почитал тут, но "D:\Programs\Fire-Fox (Portable)\FirefoxPortable.exe" -P мне просто запускает ff (он у меня, естественно, portable)
(а пишут, что только через "profile manager" можно надёжно назначить запуск в off-line)

а когда всё прогрузится из кэша

а в какой момент я пойму, что уже прогрузилось? если все вкладки никак не меняются (что в целом, конечно, хорошо)

тогда уже перевести в браузер в онлайн

а это, наверно, всегда было бы надо только вручную делать? (после каждого запуска браузера)
 
 

16-08-2022 02:11:20
  

Границы частей ... отсюда не видно

отнюдь - всё видно (как сообщение состоит из трёх частей) (между ними форум повписывал: "Добавлено Вчера 23:18:28" и "Добавлено Вчера 23:18:40")
да и я явным образом это упоминал: "вынужденный сплав из трёх подряд сообщений"

Или забей, раз всё и иначе получилось. Вобщем, сам решай

пусть будет забитие :) мне, наверно, надо стараться поменьше тебя беспокоить

Ну есть. Посетил. Перебросило на

так это ведь вообще не имеет значения - то просто был адрес для примера - вместо него можно что угодно взять, допустим, yandex.ru

Пункт характеризуется описанием того, что он делает, а не названием

вот очевиднейшее описание того, что он делает: при нажатии на этот пункт контекстного меню
происходит ровно тоже самое, что и при нажатии на аналогичную кнопко-ссылку в bookmarks-панели - то есть, открытие этого адреса (в этой вкладке)

austri
Предисловие: некоторые коды можно тестировать в Консоли браузера.
Просто чтобы проверить работает или нет, а не сразу куда-то добавлять.
Для этого следует включить настройку devtools.chrome.enabled
Итак, открываем Консоль браузера ( Ctrl+Shift+J ), внизу есть поле ввода js-терминала.
Вставляем туда, например, alert(7) и жмём Enter. Алерт есть? Вот и хорошо.

Ctrl+H там где курсор

Ctrl+H открывает Историю в сайдбаре, значит отменяем (?).
А где курсор можно отследить только в пределах окна,
за пределами — разве что только через ctypes, но это с ума спрыгнешь.
Если менюшка уже открыта, тогда Ctrl+H, надо полагать, должен её закрывать.
Если у текущей вкладки нет back-forward истории, тогда, надо полагать, Ctrl+H не должен делать ничего.
Вобщем, убеждаемся, что активная вкладка с историей,
запускаем с консоли код, несём мышь в окно браузера и жмём Ctrl+H
Если работает, можно в click.js положить, если там не испортилось ничего.

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

Выделить код

Код:

/*===================[ BackForward Menu ]=====================*/
(popup => {
	var keypress = e => {
		if (e.ctrlKey && e.code == "KeyH" && !e.shiftKey && !e.altKey) {
			e.preventDefault();
			if (popup.state == "open") popup.hidePopup();
			else if (gBrowser.webNavigation.sessionHistory.count > 1)
				popup.openPopupAtScreen(
					MousePosTracker._x + window.mozInnerScreenX + 1,
					MousePosTracker._y + window.mozInnerScreenY + 1
				);
		}
	}
	window.addEventListener("keypress", keypress, true);
	window.addEventListener("unload", function unload() {
		window.removeEventListener("unload", unload);
		window.removeEventListener("keypress", keypress, true);
	});
})(document.getElementById("backForwardMenu"));

очень жаль, но не сработало

Да, мне тоже досадно. Проверить не могу, значит выходит не получилось.

16-08-2022 08:16:10

на моём скрине они изумительно видны

Конечно они видны. Но не DOM-дерево. Посетил страницу, и мне видно,
что эти символы — просто текстовые ноды
и ни в какой свой отдельный <span> каждая из них не завёрнута.
Не знаю, может у тебя другой расклад отображается.

у меня надпись "Connecting..." видна, например, при любом первом нажатии на вкладку (если включена настройка "don't load the tab until selected")
но и без этой настройки данную надпись вижу часто

Тогда сразу после старта браузера попробуй запустить с консоли
gBrowser.setTabTitleLoading = () => {}
и понаблюдай, будет ли появляться надпись.

можно ли это как-то полностью автоматизировать?

Можно попробовать в какую-нибудь jsm'ку, например %TabMixPlus%\modules\Services.jsm
добавить Services.io.offline = true;

а в какой момент я пойму, что уже прогрузилось?

Даже не знаю что сказать. Как-то интуитивно наверно,
по времени, ну сколько могут грузится вкладки с диска.

всегда было бы надо только вручную делать?

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

между ними форум повписывал: "Добавлено

Да, здесь ты, скорее, прав. Мог бы догадаться, но не догадался.

вот очевиднейшее описание того, что он делает: при нажатии на этот пункт контекстного меню
происходит ровно тоже самое, что и при нажатии на аналогичную кнопко-ссылку в bookmarks-панели - то есть, открытие этого адреса (в этой вкладке)

Другое дело. Попробуй запустить с консоли

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

Выделить код

Код:

(menuitem => {
	menuitem.setAttribute("label", "search");
	menuitem.setAttribute("oncommand", 'loadURI("https://rutracker.org/forum/search.php");');
	document.getElementById("contentAreaContextMenu").appendChild(menuitem);
})(document.createElement("menuitem"));

Да, мне тоже досадно. Проверить не могу, значит выходит не получилось

в данном случае я готов биться до последнего: могу ли попробовать как-то отредактировать уже добавленный InlineDisposition-код? (даже если будет 10-20 попыток)
(не очень понимаю, почему не можешь проверить в твоём тестовом фф-40, но тебе это точно лучше знать, так что, конечно, не настаиваю)

Ctrl+H открывает Историю в сайдбаре, значит отменяем (?)

можно, например, Ctrl+I или Ctrl+P или Ctrl+Q
но конечно в идеале было бы просто добавление постоянного раскрывающегося пункта "pages" в главное контекстное меню (сразу после раскрывающихся первых двух пунктов 'opened', 'closed'):
и чтобы содержимое этого пункта "pages" было по сути идентичным тому, что предлагается этими расширениями:
        - FireGestures (1.10) (options > mapping > popup type: back/forward history)
        - DragIt (3.2.3.1) (settings > gesture > document > action: history menu)

Если менюшка уже открыта, тогда Ctrl+H, надо полагать, должен её закрывать

если менюшка уже открыта, тогда Ctrl+H никто нажимать просто не будет (ибо смысла нет):
- будет либо нажатие на 1 из пунктов этой менюшки (чтобы перейти в этой вкладке назад или вперёд)
- либо клик в другом месте страницы (чтобы просто эту менюшку закрыть), поскольку иногда нужно просто свериться с чем-то, а не переходить куда-то

Если у текущей вкладки нет back-forward истории, тогда, надо полагать, Ctrl+H не должен делать ничего

- если реализовать менее интересный вариант (через сочетание клавиш) то Ctrl+H должен просто показывать 1 пункт (название той вкладки, в которой это всё происходит):
   так, например, и делает тот самый FireGestures (1.10), которым я пользовался годами
- если реализовать более интересный вариант (пункт "pages" в главном контекстном меню), то тоже самое: просто показывать 1 пункт (название той вкладки, в которой это всё происходит)

несём мышь в окно браузера и жмём Ctrl+H

а) надеюсь, что я ничего плохого не сделал, но поначалу мне проще было сразу "в click.js положить" --- в общем, я положил, но затем нажатие на Ctrl+H ничего не дало
      (не думаю, что в этом проблема, но упомяну что Ctrl+Shift+H у меня запускает дочернее фф-окно "Library")
б) затем я и через консоль всё проделал по твоей инструкции (нажатие на Ctrl+H тоже ничего не дало)

16-08-2022 11:25:23
   
   

и ни в какой свой отдельный <span> каждая из них не завёрнута

по этому поводу вот тут я перечислял, всё что мне удалось нарыть

gBrowser.setTabTitleLoading = () => {}           ...             и понаблюдай, будет ли появляться надпись

- я попереключал вкладки --- к счастью, надпись перестала появляться --- что конкретно надо теперь сделать, чтобы так было всегда?
- не знаю, важно это или нет, но в консоли понапоявлялись, например, такие строки (первые 3 много раз) (последние две - только в конце):
TypeError: e.parentNode is null
TypeError: f is undefined
POST XHR https://rutracker.org/cdn-cgi/rum
1660635082698    Toolkit.GMP    WARN    GMPInstallManager.onFailXML onErrorXML request.status: 0 (error)
1660635082698    Toolkit.GMP    ERROR    GMPInstallManager.simpleCheckAndInstall Could not check for addons: {"target":{},"status":0,"message":"request.status: 0 (error)"}

в какую-нибудь jsm'ку          ...            Services.jsm          ...            добавить Services.io.offline = true;

добавил --- теперь после запуска браузера (при нажатии на вкладку) пишет:
- в названии вкладки: problem loading
- в центре пустой страницы: Offline mode - Firefox is currently in offline mode and can't browse the Web - Press "Try Again" to switch to online mode and reload the page
при нажатии на "Try Again" вкладка начинает загружаться (а Offline mode, как я понимаю, сразу полностью пропадает)
то есть, на данный момент смысла именно в этом варианте вообще нет:
   
как минимум потому что не вижу уже загруженную ранее страницу, а только вижу на странице ненужную мне надпись "Offline mode"
кроме того, после нажатия на "Try Again" в начальной вкладке: другие страницы загружаются заново, если на них кликнуть (что прямо противоречит всей идее)

Другое дело. Попробуй запустить с консоли

запустил - добавился третий пункт "search" в контекстном меню - при нажатии на него запускается https://rutracker.org/forum/search.php

gBrowser.setTabTitleLoading = () => {}           ...          что конкретно надо теперь сделать, чтобы так было всегда?

в общем, я добавил эту строчку в конец файла click.js
и надпись "Connecting..." вроде бы, к счастью, больше не появляется

austri пишет

готов биться до последнего

Хорошо, тогда чистое цитирование. Вот рыба: строка в начале, две в конце.
Посередине размести весь код из bootstrap.js расширения InlineDisposition 2.
Получившийся код добавь в Services.jsm от Tab Mix Plus, ну тот, куда добавлял Services.io.offline = true;

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

Выделить код

Код:

(() => {

	// Здесь код bootstrap.js

	startup();
})();

не очень понимаю, почему не можешь проверить в твоём тестовом фф-40

Да просто выход в сеть разрешён лишь небольшому числу приложений.
И это изменению не подлежит.

нажатие на Ctrl+H ничего не дало

Хмм, странно. Ладно, раз «в идеале было бы просто добавление постоянного раскрывающегося пункта "pages" в главное контекстное меню»,
тогда такой вариант (это консоль, click.js, не Services.jsm)

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

Выделить код

Код:

/*===================[ BackForward Menu ]=====================*/
setTimeout(n => {
	var popup = n("backForwardMenu").cloneNode(false);
	popup.FillHistoryMenu = eval(
		`(${Tabmix.originalFunctions.FillHistoryMenu})`
			.replace(/if \(count[^;]+;/, "")
	);
	popup.removeAttribute("id");
	var menu = document.createElement("menu");
	menu.id = "context-bfmenu";
	menu.setAttribute("label", "pages");
	menu.appendChild(popup);
	var after = n("tm-content-undoCloseList");
	n("contentAreaContextMenu").insertBefore(menu, after.nextSibling);
}, 500, id => document.getElementById(id));

вот тут я перечислял, всё что мне удалось нарыть

Ага: «- inspector пишет:       <span style="font-size: 18px; line-height: normal;">✧</span>»
Вот этого я и не вижу. Там в одном спане куча элементов вперемешку с текстовыми нодами с этим символом и без него.


Кстати, проделал тут такое: открыл вкладку с адресом
data:text/html;charset=utf-8,<center><h1>%E2%9C%A7%E2%9C%A7%E2%9C%A7%E2%9C%A7%E2%9C%A7</h1></center>
и там, на странице, эти прямоугольники с цифрами (ну, юникод "\u2727" WHITE FOUR POINTED STAR).


Затем, через "Панель управления" открыл окно "Шрифты"
и притащил туда (от балды) seguisym.ttf (Segoe UI Symbol) из Windows 7.
Возвращаюсь в браузер, и, вуаля, вместо прямоугольников отображаются звёздочки.
Тогда может тебе стоит просто шрифт какой-нибудь поставить.

не знаю, важно это или нет, но в консоли понапоявлялись, например, такие строки

Выглядит как обычный консольский стафф.
Стоит обращать внимание лишь на записи, относящиеся к текущему делу.

только вижу на странице ненужную мне надпись "Offline mode"

Вау! Заглянул в ранее предоставленный тобой файл prefs.js, а там такая строка:
user_pref("browser.cache.disk.capacity", 0);
О чём тогда вообще разговор? Откуда тогда возьмутся страницы кроме как из сети?

Получившийся код добавь в Services.jsm от Tab Mix Plus, ну тот, куда добавлял Services.io.offline = true;

добавил --- не знаю, правильно ли я сделал, что в строке
// Здесь код bootstrap.js   убрал не только слова "Здесь код bootstrap.js", но и эти 2 символа: //
впрочем, данная добавка сразу сработалa (в эти дни-недели продолжу тестировать и отпишу, если что)

тогда такой вариант (это консоль, click.js, не Services.jsm)

похоже, что добавка этого кода в click.js стала успешной (в эти дни-недели продолжу тестировать и отпишу, если что)
   
есть мелкий визуальный нюанс: сама эта строчка "pages" (в контекстном меню) меньше по вертикали - не сильно, но явно заметно
особенно заметно, если навести курсор на строку, после чего её фон окрашивается в стандартный тёмно-синий цвет
   
но дело тут, насколько понимаю, не в том, что эта строка менее высокая, а в том, что такие 2 строки как "opened" и "closed" - более высокие,
а также более высокий ещё 1 пункт: "menu wizard" (в контекстном меню вкладок)
   
так вот, если в самом расширении "menu wizard" глянуть на 2 списка ("tab context menu", "main context menu"), то из активированных мной пунктов
именно эти 3 пункта (menu wizard, opened, closed) (из двух менюшек) почему-то имеют и какую-то свою иконку (которая у меня, к счастью, в самих менюшках не видна)
   
это, конечно, мелочи, но уточнить я всё же хотел бы:
можно ли привести высоту всех пунктов (во всех контекстных менюшках) к одинаковой высоте? например, как у пункта "pages"
   
вот информация на всякий случай (из расширения "menu wizard"):
- opened   ---   ID: tm-tabsList   ---   style (css): margin-left: -12px !important
- closed   ---   ID: tm-content-undoCloseList   ---   style (css): margin-left: -12px !important
- menu wizard   ---   ID: s3menuwizard_openOptions_toolsmenu   ---   style (css): margin-left: -14px ! important;   ---   onCommand: s3menuwizard.open_options_window();
   
и ещё сразу вот такой пункт оттуда же (menu wizard --> tab context menu):
- offline   ---   ID: goOfflineMenuitem   ---   style (css): margin-left: -14px !important   ---   onCommand: BrowserOffline.toggleOfflineStatus();
упоминаю этот пункт, для того чтобы спросить:
нормально ли, что он, по сути, не делает никакого toogle? (а реально только лишь умеет выключать offline) (включать не умеет)

17-08-2022 02:49:58

Тогда может тебе стоит просто шрифт какой-нибудь поставить

возможно, займусь этим, но вряд ли в самое ближайшее время:
всё равно весь смысл этой темы не в том, чтобы показывало нормально какие-то редкие (даром ненужные) символы, а в том, чтобы их просто поубирать навсегда со всех страниц
но ad-block в этом помочь не сумел (буду надеяться, что поможет, если я-таки установлю "шрифт какой-нибудь")
   
к слову - на той же странице ("Ага: «- inspector пишет") я упоминал это:
- в about:config - gfx.downloadable_fonts.enabled      (изменение на false не помогает)
- в about:config - browser.display.use_document_fonts = 1      (изменение на 0 не помогает)
и по идее, оно могло бы помочь (но не помогло)

О чём тогда вообще разговор? Откуда тогда возьмутся страницы кроме как из сети?

засчитаем это как моё недоглядение --- ну и полной справедливости ради:
в твоём сообщении (оно тут - в этой же теме - под номером 31) ты сам же процитировал ссылку на моё небольшое сообщение (от 11 августа 2022, 8:33:28) из другой темы,
где в последних строчках я написал, цитирую полностью:
     "вот эта галочка:
     options > advanced > cached web content > override automatic cache management > limit cache to [] mb of space
     никогда мне не помогала решить данную проблему (какое бы количество mb я в ней не выставлял)
     (сейчас - и уже очень давно - там указано 0 mb)"

   
теперь конкретнее по поводу этой "offline"-проблемы:
- я изменил 0 mb на 1024 (больше фф не даёт) (не с первого раза, со второго, но позитивные результаты я вроде бы вижу)
- почти во всех случаях прогрузка страницы из кэша занимает около секунды --- хотя я думал, что будет мгновенно (впрочем, это скорее терпимо)
- не самых очевидных/привычных нюансов полно (в эти дни-недели продолжу тестировать и отпишу, если что)

17-08-2022 02:56:44
   
   
спасибо за вроде бы полностью решённую (крупную) проблему с InlineDisposition
и за явное улучшение по поводу двух других крупных проблем: "история вкладки" и "авто-обновление вкладок"
   
факультативный (не очень важный) вопрос по поводу вскользь упоминавшегося ранее альтернативного ввода адреса (в случае если url-bar скрыт):
существует ли код (для пункта главного контекстного меню)? который бы назывался "address" (и располагался под пунктом "pages"),
и после его запуска просто бы отображал снизу поcередине экрана минималистичное поле для ввода адреса (или поискового запроса)
то есть, чтобы по базовому функционалу это могла бы быть прямая замена url-bar'у
   
новый небольшой вопрос про показывание изображений:
какой нужен код, чтобы в меню (под пунктом "address") появился пункт "hide images"? который бы просто скрывал все картинки на текущей странице (в данной вкладке)
   
если верно понимаю, то в "about:config" вот этот пункт как бы помогает (для страниц ру-трэкера): browser.tabs.extensions.allowImages ----> user set (false)
то есть, на ру-трэкере у меня картинки не грузятся (мной так и задумано экспериментально)
но, например, википедия при этом почему-то картинки свои отображает (я только что это узнал)

А там ты каких-то чудес хочешь, на мой взгляд

вот, пожалуйста, свежайшая иллюстрация, почему в браузере может быть крайне полезна возможность надёжно отключить
принудительное авто-обновление уже загруженных вкладок (даже после перезагрузки браузера):
   
у меня была открыта такая вкладка
- я не успел с ней сделать всё, что мне надо (ещё где-то неделю назад она нормально открывалась)
- а теперь сайт просто тупо пишет: "Тема не найдена", не давая ни малейшей возможности узнать хоть что-либо относительно содержимого этой страницы
   
забегая наперёд, упомяну, что мне так и не удалось никаким способом просто увидеть эту страницу в каком-то её сетевом архивном варианте
(например, сохранение кэша гугла за какой-то день июля-2022)
   
   
17-08-2022 15:30:02
   
   
вот что я пробовал:

1) мой основной поисковик - это единственное, что дало хотя бы самую поверхностную информацию об удалённой странице:
Garbage - No Gods No Masters (Limited Deluxe Edition) - rutracker.org
(Alternative Rock, Electronic Rock) [CD] Garbage - No Gods No Masters (Limited Deluxe Edition) - 2021, FLAC (tracks), lossless

   
2) а хвалёный google.com тупо пишет (в таких же условиях, что и duckduckgo): Информация об этой странице недоступна
   
3) web.archive.org пишет: Wayback Machine has not archived that URL   ---   This page is available on the web!
   
4) cachedview.com пишет:
404. That's an error. The requested URL /search?q=cache:https://rutracker.org/forum/viewtopic.php?t=6065860 was not found on this server. That's all we know
   
5) archive.today пишет: No results
   
6) OldWeb.today просто не загружается
   
7) Memento Time Travel пишет: No mementos were found for the requested URI and datetime
   
8) ранее когда-то точно было подобие способа (через "google translate"), и там во втором поле для перевода:
нажатие ссылки на эту страницу --- и далее выбор пункта, который примерно назывался как "Исходная страница" --- но сейчас "google translate" не помог
   
9) удалось найти нечто похожее на то, что раньше когда-то изредка выручало:
https://webcache.googleusercontent.com/search?q=cache:GfcmthkeK9IJ:https://rutr.life/forum/viewtopic.php%3Ft%3D6034406&cd=4&hl=ru&ct=clnk&gl=ua
- данная страница пишет:
Это версия страницы https://rutr.life/forum/viewtopic.php?t=6034406 из кеша Google. Она представляет собой снимок страницы по состоянию на 22 июл 2022 20:56:27
- но это просто пример, так как страница-то не та, которая нужна (а нужную в данном варианте найти не удалось)

austri пишет

можно ли привести высоту всех пунктов (во всех контекстных менюшках) к одинаковой высоте? например, как у пункта "pages"

Ну, видимо, нужен какой-то общий концептуальный стиль.
Раз иконки не нужны, то можно от с чего-то такого начать
(отрицательные margin-left, при этом, из menu wizard убрать, конечно).

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

Выделить код

Код:

menu > .menu-iconic-left, menuitem > .menu-iconic-left {
	display: none !important;
}
menu > .menu-text, menuitem > .menu-text,
menu > .menu-iconic-text, menuitem > .menu-iconic-text {
	-moz-margin-start: 2px !important;
	-moz-padding-start: 2px !important;
}
menu.bookmark-item[container] > .menu-right > image {
	-moz-image-region: auto !important;
}

нормально ли, что он, по сути, не делает никакого toogle? (а реально только лишь умеет выключать offline) (включать не умеет)

Нет, это не нормально. Код BrowserOffline.toggleOfflineStatus();
должен, при каждом исполнении, именно пререключать offline-статус на противоположный.
Я попробовал перетащить это пункт в контекстное меню вкладок, и всё работает как надо.

весь смысл этой темы не в том, чтобы показывало нормально какие-то редкие (даром ненужные) символы, а в том, чтобы их просто поубирать навсегда со всех страниц
но ad-block в этом помочь не сумел (буду надеяться, что поможет, если я-таки установлю "шрифт какой-нибудь")

Уж не знаю про ad-block (но сильно сомневаюсь), а CSS не может "убрать символ",
и текстовую ноду не может, он работает только с элементами.
Вырезать символы можно только скриптом. То есть, во всех контентских документах
перебирать все текстовые ноды и реплейсить все неугодные символы на пустую строку.
А для динамического контента ещё и MutationObserver надо оставить, чтоб следил
за появлением новых. Такая вот нахлобучка для браузера.

отображал снизу поcередине экрана минималистичное поле для ввода адреса (или поискового запроса)

Сейчас времени нет, и пока не предвидится.
Но, на всякий случай, некоторое недоумение выскажу.
Экрана? То есть должно быть отдельное окно? Или, всё-таки, посередине чего-то другого?
И не совсем понятно зачем. Твой url-bar и так минималистичней некуда,
поэтому пункт мог бы просто показывать его. Ну, разве что только не внизу. Это так важно?

новый небольшой вопрос про показывание изображений

Это контентский вопрос. Здесь меня спрашивать бесполезно.
Но раз у тебя фоновые изображения запрещены, то, наверно,
достаточно просто сбросить на страницу (и во фреймы) стиль img {display: none !important;}
Опять же, если страница, а пункт уже был на ней нажат, то какое поведение пункта тогда?

прямое размещение всех bookmarks в основном списке главного контекстного меню

Вот, всё-таки сподобился такое попробовать.
Дичь конечно, но вроде работает. Код не для jsm'ки, разумеется.

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

Выделить код

Код:

/*==========[ Toolbar Bookmarks In Context Menu ]============*/
(popup => {
	popup.setAttribute("placespopup", true);
	var popupshowing = e => {
		unload();
		popup.appendChild(document.createElement("menuseparator"))
			.id = "toolbar-bookmarks-separator";

		var types = ["click", "command", "contextmenu"];
		var context = document.getElementById("placesContext");
		var view = new PlacesMenu(e, "place:folder=TOOLBAR", {});

		var listener = {
			handleEvent(e) {
				if (e.target._placesNode || e.target.className == "bookmark-item")
					this[e.type](e);
			},
			click: e => BookmarksEventHandler.onClick(e, view),
			command: e => BookmarksEventHandler.onCommand(e, view),
			contextmenu(e) {
				e.preventDefault();
				context.state == "open" && context.hidePopup();
				context.openPopupAtScreen(e.screenX, e.screenY, true, e);
			}
		};
		for(var type of types) popup.addEventListener(type, listener);
		var {uninit} = view;
		view.uninit = () => {
			uninit.call(view);
			for(var type of types) popup.removeEventListener(type, listener);
		}
	}
	var unload = () => {
		window.removeEventListener("unload", unload);
		popup.removeEventListener("popupshowing", popupshowing);
	}
	window.addEventListener("unload", unload);
	popup.addEventListener("popupshowing", popupshowing);

})(document.getElementById("contentAreaContextMenu"));

Раз иконки не нужны, то можно от с чего-то такого начать

отрицательные margin-left убрал - код добавил - спасибо (стало лучше чем было)

Нет, это не нормально. Код BrowserOffline.toggleOfflineStatus();

странно: я только что попробовал снова 2 раза переключить (и на этот раз сначала offline выключился, а затем-таки включился)

Вырезать символы можно только скриптом

а могу ли я это как-то протестировать? в качестве пробной жертвы мне бы шикарно подошёл ранее упоминавшийся наглый символ "\u2727"
(а тот шрифт в такой случае мне в системе тоже нужен был бы?)

То есть должно быть отдельное окно?

не окно, а что-то очень-очень похожее на панельку, которая появляется после нажатия на Ctrl+F --- идея примерно такая:
   
после ввода урла/поискового-запроса, и после нажатия там на enter - панелька бы сама сразу скрывалась, и происходил бы переход к введённому урлу/запросу
(не говоря уже о том, что прямо в той же Ctrl+F--панельке: ну просто полным-полно горизонтального места именно для подобного ввода урла/запроса)

И не совсем понятно зачем. Твой url-bar и так минималистичней некуда

скорее всего: не более чем для смелого эксперимента (но я согласен, что это можно отложить: или надолго, или навсегда)
   
а по поводу url-bar'a новая напасть: в нём теперь появляется надпись "Search or enter address" (которой у меня в фф-40 не было с 2015)
появляется, например, после таких действий: открыть новую вкладку -> перенести фокус из урл-бара (куда угодно)
(какие-то наши действия в эти дни привели к этому) (я пока не успел начать самому с этим разбираться)
   
   

18-08-2022 01:18:54
   
   

сбросить на страницу (и во фреймы) стиль img {display: none !important;}

я пока на пробу добавил строчку     img {display: none !important;}    в userContent.css (для википедии помогло)

Опять же, если страница, а пункт уже был на ней нажат, то какое поведение пункта тогда?

снова показывать все изображения (которые скрылись после предыдущего нажатия), то есть всё это по toggle-принципу

Код не для jsm'ки, разумеется

ну что, я попробовал добавить, а результат такой: не очень ожидаемо для себя отмечаю, что выглядит здорово:
- separator я, конечно, попробую позднее убрать
- пока буду думать, что со всем этим добром теперь делать (оставлять / не оставлять)
- и вот после такого мне что-то куда интереснее теперь стало попробовать убрать урл-бар,
       и получать доступ к его базовому функционалу каким-нибудь другим удобно-быстрым способом
   
по другому вопросу мелкое уточнение: можно ли как-то прописать больше чем 1024?: options - advanced - network - limit cache to 1024 mb of space
   
и ещё совсем другое, но очень важное уточнение:
верно ли понимаю, что полный функционал крошечного расширения "expire history by days" (7,49 kb) лучше даже не пытаться переносить?
(как были, например, перенесены "auto copy" и "inline disposition")
   
хотя бы потому что проверить удачность переноса не будет никакой возможности,
а неудачность переноса будет стоить (лично мне) безумно дорого, и обнаружиться это может даже не в этом году, а позднее
(пытаюсь сказать, что неприкосновенность/хранениe полной истории посещений для меня критически важны)
   
если кто-то из читающих эту тему сумеет найти закэшированный вид вот этой мелкой (и уже удалённой) страницы, то дайте мне, пожалуйста, знать об этом

а по поводу url-bar'a новая напасть: в нём теперь появляется надпись "Search or enter address"

данным кодом вроде бы удалось убрать эту ужасную надпись:

Выделить код

Код:

#urlbar *|*.textbox-input::-moz-placeholder,   #urlbar *|*.textbox-input:focus::-moz-placeholder   { color: transparent !important; }

к сожалению, другая надпись - about:blank - всё так и продолжает мелькать (пусть и очень быстро) (как минимум сразу после запуска браузера: если вкладка пуста)
(эта проблема у меня с самого начала - с 2015 - и решения ей найти не удалось до сих пор) (в фф-3.0.5 такого не было)

сразу после запуска браузера у меня теперь всегда поначалу активен режим off-line
и поскольку переключение между режимами off-line и on-line будет периодически происходить, тут же возникла потребность в том, чтобы это переключение
было не только как можно более удобным/быстрым, но и исчерпывающе наглядным, чего сейчас нет и в помине
   
в связи с этом вопрос - реально ли сделать 1 специальный пункт основного контекстного меню?:
   
- пункт, который бы считывал статус "off-line / on-line", и в моём случае после запуска браузера имел бы вот такое простое название: off-line
- сразу после нажатия на этот off-line: данная менюшка просто стандартно скрывается, а режим переключается на on-line
   
- будучи в режиме on-line, данный пункт называется чуть по-другому: on-line
- сразу после нажатия на on-line: данная менюшка просто стандартно скрывается, а режим переключается на off-line

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

пока не могу проверить вид панели вкладок в случае, если на этой панели есть свободное место, но надеюсь, что там ничего плохого не будет видно, а лишь белый цвет

напрасно я тогда понадеялся, что всё будет хорошо: я сегодня сообразил, что можно ведь и при 70 вкладках проверить вид "tabs toolbar",
просто временно изменив "tab width" c "86 to 86 pixels" на 26-26, в результате чего стала видна чёрная нижняя линия:
   
- если в имеющейся строке:          #TabsToolbar>*{ margin-bottom: -1px  !important; }
оставить -1 (или изменить на -2), то чёрная линия видна внизу (но только в зоне за последней вкладкой)
   
- если эту строку убрать (или выставить 0) (или 1) (или 2), то чёрная линия видна внизу (не только в зоне за последней вкладкой, но ещё и под всеми вкладками тоже)
   
   
сейчас у меня выставлено вот это:
#TabsToolbar>*{ margin-bottom: -1px !important; }
#TabsToolbar>*{ margin-top: 3px !important }
#TabsToolbar .tabbrowser-tab .tab-content { border-color: white !important; }
   
включение вот этой строки не помогает:           #TabsToolbar .tabbrowser-tab  { border-color: white !important; }
   
убирание этого не помогает:           #TabsToolbar>*{ margin-top: 3px !important }

Вот что получилось. Как видишь, никаких разделителей

на том скрине эта чёрная линия тоже хорошо видна (как раз прямо под курсором)

austri пишет

можно ли как-то прописать больше чем 1024?: options - advanced - network - limit cache to 1024 mb of space

Если думаешь, что браузер может больше, а на about:preferences просто козлится,
тогда можно установить browser.cache.disk.capacity вручную, там в килобайтах.
Иначе говоря, этот кусок гуя устанавливает эту настройку.

верно ли понимаю, что полный функционал крошечного расширения "expire history by days" (7,49 kb) лучше даже не пытаться переносить?

Верно в том смысле, что функционала нет, переносить нечего.
Судя по коду, в твоей конфигурации, расширение не делает ничего
кроме как устанавливает настройку places.history.expiration.max_pages в значение 999999
(ну ещё Idle Observer вхолостую гоняет). Но посоветовать чем-то рискнуть воздержусь.

сегодня сообразил, что можно ведь и при 70 вкладках проверить вид "tabs toolbar"

Надо полагать, вариант «открыл новое окно (Ctrl+N), посмотрел, закрыл» чем-то неподходил.

на том скрине эта чёрная линия тоже хорошо видна (как раз прямо под курсором)

На том скрине линия под курсором — это псевдоэлемент из chrome://browser/skin/browser.css, цитирую:

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

Выделить код

Код:

#navigator-toolbox::after {
  content: "";
  display: -moz-box;
  -moz-box-ordinal-group: 101; /* tabs toolbar is 100 */
  height: 1px;
  background-color: ThreeDShadow;
}

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

Звучит несложно.

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

Выделить код

Код:

/*===============[ Offline Status Menuitem ]=================*/
(popup => {
	var menuitem = document.createElement("menuitem");
	menuitem.setAttribute("oncommand", "Services.io.offline = !Services.io.offline");
	var ha = menuitem.hasAttribute;
	menuitem.hasAttribute = attr => {
		menuitem.label = Services.io.offline ? "off-line" : "on-line";
		return ha.call(menuitem, attr);
	}
	popup.appendChild(menuitem);
})(document.getElementById("contentAreaContextMenu"));

Звучит несложно

похоже, что код сработал безупречно - благодарю за помощь - может это была бы и мелочь для кого-то, но мне точно пригодится

тогда можно установить browser.cache.disk.capacity вручную

к сожалению, это был неудачный совет - я вместо 1048576 прописал в файле 4194304 - и в итоге в настройках вот что увидел:
- your web content cache is currently using 0 bytes of disk space
- limit cache to 1024 mb of space
   
если бы со своими немалыми знаниями ты сразу просто ответил что "нельзя прописать больше", то я бы ничего не пытался увеличить
и не потерял бы весь кэш (которого за эти дни накопилось более 600 мб) (конечно, ничего смертельного, но всё же)

Если думаешь, что браузер может больше

в данном случае я не мог думать или не думать - я не знал - поэтому уточнял - а что из этого получилось: мной написано выше
   
   

19-08-2022 23:51:59
   
   

expire history by days

это слишком важная для меня тема, чтобы я просто так её оставил,
тем более, что из твоего ответа я для себя ничего толком не уяснил - в общем, попробую спросить по-другому:
   
а) просто мне крайне нужно, чтобы моя история посещений никогда никем и ничем не трогалась
      (не стиралась) (и не уменьшалась сама) (и не само-"оптимизировалась" по велению лисьей задней левой лапко-пятки)
      (вне зависимости ни от чего вообще: ни от свободного места на диске, ни от кол-ва оперативки, ни от чего)
   
б) мне нужен очень грамотный и толковый и простой совет:
       - учитывая вышенаписанное, что мне делать с расширением "expire history by days"? (хотелось бы, конечно, просто его убрать)
       - есть ли хоть какой-то мизернейший риск чего-то нехорошего с моей историей посещений, если уберу это расширение?
                    (сейчас у меня там почти 39 000 страниц)
      
       - судя по твоим словам ("функционала нет"), то можно удалять смело, и вообще не беспокоиться
       - "в твоей конфигурации, расширение не делает ничего"   так у меня в нём только вот это и есть:
                    1. expire visits older than these days (0 to disable):      0
                    2. disable places expiration (may hurt performances):   yes     (стоит галочка)
                    3. там больше и настроек-то нет
      
в) или может просто тупо (на всякий случай, не понятно только какой) его перенести/скопировать?:
как это было сделано, например, с расширением "InlineDisposition":     "Хорошо, тогда чистое цитирование. Вот рыба"
   
г) как логически соотносятся эти 2 твои словосочетания?: "функционала нет" и "посоветовать чем-то рискнуть воздержусь"
(если функционала нет, то в чём даже теоретически может быть риск?)
   
д) верно ли полагаю, что из всего этого меня должно беспокоить только следующее:
- что настройка "places.history.expiration.max_pages" должна оставаться в значении 999 999    (сейчас она: user set, integer)
- что 999 999 не будет никогда и никак сбиваться (после удаления расширения)
   
вот только не очень ясно: это данное расширение устанавливает такое значение? (при своей работе)
или такое значение останется и после удаления расширения?                ведь по логике: второй вариант должен быть
   
   

19-08-2022 23:53:15
   
   

Надо полагать, вариант «открыл новое окно (Ctrl+N), посмотрел, закрыл» чем-то неподходил

я бы не формулировал так жёстко - поскольку всё несколько невиннее и проще:
про новое окно я не подумал, так как никогда не пользуюсь в фф никакими "новыми окнами"
   
а что касается Ctrl+N, то у меня оно открывает новую вкладку
и при этом я лично Ctrl+N, конечно же, никогда не нажимаю (ибо неудобно и архаично и бестолково)
а вместо этого нажимаю кнопку F1, которая через ahk и вызывает Ctrl+N сама (но только если фф в фокусе):
#IfWinActive ahk_exe firefox (portable).exe
F1::sendplay ^n
#If

псевдоэлемент из chrome://browser/skin/browser.css, цитирую

- не серчай, пожалуйста, но я не понимаю этих твоих слов
- мне нужен файл browser.css? где он лежит? внутри какого-то очередного js или jsm?
- мне нужно в нём найти этот твой код из 7 строчек и удалить их все? (чтобы убрался этот псевдоэлемент)

чтобы убрался этот псевдоэлемент

в общем, вроде бы я справился - просто добавил в userChrome.css строку:
#navigator-toolbox::after { display: none !important; }
 
если я сделал что-то неправильное, то дай знать
   
   
добавлено на следующий день:
впервые пытаюсь экспериментировать по-серьёзному с "multi-row tabs" (сейчас: 3 ряда по 22 вкладки - плюс четвёртый ряд с тремя вкладками), и сразу же наткнулся на проблему:
этот псевдоэлемент снова виден (на четвёртом ряде вкладок) (за последней вкладкой)

есть ли способ сделать так, чтобы визуальное положение вкладок не сдвигалось? (после перезагрузки браузера) например:
  
- есть 70 вкладок - у каждой ширина 86 пикселей - визуально на экране умещаются 22 вкладки
- до перезагрузки браузера самой левой вкладкой (из видимых на экране) была 45-я - она же активная
  
- после перезагрузки браузера она остаётся активной, что очень хорошо, но при этом она уже самая правая
- а нужно, чтобы визуально ничего не менялось: чтобы она как была самой левой (из видимых), так и оставалась
  
у меня в tab-mix-plus > options > display > tab bar:
       - when tabs don't fit width: [scrollable without buttons]
       - when scrolling show part of next out-of-sight tab: [no]
       - enable smooth scroll: [no]
       - hide the tab bar: [never]
       - scroll delay (time between scroll repetition): [0 msec]
   
   
составляя это сообщение, я буквально только что заметил, что авто-копирование текста в буфер не всегда срабатывает:
  
- в случае выделения текста (вот прямо здесь: где пишу эти строки) (но это как раз, скорее всего, нормально)
  
- в случае выделения текста (пониже на этой же странице: там, где предыдущие комментарии данной темы) (и вот это точно совсем не нормально)
      (двойной клик на слове тоже это слово в буфер не копирует)
  
- да вообще внутри этой вкладки ничего не авто-копируется (ещё пример: фраза сверху - "Ваш последний визит: Сегодня")
- а в других вкладках (например, ру-трэкер) авто-копируется как и ранее
   
добавлено: как только я отправил это сообщение, и вернулся в саму тему, авто-копирование текста (внутри этой же вкладки) снова срабатывает
ещё добавлено: а теперь и просто в теме не срабатывает

некоторые нюансы изменились, поэтому снова пишу:
  
эксперимент с "multi-row tabs" почти сразу завершился принятием решения о том, что это надо оставлять на постоянной основе, в связи с чем:
- необходимость решать проблему (с визуальным сдвиганием вкладок - после перезагрузки браузера) стала скорее теоретической, так как вкладки не сдвигаются в режиме multi-row
  
- необходимость решать проблему (с нижней горизонтальной тёмной линией - сразу после последней вкладки, и до конца этого ряда вкладок) стала очень важной:
  
      я заметил, что если при "multi-row tabs" убрать недавно добавленную строку      #navigator-toolbox::after { display: none !important; }
      то появляется горизонтальная чёрная полоса под всем нижним рядом вкладок,
      а после последней вкладки: при этом видна также ещё одна полоса - она, вроде, чуть посветлее, чем чёрная - и она видна сразу над той чёрной полосой
  
      только что упомянутый код (из одной короткой строки) убирает чёрную полосу (она, видимо, и есть тот самый псевдоэлемент),
      но не убирает другую полосу (видимую только после последней вкладки, и только в режиме multi-row)
  
      то есть, если верно понимаю: эта тёмная полоса (которая видна только после последней вкладки) не имеет отношения к вышеупомянутому псевдоэлементу, и её убирать надо как-то по-другому
      (у меня не получилось - за несколько подходов и много часов) (зато получилось неслабо намучаться с сами-себя-переключающими галочками в "classic theme restorer", будь он неладен)
  
следующие 5 строк добавлены позднее:
      всё это происходит при таком имеющемся коде:        #TabsToolbar>*{ margin-bottom: -1px !important; }
- если выставить -2 или -3, то тоже самое, что и при -1
- если выставить 0 или 1 или 2, то эта же полоса (которая видна только после последней вкладки) расширяется и влево до конца тоже, то есть, становится видна под всем последним рядом вкладок
- если этот код убрать, то тоже самое, что и при 0 или 1 или 2
- если убрать >*          то тоже самое, что и при 0 или 1 или 2
  
  
по поводу мелькания надписи "about:blank" в урл-баре (сразу после запуска браузера: если вкладка пуста) --- попробую уточнить более конкретно:
раз уж, видимо, никто не знает как вылечить фф от этого дeфективного быстрого мелькания - может, есть способ просто побелить именно эту надпись?

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

_zt
cкоро напишу в личку

austri пишет

и не потерял бы весь кэш

Казалось бы, хорошая практика, особенно если возможен data-loss,
склонировать свой портабл, и экспериментировать на нём,
а не на живом повседневном браузере. Ну или хотябы бэкап сделать.

мне нужен очень грамотный и толковый и простой совет

Вот это аппетит!

как логически соотносятся эти 2 твои словосочетания?: "функционала нет" и "посоветовать чем-то рискнуть воздержусь"

Ну вот посмотрел я на код и сказал что вижу.
А может я что-то не так понял. Запросто же.

или такое значение останется и после удаления расширения?

Можно и руками выставить, и в user.js добавить, и в код
Services.prefs.setIntPref("places.history.expiration.max_pages", 999999);
Любые избыточные действия для спокойствия.

то есть, если верно понимаю: эта тёмная полоса (которая видна только после последней вкладки) не имеет отношения к вышеупомянутому псевдоэлементу, и её убирать надо как-то по-другому

Верно. Тёмная полоса — это нижняя граница #TabsToolbar'а, которую задаёт CTR.
%CTR%\content\css\winxp\tabsontop_offextra.css

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

Выделить код

Код:

…
	#main-window[fx32plus="true"][defaultfxtheme="true"][tabsontop="false"] #TabsToolbar:not(:-moz-lwtheme) {
	  border-bottom: 1px solid hsla(209,67%,12%,0.25) !important;
	}


Но в браузере, для этого тулбара, есть правило, задающее margin-bottom в -1px,
поэтому полосу не видно.
А когда образуется второй ряд вкладок, и TMP ставит на тулбар атрибут "multibar",
CTR выставляет ему margin-bottom в ноль и полоса становится видна.
%CTR%\content\css\winxp\classictabsextrac2.css
скрытый текст

Выделить код

Код:

…
	@media not all and (-moz-windows-glass) {
		#navigator-toolbox #TabsToolbar[multibar][tabsontop="false"]:not(:-moz-lwtheme)  {
		  margin-bottom: 0px !important;
		}
	}


Так что, либо убрать border-bottom, либо вернуть margin-bottom в -1px.
Либо правкой CTR, либо оверрайд своим AGENT_SHEET стилем.

авто-копирование текста в буфер не всегда срабатывает

Да, есть такой баг, совсем отвык от старых лисиц.
Загруженное в фоне не обрабатывется. Надо заменить if (win.top == content)
на что-то другое, даже не знаю, например, на
if (gBrowser.browsers.indexOf(win.top.document.docShell.chromeEventHandler) != -1)


А можно вообще удалить эту проверку, но тогда будет и с инструментов веб-разработки
копироваться, если не в отдельном окне сразу открыть.

на что-то другое, даже не знаю, например, на

заменил - затем пару десятков раз проверил это обновлённое авто-копирование - ни одного сбоя

Так что, либо убрать border-bottom, либо вернуть margin-bottom в -1px.
Либо правкой CTR, либо оверрайд своим AGENT_SHEET стилем

я пошёл таким путём - вот эту строку:

Выделить код

Код:

@media not all and (-moz-windows-glass) { #navigator-toolbox #TabsToolbar[multibar][tabsontop="false"]:not(:-moz-lwtheme) { margin-bottom: -1px !important; } }

добавил в файл userChrome.css - в ту его часть, где затем расположена строка:      `), Ci.nsIDOMWindowUtils.AGENT_SHEET);
и оно сработало - у меня в эти дни было очень много попыток, но сам я до такого бы не додумался - так что спасибо большое
  
      занятно это в каком-то смысле: столь резко (и главное - добровольно) менять привычный многолетний work-flow, но мне, похоже, теперь никуда не деться от "multi-row tabs",
      а о былой необходимости их постоянно скролить влево-вправо (потому что зачастую штук 40 не было видно) теперь и вспоминать не хочется
      (этим, кстати, напрямую объясняется наличие в основном контекстном меню пункта "opened" прямо на первой строке, так как открывать этот пункт приходилось очень-очень часто - всё-таки туда влазит сразу 70 вкладок)

Можно и руками выставить, и в user.js добавить, и в код
Services.prefs.setIntPref("places.history.expiration.max_pages", 999999);
Любые избыточные действия для спокойствия

- пока буду продолжать пытаться понять, что с этим расширением делать
  
- уточняю: вот эту строчку       Services.prefs.setIntPref("places.history.expiration.max_pages", 999999);      добавить в файл prefs.js?      или в Services.jsm? или в click.js? (ну наверно, не в эти 2)
- туплю, видимо, но файла user.js я не нашёл
  
- если всё так просто, и нужно всего лишь следить за одной строкой в about:config - "places.history.expiration.max_pages", 999999
      то тогда почему в настройках расширения "expire history by days" есть сразу 2 пункта?:
      1. expire visits older than these days (0 to disable):      0
      2. disable places expiration (may hurt performances):   yes     (стоит галочка)
  
      то есть, потеряв эти 2 пункта, что именно потеряю я? и потеряю ли? разве они оба просто отвечают за одну и ту же настройку places.history.expiration.max_pages?
  
- если "руками выставить", то где гарантия, что фф не перевыставит (сразу или позднее) сам на какое-нибудь убийственное 999? - просто, чтобы уменьшить мой places.sqlite с 20,0 mb на что-то менее крупное
      (если лис сочтёт, что это поможет освободить "недостающее" место на винте - а ведь у его разрабов примерно такая логика, насколько помню - и в связи с этим печальные отзывы на просторах сети тоже помню)
  
"для спокойствия" мне скорее всего было бы достаточно совсем немногого:
- знать, что после удаления расширения "expire history by days": ничего и нигде не изменится с уже выставленной настройкой "places.history.expiration.max_pages", 999999
- знать, что только эта настройка отвечает за полную сохранность моей истории посещений
- знать, что лисе не взбредёт в голову эту настройку самовольно менять или сбрасывать (вообще никогда)

austri пишет

уточняю: вот эту строчку       Services.prefs.setIntPref("places.history.expiration.max_pages", 999999);      добавить в файл prefs.js?      или в Services.jsm? или в click.js?

Services.jsm — это модуль, код jsm'ок исполняется один раз,
а click.js — это скрипт, исполняется в каждом окне browser.xul
Раз ты "одноокошечник", то большой разницы куда добавить нет.

файла user.js я не нашёл

Этот файл может создаваться пользователем (в профиле)
для своих пользовательских настроек, чтобы они устанавливались
при запуске браузера. Там в нём строки типа user_pref("имя нстройки", значение);
Очень странно, что ты о нём не слышал.

разве они оба просто отвечают за одну и ту же настройку places.history.expiration.max_pages

Нет. Пункт «expire visits older than these days» отвечает за очистку истории самим расширением
(расширение ведь, в первую очередь, предназначено именно для этого, для очистки).

знать, ... знать, ... знать, ...

Ага, начни с полного анализа кода по адресу
resource://gre/components/nsPlacesExpiration.js

к сожалению, другая надпись - about:blank - всё так и продолжает мелькать (пусть и очень быстро) (как минимум сразу после запуска браузера: если вкладка пуста)

Похоже нашёл откуда это берётся.
Вот так, вроде, помогает. Код для jsm'ки.

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

Выделить код

Код:

(url => {
	var g = Cu.import(url, {}), ssi = g.SessionStoreInternal;
	ssi.receiveMessage = g.eval(`(${ssi.receiveMessage})`.replace(
		/browser\.userTypedValue = uri/, '$& == "about:blank" ? null : uri'
	));	
})("resource:///modules/sessionstore/SessionStore.jsm");

Вот так, вроде, помогает. Код для jsm'ки

действительно, вроде, помогает - благодарю - я проверил 7 раз и пока всё норм
 
на всякий случай просто напомню про свой другой вопрос из этого сообщения (там речь о: "Вырезать символы можно только скриптом",      "а могу ли я это как-то протестировать?")
 

Раз ты "одноокошечник", то большой разницы куда добавить нет

в общем, если я хоть что-то правильно понял - в случае убирания расширения "expire history by days" надо:
 
1) добавить строку      Services.prefs.setIntPref("places.history.expiration.max_pages", 999999);      в файл click.js
2) добавить строку      Services.prefs.setIntPref("places.history.expiration.max_pages", 999999);      в файл Services.jsm
 
3) добавить строку      user_pref("places.history.expiration.max_pages", 999999);      в файл prefs.js
      (эта строка там сейчас есть, но вдруг её не станет после удаления расширения?      или если точнее: вдруг там 999999 само уменьшится?)
 
4) создать файл      Data\profile\user.js      и в него вписать строку      user_pref("places.history.expiration.max_pages", 999999);
 
5) в виде ещё одной подстраховки: повторить то, что было успешно сделано перед удалением расширения "InlineDisposition":

Выделить код

Код:

(() => {

	// весь код из bootstrap.js расширения "expire history by days"

	startup();
})();

(и получившийся код добавить в Services.jsm)
 
6) сразу залезть в about:config и лично убедиться, что 999999 осталось на месте
 
7) ещё 1 лишний раз забэкапить файлы:
- places.sqlite (20,0 mb)
- places.sqlite-shm (32,0 kb)      (а этот файл надо?)
- places.sqlite-wal (293 kb)      (а этот файл надо?)
 

Там в нём строки типа user_pref("имя нстройки", значение);

ну вот есть у меня prefs.js - и там как раз сотни этих строк начинающихся с      user_pref("                  и зачем тогда файл user.js? (наверно, я чего-то не знаю)
 
      если что, в файле prefs.js у меня среди прочего есть такие 3 строки:
user_pref("extensions.bonardonet.expire-history-by-days.disable_expiration", true);
user_pref("places.history.expiration.max_pages", 999999);
user_pref("places.history.expiration.transient_current_max_pages", 999999);

ранее я не планировал задавать этот новый вопрос, но с визуальной точки зрения для меня это давняя ощутимая проблема, поэтому всё-таки попробую спросить
 
есть ли способ убрать дефектные мелкие вертикальные красно-оранжевые полоски? которые очень часто видны в названиях вкладок:
 
- прямо перед началом названия (не во всех вкладках, но во многих)
 
- я эти полоски настолько хорошо знаю, что мне не требуется увеличение, чтобы их замечать враз
   но другим людям - с непривычки - большой зум, наверно, очень понадобится, чтобы понять, о чём вообще речь
 
- при наведении курсора дефект пропадает
- мой свежий переход на "multi-row tabs" только усилил проблему в 2-3 раза (так как теперь всегда видны все вкладки)
 
чтобы было понятнее, вот скрин (на нём 54 вкладки):
1й ряд содержит 23 вкладки,      2й ряд - 23 вкладки,      3й ряд - 8 вкладок
 
дефект отчётливо виден в таких вкладках:
1й ряд - вкладки 1, 2, 20
2й ряд - вкладка 2
3й ряд - вкладки 1, 3, 4, 5, 6, 7
 
(у меня есть разве что призрачная надежда на какой-то специальный код (возможно, совсем мелкий), который бы не давал проявляться этим полоскам)

менее 20 дней назад у меня ещё были все мои 16 расширений, которыми я так или иначе пользовался годами
и к данному моменту из них осталось только 6 (что хорошо),
среди которых есть вот эти 2 родственных:      Adblock Plus (2.6.10)      Element Hiding Helper For Adblock Plus (1.3.3)
 
реально ли заменить их оба? мне разве что приходит на ум какой-то вариант по типу этого:
- скопировать все очень нужные (уже давно мной созданные) правила/строки из      adblock plus filter preferences  >  custom filters
 
в спойлере просто 21 очень короткий пример таких строк:

скрытый текст
rutracker.org###ajax-loading      88160 hits
rutracker.org###display-opt      341 hits
rutracker.org###forums_top_links      1011 hits
rutracker.org###t-top-user-buttons      28246 hits
rutracker.org##.icon1.hide-for-print      19182 hits
rutracker.org##.icon2.icon-newest      10501 hits
rutracker.org##.poster_btn.td3      40099 hits
rutracker.org##.q-head      24108 hits
rutracker.org##.small.hide-for-print[style="margin: 8px 4px;"]      25006 hits
rutracker.org##.tRight      56269 hits
rutracker.org##.top-alert.ta-inf2      38847 hits
rutracker.org##.txtb      26138 hits
rutracker.org##DIV#logo      91395 hits
rutracker.org##DIV#main-nav      91395 hits
rutracker.org##DIV#nav-panel      90748 hits
rutracker.org##DIV#page_footer      91070 hits
rutracker.org##DIV.topmenu      91396 hits
rutracker.org##SPAN[style="font-size: 24px; line-height: normal;"]      29103 hits
rutracker.org##TD.nav.w100[style="padding-left: 8px;"]      40446 hits
rutracker.org##TH.thHead      40962 hits
rutracker.org##[class^="pad_"]:last-child      33067 hits

- как-то добавить эти строки (наверно, куда-то в userContent.css или userChrome.css или другой файл)
 
- а далее (при необходимости вычислить и вписать новое правило) как-то использовать inspector - в котором я, опять же, не то чтобы разбираюсь
- но не знаю, насколько это всё реализуемо

Рекомендую посмотреть в сторону uBlock Origin, он же на mozilla. Там весь функционал обоих дополнений (Adblock Plus (2.6.10)      Element Hiding Helper For Adblock Plus (1.3.3))

Farby, у меня цель убрать как можно больше расширений
и при этом добавление новых не хотелось бы рассматривать
 
добавлено позднее:      к тому же, для моего фф-40.0.2, наверно, подошла бы (в лучшем случае) какая-то совсем неновая версия расширения ublock
(которую ещё предстояло бы и искать, и с ноля настраивать)

austri пишет

у меня цель убрать как можно больше расширений

austri пишет

реально ли заменить их оба?

Странно, ну да ладно...

Farby, а ещё "austri пишет":      "при этом добавление новых не хотелось бы рассматривать"
 
(и если цитировать не только удобные кусочки, то тогда получается чуть менее странно, правда?)

austri пишет

там речь о: "Вырезать символы можно только скриптом",      "а могу ли я это как-то протестировать?"

Да говорю же, это контентские дела, нечего с меня взять.
Но если прям неймётся что-то протестировать, вот

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

Выделить код

Код:

(id => {
	var re = /\u2727/g;

	var txt = Node.TEXT_NODE, elm = Node.ELEMENT_NODE;
	var skip = "style,script,textarea,input[type=text],input:not([type])";
	var du = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);

	var repl = node => {
		var ref = node.nodeType;
		if (ref == txt && re.test((ref = node.data))) node.data = ref.replace(re, "");
		else if (ref == elm && !node.matches(skip))
			for(var child of du.getChildrenForNode(node, true)) repl(child);
	}
	var cfg = {subtree: true, childList: true, characterData: true};
	var callback = muts => {
		for(var mut of muts) for(var node of mut.addedNodes)
			node.ownerGlobal.setTimeout(repl, 10, node);
	}
	var unload = e => {
		var win = e.target.ownerGlobal;
		win.removeEventListener("unload", unload);
		win[id].disconnect();
	}
	var start = win => {
		var de = win.document.documentElement;
		repl(de);
		(win[id] = new win.MutationObserver(callback)).observe(de, cfg);
		win.addEventListener("unload", unload);
	}
	var dcl = e => {
		var win = e.target.ownerGlobal;
		win.location.href.startsWith("http") &&
		gBrowser.browsers.indexOf(win.top.document.docShell.chromeEventHandler) != -1 &&
		win.setTimeout(start, 10, win);
	}
	gBrowser.addEventListener("DOMContentLoaded", dcl);
	window.addEventListener("unload", function destroy() {
		window.removeEventListener("unload", destroy);
		gBrowser.removeEventListener("DOMContentLoaded", dcl);
	});
})(Symbol());

в случае убирания расширения "expire history by days" надо:

1) и 2) В оба? Ну, можно и в оба.


3) Почему бы нет.


4) Да. Потренируйся сначала. Впиши типа user_pref("bla.bla.bla", 777);
и смотри, если в about:config такая настройка появилась, значит работает.


5) Нет. Это противоречит всему разговору.


6) Разумно.


7) Бэкап это всегда хорошо. Файлы sqlite-shm и sqlite-wal, даже не знаю.
Если они есть при незапущенном (закрытом) браузере, тогда и их, на всякий случай.

и зачем тогда файл user.js?

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

user_pref("extensions.bonardonet.expire-history-by-days.disable_expiration", true);
user_pref("places.history.expiration.max_pages", 999999);
user_pref("places.history.expiration.transient_current_max_pages", 999999);

Первая — это настройка, которую отслеживает расширение, чтобы установить вторую.
Третья — это настройка, которую устанавливает nsPlacesExpiration как результирующую,
чтобы другие части кода могли ей воспользоваться, а не вычислять заново.

- при наведении курсора дефект пропадает

Да, что-то подобное вижу. Какой-то глюк отрисовки, не знаю что это может быть.
Глюк воспроизводится нестабильно. Вот, попробовал про-hover'ить вкладки хотя бы
при запуске браузера. Вроде чуть получше, но, конечно же, совсем не решение. (это в jsm'ку).

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

Выделить код

Код:

Services.obs.addObserver(function obs(s, topic) {
	Services.obs.removeObserver(obs, topic);
	var win = Services.wm.getMostRecentWindow("navigator:browser");
	win.setTimeout(() => {
		var num = 0, du = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
		(function func(tab) {
			tab && win.setTimeout(func, 20, tab = win.gBrowser.tabs[num++]);
			du.setContentState(tab || win.document.documentElement, 4);
		})(true);
	}, 500);
}, "sessionstore-windows-restored", false);

Но если прям неймётся что-то протестировать, вот

похоже, что с этим символом (u2727) сработало - спасибо
позднее попробую протестировать и на каком-нибудь другом символе (я-то найду, но не факт что совсем скоро)
 
уточнение-1: если другой символ будет называться, допустим, u2828, то можно ли будет его как-то по-простому добавить? например:
вместо строки      var re = /\u2727/g;      сделать что-то типа      var re = /\u2727/u2828/g;            (чтобы не дублировать весь этот код каждый раз)
 
уточнение-2: если название будет не очевидно (как в случае с символом 2727), то где его брать? в инспекторе?
 

Вроде чуть получше, но, конечно же, совсем не решение. (это в jsm'ку)

да, явно получше - с этом кодом пока (за 3-4 запуска браузера) ни одного случая с дефектом, а без кода было, вроде, по 10-11 (или около того)
(и ранее глюк действительно воспроизводился очень нестабильно)
 
добавлено минут через 20: (по поводу дефекта)
таки одна штука проскочила (при очередном запуске лисы) - а вот при ещё следующем снова всё чисто
 
добавлено ещё минут через 50: (по поводу символа)
я нашёл мешающий мне символ 25CF и наугад пробовал заменить      var re = /\u2727/g;      на      var re = /\u2727/u25CF/g;
 
а затем на      var re = /\u2727,u225CF/g;
 
а затем на      var re = /\u2727;u225CF/g;
 
а затем на      var re = /\u2727/g;
                     var re = /\u25CF/g;
 
в итоге: ни 1 вариант не сработал, а работавший изначально u2727 теперь тоже почему-то не срабатывает

austri пишет

вместо строки      var re = /\u2727/g;      сделать что-то типа      var re = /\u2727/u2828/g;

Да, что-то типа, но не так, конечно.
Здесь у тебя вообще нарушение синтаксиса регулярных выражений,
посередине слэш прямой, а, наверно, имелся в виду обратный.


Но, даже если так, это соответствовало бы двум этим символам подряд.
Лучше использовать "или": /\u2727|\u2728/g;

если название будет не очевидно (как в случае с символом 2727), то где его брать?

Да можно, наверно, выделить символ, скопировать, и прямо так, как есть, и вставить.


А можно вставить в код, запустить с консоли, и с ответа забрать последовательность.
"S".toSource(); где S — скопированный символ.


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

работавший изначально u2727 теперь тоже почему-то не срабатывает

этa проблема остаётся актуальнoй и после изменения кода на      var re = /\u2727|\u25CF/g;
да даже при возвращении полностью оригинального кода символ 2727 больше не убирается
(если что, код добавлен в click.js)
после тех моих неудачных попыток прописать второй символ - уже не срабатывает никак (ни если из режима offline страницу обновить, ни если из online)
 
это я что-то сломал случайно? или оно само дико глючит?
как можно попытаться это исправить? (ведь сейчас данный код для убирания символа просто ничего не делает)
 
 
уточняю по поводу кэша (того, который почему-то не может быть выставлен более чем на 1024 mb):
он хранится в этой папке?:      Data\profile\cache2\entries            (у меня там 2138 файлов на 6,24 mb)
 
вот просто инфа:
- вся папка cache2 весит 6,31 mb
- папка      Data\profile\OfflineCache      весит 256 kb
- папка      Data\profile\startupCache      весит 2,51 mb
 
- сам фф пишет в настройках:      your web content cache is currently using 7N9 MB of disk space
- и вот не особо понимаю - 7N9 это 7,9 mb      или      700 с чем-то mb?
    сильно склоняюсь к первому варианту - у меня ж в кэше даже картинок, по идее, нет - просто где-то 60 текстовых вкладок, многие из которых совсем мелкие
 
 
добавлено спустя примерно 6 часов: (по поводу убирания символов)
после очередного запуска браузера:
       - вот на этой странице символы u2727 исчезли (после перевода в online и обновления страницы)
       - а на этой очень похожей странице - символы u2727 не исчезли
       - символы u25CF не исчезли на обеих этих страницах

austri пишет

а на этой очень похожей странице - символы u2727 не исчезли

Странно, они, действительно, прямо близнецы-братья.

символы u25CF не исчезли на обеих этих страницах

Что-то я там не могу найти символы "\u25CF" (●, BLACK CIRCLE).
Но есть похожие — "\u2022" (•, BULLET).

фф пишет в настройках:      your web content cache

Не лучше ли про кэш смотреть на странице about:cache?storage=disk

Не лучше ли про кэш смотреть на странице about:cache?storage=disk

я глянул - пишет:
      Number of entries:     1945
      Maximum storage size:     1048576 KiB
      Storage in use:     7807 KiB
так понимаю, 7-8 mb использовано (из 1024)

Но есть похожие — "\u2022" (•, BULLET)

чуть позднее попробую вписать этот символ (вместо u25cf)
но:

Странно, они, действительно, прямо близнецы-братья

более важно то, что уже впоследствии: снова в обеих страницах этот 2727-символ отображался
то есть, данный код пока совсем не получается подружить с лисой

я попробовал (много часов назад) вписать в код эту строку:      var re = /\u2727|\u2022/g;
и уже ранее не раз запускал лису с данной строкой (код не срабатывал нормально)
 
вот снова только что запустил - и в результате - конкретно на данный момент:
 
вышеупомянутая страница 6067255:
из offline:      u2727 - не видны      u2022 - не видны
из online:      u2727 - видны      u2022 - видны
 
вышеупомянутая страница 6142402:
из offline:      u2727 - видны      u2022 - видны
из online:      u2727 - видны      u2022 - видны
 
в предыдущие разы, то есть, за вчера/сегодня:
как минимум одна из этих страниц начиналa иногда глючить (при нажатии на спойлеры) (в случае, если в названии спойлерa-таки был убран u2022-символ)
 
глюк описать довольно сложно:
- что-то типа дикой задержки перед полной перерисовкoй страницы (около 5-6 секунд)
- и далее показ страницы, но в каком-то "бюджетном" варианте
       (вроде бы части страницы сдвинуты, вроде бы шрифт крупнее, вроде бы спойлеры уже раскрыты,
        в общем, словами передать крайне затруднительно, тем более спустя много часов)
 
a вот прямо при этом текущем запуске лисы такого глюка нет, как нет и каких-либо действий от кода, ответственного за скрытие символа u2727 и u2022
 
(помню, что лет 11-12 назад точно было расширение, позволявшее заменять слова/символы на страницах, и делалось это легко и быстро,
так что я баловался этим недолго, но вскоре снёс, поскольку оно ощутимо затормаживало мою тогдашнюю лису-3.0.5)

austri пишет

код не срабатывал нормально

А я говорил, что не смогу записать задачу, поскольку дела контентские.
Здесь нужен какой-то особый человек, понимающий в таких вещах.

(помню, что лет 11-12 назад точно было расширение, позволявшее заменять слова/символы на страницах, и делалось это легко и быстро,
так что я баловался этим недолго, но вскоре снёс, поскольку оно ощутимо затормаживало мою тогдашнюю лису-3.0.5)

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

А я говорил, что не смогу записать задачу, поскольку дела контентские

спасибо за попытку

Dumby, большое спасибо за помощь по ряду аспектов/проблем:
за какие-то 2 недели мой фф-40 буквально преобразился в лучшую сторону (и визуально - очень неслабо, и функционально - ощутимо)
 
  - конечно, несколько омрачает радость тот факт, что это браузер, а не полностью независимая программа, а это значит, что, например,
какая-нибудь очередная грязная/дегенеративная/бессмысленная история с какими-то "просроченными" сертификатами
способна сильнейшим образом обесценить любой многолетний труд по настройке и доведении до ума программы, полностью зависящей от сети
 
грязно-масштабная история с сертификатами уже была сравнительно недавно - примерно 11 месяцев назад (2021-09-30),
из которой я тогда чудом спасся - и не сразу, а только в начале октября (но пока это спасение только, видимо, на 3 года ровно),
и что будет с октября-2024, я пока предпочитаю просто не думать, чтобы дополнительно нервы не трепать
     
      всё это меня тогда коснулось крайне сильно, а в качестве примера просто упомяну, что обычными страницами ру-трэкера
      пользоваться стало либо тотально невозможно, либо возможно, но с какими-то бешеными усилиями
      (сейчас уже мне тяжеловато вспомнить совсем тонкие детали того несколько-суточного происшествия)
 
 
- что же касается результатов данной форумной темы (на этот момент), то вот как оно всё выглядит:
2022-08-28-06-56-47.png
не то чтобы было плохо до этого, но теперь точно стало явно лучше/удобнее/безопаснее и, возможно, шустрее - всё-таки из 16 расширений были удалены 10
 
- оставшиеся 6 расширений (которые тоже хотелось бы по-максимуму убрать):
      - Adblock Plus (2.6.10)
      - Classic Theme Restorer (1.3.7.1)      (может и есть здесь шансы, но какими-то призрачными они кажутся)
      - Element Hiding Helper For Adblock Plus (1.3.3)
      - Expire History By Days (1.1.1)      (здесь я пока просто не решаюсь что-либо менять)
      - Menu Wizard (2.10)
      - Tab Mix Plus (0.4.1.8)      (здесь, надо полагать, и шансов-то особо нет никаких, тем более с учётом того как данная тема технически помогла упрочить позиции этого расширения)
 
 

28-08-2022 08:19:29
 
 
- я слегка подумываю над тем, чтобы попробовать заменить кодом расширение "menu wizard", но пока не нахожу в себе особых сил даже подступиться к этому:
      в том числе и потому что не знаю, как заменить те немногие комбинации клавиш, прописанные мной в этом расширении,
      например, Show All History (Ctrl+Shift+H), Go Home (Ctrl+D)
 
      ну и помимо этого главное: мне нужна возможность в ручном режиме (с помощью своего кода) полностью управлять пунктами контекстных менюшек
      (в основном это было бы скрытие) (иногда переименование/перемещение),
      и вот не знаю, возможно ли такое, но всерьёз попробовать я бы, конечно, не отказался
 
ситуация несколько упрощается тем, что я в эти недели впервые полностью отказался от контекстных менюшек вкладок,
а контекстных менюшек для bookmarks у меня и так уже годами нет вовсе
 
что касается основного контекстного меню, то там у меня сейчас 8 пунктов,
ну и на подхвате некоторые другие, которые просто отключены с помощью галок в расширении "menu wizard",
и которые - в случае отсутствия этого расширения - хотелось бы, наверно, видеть в главной контекстной менюшке лишь при зажатом Ctrl (или как вариант похуже - Shift)
(так что, как видите, мне в данном направлении много и не надо)
 
 
- я также подумываю о новом пункте основного контекстного меню - "toggle images",
       и даже предварительно подготовил немелкое сообщение по этому вопросу, но пока не тороплюсь размещать
       (хотя бы по причине невысокого приоритета для меня данного функционала,
       который пока так ничем особо и не заменён: после удаления расширения "toolbar buttons")
 
 
- по поводу перенoса своих правил/строк - из двух ad-block-расширений - в css/js/jsm-код (с благой целью удалить затем их оба):
       я ответа получить пока не сумел, но может кто-то ещё и напишет что-то толковое по этому аспекту
       (мне ведь, по сути, из ад-блока нужны только "custom filters", да и то - для начала сгодился бы всего 1 сайт - в качестве тренировки)

austri пишет

заменить кодом расширение "menu wizard", но пока не нахожу в себе особых сил даже подступиться к этому

Ну так нужно же выложить папку s3menuwizard из профиля и предоставить
список пунктов, которые не должны быть скрыты стилем при зажатом Ctrl.
К этому есть какие-то препятствия?

выложить папку s3menuwizard из профиля

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

выложить папку

ссылка в личке

предоставить список пунктов, которые не должны быть скрыты стилем при зажатом Ctrl

предоставить-то можно:
 

скрытый текст
- new            id: menu_newNavigatorTab
- close            id: tm-content-closetab            onCommand: gBrowser.removeCurrentTab();
- information            id: context-viewinfo            onCommand: gContextMenu.viewInfo();
- re-store closed            id: tm-content-undoCloseTab            onCommand: TMP_ClosedTabs.undoCloseTab();
- re-load image            id: context-reloadimage            onCommand: gContextMenu.reloadImage();
 
- save image as            id: context-saveimage            onCommand: gContextMenu.saveMedia();
- copy            id: context-copy
- inspector            id: menuitem_inspector            onCommand: gDevToolsBrowser.selectToolCommand(gBrowser, "inspector");
- console            id: menu_browserConsole            onCommand: HUDService.openBrowserConsoleOrFocus();
 
- inspect element            id: context-inspect            onCommand: gContextMenu.inspectNode();
- customize            id: menu_customizeToolbars
- re-load left            id: tm-reloadLeft            onCommand: gBrowser._reloadLeftTabs(TabContextMenu.contextTab);
- re-load right            id: tm-reloadRight            onCommand: gBrowser._reloadRightTabs(TabContextMenu.contextTab);

но нет же в этом какого-то особого смысла
так как вся идея базируется на возможности всецело редактировать этот будущий код-заменитель для расширения "menu wizard"
 
а если возможность редактировать будет, то тогда и списка-то никакого особо не надо,
так как на данный момент достаточно было бы двух-трёх пунктoв (для примера),
ну и ещё, конечно, понадобилось бы с моей стороны понимание того, как именно нужные мне пункты добавлять/удалять/перемещать/редактировать впоследствии
 
так что предоставленный список не является окончательным (и не может таким быть в принципе)

возможно, данная информация лишней не будет (про нынешние пункты главного контекстного меню)
 
вот все 8 пунктов (активных на данный момент) (при щелчке правой кнопкой на обычном месте страницы):

скрытый текст
- opened            id: tm-tabsList
- closed            id: tm-content-undoCloseList
- pages            id: context-bfmenu
- block            id: abp-menuitem-filters
 
- extensions            id: menu_openAddons
- menu-wizard            id: s3menuwizard_openOptions_toolsmenu            onCommand: s3menuwizard.open_options_window();
- options            id: menu_preferences            onCommand: openPreferences();
- off-line            id: s3mw....menuitem.context-media-eme-learnmore.s3men            onCommand: Services.io.offline = !Services.io.offline

вот все остальные 6 пунктoв (активныx на данный момент):
скрытый текст
- copy address            id: context-copylink            onCommand: gContextMenu.copyLink();
- save link as            id: context-savelink            onCommand: gContextMenu.saveLink();
- image-information            id: context-viewimageinfo            onCommand: gContextMenu.viewImageInfo();
 
- un-do            id: context-undo
- paste            id: context-paste
- delete            id: context-delete

в "menu wizard" cреди всех пяти разделов:
       - firefox
       - menu bar
       - tab context menu
       - main context menu
       - bookmarks toolbar
у меня активен только "main context menu"
 
контекстное меню урл-бара я не смог ни отредактировать, ни убрать,
но убрать хотелось бы - вслед за отсутствующими контекстными менюшками: и самих вкладок, и панели вкладок, и bookmarks-панели

по поводу уже куда более реальной замены моих двух ad-block-расширений на css-код:
пробую сам методом тыка кое-какой совсем новый код (для usercontent.css), и вроде бы что-то получается
 
к этой минуте код пока включает только около 35 строк:

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

Выделить код

Код:

@-moz-document domain(rutracker.org){ 

DIV#logo,            /* rutracker.org##DIV#logo */
DIV.topmenu,            /* rutracker.org##DIV.topmenu */
DIV#main-nav,            /* rutracker.org##DIV#main-nav */
DIV.signature,            /* rutracker.org##DIV.signature */
.poster_info.td1,            /* rutracker.org##.poster_info.td1 */

DIV#thx-block,            /* rutracker.org##DIV#thx-block */
TD.catTitle,            /* rutracker.org##TD.catTitle */
TH.thHead,            /* rutracker.org##TH.thHead */
.txtb,            /* rutracker.org##.txtb */
.poster_btn.td3,            /* rutracker.org##.poster_btn.td3 */

#t-top-user-buttons,            /* rutracker.org###t-top-user-buttons */
A.med:first-child,            /* rutracker.org##A.med:first-child */
.pad_2.hide-for-print,            /* rutracker.org##.pad_2.hide-for-print */
.news_title,            /* rutracker.org##.news_title */
.post-align:last-child,            /* rutracker.org##.post-align:last-child */
.postLink.p-ext-link,            /* rutracker.org##.postLink.p-ext-link */


DIV#page_footer,            /* rutracker.org##DIV#page_footer */
TD.row3.pad_4,            /* rutracker.org##TD.row3.pad_4 */
.small.hide-for-print[style="margin: 8px 4px;"],            /* rutracker.org##.small.hide-for-print[style="margin: 8px 4px;"] */
.small[style="margin: 8px 4px;"],            /* rutracker.org##.small[style="margin: 8px 4px;"] */

SPAN.tor-icon.tor-approved,            /* rutracker.org##SPAN.tor-icon.tor-approved */
SPAN.tor-icon.tor-not-approved,            /* rutracker.org##SPAN.tor-icon.tor-not-approved */
.td2[colspan="2"],            /* rutracker.org##.td2[colspan="2"] */

DIV.spacer_12,            /* rutracker.org##DIV.spacer_12 */
DIV.spacer_4,            /* rutracker.org##DIV.spacer_4 */
DIV.spacer_6,            /* rutracker.org##DIV.spacer_6 */
DIV.spacer_8,            /* rutracker.org##DIV.spacer_8 */

TD[style="padding: 2px 5px 5px;"],            /* rutracker.org##TD[style="padding: 2px 5px 5px;"] */
TD[style="padding: 3px 6px;"],            /* rutracker.org##TD[style="padding: 3px 6px;"] */
TD[style="padding: 6px;"],            /* rutracker.org##TD[style="padding: 6px;"] */
H1.pagetitle            /* rutracker.org##H1.pagetitle */
 
{display: none !important;} }

(закомментированные кусочки в строках справа - это копии строк из ad-block > custom filters, которые оттуда уже убраны)
 
я хотел бы уточнить:      1) нормальный ли это подход?      2) есть ли что-то более оптимальное?      3) есть ли ошибки?
 
4) нельзя ли подобным образом попробовать скрыть и те самые злополучные символы? (u2727, u2022)
      пока что были неудачные пробы наподобие вот этих:

Выделить код

Код:

@-moz-document domain(rutracker.org){ #span.post-b {display: none !important;} }
 
@-moz-document domain(rutracker.org){ #u2727 {display: none !important;} }

(span.post-b был вписан с подачи инспектора, и я совсем не уверен в корректности этой попытки)

austri пишет

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

Ну, когда список есть, его можно просто взять,
иначе надо заморачиваться с его выдумыванием.


Вобщем, попробовал записать набросок симуляции
этого MW-расклада, не знаю насколько похоже получилось.


Сначала "before" брал из конфигурации, а затем подумал,
что так сложнее редактировать, а твоя конепция, насколько я понял,
позволяет просто сбросить белый список пунктов в начало меню
(в порядке размещения в коде).


Да, для пункта «on-line» надо в создающий его код вписать id'шник.
После строки var menuitem = document.createElement("menuitem");
добавить menuitem.id = "context-toggle-offline";

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

Выделить код

Код:

setTimeout((n, css) => {
	var data = {

		"menu_newNavigatorTab": {
			lab: "new",
			ctrl: true
		},
		"tm-content-closetab": {
			lab: "close",
			ctrl: true
		},
		"context-viewinfo": {
			lab: "information",
			ctrl: true
		},
		"tm-content-undoCloseTab": {
			lab: "re-store closed",
			ctrl: true
		},
		"context-reloadimage": {
			lab: "re-load image",
			ctrl: true
		},
		"tm-tabsList": {
			lab: "opened"
		},
		"tm-content-undoCloseList": {
			lab: "closed"
		},
		"context-copylink": {
			lab: "copy address"
		},
		"context-savelink": {
			lab: "save link as"
		},
		"context-saveimage": {
			lab: "save image as",
			ctrl: true
		},
		"context-viewimageinfo": {
			lab: "image-information"
		},
		"context-bfmenu": {
			lab: "pages"
		},
		"context-toggle-offline": {

		},
		"menuitem_inspector": {
			lab: "inspector",
			ctrl: true
		},
		"menu_browserConsole": {
			lab: "console",
			ctrl: true
		},
		"context-inspect": {
			lab: "inspect element",
			ctrl: true
		},
		"abp-menuitem-filters": {
			lab: "block"
		},
		"menu_customizeToolbars": {
			lab: "customize",
			ctrl: true
		},
		"menu_openAddons": {
			lab: "extensions"
		},
		"menu_preferences": {
			lab: "options"
		},
		"tm-reloadLeft": {
			lab: "re-load left",
			ctrl: true,
			oncommand: "gBrowser._reloadLeftTabs(gBrowser.selectedTab);"
		},
		"tm-reloadRight": {
			lab: "re-load right",
			ctrl: true,
			oncommand: "gBrowser._reloadRightTabs(gBrowser.selectedTab);"
		},
		"context-undo": {
			lab: "un-do"
		},
		"context-paste": {
			lab: "paste"
		},
		"context-delete": {
			lab: "delete"
		},
		"context-copy": {
			lab: "copy",
			ctrl: true
		},
	};
	var keys = {

		goHome: {
			key: "D",
			modifiers: "control"
		},
		key_cut: true,
		key_copy: true,
		key_undo: true,
		key_redo: true,
		key_delete: true,
		key_selectAll: true,

		key_find: true,
		key_stop: true,
		key_reload: true,
		showAllHistoryKb: true,
		key_newNavigatorTab: true,
		key_devToolboxMenuItemF12: true,
	};
	var kAttrs = ["key", "keycode", "modifiers"];
	for(var key of document.querySelectorAll("key[id]")) {
		var kData = keys[key.id];
		if (kData) {
			if (typeof kData == "object")
				for(var attr of kAttrs) attr in kData
					? key.setAttribute(attr, kData[attr])
					: key.removeAttribute(attr);
		}
		else key.setAttribute("disabled", true);
	}

	var popup = n("contentAreaContextMenu");
	var attrs = ["key", "accesskey", "acceltext"];
	var remAttrs = elm => attrs.forEach(elm.removeAttribute, elm);

	var ids = [], ctrlIds = [];
	var df = document.createDocumentFragment();
	for(var id in data) {
		var elm = n(id);
		if (!elm) continue;

		var obj = data[id];
		(obj.ctrl ? ctrlIds : ids).push("#" + id);

		remAttrs(elm);
		var br, obs = elm.getAttribute("observes");
		if (obs) br = n(obs), br && remAttrs(br);

		if ("lab" in obj)
			br && br.removeAttribute("label"),
			elm.setAttribute("label", obj.lab);

		obj.oncommand && elm.setAttribute("oncommand", obj.oncommand);

		df.appendChild(elm);
	}
	popup.insertBefore(df, popup.firstChild);

	var ind = 0;
	ids.push("#toolbar-bookmarks-separator", ".bookmark-item");
	for (var arr of [ids, ctrlIds])
		css = css.replace(`%${ind++}%`, arr.join(",\n\t"));

	var attr = "ctrl";
	var url = "data:text/css;charset=utf-8," + encodeURIComponent(css.trim().replace("%ATTR%", attr));
	window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils)
		.loadSheetUsingURIString(url, Ci.nsIDOMWindowUtils.USER_SHEET);

	var ps = e => {
		if (e.target != popup) return;
		var ctrl = e.ctrlKey && !e.shiftKey && !e.altKey;
		if (ctrl ^ popup.hasAttribute(attr)) ctrl
			? popup.setAttribute(attr, true)
			: popup.removeAttribute(attr);
	}
	popup.addEventListener("popupshowing", ps);
	window.addEventListener("unload", function unload() {
		window.removeEventListener("unload", unload);
		popup.removeEventListener("popupshowing", ps);
	});

}, 777, id => document.getElementById(id), `

#contentAreaContextMenu {
	width: 114px !important;
}
#appmenu-popup,
#placesContext,
#tabContextMenu,
#toolbar-menubar,
/*toolbar-context-menu,*/
#urlbar .textbox-contextmenu,
#contentAreaContextMenu > :-moz-any(
	menu, menuitem, menugroup, menuseparator
) {
	display: none;
}
#contentAreaContextMenu > :-moz-any(

	%0%

):not([hidden=true]), #contentAreaContextMenu[%ATTR%] > :-moz-any(

	%1%

):not([hidden=true]) {
	display: -moz-box !important;
}

`);

спасибо за код, который уже почти приговорил расширение "menu-wizard" - нахожусь в процессе разбирательства и тестирования,
ниже перечислю самые заметные для меня вопросы/уточнения (на данный момент):
 
1) по поводу списка "closed": появилась проблема - внизу добавились вот эти 3 строки:      [separator]      Clear Closed Tabs List      Restore All Tabs
как их теперь убрать? a сделать это точно можно: например, у меня в userChrome.css ещё осталось кое-что похожее, но оно для bookmarks-меню:

Выделить код

Код:

.openintabs-menuseparator,      .openintabs-menuitem,      .bookmarks-actions-menuseparator { display: none !important; }

2) ещё одна проблема: отбражается контекстное меню, если кликнуть в мелкую зону (между последним bookmark и url-bar - они на одной строке), меню включает:
      move to menu      remove from toolbar      [separator]
      navigation toolbar      menu bar      bookmarks toolbar      add-on bar      [separator]
      customize

причём при некоторых кликах (в ту мелкую зону) показывается то же меню, но 2 первых пункта и разделитель под ними - деактивированы (эти 3 строчки - серые)
как убрать эту менюшку/менюшки?
 
 
3) число 70 у меня установлено в качестве максимума для списка "closed", поскольку именно 70 (не болeе) влезает по вертикали, и здесь мне хватает 70,
но в списке "opened" иногда бывает более 70 вкладок/строк, и тогда появляются мелкие стрелочки (одна сверху и одна снизу) для прокручивания списка
 
      причём здесь я невероятно давно заприметил глюк (крайне изредка он не проявляется) (и его, конечно, хотелось бы как-то исправить):       
      если довести количество вкладок до 71 (или более), а затем вернуть до 70 (или менее),
      то эти стрелочки уже не исчезают (до перезагрузки браузера) (хотя обязаны), а ведь необходимости в них уже нет,
      и таким образом они даже мешают - как минимум, не дают видеть строку-70 - хотя она уже и могла бы отображаться тоже напрямую (без всяких стрелочек)
 
так вот, основной вопрос здесь такой:      есть ли способ скорректировать отображение содержимого списка "opened" так, чтобы строка-71 (и далее)
показывалась не вертикально внизу (после строки-70), а начинала бы ещё 1 такой же вертикальный список:
 
- расположенный сразу правее от списка, где от 1 до 70 (и в точности до пикселя на том же горизонтальном уровне)
- и уже в нём сразу же были бы видны строки от 71 до 140 (конечно, какие вообще были бы на тот момент)
- более 140 у меня не будет (но если что: от 141 и далее - можно уже обычным стрелочным образом добавлять в низ того же списка, где от 71 до 140)
 
 
 
4) список "opened" у меня всегда сверху (первая строка)   ---   есть ли способ сделать так, чтобы при вызове главного контекстного меню:
 
- происходила мгновенная имитация сдвигания курсора (на 5 пикселей вправо и на 5 вниз), чтобы содержимое важнейшего спиcкa "opened" сразу всегда становилoсь видимым
      (это получилось бы эргономическое улучшение, пусть и нестандартное)
 
- или в качестве менее интересной альтернативы: автоматическое передвигание курсора (видимое) (на 5 пикселей вправо и на 5 вниз) 
      (тоже, чтобы содержимое важнейшего спиcкa "opened" сразу всегда становилoсь видимым)

5) после деактивации расширения menu-wizard появилась проблема с назначенной Ctrl+N (новая вкладка просто теперь не создаётся)
 
в "tab mix plus options > menu > shortcuts" у меня только две активные команды:      open a new tab (Ctrl+N)      reloads the tab (F5)
ещё есть      reloads the tab*      но она неактивна
(так вот, F5 срабатывает, а Ctrl+N не срабатывает)
 
здесь непонятная проблема была и при включенном menu-wizard, поэтому в нём у меня Ctrl+N тоже была активна (в строке "New Tab" - key_newNavigatorTab),
ведь только при таком двойном прописывании и срабатывала Ctrl+N
 
      (проблемa нe воспроизводилась стабильно, поэтому пишу как мне запомнилось:
      изредка Ctrl+N начиналa срабатывать вроде бы именно после удаления, а затем добавления её обратно в "tab mix plus options > menu > shortcuts")
 
ещё в menu-wizard была неактивна такая строка:      "new" - menu_newNavigatorTab_s3mw_hotkey
 
что касается и так срабатывающей F5:      при включенном menu-wizard - в нём было прописано: key_reload (F5)      key_reload2 (пусто)
 
 
6) я увидел малозаметную визуальную проблему (видна только, если активная вкладка about:addons расположена в нижнем ряде вкладок),
суть в нежелательной белой полосе, которая видна как бы сразу под вкладкой "Add-ons Manager":
 
- полоса имеет 1 пиксель в высоту (и 83 в ширину)
- сейчас в "tab mix plus options > tab width":      82 to 82
 
- может быть, подобная полоска есть под любой другой вкладкой (когда она активна), находящейся в нижнем ряде вкладок,
      но там этого всё равно, к счастью, не видно, так как всё белое в любом случае,
     
      а вот внутри особенной вкладки "Add-ons Manager" сразу под нижним рядом вкладок начинается широкая серая зона, 
      из-за которой (внутри которой) эта полоса-83х1 и видна (совсем сверху в данной зоне)
 
- в идеале бы убрать саму полоску, но как?
- или как альтернативный (менее хороший) вариант: как-то побелить фон вкладки "Add-ons Manager":
      речь о том фоне, который, например, сверху, а также слева (там, где пункты:      get add-ons, extensions, appearance, plugins, services)
 
- а совсем уж хорошим выходом была бы возможность открывать Add-ons Manager в дочернем окне (как это когда-то и было),
      и для этого я пробовал (безуспешно) что-то типа этого:      #BrowserAddonsManager { height: 136ex !important; width: 102em !important; }

austri
Хорошо, вот попытка учесть некоторое из сказанного.

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

Выделить код

Код:

setTimeout((n, css) => {
	var data = {

		"menu_newNavigatorTab": {
			lab: "new",
			ctrl: true
		},
		"tm-content-closetab": {
			lab: "close",
			ctrl: true
		},
		"context-viewinfo": {
			lab: "information",
			ctrl: true
		},
		"tm-content-undoCloseTab": {
			lab: "re-store closed",
			ctrl: true
		},
		"context-reloadimage": {
			lab: "re-load image",
			ctrl: true
		},
		"tm-tabsList": {
			lab: "opened"
		},
		"tm-content-undoCloseList": {
			lab: "closed"
		},
		"context-copylink": {
			lab: "copy address"
		},
		"context-savelink": {
			lab: "save link as"
		},
		"context-saveimage": {
			lab: "save image as",
			ctrl: true
		},
		"context-viewimageinfo": {
			lab: "image-information"
		},
		"context-bfmenu": {
			lab: "pages"
		},
		"context-toggle-offline": {

		},
		"menuitem_inspector": {
			lab: "inspector",
			ctrl: true
		},
		"menu_browserConsole": {
			lab: "console",
			ctrl: true
		},
		"context-inspect": {
			lab: "inspect element",
			ctrl: true
		},
		"abp-menuitem-filters": {
			lab: "block"
		},
		"menu_customizeToolbars": {
			lab: "customize",
			ctrl: true
		},
		"menu_openAddons": {
			lab: "extensions"
		},
		"menu_preferences": {
			lab: "options"
		},
		"tm-reloadLeft": {
			lab: "re-load left",
			ctrl: true,
			oncommand: "gBrowser._reloadLeftTabs(gBrowser.selectedTab);"
		},
		"tm-reloadRight": {
			lab: "re-load right",
			ctrl: true,
			oncommand: "gBrowser._reloadRightTabs(gBrowser.selectedTab);"
		},
		"context-undo": {
			lab: "un-do"
		},
		"context-paste": {
			lab: "paste"
		},
		"context-delete": {
			lab: "delete"
		},
		"context-copy": {
			lab: "copy",
			ctrl: true
		},
	};
	var keys = {

		goHome: {
			key: "D",
			modifiers: "control"
		},
		key_newNavigatorTab: {
			key: "N",
			modifiers: "control"
		},
		key_cut: true,
		key_copy: true,
		key_undo: true,
		key_redo: true,
		key_delete: true,
		key_selectAll: true,

		key_find: true,
		key_stop: true,
		key_reload: true,
		showAllHistoryKb: true,
		key_devToolboxMenuItemF12: true,
	};
	var kAttrs = ["key", "keycode", "modifiers"];
	for(var key of document.querySelectorAll("key[id]")) {
		var kData = keys[key.id];
		if (kData) {
			if (typeof kData != "object") continue;

			var sel = `key:not(#${key.id})`;
			for(var attr of kAttrs) {
				if (attr in kData) {
					var val = kData[attr];
					key.setAttribute(attr, val);
					sel += `[${attr}="${val}"]`;
				}
				else
					key.removeAttribute(attr),
					sel += `:not([${attr}])`;
			}
			if (sel.includes("control"))
				sel +=  "," + sel.replace("control", "accel");

			var dupe = document.querySelector(sel);
			if (dupe)
				dupe.setAttribute("key", ""),
				dupe.setAttribute("keycode", "");
		}
		else key.setAttribute("disabled", true);
	}

	var popup = n("contentAreaContextMenu");
	var attrs = ["key", "accesskey", "acceltext"];
	var remAttrs = elm => attrs.forEach(elm.removeAttribute, elm);

	var ids = [], ctrlIds = [];
	var df = document.createDocumentFragment();
	for(var id in data) {
		var elm = n(id);
		if (!elm) continue;

		var obj = data[id];
		(obj.ctrl ? ctrlIds : ids).push("#" + id);

		remAttrs(elm);
		var br, obs = elm.getAttribute("observes");
		if (obs) br = n(obs), br && remAttrs(br);

		if ("lab" in obj)
			br && br.removeAttribute("label"),
			elm.setAttribute("label", obj.lab);

		obj.oncommand && elm.setAttribute("oncommand", obj.oncommand);

		df.appendChild(elm);
	}
	popup.insertBefore(df, popup.firstChild);

	var ind = 0;
	ids.push("#toolbar-bookmarks-separator", ".bookmark-item");
	for (var arr of [ids, ctrlIds])
		css = css.replace(`%${ind++}%`, arr.join(",\n\t"));

	var attr = "ctrl";
	var url = "data:text/css;charset=utf-8," + encodeURIComponent(css.trim().replace("%ATTR%", attr));
	window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils)
		.loadSheetUsingURIString(url, Ci.nsIDOMWindowUtils.USER_SHEET);

	var openTabList = () => {
		var list = n("tm-tabsList");
		var popup = list.menupopup;

		popup.setAttribute("onpopupshowing", popup.getAttribute("onpopupshowing") + " hps();");
		popup.hps = () => {
			var max = screen.height - 8, mp = max + "px";
			var box = popup.firstChild.boxObject.parentBox;
			var bo = box.boxObject, bs = box.style;
			(popup.hps = () => {
				if (box.wh)
					box.wh = false,
					bs.removeProperty("width"),
					bs.removeProperty("height");

				if (bo.height <= max) return;

				box.wh = true;
				bs.setProperty("height", mp, "important");
				var lbo = popup.lastChild.boxObject;
				var w = lbo.screenX + lbo.width - bo.screenX;
				bs.setProperty("width", w + "px", "important");
			})();
		}
		var bo = list.boxObject;
		var open = bo.openMenu.bind(bo, true);
		(openTabList = () => requestAnimationFrame(open))();
	}
	var ps = e => {
		if (e.target != popup) return;
		var ctrl = e.ctrlKey && !e.shiftKey && !e.altKey;
		if (ctrl ^ popup.hasAttribute(attr)) ctrl
			? popup.setAttribute(attr, true)
			: popup.removeAttribute(attr);

		openTabList();
	}
	popup.addEventListener("popupshowing", ps);
	window.addEventListener("unload", function unload() {
		window.removeEventListener("unload", unload);
		popup.removeEventListener("popupshowing", ps);
	});

}, 777, id => document.getElementById(id), `

#contentAreaContextMenu {
	width: 114px !important;
}
#appmenu-popup,
#placesContext,
#tabContextMenu,
#toolbar-menubar,
#toolbar-context-menu,
#urlbar .textbox-contextmenu,

#tm-content-undoCloseList-menu > menuseparator,
#tm-content-undoCloseList-menu > menuseparator ~ *,
#tm-tabsList-menu > menuitem > .menu-accel-container,

#contentAreaContextMenu > :-moz-any(
	menu, menuitem, menugroup, menuseparator
) {
	display: none;
}
#contentAreaContextMenu > :-moz-any(

	%0%

):not([hidden=true]), #contentAreaContextMenu[%ATTR%] > :-moz-any(

	%1%

):not([hidden=true]) {
	display: -moz-box !important;
}

#tm-tabsList-menu .scrollbox-innerbox {
	display: flex !important;
	flex-direction: column !important;
	flex-wrap: wrap !important;
}
#tm-tabsList-menu > menuitem {
	margin-right: 0 !important;
	box-shadow: none !important;
}

`);

суть в нежелательной белой полосе, которая видна как бы сразу под вкладкой "Add-ons Manager"

Не вижу.

а совсем уж хорошим выходом была бы возможность открывать Add-ons Manager в дочернем окне

Можно попробовать подменить BrowserOpenAddonsMgr().
Как бы это что-нибудь не сломало, надо присмотреться.

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

Выделить код

Код:

window.BrowserOpenAddonsMgr = function BrowserOpenAddonsMgr(aView) {
	var win = Services.wm.getMostRecentWindow("Addons:Manager");
	win ? win.focus(aView && win.loadView(aView)) : win = openDialog(
		"chrome://mozapps/content/extensions/extensions.xul", "",
		"chrome,menubar,extra-chrome,toolbar,dialog=no,resizable", {
			get view() {
				win.document.documentElement.setAttribute(
					"persist", "width height screenX screenY sizemode"
				);
				delete this.view;
				return this.view = aView || "addons://list/extension";
			}
		}
	);
}

вот попытка учесть некоторое из сказанного

благодарю за попытку, которая по первым тестированиям выглядит изумительной:
- пункт-1:      3 нежелательные строки исчезли
- пункт-2:      нежелательное контекстное меню теперь там не отображается
 
- пункт-3 (часть-1):      исправление глюка проверить не представляется возможным технически, но это нормально, 
                                     так как теперь сама реализация списка "opened" не предусматривает условий для появления этого глюка
 
- пункт-3 (часть-2):      а это, собственно, и есть новая реализация списка "opened", которая выглядит потрясающе,
                                     и я ещё даже специально проверил, как выглядит список после строки-140, и могу сказать, что это самый лучший вариант (без стрелок)
 
      в общем, стало значительно удобнее, так как все вкладки всегда теперь везде видны:
 
      - никогда не вернусь на однострочный вариант панели вкладок (который с горизонтальным скролом влево-вправо)
      - стало гораздo больше свободы - можно при особой необходимости открыть хоть 207 вкладок (и даже это не предел), и при этом они все будут сразу видны:
         и на панели вкладок (я выставил максимум 9 рядов по 23 вкладки), и в списке "opened" (тут 210 вкладок точно влезают, а то и даже 280)
 
- пункт-4 (имитация сдвигания курсора):      это как бы продолжение пункта-3 (части-2), и там по данному пункту-4 уже вроде всё сказано
                                                                 (можно разве что упомянуть, что пока ощущается довольно непривычно, но мне всё равно так больше нравится)
 
- пункт-5:      по нажатию на Ctrl+N новая вкладка теперь создаётся, хотя я вчера и пробовал сам добавлять в код строку
                     key_newNavigatorTab: { key: "N", modifiers: "control" },        но тогда она не сработала (наверно, ты в коде исправил что-то ещё)
 
вот так у меня сейчас выглядит начало этого нового кода - пока побудет в таком виде (который очень похож на готовый вариант):

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

Выделить код

Код:

setTimeout((n, css) => {
	var data = {
"tm-tabsList": { lab: "opened" },
"tm-content-undoCloseList": { lab: "closed" },
"context-bfmenu": { lab: "pages" },
"menuitem_inspector": { lab: "inspector" },
"menu_openAddons": { lab: "extensions" },
"menu_preferences": { lab: "options" },
"context-toggle-offline": {  },
"context-copylink": { lab: "copy address" },
"context-savelink": { lab: "save link as" },
"tm-content-undoCloseTab": { lab: "re-store closed", ctrl: true },
"tm-reloadLeft": { lab: "re-load left", ctrl: true, oncommand: "gBrowser._reloadLeftTabs(gBrowser.selectedTab);" },
"tm-reloadRight": { lab: "re-load right", ctrl: true, oncommand: "gBrowser._reloadRightTabs(gBrowser.selectedTab);" },
"context-reloadimage": { lab: "re-load image", ctrl: true },
"context-saveimage": { lab: "save image as", ctrl: true },
"context-viewimageinfo": { lab: "image-information" },
"context-viewinfo": { lab: "information", ctrl: true },
/* "abp-menuitem-filters": { lab: "block" }, */
"context-inspect": { lab: "inspect element", ctrl: true },
"menu_browserConsole": { lab: "console", ctrl: true },
"menu_customizeToolbars": { lab: "customize", ctrl: true },
"menu_newNavigatorTab": { lab: "new", ctrl: true },
"tm-content-closetab": { lab: "close", ctrl: true },
"context-undo": { lab: "un-do" },
"context-paste": { lab: "paste" },
"context-delete": { lab: "delete" },
"context-copy": { lab: "copy", ctrl: true },
	};
	var keys = {

мелкое уточнение на будущее (на всякий случай):      расширение menu-wizard у меня будет точно удалено уже очень скоро,
      и если мне понадобится добавить (в размещённый чуть выше код) какую-то совсем другую команду, которая в menu-wizard была,
      то где брать информацию по этой команде? то есть, информацию по типу:      "tm-tabsList"      или "context-bfmenu"      или "context-viewimageinfo"
 
 

01-09-2022 19:27:47
 
 
- пункт-6:     

Можно попробовать подменить BrowserOpenAddonsMgr()

попробовал - открывается новое полноэкранное фф-окно "about:addons":
я ожидал, что оно будет не полноэкранным, но так тоже вполне нормально (точно лучше, чем было)

Как бы это что-нибудь не сломало, надо присмотреться

за первые минуты я сломанного ничего не заметил (есть ли что-то более-менее конкретное, к чему бы мне стоило присматриваться?)

Не вижу

вот 2 скрина:
1.
2022-09-01-17-45-39.png
2.
2022-09-01-17-47-55.png
 
на первом смотреть надо сразу под синие символы "Add-ons Man..." (это последняя вкладка),
а второй скрин - это тоже самое, но просто сильно увеличенное в размере (то есть, много-много zoom'а)
 
причём на втором скрине ещё и хорошо виден тот самый (полуисправленный ранее) визуальный дефект:
- тонкая вертикальная полоска сразу перед символами "Add-ons Man..."
- на этот раз полоска не красная (как это было ранее в десятках/сотнях случаев), а вроде синяя
 
 
мои соображения по поводу подмены BrowserOpenAddonsMgr():
- оставить как есть, наверно, можно было бы (хотя фраза "что-нибудь не сломало", конечно, добавляет беспокойства)
 
- но если можно убрать эту белую полоску (под вкладкой "Add-ons Manager")
   (и, вероятно, не только под ней, а и везде под нижним рядом вкладок - в случае, если вкладка активна), то было бы здорово
 
может это "classic theme restorer" что-то своё привносит?
пожалуста, дай знать, если тебе вдруг по силам было бы попробовать заменить кодом и весь "classic theme restorer" тоже,
и тогда скину тебе в личку нужные файлы (пока не понимаю, какие именно нужны - соответствующей папки я сходу не нашёл)

austri пишет

мелкое уточнение на будущее (на всякий случай):      расширение menu-wizard у меня будет точно удалено уже очень скоро,
      и если мне понадобится добавить (в размещённый чуть выше код) какую-то совсем другую команду, которая в menu-wizard была,
      то где брать информацию по этой команде? то есть, информацию по типу:      "tm-tabsList"      или "context-bfmenu"      или "context-viewimageinfo"

Вроде я уже предлагал завести копию фф для специальных нужд.
Вот в ней menu-wizard и не удаляй. Если приспичит «мне понадобится»,
тогда запустил, посмотрел, закрыл. Ну, если ресурсы железа позволяют такое, конечно.

попробовал - открывается новое полноэкранное фф-окно "about:addons":
я ожидал, что оно будет не полноэкранным

Полноэкранное? Типа full screen? (как BrowserFullScreen(), F11 в немодифицированном фф).
Нет, такого быть не должно, да и не может.


Наверно имеется в виду развёрнутое (maximized).
Тогда нормализируй (сверни в окно), сделай ресайз окна какой нужно, расположи его как надо.
Я специально вписал "persist" в код, таким образом, при следующем вызове этого окна,
оно должно открыться с таким же размером и позицией.

смотреть надо сразу под синие символы "Add-ons Man..." (это последняя вкладка)

Да верю я что у тебя так оно и есть.
«Не вижу» — это было не сетование на проблемы со зрением,
а то, что у меня этот феномен не наблюдается как таковой,
а значит и предложить что-либо полезное не могу.

завести копию фф для специальных нужд

копий браузера-то завались (десятки) (за годы от 2015 по 2022), но у меня нет опыта запуска копии лисы (при наличии основной),
пытаюсь сказать, что просто опасаюсь (видимо, по-дилетантски), что копия мне чего-то напортит в основном профиле
(я и в профилях-то не разбираюсь - всегда в одном сижу)
 
ведь фф-portable на самом деле псевдо-portable (в каком-то смысле), поскольку реальный честный portable - это когда всё в одной папке,
а он ведь изначально создал (сам) (без разрешения) как минимум вот эту папку:
C:\Documents and Settings\Administrator\Application Data\Mozilla      а она у меня, вообще-то, даже на другом диске
 
 
впрочем, с 2022 у меня имеется в наличии и другой лисоподобный браузер (запасной)
(недонастроенный толком, ибо не поддаётся до конца) (но крайне похож на мой основной фф)
 
в нём и пишу сейчас - форум вот его видит как "UA: Firefox 68.0", хотя это и не фф
и у этого почему-то аж 2 названия, но оба не фф (в процессах - одно-название.ехе) (в панели задач - другое название),
вот в нём "menu-wizard", видимо, придётся и оставить
 
и к слову - этот "68.0" тоже типа портабельный - и вот он не поскромничал как мой основной фф-40:
этот запасной браузер скинул (тоже на другой диск) сразу целую кучу всего:
- 257 files, 213 folders:      149 mb
- в папку C:\Documents and Settings\Administrator\Application Data\вот-сюда\
- а сам-то он "портабелится" на диске D

Полноэкранное? Типа full screen?

прошу прощения - я имел в виду как бы развёрнутое - ну то есть, занимающее весь экран (кроме панели задач)

а то, что у меня этот феномен не наблюдается как таковой

я понял - спасибо, что прояснил - тогда получается, что всё несколько хуже, чем я думал,
поскольку совсем непонятна причина наличия этой белой полоски

1. небольшой вопрос - можно ли кодом добиться такой мелочи?:
- автоматическое проставление курсора при каждой загрузке этой страницы
- вот в эту её часть:      input#text_match_input.post
 
2. накопилось немножко наблюдений/уточнений по поводу ранее обсуждавшихся мусорных символов на страницах:

через "Панель управления" открыл окно "Шрифты"
и притащил туда (от балды) seguisym.ttf (Segoe UI Symbol) из Windows 7.
Возвращаюсь в браузер, и, вуаля, вместо прямоугольников отображаются звёздочки.
Тогда может тебе стоит просто шрифт какой-нибудь поставить

я это пробовал дня 4 назад - не прокатило - ну не очень-то и хотелось,
ведь цель не заполучить звёздочки (вместо прямоугольников) или какие-то другие бессмысленные символы,
а просто нарыть ручной способ, позволяющий убирать (с помощью кода) любой подобный символ во всех его копиях

Конечно они видны. Но не DOM-дерево. Посетил страницу, и мне видно,
что эти символы — просто текстовые ноды
и ни в какой свой отдельный <span> каждая из них не завёрнута.
Не знаю, может у тебя другой расклад отображается

в первой из двух ранее упоминавшихся страниц
символ-2727 (в его первых трёх случаях - и в последнем 11-м) имеет в инспекторе вот это:
 
span.post-font-serif1 > span:nth-child(1) > span:nth-child(11) > span:nth-child(25)
span.post-font-serif1 > span:nth-child(1) > span:nth-child(11) > span:nth-child(29)
span.post-font-serif1 > span:nth-child(1) > span:nth-child(11) > span:nth-child(33)
span.post-font-serif1 > span:nth-child(1) > span:nth-child(11) > span:nth-child(65)
 
и скрытие срабатывает:      через код   @-moz-document domain(rutracker.org)   ...   display: none !important
причём даже и в таком кратком варианте этих четырёх строк:
span:nth-child(25),
span:nth-child(29),
span:nth-child(33),
span:nth-child(65)
 
но тогда во второй ранее упоминавшeйся странице
ошибочно скрывается название первой песни ("01 - Rette sich wer kann"), размещённое там сразу за тамошним первым символом-2727,
поскольку у этого названия совпадает номер: (25)
ну а сам инспектор здесь пишет чуть другое:      span.p-color:nth-child(25)
 
в этой второй странице символ-2727 (в его первых трёх случаях - и в последнем 13-м) имеет в инспекторе вот это:
span:nth-child(24)
span:nth-child(27)
span:nth-child(30)
span:nth-child(60)
 
могут ли найтись в инспекторе ещё какие-то зацепки? (более уникальные) (вместо этих простых числовых, часто совпадающих)
 
я вот тут читал немножко, но не сказать, чтобы как-то помогло

austri пишет

- автоматическое проставление курсора при каждой загрузке этой страницы
- вот в эту её часть:      input#text_match_input.post

Негде мне взять «эту страницу», говорил же, рутрекер мне показывает фигу.
Можно так попробовать, нет так нет.


Да, если код подмены BrowserOpenAddonsMgr() оставил,
то надо добавить точку с запятой в самый конец кода,
сразу после последней закрывающей скобки, вот так: };
а то будет нестыковка, если следующий код пойдёт в обёртке.

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

Выделить код

Код:

(() => {
	var focus = inp => {
		inp.focus();
		var br = inp.ownerGlobal.top.document.docShell.chromeEventHandler;
		if (br != gBrowser.selectedBrowser) br._urlbarFocused = false;
	}
	var pageshow = e => {
		var doc = e.target;
		if (doc.location == "https://rutracker.org/forum/search.php") {
			var input = doc.querySelector("input#text_match_input.post");
			input && setTimeout(focus, 500, input);
		}
	}
	gBrowser.addEventListener("pageshow", pageshow);
	window.addEventListener("unload", function unload() {
		window.removeEventListener("unload", unload);
		gBrowser.removeEventListener("pageshow", pageshow);
	});
})();

могут ли найтись в инспекторе ещё какие-то зацепки?

Ну он же показывает атрибуты, значит могут, если есть.
Я вот для этих двух страниц, например, так написал. Вроде работает.

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

Выделить код

Код:

@-moz-document regexp("https://rutracker\\.org/forum/viewtopic\\.php\\?t=(?:6142402|6067255)") {
	.row1 .post_body > :first-child > :first-child > :first-child > :last-child > var:last-of-type ~ span[style*="line-height"] {
		display: none !important;
	}
}

Можно так попробовать, нет так нет

получилось сразу - и за эту мелочь тоже благодарю - она мне сэкономит гигантское количество кликов по этой строке поиска,
которая почему-то не имеет фокуса (при загрузке этой страницы)   ---   видимо, там это не продумали

input && setTimeout(focus, 500, input);

- я изменил 500 на 5, а затем и вовсе на 0   ---   и мне 0 нравится больше всего (да, я каким-то чудом вижу разницу между 5 и 0)
- не страшно ли, если я 0 и оставлю? (могут ли быть какие-то плохие нюансы/последствия?)
 

если код подмены BrowserOpenAddonsMgr() оставил

да, оставил, так как с ним мне удобнее   ---   ну и дефектную белую полоску не видно (ей при таком раскладе негде показаться)
 
и ещё это новое отдельное окно выглядит симпатично, правда, глаза б мои его не видели - ведь так неплохо было бы вовсе без расширений,
но, к сожалению, всё идёт к тому, что сколько-то вынужденно останется   ---   вот из изначальных 16 штук список выживших к данному моменту:
      - Classic Theme Restorer (1.3.7.1)
      - Expire History By Days (1.1.1)      (посматриваю на него всё более алчно)
      - Tab Mix Plus (0.4.1.8)      (который в эти недели обзавёлся у меня недурной бронёй)
 
а вот эти трое уже, по сути, не жильцы (так, по инерции висят пока в отключке):
      - Adblock Plus (2.6.10)
      - Element Hiding Helper For Adblock Plus (1.3.3)
      - Menu Wizard (2.10)
 
по поводу этих двух ад-блоков я, наверно, как-нибудь в другой раз сформулирую просьбу дать мне совет,
a пока что просто упомяну, что вот этот скромный код мне уже позволил на 99% забыть об ад-блоках (но этот 1% пока что держу в уме крепко):

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

Выделить код

Код:

@-moz-document domain(rutracker.org){ 
#ped-editor,      /* rutracker.org###ped-editor */
#t-top-user-buttons,      /* rutracker.org###t-top-user-buttons */
.news_title,      /* rutracker.org##.news_title */
.pad_2.hide-for-print,      /* rutracker.org##.pad_2.hide-for-print */

/*.post-align:last-child,*/      /* rutracker.org##.post-align:last-child */
a.postLink,      /* new line (not from ad-block) (instead of      .post-align:last-child) */

.poster_btn.td3,      /* rutracker.org##.poster_btn.td3 */
.poster_info.td1,      /* rutracker.org##.poster_info.td1 */
.postLink.p-ext-link,      /* rutracker.org##.postLink.p-ext-link */
.small.hide-for-print[style="margin: 8px 4px;"],      /* rutracker.org##.small.hide-for-print[style="margin: 8px 4px;"] */
.small[style="margin: 8px 4px;"],      /* rutracker.org##.small[style="margin: 8px 4px;"] */
.td2[colspan="2"],      /* rutracker.org##.td2[colspan="2"] */
.topic.hide-for-print,      /* rutracker.org##.topic.hide-for-print */
.topic.w100,      /* rutracker.org##.topic.w100 */
.tRight,      /* rutracker.org##.tRight */
.txtb,      /* rutracker.org##.txtb */
A.med:first-child,      /* rutracker.org##A.med:first-child */

DIV#logo,      /* rutracker.org##DIV#logo */
DIV#main-nav,      /* rutracker.org##DIV#main-nav */
DIV#page_footer,      /* rutracker.org##DIV#page_footer */
DIV#thx-block,      /* rutracker.org##DIV#thx-block */
DIV.signature,      /* rutracker.org##DIV.signature */
DIV.spacer_12,      /* rutracker.org##DIV.spacer_12 */
DIV.spacer_4,      /* rutracker.org##DIV.spacer_4 */
DIV.spacer_6,      /* rutracker.org##DIV.spacer_6 */
DIV.spacer_8,      /* rutracker.org##DIV.spacer_8 */
DIV.topmenu,      /* rutracker.org##DIV.topmenu */

H1.pagetitle,      /* rutracker.org##H1.pagetitle */
SPAN.tor-icon.tor-approved,      /* rutracker.org##SPAN.tor-icon.tor-approved */
SPAN.tor-icon.tor-not-approved,      /* rutracker.org##SPAN.tor-icon.tor-not-approved */

TD.catTitle,      /* rutracker.org##TD.catTitle */
TD.row3.pad_4,      /* rutracker.org##TD.row3.pad_4 */
TD[style="padding: 2px 5px 5px;"],      /* rutracker.org##TD[style="padding: 2px 5px 5px;"] */
TD[style="padding: 3px 6px;"],      /* rutracker.org##TD[style="padding: 3px 6px;"] */
TD[style="padding: 6px;"],      /* rutracker.org##TD[style="padding: 6px;"] */
TH.thHead,      /* rutracker.org##TH.thHead */
TD.nav.w100[style="padding-left: 8px;"],      /* rutracker.org##TD.nav.w100[style="padding-left: 8px;"] */

DIV#nav-panel,      /* rutracker.org##DIV#nav-panel */
.row5.tCenter[style="padding: 6px 4px 8px;"]      /* rutracker.org##.row5.tCenter[style="padding: 6px 4px 8px;"] */
{display: none !important;} }


чую, что вот этим экземпляром - "Classic Theme Restorer" - можно было бы (и нужно было бы) попробовать заняться всерьёз,
но ты энтузиазма не проявил (наверно, потому что очень сложно было бы, если вообще возможно), а я настаивать не имею права
 
а заменить кодом "Tab Mix Plus" - это и вовсе, надо полагать, unreal
(хотя если что, и этим я бы не против был бы позаниматься - не сейчас, так потом как-нибудь)
 
 
к слову о "неплохо было бы вовсе без расширений":
      убирание этих двух ад-блоков сразу привело к уменьшению потребления памяти (браузером) почти вдвое: было ~300, стало ~190
 
к слову об "уменьшении потребления памяти":
      твой спасительный код (тот, который заставляет лису грузиться в режиме "off-line")
      сократил потребление памяти (браузером) втрое: было ~900 (жиреющие по ходу дела где-то до 1100-1200), стало ~300
 

надо добавить точку с запятой в самый конец кода

ок, добавил в самый конец BrowserOpenAddonsMgr-кода
 

Я вот для этих двух страниц, например, так написал. Вроде работает

- у меня это никак ничего не дало - все 2727-символы на месте (на обеих страницах)
- код добавлял в userContent.css (затем на всякий случай пробовал и userChrome.css)

austri пишет

не страшно ли, если я 0 и оставлю?

Хмм, действительно, можно, наверно, даже вообще без таймаута
input && focus(input);
Просто у меня, при запуске браузера, на активной странице с input'ом не срабатывало.
А оказалось — это сайдбар фокус уводит, что для тебя, полагаю, неактуально.

но ты энтузиазма не проявил

Да вроде какого-то особого разговора про CTR не припомню,
а вот про MW ты целый аналитический трактат выдал.


Копаться в настройках CTR, чтобы вычислить что он делает именно для тебя,
довольно заморочно. Впрочем, попробовал его выключить, а затем подогнать
чтобы на двух тулбарах выглядело похоже как с включённым.
Ну как-то так. Не знаю насколько получилось, и достаточо ли этого.

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

Выделить код

Код:

/* === Nav Bar === */

#urlbar-container {
	min-width: 33ch !important;
}
#back-button,
#PanelUI-button,
#urlbar-container toolbarbutton {
	display: none !important;
}
#urlbar-wrapper {
	clip-path: none !important;
	margin-left: 2px !important;
}
#nav-bar {
	border-color: transparent !important;
}
#navigator-toolbox:not([customizing]) #nav-bar-customization-target {
	-moz-padding-end: 3px !important;
	-moz-margin-end: -3px !important;
}


/* === Tab Bar === */

#TabsToolbar {
	margin-top: 1px !important;
	-moz-box-ordinal-group: 100 !important;
}
#tabbrowser-tabs > arrowscrollbox > scrollbox {
	padding: 0 2px !important;
}
#tabbrowser-tabs > hbox > .tab-drop-indicator {
	margin-bottom: 0 !important;
}

tab.tabbrowser-tab {
	height: 21px !important;
}
tab.tabbrowser-tab[selected] .tab-label {
	color: #7a8bde !important;
}
tab.tabbrowser-tab * {
	min-height: 0 !important;
	background: unset !important;
}
tab.tabbrowser-tab::after,
tab.tabbrowser-tab *::after,
tab.tabbrowser-tab::before,
tab.tabbrowser-tab *::before,
tab.tabbrowser-tab .tab-background-end,
tab.tabbrowser-tab .tab-background-start {
	display: none !important;
}
tab.tabbrowser-tab .tab-background-middle {
	margin: 0 !important;
	border: 0 !important;
}

Не знаю насколько получилось, и достаточо ли этого

из нехорошего я сразу заметил появившуюся стрелку вниз (с краю справа в панели вкладок - в первых двух рядах) (всего сейчас там 3 ряда):
эта стрелка заграбастала место в данной панели и сдвинула вперёд вкладки - на 2 штуки
 
при нажатии на стрелку появляется неудобный список вкладок (без номеров) и с тремя строками сверху:
- Tab Groups (Ctrl+Shift+ какой-то символ, не влезший почему-то - по горизонтали)
- Undo Close Tab
- [separator]
 
не успев толком огорчиться, я залез в options, и вот здесь убрал галку:      tab mix plus options > display > tab bar > show on tab bar > all tabs button
и это решило проблему - стрелка исчезла (все вкладки вернулись на свои места, ну или почти вернулись - об этом ниже)
 
 
чуть позднее я заметил ещё одну проблему:
вертикальный скрол-бар теперь не доходит до низа экрана, а обрывается примерно за 14 пикселей до нижнего правого угла экрана
(под ним теперь кусочек страницы, и если там нажать правой кнопкой, то показывается контекстное меню)
то есть, все части скрол-бара на месте, просто выглядит он чуть более коротким (что, конечно, плохо)
 
 
ещё одно наблюдение:
при левом клике в самый верхний правый угол - ранее ставился курсор в начале урл-бара, а теперь не ставится,
то есть, видимо: что-то где-то чуть-чуть сдвинулось (при этом визуально в этой зоне вроде всё норм)
 
вдогонку сюда же:      теперь названия многих вкладок содержат в конце на 1 символ меньше, что как бы совсем нехорошо (я проверил - tab width не сбился: 82-82)
(возможно, решение этой проблемы потянуло бы за собой и решение каких-то других упомянутых нехороших моментов)
 
пробное убирание из кода первой строки   ---   #urlbar-container { min-width: 33ch !important; }   ---   вроде ничего не меняет
 
у некоторых вкладок теперь видна та самая красная полоска (дефектная) (вертикальная), и она не убирается даже при наведении курсора:
этот дефект снова воспроизводится нестабильно
 
ещё одно наблюдение (совсем ерундовое, но хотя бы упоминания стоит):      в пункте "closed" стало 57 строк (было 70, и должно быть 70)
и не знаю, связано ли это с отключенным classic theme restorer, так как подобное точно бывало и ранее       (после его включения: 57 так и осталось)

austri пишет

сразу заметил появившуюся стрелку вниз

У меня она всегда была с тех пор как завёл эту лису
и профиль с предоставленными настройками и расширениями.

вертикальный скрол-бар теперь не доходит до низа экрана, а обрывается примерно за 14 пикселей до нижнего правого угла экрана

Как-то не очень понятно.
Может это галка «General UI (1)» —> «[✔] Hide Resizer (Windows XP)» из CTR?
Если так, то нужен AGENT_SHEET, причём через nsIStyleSheetService, то есть код в Services.jsm

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

Выделить код

Код:

(css => {
	var url = "data:text/css;charset=utf-8," + encodeURIComponent(css.trim());
	var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
	sss.loadAndRegisterSheet(Services.io.newURI(url, null, null), sss.AGENT_SHEET);
})(`

@namespace html url(http://www.w3.org/1999/xhtml);
@namespace xul url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);

html|html xul|resizer {
	display: none !important;
}

`);

при левом клике в самый верхний правый угол - ранее ставился курсор в начале урл-бара, а теперь не ставится,
то есть, видимо: что-то где-то чуть-чуть сдвинулось

Тут бы хорошо какую-нибудь более точную геометрию услышать.
Возможно хватит добавить
#urlbar .textbox-input-box {
    margin: 0 !important;
}

названия многих вкладок содержат в конце на 1 символ меньше, что как бы совсем нехорошо (я проверил - tab width не сбился: 82-82)

86 же вроде было.
Но да, отрицательный margin на конце tab-label'а изменился, непонятно почему.
Его как-то TMP вычисляет. Можно вернуть прежний.
tab.tabbrowser-tab .tab-label {
    -moz-margin-end: -7px !important;
}
Да, кстати, неплохо ещё и это добавить.
Заметил, что если вкладок только на один ряд, то они получаются больше 21px.
#tabbrowser-tabs {
    min-height: 21px !important;
}

у некоторых вкладок теперь видна та самая красная полоска (дефектная) (вертикальная), и она не убирается даже при наведении курсора

Если увижу, попробую ещё потыкать, раз не убирается.
Хотя, я склоняюсь к тому, что это глюк системы. Наткнулся на похожий.
Воспроизводится стабильно.


STR: Создаём ярлык, Объект: C:\WINDOWS\NOTEPAD.EXE -bla
Открываем ярлык на редактирование, ставим курсор между «-» и «bla»,
и добавляем ещё один или несколько минусов (то есть: -------bla).


AR: Между минусами появляется вертикальная рыжая полоска.

в пункте "closed" стало 57 строк (было 70, и должно быть 70)

У меня осталось 70.
В смысле значение настройки browser.sessionstore.max_tabs_undo

У меня она всегда была с тех пор как завёл эту лису
и профиль с предоставленными настройками и расширениями

ты, наверно, смотрел мои скрины и обращал внимание на то, что в них никакой подобной стрелки нет

Если так, то нужен AGENT_SHEET, причём через nsIStyleSheetService, то есть код в Services.jsm

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

У меня осталось 70

- у меня      browser.sessionstore.max_tabs_undo      тоже сейчас 70
- так понимаю, что в какие-то редкие моменты некий глюк приводит к сокращению этого списка "closed"
      (иногда там вроде и вовсе раз в 5 сокращалось количество строк)
 
      но затем какое-то время (как правило, очень долгое) всё нормально - этот список просто дополняется до 70,
      и 70 держатся до следующей глючной самоподчистки (которая может не наступать неделями - сложно сказать точнее)
 
      вот сейчас я закрыл две новые вкладки, и там теперь не 57, а 59

Тут бы хорошо какую-нибудь более точную геометрию услышать

у меня в лисе клик в самый верхний правый угол - это клик в крайнюю точку экрана (координаты: 1920 на 1)
(это видно на моих полноэкранных скринах - они все 1920 на 1200)
 

Возможно хватит добавить      #urlbar .textbox-input-box { margin: 0 !important; }

добавил - при левом клике в самый верхний правый угол: курсор в начале урл-бара теперь снова ставится (как и до деактивации CTR)

86 же вроде было

да - но это было уже достаточно давно - вот в сообщении от 31-08-2022 07:55:58 я писал:     
- сейчас в "tab mix plus options > tab width":      82 to 82
 
строка      tab.tabbrowser-tab .tab-label { -moz-margin-end: -7px !important; }      вроде бы явно помогает:
как минимум вот этого теперь нет:      "названия многих вкладок содержат в конце на 1 символ меньше"
 
строка      #tabbrowser-tabs { min-height: 21px !important; }      вроде бы только добавляет проблем, например:
в самом конце первого ряда вкладок отчётливо теперь видна эта дефектная красная вертикальная полоска,
а также она видна и в некоторых других вкладкax (например, как минимум в 4-5 вкладках, завершающих первый ряд)
(не убираются наведением курсорa)
      (пока я эту строку деактивировал   ---   пробные 20px или 22px к чему-то хорошему тоже не привели)
 
 
теперь, похоже, каждый раз первая вкладка имеет эту красную полоску в начале (8 вертикальных пикселей перед названием)

Хотя, я склоняюсь к тому, что это глюк системы

- так а почему тогда при включенном CTR этот глюк проявляется радикально слабее?
- склоняюсь к тому, что, во-первых, это точно глюк системы, но и при этом это ещё что-то именно лисье-вкладочное
      (раз теперь оно при наведении курсора не исчезает) (и вот это уже очень серьёзно)
 
из свежих проблем, возникших после выключения CTR, стабильная и неубираемая красная полоска в начале первoй вкладки -
это (на данный момент) вроде бы единственное, что реально не даёт удалить CTR насовсем
(вроде бы чего-то другого плохого я пока не обнаружил)
 
если это может помочь - дай знать, и сделаю все-все скрины из моих настроек в CTR-окнах

новые наблюдения:
- горизонтальные промежутки между bookmarks были 14 и остались 14,      a промежуток между последним bookmark'oм и урл-баром был 14, a стал 12
      я добавил      #urlbar { margin-left: 2px !important; }      и это решило проблему
- горизонтальный промежуток после последней вкладки (из первого ряда):      был 7, a стал 8
 
вкладка с названием из 5 букв - "Поиск":     
её самый левый вертикальный ряд (в начале буквы П) теперь дефектно окрашен рыжим (или всё тем же красным) цветом:
это те же 8 вертикальных пикселей (и мне это постоянно видно даже без зума)
 
      если убрать строку      #urlbar .textbox-input-box { margin: 0 !important; }      то красный дефект в начале слова "Поиск" пропадает (не знаю, где тут связь):
      именно в данном случае дефект чуть другой: он виден только если эта вкладка "Поиск" активна (и вроде он тут чуть менее ярко выражен)
 
      но красные дефекты в начале каждого из трёх рядов вкладок точно есть
      (и клик по самому верхнему правому углу больше не ставит курсор в начало урл-бара), так что я пока эту строку деактивирую
 
новый важный вопрос: можно ли кодом навсегда запретить добавление всех троеточий?
они появляются в конце названия вкладки, если текст не влезает, а у меня он не влезает в 99% случаев
 
 
но поскольку возвращать CTR мне крайне не хотелось бы - сильно пытаюсь привести к должному виду тот вариант, который уже имеется,
и в эти часы мне даже (вроде бы) удалось сварганить расклад, получившийся при помощи таких новых строк:
      tab.tabbrowser-tab .tab-label { -moz-margin-start: -11px !important; }
      #TabsToolbar { margin-left: 4px !important; -moz-box-ordinal-group: 100 !important; }
      и ещё была изменена вот эта:      tab.tabbrowser-tab .tab-label { -moz-margin-end: -6px !important; }      (в ней было -7)
 
при этом раскладе:
- нигде не видно красных дефектных вертикальных полосок, а это критически важный момент (гарантий не даю, но я проверял 10-15 раз)
- строку      #urlbar .textbox-input-box { margin: 0 !important; }      вроде бы получилось вернуть без плохих последствий
   и эту тоже:      #tabbrowser-tabs { min-height: 21px !important; }
 
- и вообще с вкладками всё типа стало нормально, но кроме одного большого негативного нюанса:
      горизонтальные промежутки между вкладками теперь стали очень ощутимо меньшими (было 7 пикселей, стал 1)
      (там есть случаи и полегче, но этот самый показательный),
      и на время этой всей настройки - это терпимо/сгодится, но в дальнейшей практике будет откровенно плоховато
 
      не говоря уже о том, что при простом скроле над панелью вкладок: в слове "Поиск" буква П то тоньше становится, то чуть толще (на 1 пиксель), а это ужасно
      и поэтому в строке      tab.tabbrowser-tab .tab-label { -moz-margin-end: -6px !important; }      пришлось вернуть -7
 
- я попробовал поиграться с новой строкой      .tabbrowser-tabs .tab-text { max-width: 82px !important; }      но значения меньше 82 приводят к появлению красных полосок
- я попробовал поиграться с включением "extra spaces on both sides" (в tab-mix-plus > display > tab bar)      но в итоге снова убрал эту галку
 
 
 
из трёх зол (CTR) (красные дефектные вертикальные полоски) (нынешнее текстовое месиво из названий вкладок) я чётко выбираю третий вариант, потому что:
- про CTR я уже почти забыл (и вспоминать очень не хотелось бы), a второй вариант - это кошмар в чистом виде
 
- в третьем варианте: месиво огромное, но оно, вроде, хотя бы на какой-то грани терпимости
       (но по-большому счёту это, конечно, очень и очень нехорошо) (ну хотя бы границы вкладок вполне различимы, и то ладно)
- сильно надеюсь, что у нас ещё каким-то образом получится (не обнажая красных дефектов) увеличить пустые горизонтальные промежутки между вкладками
 
- при актуальном на данный момент виде лисы: мне уже впору добавить (к заданному выше вопросу про троеточия) уточнение по типу такого:
       можно ли кодом сделать из троеточий пятиточия? (или может даже 7-8-точия) и перекрасить их в белый цвет
 
       не исключено, что это могло бы стать особо элегантным обходом всей этой комплексной проблемы
       (при этом, понятное дело, повиснет другой вопрос - что тогда останется от и так недлинных названий вкладок?)

06-09-2022 07:06:53
 
 
вдогонку допишу парочку важных моментов:
 
1) "было 7 пикселей, стал 1            там есть случаи и полегче, но этот самый показательный"
      на самом деле там и -1 даже есть
 
2) самое важное уточнение на эту минуту:
      можно ли кодом просто перекрасить в белый цвет все троеточия? (в названиях всех вкладок)
      (в случае, если троеточия добавлены в конце вкладки по причине невлезания всего названия)
мне пока сложно сказать, но в качестве компромисса, возможно, это стало бы каким-никаким, но выходом

austri пишет

      можно ли кодом просто перекрасить в белый цвет все троеточия? (в названиях всех вкладок)
      (в случае, если троеточия добавлены в конце вкладки по причине невлезания всего названия)

Нет.


Я тут, для предыдущего расклада, пробовал такой код,
и, вроде, вычищает эти рыжие дефекты.

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

Выделить код

Код:

(tc => {
	var {redraw} = window
		.QueryInterface(Ci.nsIInterfaceRequestor)
		.getInterface(Ci.nsIDOMWindowUtils);

	var num = 10, tick = () => {
		try {redraw();} catch(ex) {}
		num-- && requestAnimationFrame(tick);
	}
	tick();

	tc.addEventListener("TabClose", redraw);
	tc.addEventListener("TabAttrModified", redraw);
	window.addEventListener("unload", function unload() {
		window.removeEventListener("unload", unload);
		tc.removeEventListener("TabClose", redraw);
		tc.removeEventListener("TabAttrModified", redraw);
	});
})(gBrowser.tabContainer);

и, вроде, вычищает эти рыжие дефекты

- да, похоже, что качественно чистит - я более 10 раз проверял - пока всё нормально
- за этот код отдельное большое спасибо (и за твою огромную отзывчивость тоже)
 
уточнение по поводу изменения в названии вкладки:
- к примеру, активна вкладка "Поиск"
- сразу после запуска лисы: иногда (далеко не каждый раз) название этой вкладки дёргается
- выглядит как что-то типа перезагрузки названия (хотя в этот момент режим-то всегда оф-лайн)
- это происходит примерно в течение половины секунды (не успеваю прочитать)
 
- ранее мы успешно убрали мешающую надпись "Connecting..."      gBrowser.setTabTitleLoading = () => {}
- возможно, в этом случае там происходит что-то подобное вот таким дёрганиям:     
      Поиск > Loading... > Поиск            или             Поиск > Updating... > Поиск
- есть ли способ забетонировать названия вкладок? чтобы вот так не дёргались, 
      и менялись только когда я сам явно перехожу из одной страницы в другую
 
 
жаль, что лиса не обучена командам наподобие чего-то такого:
      tabsarea::-moz-tabtitle { ellipsis: none !important; }     
      /* это бы решало вопрос по многоточию, обладающему весьма сомнительной ценностью */
 
      @-moz-document symbol(u2727|u2828) { display: none !important; }     
      /* это бы решало все вопросы по скрытию любых ненужных символов */
 

могут ли найтись в инспекторе ещё какие-то зацепки?

Ну он же показывает атрибуты, значит могут, если есть.
Я вот для этих двух страниц, например, так написал. Вроде работает

не странно ли? что тот коротенький код у меня вообще никак не сработал
 
 
просто уточнение (хотя бы для моего общего развития):
если бы вдруг каким-то образом появилась желанная мной возможность безболезненно убрать и "tab mix plus" тоже, 
то все те коды из данной темы,
добавленные в файлы этого расширения: click.js и Services.jsm (не помню, было ли что-то ещё из файлов - вроде нет),
можно было бы перенести куда-то в другое место?
      (моё мнение тут роли не играет, но что-то я не очень уверен, что можно было бы перенести -
      хотя бы потому что в лисьей папке больше нигде нет никакого jsm-файла)
 
 
новое наблюдение - совсем мелкое (по поводу строки поиска на ру-трэкере):     
1 раз курсор-таки проставился автоматически, но аж с секундной задержкой
(это, наверно, проц тогда задумался, да? хотя чего ему там думать было - 6 ядер - и чуть ли не в состоянии "idle")
 
 
вот как оно всё выглядит на данный момент (это full-screen 1920-1200):
2022-09-07-02-56-52.png
 
- из расширений активны только 2: "tab mix plus" и "expire history by days" (остальные 14 уже в наличии отсутствия)
- весь верхний ряд (закладки плюс панель адреса) тотально выверен по пикселям
- панель вкладок тоже вполне себе выверена по ним же (ну насколько получилось)
 
- я хоть и успешно пробовал выровнять по вертикали начало первых двух строк:
   там, где первая закладка "Search" и чуть ниже - первая вкладка "(Easy Listenin...",
      но как-то оно выглядит чутка менее интересно (я сдвигал "Search" - и всю эту строку - левее)
      (хотя и итоговый вариант на скрине мне идеальным не вполне кажется, но то такое)
 
кстати, на скрине в списке песен (13 штук) видны диакритические глюки
и это, конечно, нехорошо, но на фоне наличия многочисленных бессмысленных 2727-символов
это уже не кажется совсем большой проблемой (хотя технически это вполне себе проблемка),
 
      причём эти глюки только в списке песен, а в других местах их нет:
      в одном жирном слове над списком песен, и также в названии темы, и также в списке "pages" -
      тaм диакритика отображается корректно

да, похоже, что качественно чистит

таки нет - как только дошло дело до реального использования - тут же снова вылезло:
в процессе ручного перетаскивания 11 вкладок (чуть левее) (по одной штуке)
 
2022-09-08-00-33-08.png
 
тут видно в двух вкладках

austri пишет

- к примеру, активна вкладка "Поиск"
- сразу после запуска лисы: иногда (далеко не каждый раз) название этой вкладки дёргается
- выглядит как что-то типа перезагрузки названия (хотя в этот момент режим-то всегда оф-лайн)
- это происходит примерно в течение половины секунды (не успеваю прочитать)

Да, что-то такое вижу. У меня там мелькает надпись «Новая вкадка».
Что-то кодов всё больше и больше.

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

Выделить код

Код:

setTimeout(str => gBrowser.setTabTitle = eval(
	`(${gBrowser.setTabTitle})`.replace("var browser = this.getBrowserForTab(aTab);", `$&\n\n${str}\n`)
), 200, 'if (browser.__SS_data && browser.currentURI.spec == "about:blank") return false;');

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

Даже не знаю. Я сподобился на синтетической странице там проверить, и всё работает.
Только в regexp() вопросителный знак после https добавил — regexp("https?…,
поскольку никакой https, разумеется, там не возможен, только http.
Интересно, а без заключения в блок @-moz-document тоже не работает?

все те коды из данной темы,
добавленные в файлы этого расширения: click.js и Services.jsm (не помню, было ли что-то ещё из файлов - вроде нет),
можно было бы перенести куда-то в другое место?

Конечно же такая возможность есть. Организовать место и добавить куда-нибудь
запускающий код (chrome.manifest, gre/app omni.ja, или классика — config.js).

причём эти глюки только в списке песен, а в других местах их нет:
      в одном жирном слове над списком песен

Просто это разные вещи.
В жирном слове над списком песен — один символ ä ("\u00e4", LATIN SMALL LETTER A WITH DIAERESIS).
А в списке песен — «обычная a», плюс комбинируемый диакритический знак  ̈ ("\u0308", COMBINING DIAERESIS).

как только дошло дело до реального использования - тут же снова вылезло:
в процессе ручного перетаскивания

Действительно. Воспроизвести ещё сложнее. Можно "TabMove" добавить.
Да, ещё ресайз же, и, возможно, скролл. Вот, вписал.

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

Выделить код

Код:

(tc => {
	var {redraw} = window
		.QueryInterface(Ci.nsIInterfaceRequestor)
		.getInterface(Ci.nsIDOMWindowUtils);

	var num = 10, tick = () => {
		try {redraw();} catch(ex) {}
		num-- ? requestAnimationFrame(tick) : listen();
	}
	tick();

	var listen = () => {
		var types = ["TabAttrModified", "TabClose", "TabMove", "scroll"];
		for(var type of types) tc.addEventListener(type, redraw);

		var mo = new MutationObserver(redraw);
		mo.observe(document.documentElement, {attributes: true, attributeFilter: ["width"]});

		window.addEventListener("unload", function unload() {
			mo.disconnect();
			window.removeEventListener("unload", unload);
			for(var type of types) tc.removeEventListener(type, redraw);
		});
	}
})(gBrowser.tabContainer);

Да, что-то такое вижу. У меня там мелькает надпись «Новая вкадка»

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

Что-то кодов всё больше и больше

здесь мне важно только то, чтобы тебя это не сильно напрягало, поскольку я-то отчётливо понимаю, зачем это всё,
и насколько оно важно (а некоторые коды так и вовсе имеют ну совсем огромное значение)
 
(если надо, то могу ничего не писать в этой теме какое-то время, чтобы ты от меня отдохнул - просто дай мне знать)
 

Только в regexp() вопросителный знак после https добавил

Интересно, а без заключения в блок @-moz-document тоже не работает?

я безуспешно пробовал (и в файле userContent.css, и в файле userChrome.css):
       - добавлять вопросительный знак
       - добавлять вопросительный знак      без заключения в блок @-moz-document (чтобы строка начиналась с символов "regexp")
       - не добавлять вопросительный знак      без заключения в блок @-moz-document
 

Конечно же такая возможность есть. Организовать место

- организовать место я вполне мог бы попробовать
      (при появлении чёткой инструкции, как и куда конкретно переместить все коды, ранее добавленные в файлы расширения tab-mix-plus)
 
- на данный момент tab-mix-plus всё ещё вынужденно в наличии - и пока что всё идёт к тому, что убрать его было бы очень тяжело
 
- логика мне подсказывает, что всё равно было бы чуть правильнее добавить независимости (пусть и теоретически),
      и таки переместить все добавленные коды из файлов расширения tab-mix-plus
 

Просто это разные вещи
В жирном слове над списком песен — один символ ä

помню, что на днях мне в какой-то момент удавалось добиться нормального вида диакритики в списке песен ("\u0308"),
я вроде бы что-то экспериментально переключал в шрифтах - просто на несколько секунд
 
вот так сейчас выглядят настройки шрифтов:
2022-09-08-15-24-09.png
 
немного расскажу о старой проблемке, раз уж на этом скрине чётко видны UI-глюки, связанные с "drop-down lists":
это давний глюк - лет 5-7 ему - и связан он, по всей видимости, с какими-то моими тогдашними попытками
убрать визуальную проблему/проблемы с контекстными менюшками, а может, и не только с ними
 
из того, что мне сходу удалось найти/припомнить: например, в userChrome.css есть такая строка:
menupopup > menuitem { margin-right: -2.4em !important }
если её убрать, то часть глюков с "drop-down lists" исчезнет,
но зато в контекстной менюшке "closed" добавится справа (во всех строках) нежелательная пустая короткая зона (шириной в 20 пикселей где-то)
 
данные UI-глюки на самом деле куда серьёзнее, чем просто эти видимые на скрине "drop-down lists" с ненормальной шириной:
всё самое "весёлое" наблюдается при нажатии на эти "drop-down lists", но описать словами это проблематично, да и заскринить тоже,
так как глюк там, как правило, динамичный - и чуть ли не всегда он охватывает весь экран, кроме панели задач - то есть, всю лису
 
подозреваю, что этот невидимый на данном скринe глюк (даже более серьёзный, чем видимая в нескольких местах скрина ненормальная ширина)
вызван какой-то другой моей очень старой настройкой (или в файле userChrome.css, что вероятнее) (или в about:config)
 
позднее всё-таки смогу попробовать сделать 3-4 скрина, если это поможет убрать подобные глюки
 

Действительно. Воспроизвести ещё сложнее. Можно "TabMove" добавить

благодарю за этот улучшенный код - к данному моменту я рыжих дефектов не увидел - буду следить дальше
 
 
новое уточнение просто на всякий случай (а вдруг):
 
- теперь фф всегда стартует в оф-лайне, что замечательно
- далее: при первой активации какой-то уже ранее открытой вкладки - её содержимое грузится из кэша
- есть ли способ сделать так, чтобы эта прогрузка из кэша выполнялась мгновенно? (без 1-2-секундной задержки)
 
могу ошибаться, но, наверно, способа нет и быть не может, однако:
вдруг, например, может быть какой-то обходной путь по типу: сразу после запуска лисы посылать команду
на тихую фоновую прогрузку содержимого вкладок, как будто бы это я их по очереди активирую
(чтобы они там себе сами из кэша прогрузились):
 
      не знаю, может быть даже это и не занимало бы по 1-2 секунды на каждую из, например, 50-70 вкладок,
      а могло бы выполняться скопом чуть ли не за 5-7 секунд (ведь за 1-2 секунды, наверно, совсем вряд ли)

austri пишет

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

Да пиши сколько хочешь. Я же не обязан отвечать.

я безуспешно пробовал (и в файле userContent.css, и в файле userChrome.css):
       - добавлять вопросительный знак
       - добавлять вопросительный знак      без заключения в блок @-moz-document (чтобы строка начиналась с символов "regexp")
       - не добавлять вопросительный знак      без заключения в блок @-moz-document

userContent.css, никакой не userChrome.css. А блок @-moz-document — это вот:
@-moz-document regexp("...") {
    начинка
}
Соответственно, без заключения в блок — только начинка.


Раз не работает, значит, либо у тебя другая результирующая DOM-структура,
и здесь я ничего поделать не могу, дела контентские,
либо где-то нарушение синтаксиса, тогда надо смотреть весь userContent.css

если её убрать, то часть глюков с "drop-down lists" исчезнет,
но зато в контекстной менюшке "closed" добавится справа (во всех строках) нежелательная пустая короткая зона (шириной в 20 пикселей где-то)

menuitem > .menu-accel-container { display: none !important; }

чтобы они там себе сами из кэша прогрузились

Что-то я не пойму. Звучит почти как описание настройки
browser.sessionstore.restore_on_demand
Или имеется в виду что-то более хитрое?

Соответственно, без заключения в блок — только начинка

я безуспешно попробовал добавить в userContent.css эту строку:

Выделить код

Код:

.row1 .post_body > :first-child > :first-child > :first-child > :last-child > var:last-of-type ~ span[style*="line-height"] { display: none !important; }

либо где-то нарушение синтаксиса, тогда надо смотреть весь userContent.css

вот весь небольшой userContent.css:

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

Выделить код

Код:

::-moz-selection, textarea::-moz-selection { background: rgba(176,176,176, 1.0) !important; color: #fcfcfc !important; }

a:focus { text-decoration: none !important; }
a:hover { text-decoration: none !important; }

img { display: none !important; }

@-moz-document domain(rutracker.org){ 
#ped-editor,
#t-top-user-buttons,
.news_title,
.pad_2.hide-for-print,
a.postLink,
.poster_btn.td3,
.poster_info.td1,
.postLink.p-ext-link,
.small.hide-for-print[style="margin: 8px 4px;"],
.small[style="margin: 8px 4px;"],
.td2[colspan="2"],
.topic.hide-for-print,
.topic.w100,
.tRight,
.txtb,
A.med:first-child,
DIV#logo,
DIV#main-nav,
DIV#page_footer,
DIV#thx-block,
DIV.signature,
DIV.spacer_12,
DIV.spacer_4,
DIV.spacer_6,
DIV.spacer_8,
DIV.topmenu,
H1.pagetitle,
SPAN.tor-icon.tor-approved,
SPAN.tor-icon.tor-not-approved,
TD.catTitle,
TD.row3.pad_4,
TD[style="padding: 2px 5px 5px;"],
TD[style="padding: 3px 6px;"],
TD[style="padding: 6px;"],
TH.thHead,
TD.nav.w100[style="padding-left: 8px;"],
DIV#nav-panel,
.row5.tCenter[style="padding: 6px 4px 8px;"]

{ display: none !important; } }


 

menuitem > .menu-accel-container { display: none !important; }

- спасибо, я добавил эту строку
- a вот эту убрал:      menupopup > menuitem { margin-right: -2.4em !important }
- теперь "drop-down lists" лишились первого (сразу видимого) глюка
- больше у меня в файле userChrome.css нет строк с "menupopup"
 
- по поводу второго глюка (масштабного) (как-то терпимого, но явно серьёзного) - вот 4 скрина, сделанные в течение 7 секунд:

скрытый текст
1) перед кликом на первый список "Latin" (пока всё нормально):
2022-09-09-01-08-13.png
 
 
2) где-то через секунду после клика (начало прорисовки справа налево):
2022-09-09-01-08-16.png
 
 
3) ещё через 2 секунды (прорисовка справа налево продолжается):
2022-09-09-01-08-18.png
 
 
4) ещё через 2 секунды (глюк уже прорисовался - по всей горизонтали экрана) (и глюк-таки полноэкранный) (a дочернее окно "Fonts" неслабо им покусано):
2022-09-09-01-08-20.png
 
и примерно тоже самое наблюдается у меня годами при клике на любой "drop-down list" в лисе (или почти любой: тут сложно сказать)

вот на всякий случай весь userChrome.css (128 строк) (5,96 KB):
      полагаю, что найдётся и лишнее что-то, и может даже ошибки какие-то,
      например, строчка      /* AGENT_SHEET */      меня слегка смущает: подозреваю, что она тут и безвредна, и бессмысленна, но она тут уже давно,
      а этот файл я целенаправленно ещё не чистил (вот, собственно, готов почистить, если буду знать наверняка, что именно надо исправить)
 
 

Что-то я не пойму. Звучит почти как описание настройки

вот этa настройка:      options > don't load tabs until selected      у меня годами всегда былa выключенa,
но ранее в эти дни/недели я её включил (и не успел привыкнуть к ней), а сейчас вот - после этого твоего сообщения - снова выключил,
      ну и думаю, какой вариант выбрать в итоге, ведь так фф после своей загрузки: аж 30 секунд чутка нагружает и проц, и винт
      (но винт совсем немного - на 20-25 мб)
 
ещё такой нюанс про "don't load tabs until selected":
- если включить, то после запуска лисы активная вкладка сразу мгновенно отображается прогруженной, что отлично
- если выключить, то первое, что я вижу после запуска лисы - это примерно секундноe прогружение активной вкладки, что плохо
 

Или имеется в виду что-то более хитрое?

теперь, наверно, только что-то типа такого может быть любопытным:
здесь пишут (статья "Firefox Restore Session: Tabs Do Not Automatically Load"):
"Firefox finally corrected this issue by loading all tabs one-by-one instead of loading them all at once"
      и вот возможно, что как раз "loading them all at once" - это то, что могло бы мне пригодиться (раз уж фф всё равно стартует в оф-лайне)

austri пишет

вот 4 скрина, сделанные в течение 7 секунд

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

может даже ошибки какие-то

Например, мне трудно сказать что значит это «прихорошить и скрыть»:
label.statuspanel-label
{  padding-top: 0 !important;
    padding-bottom: 1 !important;
    border: 0 !important;
    background-image: none !important;
    background-color: none !important;
    color: #000000 !important;
display: none !important; }


однако, «padding-bottom: 1 !important;» — один что?
«background-color: none !important;» — либо цвет, либо unset/inherit/initial, но только не none.

строчка      /* AGENT_SHEET */      меня слегка смущает

Если комментарий смущает и не нужен, то его можно удалить.

аж 30 секунд чутка нагружает

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

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

Это аргумент, хоть мне и не получится увидеть.
Mожно при включенной попробовать как сказано:
«посылать команду на тихую фоновую прогрузку содержимого вкладок, как будто бы это я их по очереди активирую».

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

Выделить код

Код:

Cu.now() < 1e4 && Services.prefs.getBoolPref("browser.sessionstore.restore_on_demand") && (tc => {
	var lst = e => {
		window.removeEventListener("unload", lst);
		tc.removeEventListener("SSTabRestored", lst);
		if (e.type.startsWith("u")) return;

		var tabs = Array.from(gBrowser.tabs);
		tabs.length > 1 && (function rel(tab) {
			if (Services.io.offline) {
				try {
					tab.hasAttribute("pending") && !tab.closing && tab.linkedBrowser.reload();
				} catch(ex) {}
				var next = tabs.shift();
				next && setTimeout(rel, 50, next);
			}
		})(tabs[0]);
	}
	window.addEventListener("unload", lst);
	tc.addEventListener("SSTabRestored", lst);
})(gBrowser.tabContainer);

лисa не запускалась мной часов 15, и после её запуска:
в контекстном меню пропал пункт "inspector", а прямо над ним пункт "pages" ничего не содержaл (при любой вкладке),
но через пару минут проблема сама исчезла (после первого же перезапуска лисы),
      и, наверно, было бы правильно что-то сделать, чтобы такого не повторялось,
      но можем ли мы что-то в этом случае предпринять? (если что, вкладок было 125)
 
как назначить Ctrl+Q на мгновенное выполнение клика?:
- в активной вкладке, по этой ссылке:       a.dl-stub.dl-link.dl-topic
- даже если ссылка не видна (иногда к ней нужно скролить)
- курсор должен оставаться на месте
 
 
как везде полностью убрать фокусную рамку? (dotted outline)
(и все другие виды таких рамок - dashed, solid и так далее - если они где-то в лисе есть)
включая: options, library, мелкое окошко 'confirm close', и все-все другие места
 
как везде полностью убрать подчёркивания символов? (underlinings)
включая: options, контекстные менюшки в library, и все-все другие места
 
как удалить все контекстные менюшки в library?
- вот это срабoтало:      #PlacesContext { display: none !important; }      (для разделов: "history", "bookmarks toolbar",      но не для "downloads")
- вот такое не срабатывает:      #downloads-contextmenu { display: none !important; }      .downloads-contextmenu { display: none !important; }
 
 

Mожно при включенной попробовать как сказано

я попробовал этот код - спасибо за такую возможность - его сохраню на всякий случай,
но пока что перспективы у него туманные - и вот кое-какие наблюдения в связи с этим:
 
1) "если включить, то после запуска лисы активная вкладка сразу мгновенно отображается прогруженной"
к сожалению, позднее выяснилось, что это справедливо в большинстве случаев, но не во всех
 
2) насколько я сумел понять - так получается, что этот код скорее добавляет некоторых неудобств, а не наоборот:
например, вкладок 125, и если сразу после запуска лисы по ним начать переключаться,
то все из них - кроме самых первых - тормозят при своей прогрузке ещё больше (я бы даже сказал - до неприличия дольше),
видимо ждут, пока данный код их проработает
 
3) при любом раскладе (когда 125 вкладок): лиса после старта напрягается около 75-80 секунд - и этот код тут ничего не ускорил,
хотя я пробовал менять 50 и на 5, и на 0 (почему-то при этом вообще ничего не меняется)
 
4) наверно, буду вынужден как-то выбирать из двух вариантов настройки "don't load tabs until selected" (пока что она включенa)
 
5) можно ли попробовать модифицировать этот код?
- чтобы он запускал команду "Reload Other Tabs"
- menu-wizard пишет:      ID: tm-reloadOther      onCommand: gBrowser.reloadAllTabsBut(TabContextMenu.contextTab);
- я не вполне уверен, что при данной команде код станет лучше, но шанс, вроде, есть
 
 
с "лютой жестью" я как-то разобрался (лиса не виновата) - дело было в моих тонких настройках одной сторонней программы,
управляющей окнами, и делающей это масштабно и потрясающе (использую с 2009),
но она не freeware, поэтому мне её название тут публиковать, видимо, не стоит

а прямо над ним пункт "pages" ничего не содержaл

напишу немного новой информации вдогонку к этой проблеме:
 
примерно спустя сутки:
- лиса снова не запускалась мной часов 15-20
- пункт "pages" снова ничего не содержит
- пункт "inspector" в этот раз не пропал
- проблема снова сама исчезла (после первого же перезапуска лисы)
 
вот скрин:
 
2022-09-12-17-42-15.png
 
на скрине виден какой-то мелкий графический дефект - с правой стороны пункта "pages"
(этот дефект был и в прошлый раз)

austri пишет

но можем ли мы что-то в этом случае предпринять?

Насчёт тебя не знаю, а я ничего не могу предпринять.
Чтобы попробовать что-то раскопать, мне нужно лису
перезапустить не один десяток раз. Если между запусками ждать по 15 часов,
то, сам понимаешь. И не факт, что всегда (или вообще) будет воспроизводится.

как назначить Ctrl+Q на мгновенное выполнение клика?:
- в активной вкладке, по этой ссылке:       a.dl-stub.dl-link.dl-topic

Опять ты ко мне с контентским вопросом.
Ну не знаю, может так попробуй.

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

Выделить код

Код:

(sel => {
	var kd = e => {
		if (e.ctrlKey && e.code == "KeyQ" && !e.shiftKey && !e.altKey && !e.repeat) {
			var link = content.document.querySelector(sel);
			link && link.click();
		}
	}
	window.addEventListener("keydown", kd, true);
	window.addEventListener("unload", function unload() {
		window.removeEventListener("unload", unload);
		window.removeEventListener("keydown", kd, true);
	});
})("a.dl-stub.dl-link.dl-topic");

как везде полностью убрать фокусную рамку?

Понятия не имею.
Разве что стиль какой-нибудь разработай,
типа, для начала, что-нибудь такое, а дальше исправляй и дополняй.

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

Выделить код

Код:

richlistbox:-moz-focusring,
button:-moz-focusring > .button-box,
menulist:-moz-focusring > .menulist-label-box,
menulist:-moz-focusring > menupopup > menuitem[_moz-menuactive="true"],
radio[focused="true"] > .radio-label-box,
checkbox:-moz-focusring > .checkbox-label-box,
treechildren::-moz-tree-row(current, focus),
toolbarbutton:-moz-focusring,
label.text-link:-moz-focusring,
tab[selected] > .tab-middle,
tab:-moz-focusring > .tab-middle
{
	border-color: transparent !important;
	outline-color: transparent !important;
}

как везде полностью убрать подчёркивания символов?

Установить настройку ui.key.menuAccessKey в значение ноль.

вот такое не срабатывает:      #downloads-contextmenu { display: none !important; }      .downloads-contextmenu { display: none !important; }

#downloadsContextMenu

лиса после старта напрягается около 75-80 секунд - и этот код тут ничего не ускорил,
хотя я пробовал менять 50 и на 5, и на 0 (почему-то при этом вообще ничего не меняется)

Он и не должен был ничего ускорять.
Это чтобы активная вкладка прогрузилась (быстро), и лишь затем загружаем остальные.
А чтобы лиса меньше напрягалась, 50 увеличивать надо, а не уменьшать.
Но чудес не бывает, загрузка вкладки требует ресурсов.
Чем больше вкладок грузится одновременно, тем больше нахлобучка,
но прогрузиться все должны быстрее. И наоборот.
Вобщем, наверно, действительно лучше оставить как в лисе сделано.

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

Нет, не думаю. Впрочем, можешь с консоли посмотреть как загружаются
gBrowser.reloadAllTabsBut(gBrowser.selectedTab);

Если между запусками ждать по 15 часов

вот ещё 1 самый свежий пример этой проблемы - лисa не запускалась мной 7 часов, и после её запуска:
 
- пункт "pages" снова ничего не содержит (а визуальный глюк тот же)
- пункт "inspector" в этот раз пропал
- проблема снова сама исчезла (после первого же перезапуска лисы)
- сейчас 140 вкладок (крайне сильно сомневаюсь, что дело в их количестве)
- видимо, дело и не в количестве часов (но я изначально и не думал, что дело в этом)
 
по этой проблеме у меня только одно туманное предположение:
дело в том, что во всех этих трёх случаях - во время отсутствия лисы - происходило много активности в дисковой подсистеме,
вследствие чего операционка не обладала максимальной отзывчивостью, и по первым секундам загружающейся лисы это было явно заметно:
 
      активная вкладка не то что не загружалась мгновенно -
      её текстово-ссылочное содержимое буквально прорисовывалась построчно, пусть и очень быстро
      (здесь имеется в виду построчность появления не самих строк/ссылок, из которых вся страница и состоит,
      а только построчная прорисовка другого цвета, ответственного за показ того, какая ссылка была ранее посещена, а какая нет)
 
и во всех этих трёх случаях:
если лису закрыть и снова сразу открыть (а теперь это делать радикально быстрее, легче, удобнее - из-за режима "off-line"),
то тогда и данный глюк/глюки в контекстной менюшке не появляются, и прорисовка активной вкладки крайне быстро происходит
(могу ошибаться, но предположу, что во время этого второго подряд запуска: уже сильно помогает оперативка/буфер или что-то подобное)
 
но это никак не объясняет, почему пункт "pages" так явно начинает сбоить,
и я почему-то думал, что тебе данный скрин поможет понять и выловить эту проблему, ведь всё-таки это пункт, созданный тобой лично
      (да и нестабильное пропадание пункта "inspector" тоже весьма подозрительно)
      (этот мелкий визуальный глюк - справа в строке "pages" - тебе ни о чём не говорит?)
 

как назначить Ctrl+Q на мгновенное выполнение клика?

Ну не знаю, может так попробуй

попробовал - мне явно пригодится - спасибо - пока что вижу, что код отрабатывает безупречно
 
к этому коду я сделал (как и ранее надеялся сделать) существенное улучшение:
в свой главный ahk-скрипт я добавил вот эти 3 строчки:
      #IfWinActive ahk_class MozillaWindowClass ahk_exe firefox (portable).exe
      NumpadEnter::sendinput ^q
      #If
и стало ещё лучше
(получается, что и более-менее простые контентские вопросы/решения тебе тоже вполне могут удаваться)
(не всему же быть таким неподъёмным, как нерешённой проблеме с 2727-символами)
 

как везде полностью убрать фокусную рамку?

типа, для начала, что-нибудь такое, а дальше исправляй и дополняй

я просто добавил весь этот код - благодарю за него - с ним новых проблем пока не обнаружено
 
- мелкое окошко "confirm close":      фокус исчез (что очень хорошо)
- options:      фокус вроде везде поисчезал
- library - history:      фокус исчез (что замечательно)
- library - bookmarks toolbar:      фокус исчез (что очень хорошо)
- library - downloads:      фокус не исчез (терпимо, но, конечно, хотелось бы и здесь убрать)
 
(что именно исправлять и дополнять - понятия не имею - да вроде и не особо это пока требуется)
 
 
- настройка      ui.key.menuAccessKey      в значении 0:      вроде помогла
- строка      #downloadsContextMenu { display: none !important; }      помогла
- строку      gBrowser.reloadAllTabsBut(gBrowser.selectedTab);      с консоли гляну позднее и отпишу
 
 
попробую спросить вот по таким не обсуждавшимся ранее проблемам:
1) в пункте "closed": как убрать подчёркивания цифр в первых 10 строках? (в пункте "opened" они не подчёркиваются)
 
2) в пункте "closed" весь текст сдвинут чуть ниже (по сравнению с пунктом "opened"),
сам пункт "closed" имеет чуть-чуть меньшую высоту, чем пункт "opened" (хотя у них обоих по 70 строк)
 
как привести пункт "closed" к такой же высоте? (и чтобы текст стал на одном уровне)
      координаты следующие:
       - левые нижние углы в этих двух пунктах одинаковые
       - левые верхние углы не одинаковые (у пункта "closed" на 2 пикселя ниже)

Впрочем, можешь с консоли посмотреть как загружаются

посмотрел - даже 2 раза (с некоторым перерывом) (в разных запусках лисы)
и ничего позитивного не увидел - это самый тормозной вариант - но насколько помню:
таких тормозов нет и приблизительно, если вручную запускать одну из двух команд:      re-load left      или      re-load right
 
 
почему-то не срабатывает новый пункт контекстного меню: "re-load other"
я пробовал его добавить (чтобы протестировать) и вот так:     
"tm-reloadOther": { lab: "re-load other", oncommand: "gBrowser.reloadAllTabsBut(TabContextMenu.contextTab);" },
 
и вот так тоже:      "tm-reloadOther": { lab: "re-load other" },                   
      (в обоих вариантах: Ctrl мне тут не нужен)
 

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

да - это понятно - но почему-то данный код делал даже хуже, чем просто отключенная настройка "don't load tabs until selected"
 

Он и не должен был ничего ускорять

разве? - а тогда в строке      next && setTimeout(rel, 50, next);      задержка в 50ms что делает?
если её переключение даже на 0ms ничего не ускоряет     
      (мне тут слегка поважнее ускорение прогрузки вкладок, а не напряги лисы)
 
просто я почему-то думал, что есть какой-то вариант послать лисе команду: прогрузить из кэша все вкладки -
кроме активной - и сделать это вот чуть ли не одномоментно,
 
      ведь при простом обычном клике на неподгруженную из кэша вкладку:
      она прогружается ну очень легко (и совсем недолго - менее чем за секунду)
 
и вот мне не вполне понятно: что мешает лисе проделать вот этот вот ну очень лёгкий сценарий,
но только сразу со всеми фоновыми вкладками? (понятное дело, что при помощи какого-то твоего кода)
 
ну пусть даже не со всеми фоновыми вкладками сразу, а, допустим, прогружать их пачками (хотя это уже куда менее интересно):
тогда первые 10 штук были бы за 2-3 секунды (разве технически это нереально?),
и так далее до последней фоновой вкладки      (и тогда на это уходило бы не секунд 90, а в разы меньшее количество времени)
 
 
обновлённая информация по подчёркиванию цифр в первых 10 строках пункта "closed":
- теперь этого нежелательного подчёркивания нет
- надо полагать, оно было убрано новым значением настройки      ui.key.menuAccessKey      а я это не сразу заметил

не срабатывает новый пункт контекстного меню: "re-load other"

вот эта строка решила проблему:
"tm-reloadOther": { lab: "re-load other", oncommand: "gBrowser.reloadAllTabsBut(gBrowser.selectedTab);" },
 
протестировав данную команду "re-load other", скажу, что я не заметил ощутимой разницы между ней и ранее созданным кодом
"посылать команду на тихую фоновую прогрузку содержимого вкладок, как будто бы это я их по очереди активирую"
 
- у команды "re-load other" есть плюс - она даёт больше свободы, чем код,
      то есть, всегда можно легко и быстро запустить лису, которая будет сразу почти полностью отзывчивой:
 
      тут терпеть приходится в основном только подгрузки из кэша - менее чем секундные:
      при первом клике на любую фоновую вкладку
      (казалось бы: что такого во всего лишь околосекундном ожидании/прорисовке?
      но если вкладок постоянно 70-150, то оно как бы довольно быстро утомляет/огорчает)
 
- у созданного кода тоже есть плюс - он даёт больше автоматизации,
      то есть, можно просто запустить лису и знать, что через минуту-две вообще всё будет само готово,
      но эту минуту-две нужно где-то погулять - и так при каждом перезапуске лисы
 
- a в реальности пока мной не используется ни "re-load other", ни тем более этот созданный код
      (просто включена настройка "don't load tabs until selected", что, конечно, далеко от желанного варианта)
 
 
 
на всякий случай задам новый вопрос по поводу возможного улучшения ситуации по закрытию вкладок:
- закрываю их часто
- на данный момент имеется свежий экспериментальный (и он же уже единственный толковый) способ закрытия:
 
      навести курсор на те самые 82 пикселя в ширину (это у меня ширина любой вкладки)
      и нажать удобную кнопку клавиатуры "Apps", которая у меня давно переназначена на двойной клик,
      а в tab-mix-plus, соответственно, выставлено "сlose tab" при двойном щелчке на вкладке
 
- я всерьёз пробовал с помощью ahk-кода реализовать альтернативный подход, при котором можно было бы
      закрывать вкладку, даже если лиса не активна (что мне как раз часто не помешало бы):
 
идея тут была в том, чтобы при нажатии на Ctrl+K (которые я всё равно затем назначил бы на одну клавишу)
посылать лисе команду "close active tab", даже не активируя лису,     
но только, если курсор где-то над каким-то лисьем пикселем (любым)      (это для подстраховки)
 
      лисий пиксель - это если:
      window class:      MozillaWindowClass      (обязательно)
      window caption:      Mozilla Firefox      (не совсем обязательно)
 
возможно, мне это было бы удобнее, чем каждый раз выискивать глазами довольно узкие 82 пикселя, чтобы подвести туда курсор
(ещё и с учётом того, что у меня вот, например, вчера дело дошло до 6 полных рядов вкладок, по 23 в каждом)
 
ну и к тому же отсутствие постоянного переключения (на лису и обратно) тоже привнесло бы
дополнительного удобства и скорости
 
- но разные ahk-подходы не давали стабильного и надёжного результата
- это не самый важный вопрос, но всё же: а возможно ли такое реализовать с помощью "click.js"-кода?

по поводу улучшения ситуации по закрытию вкладок:
снова пытаюсь найти более хорошее решение с помощью своего ahk-кода, и есть некоторое продвижение,
например, вот этот тестовый код-таки вроде работает:
 

Выделить код

Код:

#If MouseIsOver("ahk_class MozillaWindowClass ahk_exe firefox (portable).exe")
q::ControlSend,, {up},ahk_class MozillaWindowClass ahk_exe firefox (portable).exe
z::ControlSend,, {down},ahk_class MozillaWindowClass ahk_exe firefox (portable).exe
#If
 
MouseIsOver(WinTitle)
{
MouseGetPos,,, Win
Return WinExist(WinTitle . " ahk_id " . Win)
return
}

то есть: тестовые клавиши "вверх" и "вниз" срабатывают внутри лисы (не активируя её), если мышиный курсор находится где-то над лисой
 
      (строку      key_devToolboxMenuItemF12: true,      я из файла click.js убрал,
      так как она была нужна только когда ещё использовались оба расширения ad-block,
      если я, конечно, не ошибаюсь - но вроде я тут всё правильно понял)
 
но протестировать этот же ahk-код (только уже в его примерно окончательном варианте)...:

Выделить код

Код:

#If MouseIsOver("ahk_class MozillaWindowClass ahk_exe firefox (portable).exe")
F12::ControlSend,, {ctrl down}{k down}{k up}{ctrl up},ahk_class MozillaWindowClass ahk_exe firefox (portable).exe
#If
  
MouseIsOver(WinTitle)
{
MouseGetPos,,, Win
Return WinExist(WinTitle . " ahk_id " . Win)
return
}

...не получается - из-за следующих нюансов:
 
в файле click.js не срабатывает вот эта добавленная строка:      key_close: { key: "K", modifiers: "control" },      и непонятно почему
(key_close взято из menu-wizard)
 
при этом в файле click.js срабатывают вот эти давно добавленные строки:
goHome: { key: "D", modifiers: "control" },            и            key_newNavigatorTab: { key: "N", modifiers: "control" },
 
Ctrl+K не срабатывает даже если просто добавить её в      tab mix plus > options > menu > shortcuts > close tab      и тоже непонятно почему,
      причём это происходит в обоих случаях:
      и при наличии строки      key_close: { key: "K", modifiers: "control" },      в файле click.js      (и без её наличия там)
 
 
ещё такое уточнение по      tab mix plus > options > menu > shortcuts:
там сейчас есть только 2 назначенные строки:
       - open a new tab      Ctrl+N
       - reloads the tab      F5
 
но в файле click.js есть строка      key_newNavigatorTab: { key: "N", modifiers: "control" },
и если убрать Ctrl+N из "tab mix plus", то это сочетание клавиш перестаёт срабатывать -
а можно ли сделать так, чтобы было достаточно строки в файле click.js?
 
      что касается F5, то она тоже, по-видимому, зачем-то дублирована (в каком-то смысле),
      так как в файле click.js есть такая строка:      key_reload: true,
 
сформулирую в качестве какого-то промежуточного вывода - хотелось бы добиться, чтобы:
- не было никакого дублирования
- и чтобы список      tab mix plus > options > menu > shortcuts      стал пустым
- и чтобы все нужные комбинации срабатывали через файл click.js
      (в том числе и в будущем:      если понадобится добавить что-то типа вышеупомянутой Ctrl+K)
 
 
 
по поводу глюков в контекстном меню:
операционка мной перезагружалась, и затем - сразу после первого запуска лисы - пункт "pages" cнова ничего не открывал
(до следующей перезагрузки лисы) (и содержал всё тот же визуальный дефект),
 
      то есть, наверно, можно сделать вывод, что тут ни при чём ни количество часов, ни нагрузка на дисковую подсистему,
      а при чём тут, видимо, только наличие или отсутствие каких-то лисьих данных в оперативке - или где-то ещё в системе
      (как-то иначе пока не могу это даже сам себе объяснить)
      (вот только полагаю, что эта немалая проблема всё равно должна как-то решаться)
 
по поводу фокусной рамки:
на странице      about:config      нежелательную "dotted outline" всё равно видно

austri пишет

пункт "closed" имеет чуть-чуть меньшую высоту, чем пункт "opened"

У меня эти два, да и вообще все, одинаковой высоты в 17px, с тех пор, как завёл стиль.
Так что не знаю что у тебя может влиять на высоту одного из этих двух.

- и чтобы список      tab mix plus > options > menu > shortcuts      стал пустым
- и чтобы все нужные комбинации срабатывали через файл click.js

Нет. Даже не хочется задумываться зачем это надо.
Лучше сделать так: нужные комбинации в списке tab mix plus
просто сбросить в дефолтное значение, чтобы он оставил их в покое (для click.js),
а ненужные можно оставить пустыми. То есть, после сброса, будут эти три:


«Open a new tab» — Ctrl+T
«Reloads the tab*» — F5 (да, со звёздочкой)
«Закрыть вкладку» — Ctrl+W


Тогда в click.js меняем key_reload на key_reload2, а для Ctrl+K пишем
key_close: { key: "k", modifiers: "control" },
«k» — маленькая, с большой «K» у меня, почему-то, не работает, не знаю почему.


Насчёт скрипта, я вот думаю, а зачем класс окна, если есть имя exe'шника.
А вот добавить немного специфичности проверкой title не помешало бы,
чтобы в другие лисьи окна ControlSend не попал.


С ahk я, конечно, не знаком, но документирован он хорошо,
даже сочинил что-то такое (не предложение, просто посмотреть)

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

Выделить код

Код:

#If hwnd := Check()
F12::ControlSend, , {ctrl down}{k down}{k up}{ctrl up}, %hwnd%

Check() {
	MouseGetPos, , , hwnd
	id := "ahk_id " . hwnd

	WinGet, name, ProcessName, %id%
	if (!(name == "firefox (portable).exe"))
		return false

	WinGetTitle, title, %id%
	return RegExMatch(title, "(^| - )Mozilla Firefox( \(.+\))?$") ? id : false
}

и содержал всё тот же визуальный дефект

Это не визуальный дефект. Так и должен выглядеть <menupopup>
у которого нет дочерних элементов, или есть, но все невидимые.
В консоли есть что-нибудь полезное, до первого открытия и при открытии?

на странице      about:config      нежелательную "dotted outline" всё равно видно

Ну так попробуй добавить tree:-moz-focusring

У меня эти два, да и вообще все, одинаковой высоты в 17px

- у меня, видимо, тоже 17px; я имел в виду не сами пункты, а всё их содержимое (а с высотой самих пунктов мы же разобрались давным-давно)
- координаты я ведь не зря привёл: они именно для очень высокого по вертикали содержимого пунктов "closed" и "opened"
      (это же было очевидно из моего описания: там, где про "левые нижние/верхние углы")
 

Даже не хочется задумываться зачем это надо

ну хотя бы ради:
1. логики (например, в файле click.js есть строка      goHome: { key: "D", modifiers: "control" }      но никакого Ctrl+D в tab-mix-plus не прописано)
      (ещё пример: в tab-mix-plus прописано F5, но в файле click.js этой F5 в явном виде нет)
 
2. большей свободы (от tab-mix-plus) и большегo удобства (всё в одном месте), а также более лёгкого избавления от tab-mix-plus
      (если вдруг когда-нибудь позднее тебе всё-таки станет любопытно этим заняться)
      (если что, при необходимости я готов отскринить все актуальные настройки этого расширения)
 
3. отсутствия дублирования одного и того же в разных местах одной программы,
      учитывая ещё и то, что лично мне это дублирование в данном случае никак не нужно
4. отсутствия неправильных (и неиспользовавшихся мной ранее; об этом ниже) комбинаций:      Ctrl+T (создать вкладку) и Ctrl+W (закрыть вкладку)
 
 
ничего не дала простая замена "K" на "k" в строке      key_close: { key: "k", modifiers: "control" }
 
- каким образом срабатывает эта строка?:      goHome: { key: "D", modifiers: "control" }      если в tab-mix-plus не прописана Ctrl+D
- нельзя ли подобным образом прописать и другие комбинации?: (создать вкладку) (закрыть вкладку) (обновить вкладку)
 
и зачем тогда держать в файле click.js вот эти 3 строки?:
      key_newNavigatorTab: { key: "N", modifiers: "control" }
      key_close: { key: "k", modifiers: "control" }
      key_reload: true
если они всё равно не срабатывают без прописывания этих комбинаций клавиш в tab-mix-plus
(поэтому я пытался закомментировать эти строки, но скоро выяснилось, что они перестают срабатывать,
если эти 3 комбинации оставить только в tab-mix-plus)
 
в общем, после многих разных попыток и проб - я затем в tab-mix-plus пока что сделал вынужденно вот так...:
      open a new tab:      Ctrl+T      (приняв решение забыть про свою комбинацию Ctrl+N)
      reloads the tab*:      F5
      close tab:      Ctrl+W      (приняв решение забыть про свою комбинацию Ctrl+K)
 
...a в файле click.js вот так:
      goHome: { key: "D", modifiers: "control" }
      key_newNavigatorTab: { key: "t", modifiers: "control" }
      key_close: { key: "w", modifiers: "control" }
      key_reload2: true
      /* key_devToolboxMenuItemF12: true */
 
(по-другому просто не срабатывает нормально/стабильно, хотя, конечно, чуточку жаль)
(строка      key_devToolboxMenuItemF12      здесь просто к сведению о том, что она уже отключена)
 

Насчёт скрипта, я вот думаю, а зачем класс окна, если есть имя exe'шника

это, видимо, была моя не особо продуманная попытка как раз таки "добавить немного специфичности"
 

даже сочинил что-то такое (не предложение, просто посмотреть)

я посмотрел очень внимательно - и даже пробовал - точнее, безуспешно попытался -
потому как этому коду не суждено было сработать, поскольку у моего фф годами отключен title (window caption) -
он просто пустой - я знаю, зачем это - мне так лучше:
 
      терпеть не могу появляющийся жёлтый "balloon tip" при наведении на кнопку (какой-то программы) в панели задач,
      и поэтому я давным-давно поубирал эти "window caption" где только смог:
 
       - где-то успешно (firefox, u-torrent, audition, everything)
       - где-то безуспешно (xyplorer, notepad2)
       - причём xyplorer - это и вовсе уникально-клинический случай (с его VB6 и разными прочими, так сказать, нюансами)
       - а с notepad2 я, вроде бы, и не пытался всерьёз - там как раз "window caption" периодически чуть-чуть пригождается
       - но если бы я точно (и наверняка) узнал как, то немедленно бы убрал отовсюду в системе все эти "balloon tips" как класс
 
а если без title, то, наверно, или смириться с тем, что уже есть и вроде даже хорошо срабатывает:
      #If MouseIsOver("ahk_class MozillaWindowClass ahk_exe firefox (portable).exe")
      F12::ControlSend,, {ctrl down}{w down}{w up}{ctrl up},ahk_class MozillaWindowClass ahk_exe firefox (portable).exe
      #If
или пытаться твоё сочинение немного переосмыслить/подкорректировать, например,
как вариант, прописать в строке      return RegExMatch      не Mozilla Firefox
а наоборот - все остальные немногочисленные окна лисы, но с какой-то пометкой по типу "invert",
в ahk я сам это кое-где успешно делал добавлением одного символа:      !
 

Это не визуальный дефект. Так и должен выглядеть <menupopup>
у которого нет дочерних элементов, или есть, но все невидимые

- теперь чуть понятнее про данный визуальный элемент
- но непонятно, куда деваются (временно) (до перезагрузки лисы) эти дочерние элементы пункта "pages",
                  причём деваются только при специфичных обстоятельствах (ещё и, видимо, не каждый раз):
                  если много дисковой активности (между запусками лисы)      или      если перезагрузка системы
                  (а если просто перезапускать лису, то этот <menupopup> хорошо себя чувствует)
- и непонятно, куда девался (изредка) cоседний пункт "inspector"
 

В консоли есть что-нибудь полезное, до первого открытия и при открытии?

лиса тут свинку подложила - я лису не запускал часов 10-12 - было много дисковой активности -
часа 2-3 назад операционка из-за этого была далека от состояния хорошей отзывчивости -
но вот сейчас (при запуске лисы) пункт "pages" должным образом показал своё содержимое (хотя в нём снова ожидалась пустота)
 
тем не менее, консоль я запустил (ещё до залезания в пункт "pages"), и вот на всякий случай 2 скрина консоли:
1) до первого открытия:     
2022-09-15-22-43-20.png
2) после открытия (внизу просто добавились 2 строки):
2022-09-15-22-43-56.png
 

Ну так попробуй добавить tree:-moz-focusring

добавил, но это ничего не изменило      (а для "library > downloads" можно что-то попытаться добавить? ведь там тоже фокус не исчез)
 

ведь при простом обычном клике на неподгруженную из кэша вкладку:
она прогружается ну очень легко (и совсем недолго - менее чем за секунду)

мелкое уточнение/дополнение: иногда это длится явно чуть подольше, чем около половины секунды (то есть, секунду-полторы-две)

austri пишет

я имел в виду не сами пункты, а всё их содержимое

Тогда тоже не вижу. У меня разрешение экрана по высоте меньше (1080),
влезает только 63 пункта, menupopup 1077 и 3 пикселя остаётся,
и если в обоих menupopup по 63 пункта, то они выглядят одинаково.

никакого Ctrl+D в tab-mix-plus не прописано

Ну да, там много чего ещё не прописано.

большей свободы (от tab-mix-plus)

Наоборот, если shortcut-строка в настройках tab-mix-plus
соответствует уже существующему в браузере элементу <key>,
и ты делаешь её пустой, то, тем самым, ты говоришь, что tab-mix-plus
должен отключить это сочетание клавиш, а если оставляешь как есть,
то tab-mix-plus вмешиваться не должен.

отсутствия неправильных

Что значит неправильных? Если в браузере Ctrl+T — это создать вкладку,
то tab-mix-plus должен там что-то показать, либо заказанное изменение
(пустота это вариант изменения), либо дефолтное значение.

добавил, но это ничего не изменило      (а для "library > downloads" можно что-то попытаться добавить? ведь там тоже фокус не исчез)

Да, действительно, это меня Stylish с толку сбивает.
Для about:config вот для userContent.css

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

Выделить код

Код:

@-moz-document url-prefix(about:config) {
	tree:-moz-focusring {
		border-style: solid !important;
		/*border-color: #c1c1c1 !important;*/
	}
	treechildren::-moz-tree-row(current) {
		border-color: transparent !important;
	}
}


А для "library > downloads", я добавлял richlistitem.download[current=true], а написать забыл.

то они выглядят одинаково

да - у тебя действительно выглядят ровно - ну а у меня вот так
(во всех случаях речь идёт о содержимом пунктов opened и closed):
 
верх пунктов (слева opened) (справа closed):
2022-09-17-09-57-13.png
 
низ пунктов (слева opened) (справа closed):
2022-09-17-10-01-17.png
 
- от верхнего края экрана и далее вниз до начала opened - 2 пикселя
- от верхнего края экрана и далее вниз до начала closed - 4 пикселя
 
- сверху (внутри opened): выше цифры 1 и далее до верхнего края менюшки:      5 пикселей
- сверху (внутри сlosed): выше цифры 1 и далее до верхнего края менюшки:      5 пикселей
 
- весь closed имеет на 2 пикселя меньшую высоту, чем весь opened, хотя у них обоих по 70 строк
 
- левые нижние углы пунктов совпадают до пикселя, но текст по горизонтали между ними не выровнен
      (хотя и там, и там: последней является строка 70)
 
      например, если смотреть на строку 70: в пункте closed текст сдвинут на 2 пикселя ниже
 
      opened: ниже числа 70 есть 8 пикселей (до нижнего края менюшки)
      closed: ниже числа 70 есть 6 пикселей (до нижнего края менюшки)
 
не знаю, решаемо ли это, но задачу вижу так:
1) добавить пункту closed сверху 2 пикселя по вертикали
2) сдвинуть текст пункта closed на 2 пикселя выше
3) (для полной красоты) добавить обоим пунктам сверху ещё 2 пикселя по вертикали (текст не двигать)
 
 

и ты делаешь её пустой, то, тем самым, ты говоришь, что tab-mix-plus
должен отключить это сочетание клавиш

ок - в теории чуть-чуть стало понятнее
 
 
наверно, в консоли чего-нибудь полезного не оказалось,
хотя я слегка надеялся, что тамошние 'tab-mix-plus'--errors что-то да покажут тебе любопытного
(буду, видимо, консолью ловить следующий случай с пустотой в пункте "pages")
 
 

Для about:config вот для userContent.css

richlistitem.download[current=true]

оба сработали - спасибо - пусть это и две мелочи, но всё равно пригодятся
 
 
совсем мелкий вопрос про      library > history > поле для ввода поискового запроса:
можно ли изменить поведение лисы? чтобы при попадании фокуса в это поле
не происходило автоматического выделения всех символов, из которых запрос и состоит,
а чтобы просто ставился курсор (куда его и поставили)
 
 
уточнение по поводу файла prefs.js:
- cейчас в лисе только 2 расширения (tab-mix-plus, expire history by days)
- все остальные 14 расширений уже удалены
- в этом файле полно строк, начинающихся на:
      user_pref("extension.tbutton
      user_pref("extensions.autocopy
      user_pref("extensions.classicthemerestorer
      user_pref("extensions.easydragtogo
      user_pref("extensions.firegestures
      user_pref("extensions.s3menuwizard

- верно ли понимаю, что их трогать не надо? или наобoрот - надо удалить?
- а вот эти:      user_pref("extensions.tabmix      понятное дело, я пока точно не трогаю

1) появилось 2 вопроса по поводу library (это более важный):
 
- в 2015 мой вынужденный переход (с фф-3 на фф-40) частично сломал нормальное использование раздела "history"
      (мне нужно, чтобы при запуске library была сразу прогружена вся история посещений - в разделе "history")
 
- мной предпринимались разные более-менее удачные попытки обойти эту привнесённую разрабами проблему
- в последние месяцы используется такой вариант обхода/решения в виде ahk-кода:

Выделить код

Код:

#IfWinActive ahk_class MozillaWindowClass ahk_exe firefox (portable).exe
F6::
sendplay ^+h ;open sub-window 'library'
WinWaitActive, Library ahk_class MozillaWindowClass ahk_exe firefox (portable).exe
sendplay +{tab 2}
sleep 20
sendplay /
sleep 20
sendplay {space}
return
#If

этот код даёт возможность нажать F6 и вскоре увидеть открытое окно "library", в котором:
- вся история посещений уже прогружена (точнее, она грузится на глазах, но зато быстро - где-то за секунду)
 
- а в "history > поле для ввода поискового запросa" уже вынужденно проставлен символ /      с пробелом после него,
 
      что позволяет тут же начинать набирать нужный мне поисковый запрос, и делать это сразу по всей истории,
      а не только по каким-то там навязанным куцым дурацким "yesterday", "last 7 days", "this month"...,
      ценность которых крайне сомнительна - безумно ведь неудобно (а что самое паршивое - безальтернативно)
 
      (к слову, в фф-3 никакого символа / не требовалось, чтобы сразу добраться до полного списка истории посещений)
 
- если верно помню, Ctrl+Shift+H - это встроенная в лису комбинация для запуска окна "library"
 
- можно ли приучить лису делать это всё самостоятельно? (без почти всего этого ahk-кода)
      чтобы у меня, по сути, осталось только вот это:      F6::sendplay ^+h
 
 
2) это менее важный вопрос по поводу library:
- есть его разные части (например: history, bookmarks toolbar), в которых внизу есть строки: name, location, tags
- в этих строках сейчас вызывается мелкое контекстное меню
 
- но основные зоны (и в history, и в bookmarks toolbar) у меня уже без контекстного меню
      (кроме того: в "downloads" уже тоже контекстного меню нет)
 
- как убрать контекстное меню и внизу тоже? (там, где: name, location, tags)

austri пишет

верно ли понимаю, что их трогать не надо? или наобoрот - надо удалить?

Не хочу здесь рассуждать в категориях «надо» и «не надо».
Есть и есть, и есть не просят. Если надумаешь вернуть расширение,
то настройки должны подхватиться. Если вероятность возвращения
расширения нулевая, то связанные с ним prefs'ы можно удалить.

как убрать контекстное меню и внизу тоже? (там, где: name, location, tags)

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

Выделить код

Код:

@-moz-document url(chrome://browser/content/places/places.xul) {
	#editBMPanel_rows .textbox-contextmenu {
		display: none !important;
	}
}

в "history > поле для ввода поискового запросa" уже вынужденно проставлен символ /      с пробелом после него,

      что позволяет тут же начинать набирать нужный мне поисковый запрос, и делать это сразу по всей истории,
      а не только по каким-то там навязанным куцым дурацким "yesterday", "last 7 days", "this month"...,

Это непонятно. Какой бы куцый дурацкий вариант не был бы выбран,
когда набираешь поисковый запрос, поиск всё равно идёт по всей истории.


Остальное вот, может так сойдёт (код для Services.jsm).

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

Выделить код

Код:

(url => {
	var obs = doc => {
		if (doc.documentURI != url) return;

		var box = doc.getElementById("searchFilter");
		box.removeAttribute("clickSelectsAll");

		var win = doc.ownerGlobal;
		var place = "place:sort=4&includeHidden=1";
		var ca = win.ContentArea, po = win.PlacesOrganizer;
		var select = po.selectLeftPaneContainerByHierarchy.bind(po);

		var showAllHistory = () => {
			if (ca.currentPlace != place) ca.currentPlace = place;
			box.focus();
		}
		po.selectLeftPaneContainerByHierarchy = arg => {
			select(arg);
			arg == "History" && showAllHistory();
		}
		var args = win.arguments;
		args && args[0] == "History" && win.Object.defineProperty(po, "_places", {
			configurable: true, enumerable: true, get: () => null, set(val) {
				var sn = val.selectNode;
				val.selectNode = () => {
					val.selectNode = sn;
					win.requestAnimationFrame(showAllHistory);
				}
				delete this._places;
				return this._places = val;
			}
		});
	}
	var topic = "chrome-document-loaded";
	Services.obs.addObserver(obs, topic, false);
	Services.obs.addObserver(function quit(s, t) {
		Services.obs.removeObserver(quit, t);
		Services.obs.removeObserver(obs, topic);
	}, "quit-application-granted", false);
})("chrome://browser/content/places/places.xul");

убрать контекстное меню и внизу тоже? (там, где: name, location, tags)

оно убралось - спасибо
 

Это непонятно. Какой бы куцый дурацкий вариант не был бы выбран,
когда набираешь поисковый запрос, поиск всё равно идёт по всей истории

как насчёт того нюанса, что мне нужно сразу видеть всю историю?
      (не каждый раз требуется начинать вводить поисковый запрос - зачастую есть потребность просто свериться с чем-то,
      а для этого нужен полностью прогруженный список истории посещений)
 
 

Остальное вот, может так сойдёт (код для Services.jsm)

благодарю за этот код - я его добавил - но пока что есть такая проблема:
      после стирания поискового запроса происходит переход, по сути, в никуда -
      то есть, в основном списке просто появляются строки:      today, yesterday, last 7 days, this month...
 
а должно происходить возвращение в полностью прогруженный список истории посещений,
то есть, на данный момент приходится вручную ставить и символ      /       и пробел после него,
что крайне сильно сокращает полезность именно этого кода

в истории посещений обнаружена ещё одна проблема:
      после нажатия на кнопку del выделенные строки/строка должны просто удалиться
      (без последующей переброски во всё тот же бессмысленный мелкий список:      today, yesterday, last 7 days...)
 
 
новое уточнение - как удалить весь этот мелкий мусор?:
- (в history > совсем снизу)      пункт "tags"      и заодно его кнопку со стрелкой вниз (эта кнопка - в правой стороне данного пункта/cтроки "tags")
 
- (в library > в поисковых полях)      надписи:      Search History      Search Downloads      Search Bookmarks
- (в library > в поисковых полях)      контекстные менюшки
- (в library > в поисковых полях)      все иконки ("увеличительное стекло", "синий крестик"      и другие, если они есть)
 
- (в library > в левой стороне > все иконки)       history; yesterday...; downloads; tags; all bookmarks; bookmarks toolbar; bookmarks menu; unsorted bookmarks
- (в library > в левой стороне > пункты)       unsorted bookmarks, bookmarks menu, tags
 
- (в downloads > совсем cправa)      2 варианта иконок, отображающих папку      (эти иконки сменяют друг друга при наведении/отводе курсора)

austri пишет

как насчёт того нюанса, что мне нужно сразу видеть всю историю?

Не имеет отношения к комментарию.

после стирания поискового запроса происходит переход, по сути, в никуда
а должно происходить возвращение в полностью прогруженный список истории посещений


      после нажатия на кнопку del выделенные строки/строка должны просто удалиться
      (без последующей переброски во всё тот же бессмысленный мелкий список:      today, yesterday, last 7 days...)

Хорошо, тогда попробую забрать пункт «Журнал» под это дело полностью.
Код на замену.

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

Выделить код

Код:

(url => {
	var obs = doc => {
		if (doc.documentURI != url) return;

		var box = doc.getElementById("searchFilter");
		box.removeAttribute("clickSelectsAll");

		var win = doc.ownerGlobal;
		var place = "place:sort=4";
		var o = win.Object, po = win.PlacesOrganizer;

		var select = po.selectLeftPaneContainerByHierarchy.bind(po);
		po.selectLeftPaneContainerByHierarchy = arg => {
			select(arg);
			arg == "History" && box.focus();
		}
		var args = win.arguments;
		o.defineProperty(win, "arguments", {
			configurable: true, enumerable: true, get() {
				var ca = win.ContentArea;
				var tree = po._places, sel = tree.view.selection;

				var desc = o.getOwnPropertyDescriptor(ca, "currentPlace");
				var set = desc.set.bind(ca);
				desc.set = val => {
					if (!sel.currentIndex) val = place;
					return set(val);
				}
				o.defineProperty(ca, "currentPlace", desc);

				if (args && args[0] == "History") tree.selectNode = () => {
					delete tree.selectNode;
					win.requestAnimationFrame(() => box.focus());
				}
				delete win.arguments;
				return win.arguments = args;
			}
		});
	}
	var topic = "chrome-document-loaded";
	Services.obs.addObserver(obs, topic, false);
	Services.obs.addObserver(function quit(s, t) {
		Services.obs.removeObserver(quit, t);
		Services.obs.removeObserver(obs, topic);
	}, "quit-application-granted", false);
})("chrome://browser/content/places/places.xul");

новое уточнение - как удалить весь этот мелкий мусор?:
- (в library > в левой стороне > пункты)

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


Остальное

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

Выделить код

Код:

@-moz-document url(chrome://browser/content/places/places.xul) {
	.downloadShow,
	#editBMPanel_tagsRow,
	#searchFilter .textbox-contextmenu,
	#searchFilter .textbox-search-icons {
		display: none !important;
	}
	#searchFilter *|input::-moz-placeholder {
		color: transparent !important;
	}
	#placesList > treechildren::-moz-tree-image(title, query, dayContainer),
	#placesList > treechildren::-moz-tree-image(query, OrganizerQuery_Tags),
	#placesList > treechildren::-moz-tree-image(query, OrganizerQuery_Downloads),
	#placesList > treechildren::-moz-tree-image(container, OrganizerQuery_AllBookmarks),
	#placesList > treechildren::-moz-tree-image(container, OrganizerQuery_BookmarksMenu),
	#placesList > treechildren::-moz-tree-image(container, OrganizerQuery_BookmarksToolbar),
	#placesList > treechildren::-moz-tree-image(container, OrganizerQuery_UnfiledBookmarks) {
		width: 0 !important;
	}
}

попробую забрать пункт «Журнал» под это дело полностью

спасибо за улучшение кода   ---   и за "Остальное" тоже
 
1) теперь после нажатия на кнопку del выделенные строки/строка удаляются без последующей переброски в тот ненужный мелкий список,
но при этом происходит автоматическая принудительная прокрутка всего списка (в самый верх):
      можно ли сказать лисе, чтобы в этом случае список сам никуда не скролился? (по возможности)
      (насколько помню, без этого кода так и происходило - скрол не перемещался в самый верх)
 
и сюда же очень похожий вопрос про позицию скрола,
но только уже не применительно к спискy посещённых страниц, а применительно к стёртомy текстy (в поисковом поле):
      можно ли сделать так, чтобы после стирания поискового запроса
      (во вновь появившемся полном списке истории посещений) происходило восстановление позиции вертикального скрола?
 
 
2) в library > в левой стороне:      почти все иконки теперь скрыты, но первый пункт "History" остался со своей иконкой,
      и я хотел было задать вопрос, можно ли её тоже скрыть, но вот эта добавленная мной строка уже сама справилась:
      #placesList > treechildren::-moz-tree-image(title, query),
 
я также хотел было задать вопрос, можно ли скрыть 2 мелких минуса/плюса:
сразу слева от иконки у пункта "History"      и сразу слева от пункта "All Bookmarks"
(причина: никогда не нажимаю эти мелкие минусы - они просто не нужны), но вот эти добавленные мной строки уже сами справились:     
      #placesList > treechildren::-moz-tree-twisty(title, query),
      #placesList > treechildren::-moz-tree-twisty(container, OrganizerQuery_AllBookmarks),
 
пожалуйста, дай знать, если что-то в этих добавленных мной трёх строках является ошибкой и может привести к чему-то плохому
 
 
3) как заменить тёмно-синий цвет на серый
- (в library)      при выделении строки в содержимом:      history      downloads      all bookmarks      bookmarks toolbar
- (в library > cлева)      при выделении любого пункта в дереве      (то есть, от history до unsorted bookmarks)
 
      синий:      rgb 10, 36, 106
      серый:      rgb 212, 208, 200      (это тот серый, который там же и появляется - при пропадании фокуса)
 
и в library > в строке поиска > при выделении текста: как сделать тоже самое? (заменить цвет)
чего я ещё в августе добился для урл-бара, с помощью вот этого кода:

Выделить код

Код:

#urlbar *|*.textbox-input::-moz-selection,       #urlbar *|*.textbox-input:focus::-moz-selection        
{ background: rgba(176,176,176, 1.0) !important; color: #fcfcfc !important; }

в library (в строке поиска) выделение текста должно стать вместо тёмно-синего вот таким серым:      rgb 176, 176, 176
 
 
4) в library > bookmarks toolbar > совсем снизу (при какой-то выделенной закладке):     
можно ли скрыть появляющуюся квадратную кнопку (со стрелкой вниз) и слово "More"?      (слово - сразу справа от этой кнопки)
 
5) в library > сверху слева:      можно ли скрыть иконки? у этих трёх кнопок:      organize, views, import and backup
 
 
6) в history > список посещённых страниц > совсем слева в каждой строке:
можно ли убрать "иконку"/"что-то типа иконки"?      (наверно, это называется fav-icon)
      (желательно не просто скрыть, а именно убрать, освободив место под ней,
      чтобы побольше стало горизонтального пространства, которое пригодится в случае длинных строк/названий)
 
- изредка это иконка сайта
- но почти всегда это просто какой-то квадратик с как бы округлёнными углами (и с пунктиром по всем его четырём сторонам)
 
- перед квадратиком/иконкой имеется пустая горизонтальная зона (шириной 17 пикселей) - можно ли её убрать?
      (здесь тоже: желательно не просто скрыть, а именно убрать, освободив место под ней)
 
 
7) в library > all bookmarks > в центральном списке из трёх строк:
можно ли скрыть иконки? в этих трёх строках:      bookmarks toolbar; bookmarks menu; unsorted bookmarks
(ну и те же лишние 17 пикселей тут тоже в наличии)
 
и сюда же вдогонку родственные уточнения:
- в bookmarks toolbar:      как в каждой строке убрать и иконку, и те же 17 пикселей?
 
- в downloads > слева в основном списке:      как в каждой строке убрать иконку?
(у меня тут просто сотни раз повторяется одна и та же - ничего не дающая мне - крупная иконка, означающая "неизвестный тип файла")

8) как сделать так, чтобы в Library (в дереве) пункт History всегда был свёрнут?
в настоящее время: лиса не запоминает это сворачивание, если я сам его осуществляю
 
9) уточню на всякий случай по поводу "tab mix plus > session > advanced setting",      оптимальны ли эти настройки?:
       - minimum time interval between 2 state saves (in ms):      60 000
       - save sensitive data (form date, POSTDATA and cookies) for:      all sites
       - maximum amount of POSTDATA to be stored (in bytes, -1 = all of it):      0
 
10) впервые за эти 12 дней: количество вкладок уменьшилось до 70, и только теперь стало понятно, что расширение "tab mix plus"
не виновато в недавно описанных визуальных проблемах с пунктами opened и closed
 
то есть, например, если и там, и там по 70 строк, то всё ровно:
и по пикселям, и по строкам, и по размерам содержимого этих двух пунктов
 
получается, что эти визуальные проблемы, видимо, привнесены вот где-то ещё 20 дней назад:
понимаю, что проблема скучная (ты даже второй скрин от 17 сентября не смотрел ни разу),
      но упоминаю это всё в надежде, что тебе станет любопытно попробовать разобраться, что именно в том твоём коде можно подкорректировать,
      чтобы функционально улучшенное тобой содержимое пункта opened стало ещё и визуально лишённым этих огрехов

austri пишет

и сюда же очень похожий вопрос про позицию скрола,
но только уже не применительно к спискy посещённых страниц, а применительно к стёртомy текстy (в поисковом поле):
      можно ли сделать так, чтобы после стирания поискового запроса
      (во вновь появившемся полном списке истории посещений) происходило восстановление позиции вертикального скрола?

Можно, например, запоминать номер первой видимой строки,
а после стирания поискового запроса прокрутить на этот номер.
Однако, если, к моменту стирания, исторический расклад уже поменялся,
то прокрутка может попасть не туда, куда ожидалось.
Но чего-то умнее в голову не приходит, поэтому пока так.

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

Выделить код

Код:

(url => {
	var obs = doc => {
		if (doc.documentURI != url) return;

		var box = doc.getElementById("searchFilter");
		box.removeAttribute("clickSelectsAll");

		var win = doc.ownerGlobal;
		var place = "place:sort=4";
		var o = win.Object, po = win.PlacesOrganizer;

		var select = po.selectLeftPaneContainerByHierarchy.bind(po);
		po.selectLeftPaneContainerByHierarchy = arg => {
			select(arg);
			if (arg == "History")
				box.focus(),
				po._places.selectedNode.containerOpen = false;
		}
		var args = win.arguments;
		o.defineProperty(win, "arguments", {
			configurable: true, enumerable: true, get() {
				var ca = win.ContentArea;
				var tree = po._places, sel = tree.view.selection;

				var skip, pos = 0;
				var pc = doc.getElementById("placeContent"), bo = pc.boxObject;
				var lst = e => {
					if (skip) {
						skip = false;
						if (pos) return;
					}
					if (!sel.currentIndex && pc.view._rootNode.uri == place)
						pos = bo.getFirstVisibleRow();
				}
				pc.addEventListener("scroll", lst, true);
				win.addEventListener("unload", function unload() {
					win.removeEventListener("unload", unload);
					pc.removeEventListener("scroll", lst, true);
				});
				var select = () => {
					pc.removeEventListener("select", select);
					pos && bo.scrollToRow(pos);
				}
				var desc = o.getOwnPropertyDescriptor(ca, "currentPlace");
				var set = desc.set.bind(ca);
				desc.set = val => {
					if (!sel.currentIndex) {
						var v = ca.currentView.view;
						var uri = v && v._rootNode.uri;
						if (uri == place) return;

						if (uri && uri.startsWith("place:terms=")) {
							if (box.value) return;
							skip = true;
							pc.addEventListener("select", select);
						}
						val = place;
					}
					return set(val);
				}
				o.defineProperty(ca, "currentPlace", desc);

				if (args && args[0] == "History") {
						var node = tree.view._rows[0];
						args = [node.itemId];
						win.requestAnimationFrame(() => box.focus(node.containerOpen = false));
				}
				delete win.arguments;
				return win.arguments = args;
			}
		});
	}
	var topic = "chrome-document-loaded";
	Services.obs.addObserver(obs, topic, false);
	Services.obs.addObserver(function quit(s, t) {
		Services.obs.removeObserver(quit, t);
		Services.obs.removeObserver(obs, topic);
	}, "quit-application-granted", false);
})("chrome://browser/content/places/places.xul");

добился для урл-бара, с помощью вот этого кода

Ну так заменить #urlbar на #searchFilter
Вот ещё немного из спрашиваемого, но не всё, надеюсь сам доделаешь.

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

Выделить код

Код:

@-moz-document url(chrome://browser/content/places/places.xul) {
	image.menubar-left,
	image.downloadTypeIcon,
	#infoBoxExpanderWrapper {
		display: none !important;
	}
	#placeContent[place="place:sort=4"] > treechildren::-moz-tree-image(),
	#placeContent[place="place:sort=4"] > treechildren::-moz-tree-twisty(),
	#placeContent[place^="place:beginTime="] > treechildren::-moz-tree-image(),
	#placeContent[place^="place:beginTime="] > treechildren::-moz-tree-twisty() {
		width: 0 !important;
		-moz-padding-end: 2px !important;
	}
	/*
	#detailsDeck {
		height: auto !important;
	}
	*/
}

оптимальны ли эти настройки?

Откуда мне знать. Зависит от цели.
Если поднял интервал до 60 секунд чтобы было меньше записи на диск,
то это одно дело. А мне там нужно наоборот, поставил 3 секунды, и то не всегда помогает.
Так и остальные, смотря под какую задачу оптимизируется.

не смотрел ни разу

Не на что мне там смотреть, и по превьюшке видно, что ничего не видно.
Да и с этим ибб.ко радости мало. Мне надо по ссылке сходить,
затем вызвать окно «Информация о странице», или открыть исходный код страницы,
там скопировать содержимое меты «og:image», и вот тогда можно открыть прямую ссылку на скриншот.
Я понимаю, что это может быть автоматизировано, но не собрался пока.

то есть, например, если и там, и там по 70 строк, то всё ровно

Что значит «если»? Написано и было: «у них обоих по 70 строк».


Если у пункта "opened" больше 70, то должна быть вторая колонка.
Если у пункта "closed" больше 70, то должны быть кнопки прокрутки.

более полноценно ответить смогу только через часов 15, а пока так:
за обновлённый код благодарю, буду тестировать
 

Можно, например, запоминать номер первой видимой строки

скорее всего, этого будет вполне достаточно
 

Если поднял интервал до 60 секунд чтобы было меньше записи на диск

да - вероятно лет 5-7 назад я так и сделал (не помню точно),
и не особо помню, что там было изначально - возможно, 15 000
 

Зависит от цели

цели две, но они в таком сочетании тебе, наверно, не понравятся:
- чтобы было меньше записи на диск (ибо это жёсткий диск, а с ним надо бережнее)
- чтобы фф почаще себя бэкапил (полностью, или ещё как-то - я ж даже не знаю, что именно он там каждые 60с делает)
 
и я не просто так уточнял (может, как раз ищу этот баланс, и поэтому советуюсь)
 

Так и остальные

а по остальным двум мне и тем более не так очевидно, например:
maximum amount of POSTDATA = 0      это хорошо для чего? и плохо для чего?
 
 

Не на что мне там смотреть

ок - тебе виднее
 

и по превьюшке видно, что ничего не видно

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

Да и с этим ибб.ко радости мало

я вот oтсюда его взял на вооружение
 

и вот тогда можно открыть прямую ссылку на скриншот

ок - но просто скажу, что у меня всё попроще:
       - правый клик на превьюшке ---> open in new tab (если что, это не в лисе-40)
       - по центру: клик на картинке (чтобы её увидеть)
       - клик ещё раз (если надо её увидеть в очень увеличенном виде)
 

Что значит «если»? Написано и было: «у них обоих по 70 строк»

это значит, что у меня в последние дней 10-12 в пункте opened было существенно более 70 строк,
а когда я написал "то есть, например, если и там, и там по 70 строк, то всё ровно",
 
то перед тем моментом у меня как раз сократилось количество строк (в пункте opened) до именно 70,
и соответственно, я только тогда увидел, что визуальных изъянов уже нет
      (и только тогда я понял, что изъяны привносятся лишь при достижении количества строк
      до 71 или более - в пункте opened)
 

Если у пункта "opened" больше 70, то должна быть вторая колонка

так и есть
 

Если у пункта "closed" больше 70, то должны быть кнопки прокрутки

у меня в пункте closed больше 70 не бывает (я об этом явным образом упоминал),
и более того, конкретно в данном моменте проблемным является пункт opened:
      если верно понимаю, что-то в твоём коде заставляет текст всех строк (внутри пункта opened) чуть сдвигаться вертикально,
      но это начинается только когда появляется вторая колонка,
 
      и тогда ещё сам пункт opened начинает чуть отличаться по вертикали от высоты пункта closed
      (а если второй колонки у пункта opened нет, то и отличий/изъянов нет)

austri пишет

более полноценно ответить смогу

Аналогично. Поэтому по верхушкам:

чтобы было меньше записи на диск

Меньше здесь было в смысле реже.

что именно он там каждые 60с делает

Не совсем каждые, там сложнее, это не значит, что лис будет
долбить диск каждые N секунд сохранением сессионного расклада,
а только если этот расклад изменился, то есть, это как-бы минимальмый
период для следующей записи. Если запись не требуется, значит писать не должен,
иначе говоря, если отошёл от компа на полчаса, то, скорее всего, никаких тридцати записей не случится.

amount of POSTDATA = 0      это хорошо для чего? и плохо для чего?

Я, в повседневном браузере, не пользуюсь сохранением сессий как таковым,
поэтому не знаю. Но, так-то, чисто теоретически, если вкладка открыта POST-запросом,
а сохранение POSTDATA в ноль, то что получится? Видимо, аналогичо GET-запросу.
Если за какой-то большой период времени проблем так не было замечено, тогда оставь,
до тех времён, когда (если) проблема нарисуется (обозначится как актуальная).

скажу, что у меня всё попроще

Понятное дело, у тебя, наверняка, скрипты разрешены. А у меня нет (не обсуждается).
Разумеется, я написал там всё это не как претензию, а как объяснение, раз уж за язык был потянут.

(и только тогда я понял, что изъяны привносятся лишь при достижении количества строк
      до 71 или более - в пункте opened)

Ну так это совсем другое дело!
Возможно, поможет подрегулировать число восемь в этой строке кода
(в смысле кода, который модифицирует menupopup пункта opened под многоколоночность).


var max = screen.height - 8, mp = max + "px";

var max = screen.height - 8, mp = max + "px";

замена 8 на 10 убрала изъян - спасибо за подсказку, стало явно лучше,
хоть и всё равно не вполне идеально (в целом по виду пунктoв opened/closed), но тут уже твой код никак не виноват
 

Но чего-то умнее в голову не приходит, поэтому пока так

проблем по скролу я пока не вижу, так что обновлённый код точно стал полезен
 

Вот ещё немного из спрашиваемого, но не всё

я добавил этот код:

Выделить код

Код:

#placeContent > treechildren::-moz-tree-image(container, OrganizerQuery_BookmarksToolbar),
#placeContent > treechildren::-moz-tree-twisty(container, OrganizerQuery_BookmarksToolbar),
#placeContent > treechildren::-moz-tree-image(container, OrganizerQuery_BookmarksMenu),
#placeContent > treechildren::-moz-tree-twisty(container, OrganizerQuery_BookmarksMenu),
#placeContent > treechildren::-moz-tree-image(container, OrganizerQuery_UnfiledBookmarks),
#placeContent > treechildren::-moz-tree-twisty(container, OrganizerQuery_UnfiledBookmarks)

и он привёл в порядок вид всех трёх строк (справа от пункта All Bookmarks) (в основном списке),
но мои многочисленные попытки не помогли привести в порядок вид закладок (справа от пункта Bookmarks Toolbar) (в основном списке)
  
я понял, что этот код:

Выделить код

Код:

#placeContent[place="place:sort=4"] > treechildren::-moz-tree-image(),
#placeContent[place="place:sort=4"] > treechildren::-moz-tree-twisty(),

привёл в порядок вид всех строк (справа от пункта History) (в основном списке)
 
но я не понял, что делают вот эти 2 строки (вроде ничего не делают):

Выделить код

Код:

#placeContent[place^="place:beginTime="] > treechildren::-moz-tree-image(),
#placeContent[place^="place:beginTime="] > treechildren::-moz-tree-twisty(),

и мне не удалось сообразить, как их отредактировать, чтобы привести в порядок вид закладок
(если именно это подразумевалось под словами "надеюсь сам доделаешь")
 
 
замена тёмно-синего цвета (на серый) пока удалась только для #searchFilter,
но в остальных местах по-прежнему тёмно-синее выделение
 
 
можно ли сделать так, чтобы в library при наведении курсора на organize, views, import and backup
не появлялась прямоугольная рамка? и чтобы при нажатии на любую из этих трёх кнопок - их текст не сдвигался
 
можно ли сделать так, чтобы в library при нажатии на пункты дерева
не появлялась бессмысленная серая статусная однострочная полоска? (под главным списком):
       - при нажатии на History полоска пишет:      Name: History
       - при нажатии на Tags полоска пишет:      Name: Tags
       - при нажатии на All Bookmarks полоска пишет:      Name: All Bookmarks
       - при нажатии на Bookmarks Toolbar полоска пишет:      Name: Bookmarks Toolbar
       - при нажатии на Bookmarks Menu полоска пишет:      Name: Bookmarks Menu
       - при нажатии на Unsorted Bookmarks полоска пишет:      Name: Unsorted Bookmarks
 
строку      #detailsDeck { height: auto !important; }      я включил (с ней лучше)
строка       #nameDeck { height: auto !important; }      не помогла (пробовалась наугад)      (#titleDeck тоже не помоглa)
 
 

Если запись не требуется, значит писать не должен

так понимаю, что мне можно вполне и 30 000 поставить (вместо 60 000), но пока я не уверен, надо ли это делать
 

до тех времён, когда (если) проблема нарисуется

- к тому моменту я, возможно, уже раз 10 забуду про этот      amount of POSTDATA = 0     
      который я, судя по всему, и не трогал никогда
- видимо, пока оставлю без изменений (хотя не уверен, что это лучший вариант)
 

у тебя, наверняка, скрипты разрешены

надо полагать, что да

А у меня нет (не обсуждается)

а если очень вкратце обсудить (но только с другой стороны)? допустим, а может, и мне их перестать разрешать?
так понимаю, выигрыш/смысл в повышенной безопасности? а потери-то в чём будут выражаться?
      (хотя, наверно, там сразу же вылезет что-то совсем неприемлемое, например, как вариант,
      невозможность отправить torrent-файл по клику сразу в программу u-torrent)

austri пишет

не понял, что делают вот эти 2 строки (вроде ничего не делают)

Это для дочерних субкверей корневого пункта History (Сегодня - ... - Старше чем 6 мес.).
Если не разворачиваешь и не пользуешься, тогда можно удалить.
А «справа от пункта Bookmarks Toolbar» будет
#placeContent[place="place:folder=TOOLBAR&expandQueries=0"]

замена тёмно-синего цвета (на серый) пока удалась только для #searchFilter,
но в остальных местах по-прежнему тёмно-синее выделение

Ищи id'шники или иные селекторы, или самый общий для всех.
Верни в тестовый экземпляр лисы все девелоперские расширения.


Или, может, создай две строковые настройки
ui.textSelectBackground и ui.textSelectForeground
с валидными значениями, типа lightblue или #9a0303

можно ли сделать так, чтобы в library при наведении курсора на organize, views, import and backup
не появлялась прямоугольная рамка? и чтобы при нажатии на любую из этих трёх кнопок - их текст не сдвигался

menu:hover {
    border-color: transparent !important;
}
menu[_moz-menuactive] {
    padding: 2px 1px 2px 4px !important;
}

можно ли сделать так, чтобы в library при нажатии на пункты дерева
не появлялась бессмысленная серая статусная однострочная полоска?

Через CSS я не знаю как. Но можно попробовать в скрипт ещё кода добавить,
например, перед delete win.arguments;

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

Выделить код

Код:

//
				var ids = new Set(), lpc = win.PlacesUIUtils.leftPaneQueries;
				for(var prop in lpc) prop.startsWith("D") || ids.add(lpc[prop]);

				var name = doc.getElementById("editBMPanel_namePicker");
				var row = name.parentNode, cd = doc.commandDispatcher;
				desc = o.getOwnPropertyDescriptor(name.__proto__, "readOnly");
				var setter = desc.set.bind(name);
				desc.set = val => {
					if (val) {
						var tree = cd.focusedElement;
						var node = tree && tree.selectedNode;
						if (node && ids.has(node.itemId))
							return row.collapsed = true;
					}
					return setter(val);
				}
				o.defineProperty(name, "readOnly", desc);

так понимаю, выигрыш/смысл в повышенной безопасности?

Для меня не в этом, но повышенная безопасность идёт бонусом.

а потери-то в чём будут выражаться?

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

невозможность отправить torrent-файл по клику сразу в программу u-torrent

Ещё чего. Таким занимается сам браузер.
Контент может просто не отдать собственно torrent-файл.
А прикинь, контент будет определять куда что (не) отправить.

Если не разворачиваешь и не пользуешься, тогда можно удалить

эти 2 строки оставлю (просто на всякий случай)
 

#placeContent[place="place:folder=TOOLBAR&expandQueries=0"]

сработало - спасибо
 

Ищи id'шники или иные селекторы, или самый общий для всех

где и как искать? (inspector?)
 

Верни в тестовый экземпляр лисы все девелоперские расширения

зачем?
 

Или, может, создай две строковые настройки
ui.textSelectBackground и ui.textSelectForeground

- создать две новые string-cтроки в about:config?
- а это не перепортит имеющуюся настройку? (в файле userContent.css)
(как раз связанную с цветами при выделении текста на странице):
 

Выделить код

Код:

::-moz-selection,      textarea::-moz-selection 
{ background:      rgba(176,176,176, 1.0) !important;      color: #fcfcfc !important; }

 
 

menu:hover { border-color: transparent !important; }
menu[_moz-menuactive] { padding: 2px 1px 2px 4px !important; }

сработало, но частично: если нажать на одну из этих кнопок - и чуть поводить курсором влево-вправо,
то прямоугольная рамка так или иначе появляется в ряде случаев, и особенно явно это заметно в двух случаях:
 
- повести курсор влево от кнопки organize
- повести курсор вправо от кнопки import and backup
 

Но можно попробовать в скрипт ещё кода добавить,
например, перед delete win.arguments;

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

выключи и посмотри сам, погоняй денёк

это  javascript.enabled  в about:config?      (сейчас она у меня: default, boolean, true)

austri пишет

где и как искать? (inspector?)

Да, inspector, но не контентский, а inspector Browser Toolbox'а,
[Файл Правка Вид ...] —> «Инструменты» —> «Веб-разработка» —> «Инструменты браузера».
Только сначала надо в настройках контентских инструментов поставить галки


[✔] Включить инструменты отладки browser chrome и дополнений
[✔] Включить удалённую отладку

зачем?

Чтобы пользоваться. И, соответственно, задавать меньше вопросов.

а это не перепортит имеющуюся настройку? (в файле userContent.css)

Ну так создай со значениями red и yellow, чтобы явно отличалось по виду, и смотри.
Если что-то не устроит, сбросишь настройки и все дела.

- повести курсор влево от кнопки organize
- повести курсор вправо от кнопки import and backup

Видимо слетает условие «при наведении курсора».

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

Вот, кстати, об инструментах разработки.
Нужны, в том числе, чтобы точнее описывать элемент,
то есть id'шником, или именем тэга, а не просто «полоска».


Я так понял, нужно скрывать весь deck#detailsDeck
тогда попробуй такую правку

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

Выделить код

Код:

/*
				var row = name.parentNode, cd = doc.commandDispatcher;
				desc = o.getOwnPropertyDescriptor(name.__proto__, "readOnly");
				var setter = desc.set.bind(name);
				desc.set = val => {
					if (val) {
						var tree = cd.focusedElement;
						var node = tree && tree.selectedNode;
						if (node && ids.has(node.itemId))
							return row.collapsed = true;
					}
					return setter(val);
				}
*/
				var deck = name.closest("deck"), cd = doc.commandDispatcher;
				desc = o.getOwnPropertyDescriptor(name.__proto__, "readOnly");
				var setter = desc.set.bind(name);
				desc.set = val => {
					var hide;
					if (val) {
						var tree = cd.focusedElement;
						var node = tree && tree.selectedNode;
						hide = node && ids.has(node.itemId);
					}
					return (deck.hidden = hide) ? val : setter(val);
				}

это  javascript.enabled  в about:config?

У меня сложнее, но да, эта настройка подойдёт.
Правда пользовательские XBL-скрипты слетят, но у тебя там,
вроде, только один, который AGENT_SHEET подключает.
Раз CTR удалён, то можно просто перебросить в другое место userChrome.css
к другим правилам для окна браузера, то есть на общих основаниях.

Или, может, создай две строковые настройки
ui.textSelectBackground и ui.textSelectForeground
с валидными значениями, типа lightblue или #9a0303

- в about:config я создал две новые string-cтроки:  #9a0303
- это ничего не изменило - там, где изменение нужно - в library - заменить тёмно-синий цвет на серый,
 
      то есть, сделать так, чтобы цвета в выделенной строке никак не менялись
      (вне зависимости от того, в фокусе эта строка или нет),
      сейчас же происходит так:      1. синий цвет, если в фокусе      2. серый цвет, если не в фокусе
 
      подробнее про цвета в выделенной строке:
      сейчас в фокусе:                        текст - белый        фон - тёмно-синий
      сейчас не в фокусе:                    текст - чёрный      фон - серый
      должно стать всегда:                  текст - чёрный      фон - серый
 
- это испортило цвет текста внутри выделeнной строки (на странице) (не в library)
- испорченный цвет я исправил (убрав эти две новые строки в about:config, и перезагрузив браузер)
 
- надо полагать, эти две строковые настройки вообще не имеют отношения к обсуждаемой теме,
поэтому я попробовал пойти другим путём, упомянутым тобой:
 

Да, inspector, но не контентский, а inspector Browser Toolbox'а

я добавил в файл click.js вот эту строку      "menu_browserToolbox": { lab: "tool-box", ctrl: true }      но в менюшке пункт tool-box не появился,
хотя там же в файле есть уже давно строка      "menu_browserConsole": { lab: "console", ctrl: true }      и она срабатывает:
      всё этo, видимо, потому что "сначала надо в настройках контентских инструментов поставить галки",
      но где эти "настройки контентских инструментов"?
 

Чтобы пользоваться. И, соответственно, задавать меньше вопросов

- мой вопрос "зачем?" был адресован словам "Верни ... расширения" (словам, которые сбили с толку)
- для меня "расширения" - это то, что мной было удалено: уже 14 штук из 16
      (про удаление tab-mix-plus я потихоньку даже мечтать перестаю:
      из-за повышенной сложности в реализиции этой идеи, в связи с чем даже ты не берёшься за неё)
 
 

Видимо слетает условие «при наведении курсора»

- доктор, на левой руке у меня опухли 3 пальца (2й, 3й, 4й) (и у них ещё ногти почему-то сдвигаются - и это при простом прикосновении)
- вот вам таблетка
 
на следующий день:
- доктор, таблетку я принял - те 3 пальца больше не опухают (а с ногтями вообще всё норм стало), но рядом 1й и 5й пальцы теперь гноятся
- видимо, слетает условие "у меня опухли 3 пальца"
- так а гноящиеся из-за таблетки пальцы тоже хотелось бы вылечить
 
(твою фразу про "слетает условие" ещё можно сравнить с советом этого же доктора:
"а ты тремя пальцами (2й, 3й, 4й) не шевели - и не касайся ими друг друга - тогда и не будет виден гной в первом и пятом пальцах")
 
 
в той library-зоне (где 3 кнопки: organize, views, import and backup) даже разрабами явным образом задуман
лёгкий курсорный переход от одной кнопки к другой,
      то есть, там и щелчков не нужно - просто надо курсором чуть поводить вправо-влево,
      чтобы соответствующие 3 выпадающие менюшки сменяли одна другую
 
так вот, при этом самом вождении (лёгком) курсора
и происходит какое-никакое, но всё-таки появление этой прямоугольной рамки (даже если водить только внутри зоны этих трёх кнопок)
(но водить надо уже после клика на какую-то из этих трёх кнопок)
 
 

чтобы точнее описывать элемент

куда уж точнее-то - вот, цитирую как оно было мной описано:
       - при нажатии на History полоска пишет:      Name: History
       - при нажатии на Tags полоска пишет:      Name: Tags
       - при нажатии на All Bookmarks полоска пишет:      Name: All Bookmarks
       - при нажатии на Bookmarks Toolbar полоска пишет:      Name: Bookmarks Toolbar
       - при нажатии на Bookmarks Menu полоска пишет:      Name: Bookmarks Menu
       - при нажатии на Unsorted Bookmarks полоска пишет:      Name: Unsorted Bookmarks

 
то есть, в этих 6 строках (и ещё прямо перед ними тоже):     
дословно было описано и текстовое содержимое полоски (все 6 вариантов), и её цвет, и её положение, и помимо этого -
там просто больше нет никаких других полос, то есть путать её не с чем
      если такой точности недостаточно, то тогда даже не знаю
      (в общем, новая правка улучшила ситуацию, за что тебя благодарю)
 
 

Раз CTR удалён, то можно просто перебросить в другое место userChrome.css

возможно, как-нибудь в другой раз попробую заняться этим перебросом, но:
       - во-первых, не особо-то оно и надо - просто было любопытно - а каково это?: "запретить скрипты"
       - во-вторых, не очень исчерпывающе понятно в деталях, что именно перебрасывать
       - в-третьих, проблемная перекраска - синей полосы в серую - у меня куда в большем приоритете

вот эта новая строка:      menu { border-color: transparent !important; }
вроде бы решила проблему, описанную в прошлом моём сообщении данными словами:
"гноящиеся из-за таблетки пальцы тоже хотелось бы вылечить"
 
но не знаю, привнесла ли эта строка что-то негативное (пока я ничего подобного не заметил)
 
ещё такой новый момент, замеченный только что:
- любое появление этой прямоугольной рамки исчезло в случае с тремя кнопками в "history"
- но в случае с двумя кнопками в "downloads" (organize, clear downloads) -
      прямоугольная рамка всё равно появляется - над кнопкой "clear downloads",
 
и вот это не помогло:
menu[_moz-ClearDownloads] { border-color: transparent !important; }
menu[_ClearDownloads] { border-color: transparent !important; }
menuitem > .ClearDownloads { border-color: transparent !important; }
 
menu[_moz-Downloads] { border-color: transparent !important; }
menu[_Downloads] { border-color: transparent !important; }
menuitem > .Downloads { border-color: transparent !important; }
 
 
 
по поводу "нужно скрывать весь deck#detailsDeck"      и      "новая правка улучшила ситуацию":
в library (из нехорошего) я ещё заметил 1 нюанс, поясню на примере:
 
1) history - выделить все строки (посещённых страниц) (то есть, нажать "Ctrl+A")      (если что, у меня 39 тысяч посещённых страниц)
2) нажать "End", то есть активировать последнюю строку
 
3) она-то активируется (заодно и список скролится вниз, что естественно), но при этом почти мгновенно
и последняя строка (полностью), и предпоследняя строка (почти полностью) перекрываются всё той же статусной панелькой,
которая внизу - сразу под списком посещённых страниц, и в которой у меня теперь две строки: name, location
 
4) можно ли этo как-то исправить? (чтобы последние две строки не перекрывались)

austri пишет

это ничего не изменило
должно стать всегда:                  текст - чёрный      фон - серый

А, цвет выделенного в деревьях. Ну как-то так

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

Выделить код

Код:

treechildren::-moz-tree-row(selected) {
	background-color: #d4d0c8 !important;
}
treechildren::-moz-tree-cell-text(selected) {
	color: black !important;
}

где эти "настройки контентских инструментов"?

Где-то здесь.

- мой вопрос "зачем?" был адресован словам "Верни ... расширения" (словам, которые сбили с толку)
- для меня "расширения" - это то, что мной было удалено: уже 14 штук из 16

Верно. Я сказал верни не в повседневный браузер, а «в тестовый экземпляр лисы».
Он нужен не чтобы на него любоваться, и не как предмет гордости отсутствием расширений,
а чтобы смотреть (в нём) как устроен браузер, для экспериментов и перенесения положительных
результатов в повседневный браузер.
А то получается — не люблю расширения, поудаляю везде,
а если что-то понадобится, лучше на форуме спрошу тех, у кого они есть.


Собственно, наверно, там только DOM Inspector был, и он хорош для наглядности.
Ещё не помешал бы Custom Buttons для удобного запуска кнопки Attributes Inspector.
Но можно обойтись и только встроенными в лису инструментами, дело хозяйское.

теперь гноятся
гноящиеся из-за таблетки пальцы

Не готов согласиться. Поскольку никакой рамки код не добавлял вообще,
то аналогия не подходит. Написано было «чтобы в library при наведении курсора на ...».
То есть:
- доктор, можно сделать так, чтобы, когда я держу руку в кармане, пальцы не болели.
- вот вам таблетка.

на следующий день:
- доктор, таблетку я принял, теперь, когда держу руку в кармане, пальцы больше не болят.
но, когда вынимаю руку из кармана, пальцы всё ещё продолжают болеть.

куда уж точнее-то - вот, цитирую как оно было мной описано:

А то, что было скрыто с первого раза, разве не подходило под это описание?

не очень исчерпывающе понятно в деталях, что именно перебрасывать

Ну сам стиль, CSS-правила. AGENT_SHEET здесь теперь больше не нужен,
поэтому сделать так, как если бы эти правила просто нужно было бы
добавить в userChrome.css как любые другие.

кнопкой "clear downloads"

#clearDownloadsButton

поясню на примере:

1) history - выделить все строки (посещённых страниц) (то есть, нажать "Ctrl+A")      (если что, у меня 39 тысяч посещённых страниц)
2) нажать "End", то есть активировать последнюю строку

3) она-то активируется (заодно и список скролится вниз, что естественно)

А можно более жизненный пример?
То есть, я это вижу, и этот пример интересен с академической точки зрения,
но зачем так делать на практике мне неясно.

А, цвет выделенного в деревьях. Ну как-то так

в "library - history" сработало (спасибо большое),      а в "library - downloads" -  нет
 
и вот это не помогло:
#Downloads > treechildren::-moz-tree-row(selected) { background-color: #d4d0c8 !important; }
#Downloads > treechildren::-moz-tree-cell-text(selected) { color: black !important; }
 
#OrganizerQuery_Downloads > treechildren::-moz-tree-row(selected) { background-color: #d4d0c8 !important; }
#OrganizerQuery_Downloads > treechildren::-moz-tree-cell-text(selected) { color: black !important; }
 
 

А то получается — не люблю расширения, поудаляю везде

не совсем так, ведь в дополнительном браузере у меня осталось:
 
- menu wizard, tab mix plus, toolbar buttons
- u-block origin (с какого-то не очень давнего момента он типа поломался, но я пока не занимался выяснением причин и починкой)
 
- ad-block (disabled), CTR (disabled), toggle system colors (disabled)
- expire history by days (disabled) (вот как раз тут тестирую его отсутствие)
 
 

А то, что было скрыто с первого раза, разве не подходило под это описание?

если не путаю - то, что было скрыто с первого раза, привело к:
"теперь эта бессмысленная серая полоска во всех шести случаях пустая",
что хоть и улучшало ситуацию, но откровенно незначительно
 
 

#clearDownloadsButton

эта строка:      #clearDownloadsButton { border-color: transparent !important; }      помогла (спасибо)
 

А можно более жизненный пример?

- не получится привести другой, так как тот мой пример уже полностью описывал обнаруженное мной
конкретное специфичное (слегка дефектное) поведение лисы
 
- и тут уже или лечить дефект (если понятно как)
- или поставить костыль какой-нибудь:
      по типу добавки в код чего-то наподобие одиночного авто-скрола вниз - именно в подобной ситуации,
      ведь одиночный ручной скрол вниз (над списком посещённых страниц) как раз-таки и "вылечивает" это перекрытие
      последних двух строк в истории посещений
 
- или смириться (благо, в данном случае это нетрудно)
- но вот как раз "с академической точки зрения" подобные мелкобаги, на мой взгляд, недопустимы
 
 

но зачем так делать на практике мне неясно

- у тебя это понятный и хороший набор слов
- он явно логичен (но если задуматься, то ведь, по сути, это просто попытка оправдать наличие бага)
 
- полагаю, что в программах (если бы всегда все руководствовались подобной логикой)
      многие тысячи багов так и не были бы исправлены
 
- что касается конкретно этого моего действия (перехода в самый низ списка), то это, видимо,
      просто уже давно выработанная привычка (ещё с 2015), когда я при переходе с фф-3 на фф-40 жутко боялся за сохранность
      своей очень немелкой истории посещений, и поэтому часто нажимал End, чтобы удостовериться,
      что даже самая старая строка (ещё от августа-2008) (которую помню наизусть) на месте,
      и значит, наверно, всё в порядке и с более новыми строками тоже
 
      ну а выделение всех строк перед этим - это, по-видимому, тоже примерно подобная привычка:
      я-то ориентировочно всегда помню, сколько тысяч/сотен строк должно быть,
      вот и привык иногда нажимать Ctrl+A, чтобы через пару секунд увидеть внизу точное количество (например, 35500),
 
      но в моём случае это, конечно, уже очень давно (с 2009) реализовaно проще - вместо Ctrl+A нажимаю F4
 
- а в практике программ/систем вообще многое неясно (из того, зачем что-то делать)

скрытый текст
ну, например, добровольно переходить на всякого рода "service packs" для висты,
незатейливо названные: windows-7 / 8 / 8.1 / 8.1-update / 10 / 10 / 10 / 11 ... 12 / 14 ...  ... trillennium ... armageddon

austri пишет

в "library - history" сработало (спасибо большое),      а в "library - downloads" -  нет

Ну так "downloads" это и не дерево. От чего-то такого плясть можно

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

Выделить код

Код:

richlistitem[selected] * {
	color: black !important;
}
richlistitem[selected] {
	background-color: #d4d0c8 !important;
}

если не путаю - то, что было скрыто с первого раза, привело к:
"теперь эта бессмысленная серая полоска во всех шести случаях пустая",
что хоть и улучшало ситуацию, но откровенно незначительно

Не путаешь, но это, в данном случае, совершенно не важно.
Либо то, что было скрыто с первого раза, не подходило под описание «серой полоски»
и тогда описание было точным, либо подходило, и тогда ...

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

Да, согласен, есть такое, но этим далеко не исчерпывается.
Я реально не догнал зачем перед нажатием End жать Ctrl+A.


Но, раз «выделение всех строк перед этим» это просто стойкая привычка,
тогда, либо отказаться от #detailsDeck { height: auto !important; }


либо ультимативная правка кода (оптимизировать не буду)

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

Выделить код

Код:

/*
					return (deck.hidden = hide) ? val : setter(val);
				}
*/
					hide || win.setTimeout(ensure, 200);
					return (deck.hidden = hide) ? val : setter(val);
				}
				var ensure = () => bo.ensureRowIsVisible(pc.view.selection.currentIndex);

Ну так "downloads" это и не дерево. От чего-то такого плясть можно

пляска улучшила ситуацию - спасибо
 

тогда, либо отказаться от #detailsDeck { height: auto !important; }

это, конечно, вариант (я даже его проверил)   ---   но всё-таки отказываться не хочется
 

либо ультимативная правка кода (оптимизировать не буду)

ок, я понял - пусть будет в слегка недоделанном виде - всё равно так ощутимо лучше, чем было
 
а в связи с числом 200 мной пробовались такие оптимизации:
- сначала я посмотрел на 200 (долговато авто-скролится)
- затем 50 (лучше, но не намного)
 
- затем 0 (не годится, так как не срабатывает нормально)
- затем 5 (не годится, так как не срабатывает нормально)
- затем 10 (не годится, так как не срабатывает нормально)
 
- затем 20 (вроде, срабатывает нормально) (но не сказать, что чем-то лучше, чем 50)
- пока я оставил 20 (по всей видимости, так теперь всегда и будет)
 
 
 
просто поделюсь обновлённой информацией по поводу того, как теперь выглядит моя радикально новая (с этого августа) многорядная панель вкладок:
 
- в августе-сентябре неделями было так, что 1 ряд включал 23 вкладки
- затем около недели назад я твёрдо решил, что ровно 20 штук на ряд будет точно лучше
 
- и хоть 20 штук мне явно понравились, но тут же я попробовал пойти дальше (в виде смелого эксперимента),
      и сделал 10 штук на ряд (ширина каждой вкладки теперь аж 188 пикселей)
 
- привыкнуть пока не особо получается, но шансoв примерно 95-99%, что так и oстанется
      (наверно, это будет неслабо стимулировать не доводить количество вкладок до совсем немелких значений - по типу 90 и более)
 
      (а если 60-80 максимум, то вроде и терпимо - хоть и место по вертикали, конечно, выжирается будь здоров,
      а я ведь ранее всегда и двух-то рядов вкладок не использовал)

Dumby, появился необсуждавшийся ранее вопрос,
но, к сожалению, он из тех, которые тебе не очень по нраву
 
суть заключается в попытке понять, можно ли каким-то образом облегчить/улучшить ситуацию
с выделением текста внутри ссылок:
 
- делаю это довольно часто
- а вот перетаскивать ссылки мне никогда не требуется
- и жестов мышиных (с участием ссылок) тоже уже нет никаких - да и вообще жестов больше нет вовсе
 
(ранее годами: жесты некоторые были, но в связи с свежим удалением почти всех расширений
этот неоптимальный подход мной, к счастью, теперь не используется,
так как до меня дошло, что жесты мне просто неудобны)
 
так вот, может ли какой-то новый небольшой код как-то помочь?
 
 
сейчас по ссылкам такая ситуация:
 
- при простом левом клике на ссылку, она открывается в следующей вкладке (фоновой)
      (эти моменты важны - мне именно так и нужно)
 
- при этом во время клика - текст ссылки окрашивается в красный
      (можно ли это убрать? сделав так, чтобы цвет не менялся)
 
- выделение текста внутри мелких ссылок (подразумевается мелкий шрифт)
      порой получается ну слишком уж заморочным/неудобным
      (то есть: в большинстве случаев приходится вручную целиться чуть ли не по пикселям,
      выискивая годное положение курсора то ли слегка над ссылкой, то ли чуть под ней)
 
 
- пожелание примерно так можно было бы сформулировать:
      при необходимости выделить текст внутри ссылки (чтобы в моём случае он автоматом пошёл в буфер обмена)
      просто брать (не задумываясь особо) и выделять курсором нужный фрагмент текста,
 
      зная, что нигде ничего не поменяется из-за этого ручного движения
      (понятное дело, кроме индикации о том, какие именно символы выделены)

austri пишет

к сожалению, он из тех, которые тебе не очень по нраву

Да уж, это точно. Ладно бы напишешь, и не работает,
а если каких-нибудь глюков завезу, контент совсем не моё.


Кстати, хотел было уточнить, мол как насчёт выделения текста внутри ссылки с зажатым Alt,
но оказалось(!), что tab mix plus сломал этот функционал.
Ладно, вот набросок исходя из описания, но особо не надейся

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

Выделить код

Код:

(() => {
	var link, href, x, y;
	var ret = () => {
		link.setAttribute("href", href);
		link = null;
	}
	var restore = e => {
		window.removeEventListener("mouseup", restore, true);
		window.removeEventListener("dragend", restore, true);
		e.screenX != x || e.screenY != y ? requestAnimationFrame(ret) : ret();
	}
	var mousedown = e => {
		if (e.button || e.ctrlKey) return;
		link = e.target.closest(":-moz-any-link[href]");
		if (link) {
			href = link.getAttribute("href");
			link.removeAttribute("href");
			x = e.screenX; y = e.screenY;
			window.addEventListener("mouseup", restore, true);
			window.addEventListener("dragend", restore, true);
		}
	}
	gBrowser.addEventListener("mousedown", mousedown, true);
	window.addEventListener("unload", function unl() {
		window.removeEventListener("unload", unl);
		gBrowser.removeEventListener("mousedown", mousedown, true);
	});
})();

во время клика - текст ссылки окрашивается в красный
      (можно ли это убрать? сделав так, чтобы цвет не менялся)

Убрать? Даже не знаю, похоже, это задаётся вообще в xul.dll
Наверно можно хекс-редактором подправить.
А если просто задать свой, то как-то так (это в юзерКонтент.цсс, как минимум).
*|*:-moz-any-link:active {
    color: green !important;
}
Но если код для выделения работает и подходит, то это не требуется (побочный эффект),
разве что только если для с зажатым Ctrl.

этот код явно близок к тому, что нужно, но использовать его в таком виде я очень вряд ли смогу
 
не слишком легко пояснить, что именно не так, но попытаюсь:
 
1) у меня выставлены такие настройки в "options - content - colors":
- text and background:     
      text (black) (левый нижний квадратик)      background (white) (левый верхний квадратик)      use system colors (yes)
- link colors:
      unvisited links (black) (левый нижний квадратик)      visited links (grey) (левый квадратик: cразу под white)
      underline links (no)
- override the colors specified by the page with my selections above (always)
 
 
2) периодически мне нужно выделять текст внутри разных ссылок:
- и посещённых ранее (они серые) (rgb 204, 204, 204)
- и не посещённых ранее (они чёрные) (rgb 0, 0, 0)
 
      здесь же упомяну информацию о другом сером цвете (более тёмном) (rgb 176, 176, 176),
      который является фоновым внутри выделенного текста и посещённых ранее ссылок, и не посещённых тоже
 
 
3) в случае выделения текста внутри чёрных ссылок - я заметил такую проблему:
появляется нежелательное чёрное подчёркивание ссылки
(в случае, если уводить курсор вверх или вниз - даже просто на буквально 1 лишний пиксель)
 
      то есть, если выделять текст строжайше горизонтально, то всё нормально,
      но ведь это надо быть роботом, чтобы всегда делать именно так максимально чётко,
      а если быть человеком, и иногда в процессе выделения текста чуть уводить курсор вверх/вниз,
      то под всей этой ссылкой тут же появляется длинное подчёркивание, что очень нехорошо
 
 
4) а внутри серых есть проблема побольше:
как только осуществлён клик (чтобы начать выделять текст), тут же вся ссылка перекрашивается в чёрный цвет
      (выделение текста происходит нормально) (разве что проблема из предыдущего пункта и тут есть тоже),
а её правильный серый цвет возвращается только сразу после отпускания кнопки мыши
 
 
5) есть и ещё одна проблема (довольно неприятная, но наименее главная из этих трёх):
      при попытке выделить текст в ссылке (уже внутри выделенного текста) (иногда это бывает нужно): 
      попытка не удаётся, а итогом становится:
             - нежелательное перекрашивание в красный цвет всех невыделенных символов (в этой ссылке)
             - нежелательное появление подчёркивания всей ссылки (оно тоже красное)
 
 
      вот эта строка:      *|*:-moz-any-link:active { color: white !important; }
      могла бы, наверно, стать решением проблемы (так как ужасный красный цвет ею убирается),
      но использовать данную строку невозможно, так как она перекрашивает только в 1 какой-то цвет
      (именно в этом её варианте - в белый),
 
      а ведь перекрашивать нужно:
       - если речь о невыделенных символах внутри ссылки, то в 2 разныx цвета
         (в зависимости от того, посещённая ссылка или нет)
 
       - а когда речь заходит о подчёркивании, то тут полагаю, что и перекрашивание не является нормальным решением
         (например, в белый) (чтобы подчёркивания якобы не было видно),
         поскольку это подчёркивание вполне себе накладывается на некоторые буквы,
         и тогда, видимо, они стали бы выглядеть неприемлемо

austri пишет

      вот эта строка:      *|*:-moz-any-link:active { color: white !important; }
      могла бы, наверно, стать решением проблемы (так как ужасный красный цвет ею убирается),
      но использовать данную строку невозможно, так как она перекрашивает только в 1 какой-то цвет

А, можно же вместо цвета написать unset


Вобщем, попробовал вписать цвет в CSS-переменную а атрибуте style,
чтобы он не менялся пока атрибута href нет. Нужно, соответственно, добавить в userContent.css
[style*="--selcolorlocker: "] {
    color: var(--selcolorlocker) !important;
}
И добавил снятие выделения по mousedown
чтобы «выделить текст в ссылке (уже внутри выделенного текста)»,
если я правильно это понял.

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

Выделить код

Код:

(() => {
	var link, href, x, y, cssvar = "--selcolorlocker";

	var ret = () => {
		link.setAttribute("href", href);
		link.style.removeProperty(cssvar);
		link.getAttribute("style") === "" && link.removeAttribute("style");
		link = null;
	}
	var restore = e => {
		window.removeEventListener("mouseup", restore, true);
		window.removeEventListener("dragend", restore, true);
		e.screenX != x || e.screenY != y ? requestAnimationFrame(ret) : ret();
	}
	var mousedown = e => {
		if (e.button || e.ctrlKey) return;
		link = e.target.closest(":-moz-any-link[href]");
		if (link) {
			var w = e.view, sel = w.getSelection();
			sel.isCollapsed || sel.removeAllRanges();

			var dwu = w.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils);
			link.style.setProperty(cssvar, dwu.getVisitedDependentComputedStyle(link, "", "color"));

			href = link.getAttribute("href");
			link.removeAttribute("href");
			x = e.screenX; y = e.screenY;
			window.addEventListener("mouseup", restore, true);
			window.addEventListener("dragend", restore, true);
		}
	}
	gBrowser.addEventListener("mousedown", mousedown, true);
	window.addEventListener("unload", function unl() {
		window.removeEventListener("unload", unl);
		gBrowser.removeEventListener("mousedown", mousedown, true);
	});
})();


А насчёт подчёркивания совсем непонятно.
Из-за снятой в настройках галки «Подчёркивать ссылки» («underline links (no)»)
у меня ссылки вообще не подчёркиваются.
Наверно, чтобы увидеть описанное, надо что-то в userContent.css добавить,
или еще что-то сделать такое, чтобы подчёркивание откуда-то взялось.

А, можно же вместо цвета написать unset

написал unset
 

Нужно, соответственно, добавить в userContent.css

добавил
 

И добавил снятие выделения по mousedown

спасибо за этот улучшенный код - с ним теперь ситуация такая:
 
пункт 4: вроде бы решён
пункт 5: вроде бы решён
 
пункт 3: проблема с подчёркиванием (чёрных ссылок) остаётся
 
      (эта проблема также касается и случаев с серыми ссылками,
      и случаев с выделением текста уже внутри выделенного текста)
 
вряд ли это мелкое наблюдение поможет, но упомяну его:
- если ссылка чёрная: подчёркивание ссылки чёрное
- если ссылка серая: подчёркивание ссылки серое
 

Из-за снятой в настройках галки «Подчёркивать ссылки»

если вдруг надо будет, могу её добавить -
мне главное, чтобы ссылки не подчёркивались
(сейчас вот я попробовал эту галку включить на минуту - ничего не поменялось)
 
ещё одно наблюдение на всякий случай:
подчёркивание не появляется (ни в чёрных ссылках, ни в серых), если начинать выделение,
например, правее (или левее) от ссылки,
      то есть, в таком случае можно спокойно уводить курсор выше/ниже

austri
О, сподобился увидеть это блуждающее подчёркивание
на синтетической странице рутрекера (.html + .css в стареньком Denwer'е).


Вроде помогает добавить text-decoration в ранее упоминавшееся правило, вот так
[style*="--selcolorlocker: "] {
    text-decoration: none !important;
    color: var(--selcolorlocker) !important;
}

добавление text-decoration помогло - спасибо
  
чуть по другой теме: есть вот такое мелкое неудобство -
в подавляющем меньшинстве случаев данный (новый для меня) функционал не является особо удобным:
 

- при простом левом клике на ссылку, она открывается в следующей вкладке (фоновой)
      (эти моменты важны - мне именно так и нужно)

но я и в теории ничего не сумел придумать лучше, чем идею о том, чтобы добавить код,
который бы при зажатом Ctrl (и одновременном клике на ссылку) открывал её не в следующей вкладке (фоновой),
а как и раньше у меня всегда было - в этой же вкладке
 
вот пример этой мелкой хотелки (из ру-трэкера):
       - обычные ссылки (они зачастую длинные) открывать в следующей вкладке (фоновой)
 
       - a страничные мелкие ссылки открывать в текущей вкладке,
          они выглядят так: 1 или 2 или 3 ... 67 ... 115 ... (или Пред.) (или След.)
 
эти страничные ссылки видны в двух местах (над списком тем - слева) (и под списком тем - справа),
      и почему-то у меня с нижним списком всё норм (подчёркиваний у этих ссылок нет),
      а вот у верхнего списка (аналогичного по содержанию) подчёркиваниe есть у каждой ссылки
      (кроме той ссылко-страницы, в которой, собственно, это всё и отображается)
 
      можно ли подчёркивание убрать?      (при наведении курсора на такую ссылку - oнo временно пропадает)
 
 
если идея с Ctrl реализуется очень просто, то, пожалуйста, дай знать как,
а если непросто (или никак), то ничего страшного - пусть остаётся как есть
 
если вдруг есть вариант осуществить хотелку даже без Ctrl, то мне тем более это было бы любопытно

austri пишет

можно ли подчёркивание убрать?

Ну так всё тот же text-decoration: none
А селектор — сам смотри какой нужен, от всех <a> вообще, и до конкретно только этих.

если идея с Ctrl реализуется очень просто, то, пожалуйста, дай знать как,
если вдруг есть вариант осуществить хотелку даже без Ctrl, то мне тем более это было бы любопытно

Вот, попробовал вписать Ctrl, и, для описанных, даже без Ctrl

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

Выделить код

Код:

(() => {
	var link, href, x, y, cssvar = "--selcolorlocker";

	var check = () => {
		var res, doc = link.ownerDocument, loc = doc.location;
		if (loc.hostname == "rutracker.org")
			res = /^(?:\d+|((?:Пред|След)\.))$/.test(link.textContent);
		return res;
	}
	var click = e => {
		link.removeEventListener("click", click, true);
		e.preventDefault();
		loadURI(href, link.ownerDocument.documentURIObject);
		link = null;
	}
	var ret = skip => {
		link.setAttribute("href", href);
		link.style.removeProperty(cssvar);
		link.getAttribute("style") === "" && link.removeAttribute("style");
		skip ? link = null : link.addEventListener("click", click, true);
	}
	var restore = e => {
		window.removeEventListener("mouseup", restore, true);
		window.removeEventListener("dragend", restore, true);
		e.screenX != x || e.screenY != y ? requestAnimationFrame(ret) : ret(
			e.type.startsWith("d") || !(e.ctrlKey || check())
		);
	}
	var mousedown = e => {
		if (e.button) return;
		link = e.target.closest(":-moz-any-link[href]");
		if (link) {
			var w = e.view, sel = w.getSelection();
			sel.isCollapsed || sel.removeAllRanges();

			var dwu = w.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils);
			link.style.setProperty(cssvar, dwu.getVisitedDependentComputedStyle(link, "", "color"));

			href = link.getAttribute("href");
			link.removeAttribute("href");
			x = e.screenX; y = e.screenY;
			window.addEventListener("mouseup", restore, true);
			window.addEventListener("dragend", restore, true);
		}
	}
	gBrowser.addEventListener("mousedown", mousedown, true);
	window.addEventListener("unload", function unl() {
		window.removeEventListener("unload", unl);
		gBrowser.removeEventListener("mousedown", mousedown, true);
	});
})();

А селектор — сам смотри какой нужен

а можно какой-нибудь шаблон/пример? допустим, что-то типа такого:
[style*="--selector: <a> "] { text-decoration: none !important; }
 
 

Вот, попробовал вписать Ctrl, и, для описанных, даже без Ctrl

я не очень понял эту фразу в целом:
- для описанных - кого?
- если уже есть "даже без Ctrl", то зачем тогда Ctrl вообще?
 
в общем, cначала я пробовал вообще без Ctrl - и совсем никаких изменений/улучшений не заметил
 
затем я пробовал с Ctrl - и в результате появилась такая страница:
Server not found
Firefox can't find the server at www.viewforum.php.

 
я пробовал с Ctrl раз 5, и после первого раза даже вылезло что-то типа: unresponsive script
      (после того как вернулся от страницы "Server not found" на предыдущую стрaницу)
 
      в этом мелком окошке (там, где "unresponsive script") ни одну из трёх кнопок нажать не удалось,
      но оно само излечилось/убралось через несколько секунд
 
 
по поводу нижнего списка (там, где подчёркиваний у ссылок нет) инспектор пишет:
div#pagination.nav.clearfix            1854 х 13.75
(если точнее - он это пишет про всю ту строчку - по всей её горизонтали)

austri пишет

а можно какой-нибудь шаблон/пример?

Ну типа a.pg { text-decoration: none !important; }

я не очень понял эту фразу в целом

Задумывалось так: c зажатым Ctrl — для всех ссылок,
а если hostname страницы есть rutracker.org,
и текст ссылки «Пред.», или «След.», или состоит только из цифр,
тогда и просто по клику, без Ctrl.
Но, видимо, не получилось.

Firefox can't find the server at www.viewforum.php.

Точно, мой косяк. Вместо loadURI(href, нужно loadURI(link.href,


href — это просто запомненный атрибут, чтобы его вернуть,
а link.href — это, собственно, полный адрес ссылки.

Ну типа a.pg { text-decoration: none !important; }

не знаю, правильно ли это, но я вот просто так данную строчку и добавил - и эти подчёркивания убрались
 

Вместо loadURI(href, нужно loadURI(link.href,

сделал - а результат такой:
 
- как я понял, про самый лучший вариант (вообще без Ctrl) можно, наверно, забыть (к сожалению)
      (почему-то я думал, что, возможно, как-то поможет информация по типу:      div#pagination.nav.clearfix)
 
- вариант с Ctrl теперь срабатывает, но при этом имеется неприемлемый визуальный дефект,
      на который проще посмотреть, чем пытаться описать словами:
 
      (этот дефект был и при прошлом варианте кода, когда Ctrl ещё не срабатывал)
 
 
в первом скрине (при Ctrl + клике на ссылко-страницу)      (ссылко-страницa - это, например:      3,      или      След.)
дефект выражается в появляющемся синем обрамлении сверху - почти по всей ширине скрина - вокруг трёх строк:
      Формула-1 (2022)
      Страницы    :  Пред. 1, 2, 3, 4, 5, 6, 7, 8 Cлед.
      Спорт >> Cпортивные турниры...
2022-10-05-12-55-41.png
 
в втором скрине (при Ctrl + клике на ссылко-страницу)
дефект выражается в появляющемся том же синем обрамлении - тут оно почти везде по странице
2022-10-05-12-56-36.png
 
 

Задумывалось так: c зажатым Ctrl — для всех ссылок

так ведь если и использовать (вынужденно) Ctrl, то нужно наоборот:
 
- c зажатым Ctrl - только для ссылок, которые:      Пред., След., или состоят только из цифр
- а все остальные ссылки открывать так, как им велит tab-mix-plus - в следующей вкладке (фоновой)

austri пишет

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

Это не то чтобы дефект, просто Ctrl+mousedown выделяет элементы в таблицах.
Но раз всё равно пойдёт навигация, то выделение оставаться, вроде как, не должно.


Можно попробовать добавить e.ctrlKey && e.preventDefault();
например, перед строкой var w = e.view, sel = w.getSelection();

так ведь если и использовать (вынужденно) Ctrl, то нужно наоборот:

- c зажатым Ctrl - только для ссылок, которые:      Пред., След., или состоят только из цифр
- а все остальные ссылки открывать так, как им велит tab-mix-plus - в следующей вкладке (фоновой)

Поскольку само определение «ссылок, которые»,
говоришь, не работает, то и переделать не получится.

Можно попробовать добавить e.ctrlKey && e.preventDefault();

добавил - выделения элементов в таблицах больше нет
 
eсли чего-то плохого не обнаружится, то можно считать, что реализация с Ctrl решена полностью
 
этот вариант с Ctrl не особо добавляет счастья, но всё равно спасибо тебе
за возможность располагать теперь и таким альтернативным подходом тоже
 
      просто я только сегодня подумал, что он вряд ли особо удобнее, чем уже имевшееся стандартное:
      1) клик на ссылко-страницу
      2) при курсоре над лисой: простое нажатие (что всегда лучше, чем удерживание) нa F5            (F5 у меня - это "close tab") (Ctrl+W)
            (ведь зачем жать Ctrl+W, если F5 гораздо удобнее)
            (a обновить страницу у меня - это Num-      на которую уже 13 лет как переназначен функционал кнопки F5) (для всех программ)
 
жаль, что непонятно, как сделать тоже самое (что уже сейчас даёт этoт альтернативный подход), но без необходимости жать Ctrl
 
 

то и переделать не получится

- я не уверен, что понял эти твои слова верно
- ты, наверно, ведёшь речь о том, что уже и так решено, и в переделывании не нуждается (Ctrl уже срабатывает)
 
- а вот где переделывание было бы очень кстати, так это в реализации всего того же самого, но только напрямую (без Ctrl) -
      вот, я немного полазил по инспектору и повыписывал на всякий случай это (вдруг поможет):
 
из верхнего списка (цифры) (1 символ):              a.pg | 7 x 12
из верхнего списка (цифры) (2 символа):            a.pg | 14 x 12
из верхнего списка (цифры) (3 символа):            a.pg | 21 x 12
 
из верхнего списка (Пред., След.):                     a.pg | 33 x 12

 
 
из нижнего списка (цифры) (1 символ):              a.pg | 8 x 13
из нижнего списка (цифры) (2 символа):            a.pg | 16 x 13
из нижнего списка (цифры) (3 символа):            a.pg | 24 x 13
 
из нижнего списка (Пред.):                               a.pg | 38 x 13
из нижнего списка (След.):                               a.pg | 37 x 13

austri пишет

- я не уверен, что понял эти твои слова верно
- ты, наверно, ведёшь речь о том

Да нет, я в самом простом и прямом смысле.
Написано: «c зажатым Ctrl - только для ссылок, которые: ...».
Различение ссылок-то не работает,
а значит всё остальное из написанного уже неважно.

вот, я немного полазил по инспектору и повыписывал на всякий случай это

Хорошо, вот в начале кода есть функция check().
Предназначена, скорее, для самостоятельного наполнения.
А если написать там что-нибудь попроще, тоже не работает?
То есть, например, начало будет таким

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

Выделить код

Код:

(() => {
	var link, href, x, y, cssvar = "--selcolorlocker";

	var check = () => {
		return link.className == "pg";
	}

я заменил

Выделить код

Код:

var check = () => {
		var res, doc = link.ownerDocument, loc = doc.location;
		if (loc.hostname == "rutracker.org")
			res = /^(?:\d+|((?:Пред|След)\.))$/.test(link.textContent);
		return res;
	}

на:

Выделить код

Код:

var check = () => {
		return link.className == "pg";
	}

результата нет - при простом клике любые ссылки открываются в следующей вкладке (фоновой)
 
(при зажатом Ctrl: pg-ссылки открываются как надо - в этой же вкладке)

austri пишет

результата нет

Ну тогда я не знаю почему.
Это довольно загадочно. Если, допустим, и на странице с таким адресом
data:text/html;charset=utf-8,<center><h1><a%20class="pg"%20href="about:logo">pg-%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0</a></h1></center>
не работает, то вообще непонятно что происходит.

Если, допустим, и на странице с таким адресом

при клике на надпись "pg-ссылка"
создаётся новая фоновая вкладка:      about:logo
 
при клике (+ зажатом Ctrl) на надпись "pg-ссылка"
about:logo открывается в текущей вкладке
 
 
есть ли смысл пробовать в строке      return link.className == "pg"      изменить pg на a.pg ?
 
 
так понимаю, что в лисьем скриптовом языке нет чего-то по типу как в ahk:
      if mouse is over "такой-то класс этой зоны окна" (а в случае с лисой - не окна, а ссылки),
      then:      open link in current tab (= игнорировать соответствующую настройку из tab-mix-plus:
      options > links > force to open in new tab: all links)

сейчас у меня в tab-mix-plus:
A) open links with a target attribute in current tab   ---   no
B) force to open in new tab   ---   yes (all links)
 
 
есть ли смысл пробовать пойти обратным путём?:
- отключить настройку В (это вернёт тот вариант, который у меня был раньше всегда)
 
- подкорректировать код так, чтобы он обращал внимание
      не на мелкие pg-ссылки (переключающие страницы данного раздела),
      а на длинные ссылки (открывающие какую-то конкретную тему данного раздела)
 
 
про длинные ссылки инспектор пишет:
1) если тема в каком-то разделе:      a#tt-6195619.torTopic.bold.tt-text
      6195619 - это всего лишь одна тема (данное число всегда будет разным)
 
2) но если тема в поисковых результатах, то там почему-то другой расклад:      a.topictitle.ts-text
 
 
 
видимо, это была глупая попытка, но всё же я попробовал вот это:
- отключил настройку В
- в строке      return link.className == "pg"      изменил pg на      topictitle.ts-text
 
- в поисковых результатах: потыкал ссылки (и страничные, и тематические)
 
- итог негативный: все ссылки открываются в текущей вкладке
      (для страничных это хорошо) (для тематических - очень плохо)

austri пишет

есть ли смысл пробовать в строке      return link.className == "pg"      изменить pg на a.pg ?

Никакого.

if mouse is over "такой-то класс этой зоны окна" (а в случае с лисой - не окна, а ссылки),

Ну, грубо-приблизительно, вобщем-то, так в коде и написано.

then:      open link in current tab (= игнорировать соответствующую настройку из tab-mix-plus

Хмм, если не работает не само детектирование ссылки,
а просто e.preventDefault() не достаточно для tab-mix-plus,
то да, можно попробовать временно переключать настройку.
Тогда такое начало кода (на замену)

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

Выделить код

Код:

(() => {
	var link, href, x, y, cssvar = "--selcolorlocker";

	var sip = Services.prefs.setIntPref;
	var pn = "extensions.tabmix.opentabforLinks";
	var set1 = sip.bind(null, pn, 1);

	var check = () => {
		return link.className == "pg";
	}
	var click = e => {
		link.removeEventListener("click", click, true);
		e.preventDefault();
		loadURI(link.href, link.ownerDocument.documentURIObject);
		link = null;
	}
	var ret = skip => {
		link.setAttribute("href", href);
		link.style.removeProperty(cssvar);
		link.getAttribute("style") === "" && link.removeAttribute("style");
		skip ? link = null : link.addEventListener("click", click, true);
	}
	var restore = e => {
		window.removeEventListener("mouseup", restore, true);
		window.removeEventListener("dragend", restore, true);
		if (e.screenX != x || e.screenY != y)
			return requestAnimationFrame(ret);

		var skip = true;
		if (e.type.startsWith("m")) {
			if (e.ctrlKey) skip = false;
			else if (check()) sip(pn, 0), requestAnimationFrame(set1);
		}
		ret(skip);
	}

есть ли смысл пробовать пойти обратным путём?:
- отключить настройку В (это вернёт тот вариант, который у меня был раньше всегда)

- подкорректировать код так, чтобы он обращал внимание
      не на мелкие pg-ссылки (переключающие страницы данного раздела),
      а на длинные ссылки (открывающие какую-то конкретную тему данного раздела)

А, ну то есть, открывать не pg-ссылки в фоновой вкладке рядом с активной будет код (вместо tab-mix-plus).
Сомневаюсь. Я пробовал посмотреть как в нём сделано, так там навёрнут такой вагон всего,
что не захочешь связываться, даже просто понять не получится.

можно попробовать временно переключать настройку

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

Выделить код

Код:

(() => {
	var link, href, x, y, cssvar = "--selcolorlocker";

	var sip = Services.prefs.setIntPref;
	var pn = "extensions.tabmix.opentabforLinks";
	var set1 = sip.bind(null, pn, 1);

	var check = () => {
		return link.className == "pg";
	}

	var click = e => {
		link.removeEventListener("click", click, true);
		e.preventDefault();
		loadURI(link.href, link.ownerDocument.documentURIObject);
		link = null;
	}
	var ret = skip => {
		link.setAttribute("href", href);
		link.style.removeProperty(cssvar);
		link.getAttribute("style") === "" && link.removeAttribute("style");
		skip ? link = null : link.addEventListener("click", click, true);
	}

	var restore = e => {
		window.removeEventListener("mouseup", restore, true);
		window.removeEventListener("dragend", restore, true);
		if (e.screenX != x || e.screenY != y)
			return requestAnimationFrame(ret);

		var skip = true;
		if (e.type.startsWith("m")) {
			if (e.ctrlKey) skip = false;
			else if (check()) sip(pn, 0), requestAnimationFrame(set1);
		}
		ret(skip);
	}

	var mousedown = e => {
		if (e.button) return;
		link = e.target.closest(":-moz-any-link[href]");
		if (link) {
			e.ctrlKey && e.preventDefault();
			var w = e.view, sel = w.getSelection();
			sel.isCollapsed || sel.removeAllRanges();

			var dwu = w.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils);
			link.style.setProperty(cssvar, dwu.getVisitedDependentComputedStyle(link, "", "color"));

			href = link.getAttribute("href");
			link.removeAttribute("href");
			x = e.screenX; y = e.screenY;
			window.addEventListener("mouseup", restore, true);
			window.addEventListener("dragend", restore, true);
		}
	}
	gBrowser.addEventListener("mousedown", mousedown, true);
	window.addEventListener("unload", function unl() {
		window.removeEventListener("unload", unl);
		gBrowser.removeEventListener("mousedown", mousedown, true);
	});
})();
austri пишет

надеюсь, что это я напутал что-то

Увы нет, всё сделано правильно.

в итоге ничего не изменилось

Задача заколдована, не иначе.
Всё наверно, что ещё остаётся.


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


То есть, меняем код, например, на такой вариант с логами,
и берём простой случай — клик по «pg-ссылке» на странице с data-адресом (из №147).
Затем, в Консоли браузера, фильтруем сообщения по тексту «[pg]», ПКМ, «Выделить всё», Ctrl+C, и сюда.

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

Выделить код

Код:

(() => {
	var link, href, x, y, cssvar = "--selcolorlocker";

	var LOG = msg => Services.console
		.logStringMessage("[PG] " + Cu.now().toFixed(2) + "  " + msg);

	var sip = Services.prefs.setIntPref;
	var pn = "extensions.tabmix.opentabforLinks";
	var s1 = sip.bind(null, pn, 1);
	var set1 = (...args) => {
		s1(...args)
		LOG("set1(), Set pref to 1, got " + Services.prefs.getIntPref(pn));
	}

	var check = () => {
		LOG('check(), link.className == "pg" is ' + (link.className == "pg"));

		return link.className == "pg";
	}

	var click = e => {
		LOG("click()");

		link.removeEventListener("click", click, true);
		e.preventDefault();
		loadURI(link.href, link.ownerDocument.documentURIObject);
		link = null;
	}
	var ret = skip => {
		LOG("ret(), skip is " + skip);

		link.setAttribute("href", href);
		link.style.removeProperty(cssvar);
		link.getAttribute("style") === "" && link.removeAttribute("style");
		skip ? link = null : link.addEventListener("click", click, true);
	}

	var restore = e => {
		LOG("restore(), " + e.type + " (" + e.screenX + " " + x + ") (" + e.screenY + " " + y + ")");

		window.removeEventListener("mouseup", restore, true);
		window.removeEventListener("dragend", restore, true);
		if (e.screenX != x || e.screenY != y)
			return requestAnimationFrame(ret);

		var skip = true;
		if (e.type.startsWith("m")) {
			if (e.ctrlKey) {
				skip = false;

				LOG("restore(), ctrlKey detected, set skip to false, got " + skip);
			}
			else if (check()) {
				sip(pn, 0);
				requestAnimationFrame(set1);

				LOG("restore(), Set pref to 0, got " + Services.prefs.getIntPref(pn));

				var ensureClick = e => {
					LOG("ensureClick(), pref value is " + Services.prefs.getIntPref(pn));
				}
				window.addEventListener("click", ensureClick, true);
				setTimeout(() => window.removeEventListener("click", ensureClick, true), 300);
			}
			else
				LOG("restore(), not ctrlKey and not check() result, skip is " + skip);
		}
		ret(skip);
	}

	var mousedown = e => {
		if (e.button) return;
		link = e.target.closest(":-moz-any-link[href]");
		if (link) {
			LOG("mousedown(), link detected");

			e.ctrlKey && e.preventDefault();
			var w = e.view, sel = w.getSelection();
			sel.isCollapsed || sel.removeAllRanges();

			var dwu = w.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils);
			link.style.setProperty(cssvar, dwu.getVisitedDependentComputedStyle(link, "", "color"));

			href = link.getAttribute("href");
			link.removeAttribute("href");
			x = e.screenX; y = e.screenY;
			window.addEventListener("mouseup", restore, true);
			window.addEventListener("dragend", restore, true);
		}
	}
	gBrowser.addEventListener("mousedown", mousedown, true);
	window.addEventListener("unload", function unl() {
		window.removeEventListener("unload", unl);
		gBrowser.removeEventListener("mousedown", mousedown, true);
	});
})();

Затем, в Консоли браузера, фильтруем сообщения по тексту «[pg]»

после фильтрации: в консоли пусто
 
 
about:logo у меня пустая:
- но так полагаю, что это ничего не меняет
- это, видимо, из-за      img {display: none !important;}      в userContent.css
 
 
я уже было хотел закрывать лису и консоль, но ещё просто так потыкал на pg-ссылку (с Ctrl),
и в консоли что-то появилось:
 
[PG] 312051.90  mousedown(), link detected
[PG] 312155.34  restore(), mouseup (992 992) (341 341)
[PG] 312155.40  restore(), ctrlKey detected, set skip to false, got false
[PG] 312155.41  ret(), skip is false
[PG] 312156.15  click()
 
вот на всякий случай повтор (с Ctrl) (при другом запуске лисы):
 
[PG] 57499.12  mousedown(), link detected
[PG] 57594.69  restore(), mouseup (970 970) (342 342)
[PG] 57594.73  restore(), ctrlKey detected, set skip to false, got false
[PG] 57594.74  ret(), skip is false
[PG] 57595.44  click()

07-10-2022 23:01:06
 
 
а может коду не нравится pg?:      return link.className == "pg"
 
вот, я повыписывал то, что сумел вычислить в инспекторе
      (касательно тех зон, в которые попадают все pg-ccылки,
      но не попадают длинные тематические ссылки):
 
 
если ссылка в поисковых результатах:
 
верхний ряд pg-ссылок:
      td.w100.vBottom
      p.small
 
нижний ряд pg-ссылок:
      div#pagination.nav
      div.bottom_info
 
 
если ссылка в каком-то разделе:
 
верхний ряд pg-ссылок:
      div.small
      td.w100.vBottom.pad_2
 
нижний ряд pg-ссылок:
      div#pagination.nav.clearfix
      div.bottom_info.pad_2

austri пишет

с Ctrl

Это не так интересно, ведь с Ctrl открытие ссылки в активной вкладке работает.
Интереснее лог когда не работает, то есть после простого клика, без Ctrl.
Неужели совсем ничего?

- на странице с data-адресом (из №147)      кликаю на pg-ссылка
 
- открывается следующая (фоновая) вкладка
у которой адрес:      about:logo
и название:      (PNG Image, 300 x 236 pixels)
 
- в консоли: после фильтра по тексту [pg]
стерильная пустота

может ли проблема быть в какой-то настройке из about:config?
 
может ли проблема быть в какой-то настройке из tab-mix-plus?
 
если верно предполагаю, у себя ты проверить не имеешь возможности (клик по pg-ссылке)
      (в поисковых результатах точно нет, раз уж там требуется регистрация,
      но если что - регистрация не нужна, чтобы просто открыть любой раздел)
 
  
я на всякий случай пробовал (безуспешно) лисе подсунуть временный userContent.css,
из которого поубирал почти всё, например:
 

a.pg { text-decoration: none !important; }
             
img {display: none !important;}
           
a:focus {text-decoration: none !important;}
a:hover {text-decoration: none !important;}
           
 
@-moz-document domain(rutracker.org){
a.postLink,
TD.nav.w100[style="padding-left: 8px;"],
            и ещё тут десятки (упоминавшихся ранее) строк
{display: none !important;} }

austri пишет

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

Ну как, в поиске, конечно, нет, а так проверял.
Не в разделе (viewforum.php), а в топике (viewtopic.php).
И селекторы родительских элементов, которые ты выписал, посмотрел,
всё верно, если нужно уточнить через них, то годятся.


Но это всё неважно.


Раз по клику нет никакого лога совсем, то это значит (значило бы), что
не определяется даже вообще то, что произошёл mousedown на (любой) ссылке.
Но как такое может быть, если выделение в ссылках работает (работает же?),
а оно ведь на этом построено. Совершенно непонятно.


Хотя, есть такая странная мысль.
Вот отсюда (№138) пошла хотелка открывать немногие некоторые
ссылки в активной вкладке.
А в следующем посте я предложил «Вот, попробовал вписать Ctrl, и, для описанных, даже без Ctrl».


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

если выделение в ссылках работает (работает же?)

ну да
 

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

в общем, видимо, всё так и произошло (приношу извинение за своё недопонимание)
 
я около часа перепроверял всё, что смог, и пока ничего плохого не обнаружил:
       - текст внутри ссылок выделяется как надо
       - ссылки открываются как надо (двумя способами)
 
у меня в файле click.js (в конце) было вот это:

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

Выделить код

Код:

/*      attempt-2 to obtain:      convenient selection of text in links      */

(() => {
	var link, href, x, y, cssvar = "--selcolorlocker";

	var ret = () => {
		link.setAttribute("href", href);
		link.style.removeProperty(cssvar);
		link.getAttribute("style") === "" && link.removeAttribute("style");
		link = null;
	}
	var restore = e => {
		window.removeEventListener("mouseup", restore, true);
		window.removeEventListener("dragend", restore, true);
		e.screenX != x || e.screenY != y ? requestAnimationFrame(ret) : ret();
	}
	var mousedown = e => {
		if (e.button || e.ctrlKey) return;
		link = e.target.closest(":-moz-any-link[href]");
		if (link) {
			var w = e.view, sel = w.getSelection();
			sel.isCollapsed || sel.removeAllRanges();

			var dwu = w.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils);
			link.style.setProperty(cssvar, dwu.getVisitedDependentComputedStyle(link, "", "color"));

			href = link.getAttribute("href");
			link.removeAttribute("href");
			x = e.screenX; y = e.screenY;
			window.addEventListener("mouseup", restore, true);
			window.addEventListener("dragend", restore, true);
		}
	}
	gBrowser.addEventListener("mousedown", mousedown, true);
	window.addEventListener("unload", function unl() {
		window.removeEventListener("unload", unl);
		gBrowser.removeEventListener("mousedown", mousedown, true);
	});
})();
 
 
 
 
  
 
 
 
 
 
/*      attempt to add direct opening (in current tab) (after click) of ru-tracker's pages (like: 1 or 2 or 3...)            
        but keep not direct opening (in next back-ground tab) (after click) of ru-tracker's long links      */

(() => {
	var link, href, x, y, cssvar = "--selcolorlocker";

	var LOG = msg => Services.console
		.logStringMessage("[PG] " + Cu.now().toFixed(2) + "  " + msg);

	var sip = Services.prefs.setIntPref;
	var pn = "extensions.tabmix.opentabforLinks";
	var s1 = sip.bind(null, pn, 1);
	var set1 = (...args) => {
		s1(...args)
		LOG("set1(), Set pref to 1, got " + Services.prefs.getIntPref(pn));
	}

	var check = () => {
		LOG('check(), link.className == "pg" is ' + (link.className == "pg"));

		return link.className == "pg";
	}

	var click = e => {
		LOG("click()");

		link.removeEventListener("click", click, true);
		e.preventDefault();
		loadURI(link.href, link.ownerDocument.documentURIObject);
		link = null;
	}
	var ret = skip => {
		LOG("ret(), skip is " + skip);

		link.setAttribute("href", href);
		link.style.removeProperty(cssvar);
		link.getAttribute("style") === "" && link.removeAttribute("style");
		skip ? link = null : link.addEventListener("click", click, true);
	}

	var restore = e => {
		LOG("restore(), " + e.type + " (" + e.screenX + " " + x + ") (" + e.screenY + " " + y + ")");

		window.removeEventListener("mouseup", restore, true);
		window.removeEventListener("dragend", restore, true);
		if (e.screenX != x || e.screenY != y)
			return requestAnimationFrame(ret);

		var skip = true;
		if (e.type.startsWith("m")) {
			if (e.ctrlKey) {
				skip = false;

				LOG("restore(), ctrlKey detected, set skip to false, got " + skip);
			}
			else if (check()) {
				sip(pn, 0);
				requestAnimationFrame(set1);

				LOG("restore(), Set pref to 0, got " + Services.prefs.getIntPref(pn));

				var ensureClick = e => {
					LOG("ensureClick(), pref value is " + Services.prefs.getIntPref(pn));
				}
				window.addEventListener("click", ensureClick, true);
				setTimeout(() => window.removeEventListener("click", ensureClick, true), 300);
			}
			else
				LOG("restore(), not ctrlKey and not check() result, skip is " + skip);
		}
		ret(skip);
	}

	var mousedown = e => {
		if (e.button) return;
		link = e.target.closest(":-moz-any-link[href]");
		if (link) {
			LOG("mousedown(), link detected");

			e.ctrlKey && e.preventDefault();
			var w = e.view, sel = w.getSelection();
			sel.isCollapsed || sel.removeAllRanges();

			var dwu = w.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils);
			link.style.setProperty(cssvar, dwu.getVisitedDependentComputedStyle(link, "", "color"));

			href = link.getAttribute("href");
			link.removeAttribute("href");
			x = e.screenX; y = e.screenY;
			window.addEventListener("mouseup", restore, true);
			window.addEventListener("dragend", restore, true);
		}
	}
	gBrowser.addEventListener("mousedown", mousedown, true);
	window.addEventListener("unload", function unl() {
		window.removeEventListener("unload", unl);
		gBrowser.removeEventListener("mousedown", mousedown, true);
	});
})();


я заменил всё это на код из сообщения-139, а затем ещё вот это подкорректировал:

Точно, мой косяк. Вместо loadURI(href, нужно loadURI(link.href,

 
- спасибо за твою сообразительность
- по возможности буду стараться поменьше тебя беспокоить, и на данный момент уточню только это:
      есть ли способ? сделать так, чтобы после перезагрузки лисы
      в каждой вкладке (на странице) выделениe текстa сохранялoсь

austri пишет

есть ли способ? сделать так, чтобы после перезагрузки лисы
      в каждой вкладке (на странице) выделениe текстa сохранялoсь

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