Такого вроде не встречалось.
Для себя такое решал с помощью разной расцветки панелей для разных профилей.
Думаю что можно это сделать сторонним софтом, например сфигаченном на AHK или AutoIt, но вряд-ли это достойное решение.
Отсутствует
через юзерхром или стайлиш можно попробовать
селектор элемента перед которым будет вставлен текст выбираем на своё усмотрение
селекторэлемента:before {content:"название профиля" !important;}
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
(или иные способы)?
#PanelUI-menu-button > stack > .toolbarbutton-icon, #PanelUI-menu-button > .toolbarbutton-icon { -moz-binding: url("data:text/xml,<bindings xmlns='http://www.mozilla.org/xbl' xmlns:xul='http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul' xmlns:xbl='http://www.mozilla.org/xbl'><binding id='name'><implementation><field name='button'>document.getElementById('PanelUI-menu-button');</field><constructor><![CDATA[ var Cc = Components.classes, Ci = Components.interfaces, cpd; try { cpd = Cc['@mozilla.org/file/directory_service;1'].getService(Ci.nsIProperties).get('ProfD', Ci.nsIFile); } catch (e) {} if (!cpd) return; var itr = Cc['@mozilla.org/toolkit/profile-service;1'].createInstance(Ci.nsIToolkitProfileService).profiles; while (itr.hasMoreElements()) { var profile = itr.getNext().QueryInterface(Ci.nsIToolkitProfile); if (profile.rootDir.path == cpd.path) { this.button.label = profile.name; break; } } ]]></constructor></implementation></binding></bindings>#name") !important; } #PanelUI-menu-button > .toolbarbutton-text { display: -moz-box !important; -moz-box-ordinal-group: 0 !important; }
Отредактировано Vitaliy V. (20-01-2018 20:32:25)
Отсутствует
Vitaliy V.
Можно без перебора профилей:
Components.classes["@mozilla.org/toolkit/profile-service;1"] .createInstance(Components.interfaces.nsIToolkitProfileService) .selectedProfile .name;
Отредактировано Infocatcher (20-01-2018 12:30:50)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Можно без перебора профилей:
Components.classes["@mozilla.org/toolkit/profile-service;1"] .createInstance(Components.interfaces.nsIToolkitProfileService) .selectedProfile .name;
Увы но похоже нельзя, если запустить браузер с параметром например -p "Test5"
то
Отредактировано Vitaliy V. (20-01-2018 13:00:27)
Отсутствует
Увы но похоже нельзя, если запустить браузер с параметром например -p "Test5"
Хм, да, печально. То есть это не selected profile, а default profile.
// nsIToolkitProfileService.selectProfile can be used only during the selection // of the profile in the ProfileManager. If we are showing about:profiles in a // tab, the selectedProfile returns the default profile. // In this function we use the ProfD to find the current profile. function findCurrentProfile() { let cpd; try { cpd = Cc["@mozilla.org/file/directory_service;1"] .getService(Ci.nsIProperties) .get("ProfD", Ci.nsIFile); } catch (e) {} if (cpd) { let itr = ProfileService.profiles; while (itr.hasMoreElements()) { let profile = itr.getNext().QueryInterface(Ci.nsIToolkitProfile); if (profile.rootDir.path == cpd.path) { return profile; } } } // selectedProfile can trow if nothing is selected or if the selected profile // has been deleted. try { return ProfileService.selectedProfile; } catch (e) { return null; } }
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
не понимаю зачем столько извращений со скриптами то?
всё равно ж в каждом созданном профиле нужно это пихать. так не проще ли стилем ?
скопировать юзерхром да изменить текст
плюс расположить можно где угодно и текст любой
#new-tab-button:before { content:"Test Profile" !important; -moz-appearance: none !important; color: ffffff !important; font-size: 150% !important; }
Отредактировано okkamas_knife (20-01-2018 14:42:33)
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
всё равно ж в каждом созданном профиле нужно это пихать.
Можно и не пихать в каждый профиль, а сделать как там https://forum.mozilla-russia.org/viewtopic.php?id=70326
но config.js заменить/добавить
// try { var Cc = Components.classes, Ci = Components.interfaces; var text = `@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); @-moz-document url("chrome://browser/content/browser.xul") { #PanelUI-menu-button > stack > .toolbarbutton-icon, #PanelUI-menu-button > .toolbarbutton-icon { -moz-binding: url("data:text/xml,<bindings xmlns='http://www.mozilla.org/xbl' xmlns:xul='http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul' xmlns:xbl='http://www.mozilla.org/xbl'><binding id='name'><implementation><field name='button'>document.getElementById('PanelUI-menu-button');</field><constructor><![CDATA[ var Cc = Components.classes, Ci = Components.interfaces, cpd; try { cpd = Cc['@mozilla.org/file/directory_service;1'].getService(Ci.nsIProperties).get('ProfD', Ci.nsIFile); } catch (e) {} if (!cpd) return; var itr = Cc['@mozilla.org/toolkit/profile-service;1'].createInstance(Ci.nsIToolkitProfileService).profiles; while (itr.hasMoreElements()) { var profile = itr.getNext().QueryInterface(Ci.nsIToolkitProfile); if (profile.rootDir.path == cpd.path) { this.button.label = profile.name; break; } } ]]></constructor></implementation></binding></bindings>#name") !important; } #PanelUI-menu-button > .toolbarbutton-text { display: -moz-box !important; -moz-box-ordinal-group: 0 !important; } }`; var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); var nis = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService); var uri = nis.newURI("data:text/css;charset=utf-8," + encodeURIComponent(text), null, null); if (!sss.sheetRegistered(uri, sss.AGENT_SHEET)) sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); } catch(e) {}
Отредактировано Vitaliy V. (20-01-2018 20:35:40)
Отсутствует
lehaskell
Конечно будут, а с чего взяли что нет? Если из-за того что типа http: есть <bindings xmlns='http://www.mozilla.org/xbl'...
так это mozilla namespace (пространство имен)
Отсутствует
Vitaliy V., да действительно этот момент смутил, тем более, что по тем источникам информации по XBL, что я читал, это было названо "URL-адресом сервера". Поэтому спасибо за прояснение ситуации.
Остался только вопрос, в какой файл всё это записать и как заставить Firefox понять его содержимое?
Отредактировано lehaskell (21-01-2018 22:09:22)
Отсутствует