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

Mozilla Россия — свежие версии программ Mozilla, а также масса полезной информации по каждому продукту.

№50125-09-2022 03:01:14

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

Re: UCF - ваши кнопки, скрипты…

kokoss
В config.js
lockPref("browser.download.panel.shown", false);
и в about:config
browser.download.alwaysOpenPanel    = true
уже не работает?

Отсутствует

 

№50225-09-2022 04:05:23

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

Re: UCF - ваши кнопки, скрипты…

Dumby
Нарисовалась хотелка для этого скрипта, тот что под спойлером.
Пишу для истории - скрипт при поиске создает пункт "Показать в папке" в контекстном меню закладок, и в библиотеке, и в закладках сайдбара.
Но проблема в том, что после срабатывания и последующего переоткрытия сайдбара (закрыть и снова открыть) положение поиска сбрасывается. Тоже самое и с нативным пунктом, вот здесь об этом.
   
А вот у этого скрипта такой проблемы нет. Но к сожалению он не работает в библиотеке и не прячет свой пункт когда нет поиска, т.е. пункт торчит всегда.
   
Не могли бы вы свой скрипт изменить так, что бы он вел себя в сайдбаре аналогично скрипту alice0775, т.е. не сбрасывал положение поиска после переоткрытия сайдбара?

Отредактировано _zt (25-09-2022 04:05:52)

Отсутствует

 

№50325-09-2022 10:50:53

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

Re: UCF - ваши кнопки, скрипты…

kokoss пишет

Сделайте пожалуйста скрипт для авто... открытия панели загрузок при старте закачки.

Хорошо, попробую. Это в custom_script.js

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

Выделить код

Код:

Services.obs.addObserver(function brw(win, topic) {
	Services.obs.removeObserver(brw, topic);

	var {Downloads: d, BrowserWindowTracker: bwt} = win;
	var show = function(download) {
		download.newDownloadNotified ||
		bwt.getTopWindow(this)?.DownloadsPanel.showPanel();
	};
	["PUBLIC", "PRIVATE"].forEach(async (type, ind) => {
		var view = Object.create(null);
		view.private = Boolean(ind);
		view.onDownloadChanged = show;
		(await d.getList(d[type])).addView(view);
	});
}, "browser-delayed-startup-finished");

_zt пишет

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

«положение поиска» это какие папки развёрнуты?
Если так, то можно попробовать запоминать принудительно.

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

Выделить код

Код:

/*
			tree.scrollByLines(Math.round(newFirst - first));
		}
*/
			tree.scrollByLines(Math.round(newFirst - first));
			this.persist(tree.view);
		},
		persist(view) {
			var du = document.documentURI, xs = Services.xulStore;
			var obf = PlacesUIUtils.obfuscateUrlForXulStore, set = obf
				? u => xs.setValue(du, obf(u), "open", "true")
				: u => xs.setValue(du, u, "open", "true");
			(this.persist = view => {
				for(var node of view._rows) node.containerOpen && set(node.uri)
			})(view);
		}

Отсутствует

 

№50425-09-2022 13:40:58

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

Re: UCF - ваши кнопки, скрипты…

_zt, voqabuhe
По совету умных товарищей "переполз" со "старого" UCF на "новый". Вроде, все стили и кнопки подключились, но, как оказалось, рано радовался - скрипт SidebarBookmarkSearchOpenFolder.uc.js в этом "новом" у меня не работает. Судя по постам, скрипт лучше штатной возможности "Показать в папке" (#placesContext_showInFolder).
Скрипт у меня в "старом" варианте подключался по какой-то хитрой схеме. Куда его втыкать теперь? В CustomStylesScripts.jsm этот вариант не работает.

Выделить код

Код:

load: [ // По событию "load"
            { path: "special_widgets.js", ucfobj: true, }, // <-- Special Widgets
            // { path: "auto_hide_sidebar.js", ucfobj: true, }, // <-- Auto Hide Sidebar
            { path: "cs_win/SidebarBookmarkSearchOpenFolder.uc.js", ucfobj: false, },

Отсутствует

 

№50525-09-2022 14:25:55

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

Re: UCF - ваши кнопки, скрипты…

_zt пишет

В config.js
lockPref("browser.download.panel.shown", false);

Уже нет, при чём эта настройка уже не помню с какой версии перестала работать, как и настройка > browser.download.improvements_to_download_panel = false, отвалилась после обновления на [firefox] 105.
add, этот способ тоже не работает > lockPref("browser.download.panel.shown", false); + browser.download.alwaysOpenPanel  = true


Dumby пишет

Это в custom_script.js
скрытый текст

Благодарю!!!

Отредактировано kokoss (25-09-2022 14:26:39)


Win7

Отсутствует

 

№50625-09-2022 16:32:42

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

Re: UCF - ваши кнопки, скрипты…

xrun1 пишет

Special Widgets

Special Widgets грузится в объект ucf_custom_script_win
окна документа браузера (browser.xhtml).


А закладки в сайдбаре — это другое окно (bookmarksSidebar.xhtml).
Надо прописывать в UcfStylesScripts.scriptsallchrome


Опусти глаза чуть пониже. Пример для Библиотеки видишь?
// { path: "example_places.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, ucfobj: false, },


Вот туда. Типа
{ path: "cs_win/SidebarBookmarkSearchOpenFolder.uc.js", urlregxp: /chrome:\/\/browser\/content\/places\/bookmarksSidebar\.xhtml/ },

Отсутствует

 

№50725-09-2022 16:41:59

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

Re: UCF - ваши кнопки, скрипты…

Dumby
Спасибо, все ок.
   
xrun1
В         load: [ // По событию "load"
            { path: "cs_win/SidebarBookmarkSearchOpenFolder.uc.js", urlregxp: /chrome:\/\/browser\/content\/places\/bookmarksSidebar\.xhtml/, ucfobj: false, },
на перезагрузку с очисткой кэша особо не надейтесь. Делайте ее, закрывайте браузер и проверяйте отсутствие / удаляйте startupCache.
   
Только вот зачем вам этот обрубок? Только что же обсуждали.

ShowBookmarkFolder_ucf.js

Выделить код

Код:

// Пункт контекстного меню закладок "Показать в папке", от Dumby,
// работает во всех документах - окно, вкладка, сайдбар.
// Появляется при не пустой строке поиска.
// https://forum.mozilla-russia.org/viewtopic.php?pid=799551#p799551
// + https://forum.mozilla-russia.org/viewtopic.php?pid=801732#p801732

try {({
	run(func) {
		var topics = ["quit-application-granted", "chrome-document-loaded"];
		var obs = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
		for(var t of topics) obs.addObserver(this, t, false);
		this.observe = (subj, topic) => this[topic[0]](subj);
		this.q = () => topics.forEach(t => obs.removeObserver(this, t));

		this.run = async doc => {
			var code = `(${func})(document.getElementById("placesContext_editSeparator"));`;
			var ps = await doc.ownerGlobal.ChromeUtils
				.compileScript("data:charset=utf-8," + encodeURIComponent(code));
			(this.run = ps.executeInGlobal.bind(ps))(doc);
		}
		var re = /\/(?:places|bookmarksSidebar)\.xhtml$/;
		this.c = doc => re.test(doc.documentURI) && this.run(doc);
	}
}).run(sep => {
	var label = "Показать в папке";
	var popup = sep.parentNode, listener = {
		handleEvent() {
			if (this.shouldHide) return;

			var menuitem = document.createXULElement("menuitem");
			menuitem.setAttribute("label", label);
			menuitem.setAttribute("oncommand", "creator.goParentFolder();");
			menuitem.creator = this;
			sep.before(menuitem);

			this.handleEvent = e => {
				if (e.target != popup) return;
				var sh = this.shouldHide;
				if (Boolean(menuitem.clientHeight) ^ sh) return;
				if ((menuitem.hidden = sh)) return;
				menuitem.disabled = false;
			}
		},
		get shouldHide() {
			var node = popup._view.selectedNodes.length == 1
				&& popup._view.selectedNode;
			return !(node && PlacesUtils.nodeIsBookmark(node)
				&& node.parent.type == node.RESULT_TYPE_QUERY);
		},
		get goParentFolder() {
			var tree = popup._view;
			if (tree.id.startsWith("b")) {
				delete this.library;
				var func = () => this.sidebar(tree);
			} else {
				delete this.sidebar;
				var list = document.getElementById("placesList");
				var func = () => this.library(popup._view, list);
			}
			delete this.goParentFolder;
			return this.goParentFolder = func;
		},
		sidebar(tree) {
			var {bookmarkGuid} = tree.selectedNode;
			if (tree.result.root.uri.startsWith("place:terms="))
				tree.place = tree.place;
			tree.selectItems([bookmarkGuid]);
			this.scroll(tree);
		},
		async library(tree, list) {
			var {bookmarkGuid} = tree.selectedNode;
			var {parentGuid} = await PlacesUtils.bookmarks.fetch(bookmarkGuid);

			if (PlacesUtils.getConcreteItemGuid(list.selectedNode) == parentGuid)
				list.selectItems([PlacesUtils.virtualAllBookmarksGuid]);
			else {
				var rows = list.view._rows, lastRow = rows[rows.length - 1];
				if (lastRow.bookmarkGuid == PlacesUtils.virtualAllBookmarksGuid)
					lastRow.containerOpen = true;
			}
			list.selectItems([parentGuid]);
			this.scroll(list);

			tree.selectItems([bookmarkGuid]);
			await new Promise(requestAnimationFrame);
			this.scroll(tree);
		},
		scroll(tree) {
			var pos = .4, visibleRows = tree.getPageLength();
			var ind = tree.view.selection.currentIndex;
			var first = tree.getFirstVisibleRow();
			var newFirst = ind - pos*visibleRows + 1;
//			tree.scrollByLines(Math.round(newFirst - first));
//		}
			tree.scrollByLines(Math.round(newFirst - first));
			this.persist(tree.view);
		},
		persist(view) {
			var du = document.documentURI, xs = Services.xulStore;
			var obf = PlacesUIUtils.obfuscateUrlForXulStore, set = obf
				? u => xs.setValue(du, obf(u), "open", "true")
				: u => xs.setValue(du, u, "open", "true");
			(this.persist = view => {
				for(var node of view._rows) node.containerOpen && set(node.uri)
			})(view);
		}
// <<<
	};
	popup.addEventListener("popupshowing", listener);
	addEventListener("unload", () =>
		popup.removeEventListener("popupshowing", listener)
	, {once: true});
});} catch(ex) {Cu.reportError(ex);}


Подключается или в custom_script или в CustomStylesScripts.jsm в секцию scriptsbackground: [ // В фоне [System Principal]
        { path: "cs/ShowBookmarkFolder_ucf.js", },
   
   
Добавлено 25-09-2022 16:54:17
Dumby
А можете еще переместить пункт в самый верх меню и добавить после него сепаратор?

Отредактировано _zt (25-09-2022 16:54:44)

Отсутствует

 

№50825-09-2022 17:16:39

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1008
UA: Firefox 105.0

Re: UCF - ваши кнопки, скрипты…

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

скрытый текст
fffnew.jpg

Как подсказывают, стилем нельзя.
    Как это сделать с помощью скрипта?

Отредактировано Inko7 (25-09-2022 17:17:20)

Отсутствует

 

№50925-09-2022 20:03:57

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

Re: UCF - ваши кнопки, скрипты…

Dumby
Спасибо, за разъяснение и работает.

_zt пишет

Только вот зачем вам этот обрубок?

Если бы загрузки тоже отображались в Sidebar'е, окно библиотек мне вообще не нужно.

Отсутствует

 

№51025-09-2022 22:11:01

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

Re: UCF - ваши кнопки, скрипты…

xrun1 пишет

Если бы загрузки тоже отображались в Sidebar'е, окно библиотек мне вообще не нужно.

Может ещё работает в актуальной версии > https://forum.mozilla-russia.org/viewto … 24#p784824


Win7

Отсутствует

 

№51125-09-2022 22:15:17

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

Re: UCF - ваши кнопки, скрипты…

_zt пишет

А можете еще переместить пункт в самый верх меню и добавить после него сепаратор?

Не исключено. Замена начала кода

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

Выделить код

Код:

try {({
	run(func) {
		var topics = ["quit-application-granted", "chrome-document-loaded"];
		var obs = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
		for(var t of topics) obs.addObserver(this, t, false);
		this.observe = (subj, topic) => this[topic[0]](subj);
		this.q = () => topics.forEach(t => obs.removeObserver(this, t));

		this.run = async doc => {
			var code = `(${func})(document.getElementById("placesContext"));`;
			var ps = await doc.ownerGlobal.ChromeUtils
				.compileScript("data:charset=utf-8," + encodeURIComponent(code));
			(this.run = ps.executeInGlobal.bind(ps))(doc);
		}
		var re = /\/(?:places|bookmarksSidebar)\.xhtml$/;
		this.c = doc => re.test(doc.documentURI) && this.run(doc);
	}
}).run(popup => {
	var label = "Показать в папке", listener = {
		handleEvent() {
			if (this.shouldHide) return;

			var menuitem = document.createXULElement("menuitem");
			menuitem.setAttribute("label", label);
			menuitem.setAttribute("oncommand", "creator.goParentFolder();");
			menuitem.creator = this;

			var sep = document.createXULElement("menuseparator");
			popup.prepend(menuitem, sep);

			this.handleEvent = e => {
				if (e.target != popup) return;
				var sh = this.shouldHide;
				if (!(
					Boolean(menuitem.clientHeight) ^ sh
					|| (menuitem.hidden = sep.hidden = sh)
				))
					menuitem.disabled = false;
			}
		},

Inko7 пишет

Как подсказывают, стилем нельзя.
    Как это сделать с помощью скрипта?

Ясен пень нельзя. Стили не занимаются отслеживанием запуска и перемещением фокуса.
Вот, весьма криво, но, возможно, сойдёт (это код для custom_script.js).

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

Выделить код

Код:

Services.obs.addObserver(function wr(win, topic) {
	Services.obs.removeObserver(wr, topic);
	var re = /^about:(?:newtab|home)$/;
	var fs = 'data:,content.document.getElementById("newtab-search-text").focus();';
	Array.from(CustomizableUI.windows).forEach(async win => {
		await win.gBrowserInit.firstContentWindowPaintPromise;
		var br = win.gBrowser.selectedBrowser;
		if (re.test(br.currentURI.spec))
			br.focus(),
			br.messageManager.loadFrameScript(fs, false);
	});
}, "sessionstore-windows-restored");

Отсутствует

 

№51225-09-2022 23:07:54

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

Re: UCF - ваши кнопки, скрипты…

kokoss
Я помню эту штуку, мне не понравилось.

Отсутствует

 

№51325-09-2022 23:18:31

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

Re: UCF - ваши кнопки, скрипты…

Dumby
Спасибо. Теперь вообще замечательно.
   

kokoss пишет

этот способ тоже не работает > lockPref("browser.download.panel.shown", false); + browser.download.alwaysOpenPanel  = true

Работает, только что проверил на 105.
   

kokoss пишет

Может ещё работает в актуальной версии > https://forum.mozilla-russia.org/viewtopic.php?pid=784824#p784824

Работает.

Отсутствует

 

№51425-09-2022 23:44:14

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

Re: UCF - ваши кнопки, скрипты…

_zt пишет

Работает, только что проверил на 105.

А у меня не работает! Работает, если в настройках включена опция"Сохранять файлы", что для меня не вариант, о чём я сообщил здесь > https://forum.mozilla-russia.org/viewtopic.php?pid=801691#p801691

Отредактировано kokoss (26-09-2022 00:02:10)


Win7

Отсутствует

 

№51526-09-2022 02:41:39

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

Re: UCF - ваши кнопки, скрипты…

Интересно, что Sidebar Tabs у меня не установлен, о чём сказал выше. А вот кнопка для него стоит, как раз для загрузок (спойлер в п.2). Запасливый, однако!:D

Отсутствует

 

№51626-09-2022 07:06:23

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

Re: UCF - ваши кнопки, скрипты…

kokoss
Вы правы.
lockPref("browser.download.panel.shown", false); + browser.download.alwaysOpenPanel = true
это "Показывать панель загрузок при окончании загрузки", а вам надо "при старте".

Отредактировано _zt (26-09-2022 07:08:08)

Отсутствует

 

№51726-09-2022 11:01:47

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1008
UA: Firefox 104.0

Re: UCF - ваши кнопки, скрипты…

Dumby

Dumby пишет

Вот, весьма криво, но, возможно, сойдёт (это код для custom_script.js).

Срабатывает как надо, но только один раз при старте браузера.
При открытии новой вкладки (плюсиком) или домашней страницы (домиком) курсор остается в адресной строке.

Отсутствует

 

№51827-09-2022 08:33:14

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

Re: UCF - ваши кнопки, скрипты…

Inko7 пишет

но

Это что ещё за «но»?

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

Выделить код

Код:

data:image/png;base64,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

Отсутствует

 

№51927-09-2022 13:32:33

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1008
UA: Firefox 105.0

Re: UCF - ваши кнопки, скрипты…

Dumby
понял, осознал :)
возможно ли расширить функционал кода для вариантов открытия новой вкладки (плюсиком) или домашней страницы (домиком) ?

Отсутствует

 

№52027-09-2022 14:39:47

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

Re: UCF - ваши кнопки, скрипты…

Inko7 пишет

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

Даже не знаю, может подойдёт вариант "вообще всегда"?

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

Выделить код

Код:

(async fsu => {
	var beg = "resource:///actors/AboutNewTabParent.";
	try {var exp = ChromeUtils.importESModule(beg + "sys.mjs");}
	catch {exp = ChromeUtils.import(beg + "jsm");}
	var proto = exp.AboutNewTabParent.prototype;

	var rm = proto.receiveMessage;
	Object.assign(proto, {async receiveMessage(message) {
		if (message.name == "AboutNewTabVisible") {
			var br = this.browsingContext.top.embedderElement;
			br.focus();
			br.messageManager.loadFrameScript(fsu, false);
		}
		return rm.call(this, message);
	}});
})("data:,content.document.getElementById('newtab-search-text').focus();");

Отсутствует

 

№52127-09-2022 19:31:24

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

Re: UCF - ваши кнопки, скрипты…

Dumby, скажите, пожалуйста, это осуществимо или нет..?

Отсутствует

 

№52227-09-2022 20:07:18

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1008
UA: Firefox 105.0

Re: UCF - ваши кнопки, скрипты…

Dumby пишет

Даже не знаю, может подойдёт вариант "вообще всегда"?

Отлично! Спасибо!

Отсутствует

 

№52328-09-2022 18:15:07

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

Re: UCF - ваши кнопки, скрипты…

Dumby, посоветовали ваш скрипт для удаления "Панели закладок", "Меню закладок" и "Другие закладки" в боковой панели. Срабатывает отлично на версиях с 68 по 105 с небольшим побочным эффектом: на разделителях между папками появляется разрыв:
Sidebar.1664377176.png
Можно это как-то исправить, кроме как удаления разделителей..? И можно ли придумать что-то подобное вашему скрипту для удаления вышеуказанного в "Библиотеке"..?

Отсутствует

 

№52429-09-2022 16:24:35

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

Re: UCF - ваши кнопки, скрипты…

LGS пишет

скажите, пожалуйста, это осуществимо или нет..?

Да особо сказать нечего.
Заголовок это не часть документа, элемент туда не поместить.


Можно разве что текст подменить.
Например, переопределить метод gBrowser.updateTitlebar()
чтобы он устанавливал document.title со своим вставленным добром.


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

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

Выделить код

Код:

(async (n, id) => {
	var css = `
		#${id} {
			margin-bottom: 2px;
			margin-right: 102px;

			border: 0;
			height: 18px;
			padding: 0 2px;
			-moz-appearance: none;
			background-color: transparent;
		}
		:root[sizemode=normal] #${id} {
			margin-bottom: 3px;
		}
		:root[sizemode=fullscreen] #${id} {
			visibility: collapse;
		}
		#${id} > hbox {
			color: white;
			height: 18px;
			font-weight: bold;
			background-color: red;
		}
		#${id} > hbox > box {
			padding: 0 4px;
		}
	`;
	var ucs = {
		esr: "ESR",
		beta: "Beta",
		release: "Release",
		nightly: "Nightly",
		aurora: "DevEdition",
		default: "Unbraindead", // ?
	};
	var format = {weekday: "long", day: "numeric", month: "long", year: "numeric"};
	var attrs = {
		id, noautohide: true, noautofocus: true,
		position: "before_end", consumeoutsideclicks: "never"
	};


	css = css.replace(/;/g, " !important;");
	var url = "data:text/css;charset=utf-8," + encodeURIComponent(css);
	windowUtils.loadSheetUsingURIString(url, windowUtils.USER_SHEET);

	var panel = n("panel");
	var hbox = panel.appendChild(n("hbox"));
	for(var args of Object.entries(attrs)) panel.setAttribute(...args);

	document.getElementById("mainPopupSet").append(panel);
	var num = 3; while(num--) hbox.appendChild(n("box")).append("");
	var [vers, time, date] = Array.from(hbox.children, b => b.firstChild);

	var arr = [
		Services.appinfo.name,
		"v" + AppConstants.MOZ_APP_VERSION_DISPLAY,
		`(${Services.appinfo.is64Bit ? 64 : 32}-bit)`
	];
	var c = AppConstants.MOZ_UPDATE_CHANNEL, uc = ucs[c];
	if (uc) {
		if (c == "esr") arr[1] = arr[1].slice(0, -3);
		arr.splice(1, 0, uc);
	}
	vers.data = arr.join(" ");

	var cd;
	var tick = () => {
		var dt = new Date(), d = dt.getDate();
		if (d != cd) cd = d, upd(dt);
		time.data = dt.toLocaleTimeString("mn");
	}
	var upd = d => date.data = d.toLocaleDateString("ru", format);

	tick();
	window.setInterval(tick, 1e3);
	panel.ondblclick = e => {
		if (e.button) return;
		panel.collapsed = true;
		windowState == STATE_MAXIMIZED ? restore() : maximize();
		panel.collapsed = false;
	}
	panel.openPopup(document.documentElement);

	var sr = panel.shadowRoot;
	if (sr) sr.firstChild.removeAttribute("part");

})(nn => document.createXULElement(nn), "vtd-info-panel");

скрипт для удаления

Скрипт ничего не удаляет.
Он меняет корневую ноду places-дерева с «Все закладки» на «Меню закладок».

Можно это как-то исправить, кроме как удаления разделителей..?

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


Если пишу
#bookmarks-view > treechildren::-moz-tree-twisty(separator) {
    padding: 0 !important;
}
то разрыв пропадает, но это сдвигает чуть влево и серараторы в субпапках.


А если пишу
#bookmarks-view > treechildren::-moz-tree-separator {
    margin-right: 16px !important;
}
то слева сепараторы выглядят как надо, но теряют в продолжительности справа.

И можно ли придумать что-то подобное вашему скрипту для удаления вышеуказанного в "Библиотеке"..?

Да я пробовал раньше. И не раз. И ничего не получилось.

Отсутствует

 

№52529-09-2022 18:13:08

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

Re: UCF - ваши кнопки, скрипты…

Dumby

Dumby пишет

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

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

Dumby пишет

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

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

Dumby пишет

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

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

Отсутствует

 

Board footer

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