Und das habe ich noch in einem meiner Profile
Habe ich mittlerweile mitgeschnitten. Deutsch ist doch manchmal nicht so eindeutig, wie man es gerne hätte.
Wieviele Kartons an Profilen hast du denn noch?
Und das habe ich noch in einem meiner Profile
Habe ich mittlerweile mitgeschnitten. Deutsch ist doch manchmal nicht so eindeutig, wie man es gerne hätte.
Wieviele Kartons an Profilen hast du denn noch?
Wieviele Kartons an Profilen hast du denn noch?
Zur Zeit 14
Funktioniert das denn noch im aktuellen 87er Firefox?
Habe es hier auch noch, sowie bei Github.
Das wäre es:
// ==UserScript==
// @name SaveUserChromeJS.uc.js
// @author ywzhaiqi
// @description UC-Skripte wie Greasemonkey Skripte speichern
// @include main
// @charset UTF-8
// @version 0.4b
// @homepageURL https://github.com/ywzhaiqi/userChromeJS/tree/master/SaveUserChromeJS
// @reviewURL http://bbs.kafan.cn/thread-1590873-1-1.html
// ==/UserScript==
(function() {
// Benachrichtigung nach dem Speichern des Skriptes, aktivieren?
var notificationsAfterInstall = true;
// Soll das Skript nach dem Speichern automatisch geladen werden (kein Start erforderlich)?
// Es werden nur einige .uc.js Skripte unterstützt. Die meisten Skripte benötigen einen Neustart.
var runWithoutRestart = false;
let { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
if (!window.Services) Cu.import("resource://gre/modules/Services.jsm");
if(typeof window.saveUserChromeJS != "undefined"){
window.saveUserChromeJS.uninit();
delete window.saveUserChromeJS;
}
const RE_USERCHROME_JS = /\.uc(?:-\d+)?\.(?:js|xul)$|userChrome\.js$/i;
const RE_CONTENTTYPE = /text\/html/i;
var ns = window.saveUserChromeJS = {
_menuitem: null,
get SCRIPTS_FOLDER() {
delete this.SCRIPTS_FOLDER;
return this.SCRIPTS_FOLDER = Services.dirsvc.get("UChrm", Ci.nsILocalFile);
},
init: function() {
Services.obs.addObserver(this, "content-document-global-created", false);
// add contentAreaContextMenu
var contextMenu = $("contentAreaContextMenu");
var menuitem = this.createMenuitem();
contextMenu.insertBefore(menuitem, contextMenu.firstChild);
contextMenu.addEventListener("popupshowing", this, false);
this._menuitem = menuitem;
},
uninit: function(){
Services.obs.removeObserver(this, "content-document-global-created");
if(this._menuitem){
this._menuitem.parentNode.removeChild(this._menuitem);
}
$("contentAreaContextMenu").removeEventListener("popupshowing", this, false);
},
handleEvent: function(event){
switch(event.type){
case "popupshowing":
if (event.target != event.currentTarget) return;
if(gContextMenu.onLink){
this._menuitem.hidden = !RE_USERCHROME_JS.test(gContextMenu.linkURL);
}else{
this._menuitem.hidden = true;
}
break;
}
},
observe: function(aSubject, aTopic, aData) {
switch (aTopic) {
case "content-document-global-created":
let safeWin = aSubject;
let chromeWin = this.getBrowserForContentWindow(safeWin).wrappedJSObject;
if (!chromeWin) return;
let gBrowser = chromeWin.gBrowser;
if (!gBrowser) return;
let lhref = safeWin.location.href;
if(lhref.startsWith("view-source")) return;
// Show the scriptish install banner if the user is navigating to a .user.js
// file in a top-level tab.
if (safeWin === safeWin.top && RE_USERCHROME_JS.test(lhref) && !RE_CONTENTTYPE.test(safeWin.document.contentType)) {
safeWin.setTimeout(function(){
ns.showInstallBanner(gBrowser.getBrowserForDocument(safeWin.document));
}, 500);
}
if(safeWin.location.hostname == 'github.com'){
safeWin.addEventListener("DOMContentLoaded", function(){
ns.github_addButton(safeWin.document);
// github verwendet history.pushstate. Die Schaltfläche nach dem Laden der Seite erneut hinzugefügt werden.
// 2014-7-15: Firefox 33 (Nightly) stürzt ab, wenn auf ein unsicheres Fenster verwiesen wird. $ Wird referenziert
// Details siehe: https://tieba.baidu.com/f?ct=335675392&tn=baiduPostBrowser&z=3162087505&sc=53663075812#53663075812
if (Services.appinfo.version < 33) {
ns.github_addListener(safeWin);
}
var sWBrowser = gBrowser.getBrowserForContentWindow(safeWin);
if (!sWBrowser.ProgListener) {
sWBrowser.ProgListener = {
QueryInterface: XPCOMUtils.generateQI(["nsIWebProgressListener", "nsISupportsWeakReference"]),
onLocationChange: function() {
safeWin.setTimeout(function() {
ns.github_addButton(safeWin.document);
}, 0);
}
};
};
try {
sWBrowser.addProgressListener(sWBrowser.ProgListener, Ci.nsIWebProgress.NOTIFY_LOCATION);
safeWin.addEventListener('beforeunload', function() {
sWBrowser.removeProgressListener(sWBrowser.ProgListener);
});
} catch(e) { };
}, false);
}
break;
}
},
createMenuitem: function(){
var menuitem = $C("menuitem", {
id: "uc-install-menu",
label: "Installieren für userChromeJS...",
accessKey: "I",
oncommand: "saveUserChromeJS.saveScript(gContextMenu.linkURL)"
});
return menuitem;
},
showInstallBanner: function(browser) {
var notificationBox = gBrowser.getNotificationBox(browser);
var greeting = "Das ist ein userChrome Script. Klicken Sie auf Installieren, um es zu verwenden. Nach dem Speichern im Chrome Ordner bitte einen Neustart durchführen.";
var btnLabel = "Installieren";
// Remove existing notifications. Notifications get removed
// automatically onclick and on page navigation, but we need to remove
// them ourselves in the case of reload, or they stack up.
for (var i = 0, child; child = notificationBox.childNodes[i]; i++)
if (child.getAttribute("value") == "install-userChromeJS")
notificationBox.removeNotification(child);
var notification = notificationBox.appendNotification(
greeting,
"install-userChromeJS",
null,
notificationBox.PRIORITY_WARNING_MEDIUM, [{
label: btnLabel,
accessKey: "I",
popup: null,
callback: this.saveCurrentScript
}
]);
},
github_addButton: function(doc){
if(doc.getElementById("uc-install-button")) return;
var rawBtn = doc.getElementById("raw-url");
if(!rawBtn) return;
var downURL = rawBtn.href;
if(!RE_USERCHROME_JS.test(downURL)) return;
var installBtn = doc.createElement("a");
installBtn.setAttribute("id", "uc-install-button");
installBtn.setAttribute("class", "btn btn-sm");
installBtn.setAttribute("href", downURL);
installBtn.innerHTML = "Installieren";
installBtn.addEventListener("click", function(event){
event.preventDefault();
ns.saveScript(downURL);
}, false);
rawBtn.parentNode.insertBefore(installBtn, rawBtn);
},
github_addListener: function(win){
var script = '\
(function(){\
var $ = unsafeWindow.jQuery;\
if(!$) return;\
$(document).on("pjax:success", function(){\
github_addButton(document);\
});\
})();\
';
let sandbox = new Cu.Sandbox(win, {sandboxPrototype: win});
sandbox.unsafeWindow = win.wrappedJSObject;
sandbox.document = win.document;
sandbox.window = win;
sandbox.github_addButton = ns.github_addButton;
Cu.evalInSandbox(script, sandbox);
},
saveCurrentScript: function(event){
ns.saveScript();
},
saveScript: function(url) {
var win = ns.getFocusedWindow();
var doc, name, fileName, fileExt, charset;
if(!url){
url = win.location.href;
doc = win.document;
name = doc.body.textContent.match(/\/\/\s*@name\s+(.*)/i);
charset = doc.body.textContent.match(/\/\/\s*@charset\s+(.*)/i);
}else{
if(url.match(/^https?:\/\/github\.com\/\w+\/\w+\/blob\//)){
url = url.replace("/blob/", "/raw/");
}
}
name = name && name[1] ? name[1] : decodeURIComponent(url.split("/").pop());
fileName = name.replace(/\.uc\.(js|xul)$|$/i, ".uc.$1").replace(/\s/g, '_');
if (fileName.match(/\.uc\.$/i)) { // Bezeichnung ändern
var m = url.match(/\.(js|xul)$/);
if (m)
fileName += m[1];
}
fileExt = name.match(/\.uc\.(js|xul)$/i);
fileExt = fileExt && fileExt[1] ? fileExt[1] : "js";
charset = charset && charset[1] ? charset[1] : "UTF-8";
// https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Tutorial/Open_and_Save_Dialogs
var fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
var err = false;
try {
fp.init(window, "", Ci.nsIFilePicker.modeSave);
} catch(e) {
fp.init(ns.getMostRecentWindow(), "", Ci.nsIFilePicker.modeSave);
err = true;
Application.console.log('SaveUserChromeJS.uc.js - error catched (A)');
};
// bei einigen Benutzern (Win7) macht die folgende Zeile bei der Dateinamenvergabe Probleme, ggf. also deaktivieren
fp.appendFilter("*." + fileExt, "*.uc.js;*.uc.xul");
fp.appendFilters(Ci.nsIFilePicker.filterAll);
fp.displayDirectory = ns.SCRIPTS_FOLDER; // nsILocalFile
fp.defaultExtension = fileExt;
fp.defaultString = fileName;
var callbackObj = {
done: function(res) {
if (res != fp.returnOK && res != fp.returnReplace) return;
var persist = Cc["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(Ci.nsIWebBrowserPersist);
persist.persistFlags = persist.PERSIST_FLAGS_AUTODETECT_APPLY_CONVERSION;
var obj_URI;
if(doc && fileExt != 'xul'){
obj_URI = doc.documentURIObject;
}else{
obj_URI = Services.io.newURI(url, null, null);
}
if(notificationsAfterInstall){
persist.progressListener = {
onProgressChange: function(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress) {
if(aCurSelfProgress == aMaxSelfProgress){
var win1 = err ? ns.getMostRecentWindow() : window;
win1.setTimeout(function(){
ns.showInstallMessage({
fileExt: fileExt,
fileName: fileName,
file: fp.file,
charset: charset
});
}, 100);
}
},
onStateChange: function(aWebProgress, aRequest, aStateFlags, aStatus) { }
};
}
persist.saveURI(obj_URI, null, null, null, null, "", fp.file, null);
}
};
fp.open(callbackObj);
},
showInstallMessage: function(info){
var isRun = (info.fileExt == "js");
var mainAction, secondActions;
if(runWithoutRestart && isRun){
mainAction = {
label: "Sofort ausführen (ohne Neustart).",
accessKey: "a",
callback: function(){
ns.runScript(info.file, info.charset);
}
};
secondActions = [{
label: "Jetzt neu starten",
accessKey: "s",
callback: ns.restartApp
}];
}else{
mainAction = {
label: "Jetzt neu starten",
accessKey: "s",
callback: ns.restartApp
};
secondActions = null;
}
var showedMsg = ns.popupNotification({
id: "userchromejs-install-popup-notification",
message: "'" + info.fileName + "' Die Installation ist abgeschlossen.",
mainAction: mainAction,
secondActions: secondActions,
options: {
removeOnDismissal: true,
persistWhileVisible: true
}
});
},
popupNotification: function(details){
var win = ns.getMostRecentWindow();
if (win && win.PopupNotifications) {
win.PopupNotifications.show(
win.gBrowser.selectedBrowser,
details.id,
details.message,
"",
details.mainAction,
details.secondActions,
details.options);
return true;
}
return false;
},
// Unterstützt nur us.js Skripte
runScript: function(file, charset){
window.userChrome_js.getScripts();
if(window.userChromeManager){
window.userChromeManager.rebuildScripts();
}
var dir = file.parent.leafName;
if(dir.toLowerCase() == 'chrome' || (dir in window.userChrome_js.arrSubdir)){
let context = {};
Services.scriptloader.loadSubScript( "file:" + file.path, context, charset || "UTF-8");
}
},
flushCache: function (file) {
if (file)
Services.obs.notifyObservers(file, "flush-cache-entry", "");
else
Services.obs.notifyObservers(null, "startupcache-invalidate", "");
},
getFocusedWindow: function() {
var win = document.commandDispatcher.focusedWindow;
try {
return (!win || win == window) ? content : win;
} catch(e) {
Application.console.log('SaveUserChromeJS.uc.js - error catched (B)');
return (!win || win == window) ? null : win;
};
},
getMostRecentWindow: function(){
return Services.wm.getMostRecentWindow("navigator:browser")
},
getBrowserForContentWindow: function(aContentWindow) {
return aContentWindow
.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIWebNavigation)
.QueryInterface(Ci.nsIDocShellTreeItem)
.rootTreeItem
.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDOMWindow)
.QueryInterface(Ci.nsIDOMChromeWindow);
},
restartApp: function() {
const appStartup = Components.classes["@mozilla.org/toolkit/app-startup;1"].getService(Components.interfaces.nsIAppStartup);
// Notify all windows that an application quit has been requested.
var os = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"].createInstance(Components.interfaces.nsISupportsPRBool);
os.notifyObservers(cancelQuit, "quit-application-requested", null);
// Something aborted the quit process.
if (cancelQuit.data) return;
// Notify all windows that an application quit has been granted.
os.notifyObservers(null, "quit-application-granted", null);
// Enumerate all windows and call shutdown handlers
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
var windows = wm.getEnumerator(null);
var win;
while (windows.hasMoreElements()) {
win = windows.getNext();
if (("tryToClose" in win) && !win.tryToClose()) return;
}
let XRE = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime);
if (typeof XRE.invalidateCachesOnRestart == "function") XRE.invalidateCachesOnRestart();
appStartup.quit(appStartup.eRestart | appStartup.eAttemptQuit);
}
};
function $(id) document.getElementById(id);
function $C(name, attr) {
var el = document.createElement(name);
if (attr) Object.keys(attr).forEach(function(n) el.setAttribute(n, attr[n]));
return el;
}
function log(arg) Application.console.log("[SaveUserChromeJS]" + arg);
function checkDoc(doc) {
if (!(doc instanceof HTMLDocument)) return false;
if (!window.mimeTypeIsTextBased(doc.contentType)) return false;
if (!doc.body || !doc.body.hasChildNodes()) return false;
if (doc.body instanceof HTMLFrameSetElement) return false;
return true;
}
})();
window.saveUserChromeJS.init();
Alles anzeigen
Mfg.
Endor
Ich hoffe ja, dass aborix das vielleicht nochmals zum laufen bringen kann.
Mfg.
Endor
Nein, aber im Fx 56
Da bin ich ja beruhigt. Ich dachte schon, ich hätte in den letzten Jahren verpeilt, dass das Skript (wieder) geht. Umso mehr Dankeschön für das neue Skript!
Edit: Ich vermute, dass das neue weniger von Veränderungen der github.com-Oberfläche abhängt und damit etwas langlebiger ist.
Ab Version 92 wird das Icon im Restart-Script nicht mehr angezeigt. In Zeile 63 habe ich zwar auf chrome://global/skin/reload.svg geändert, aber ohne Wirkung.
// Restart button script for Firefox 60+ by Aris
//
// left-click on restart button: normal restart
// middle-click on restart button: restart + clear caches
// right-click on restart button: restart + clear caches
// Edit by 2002Andreas
// based on 'Quit' button code by 2002Andreas
// restart code from Classic Theme Restorer add-on
// invalidate caches from Session Saver add-on
/* Button */
(function() {
try {
Components.utils.import("resource:///modules/CustomizableUI.jsm");
var {Services} = Components.utils.import("resource://gre/modules/Services.jsm", {});
var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);
var button_label = "Restart";
try {
switch (document.getElementById("nav-bar").getAttribute("aria-label")) {
case "Navigations-Symbolleiste": button_label = "Neustarten"; break;
case "Панель навигации": button_label = "Перезапустить"; break;
}
} catch(e) {}
CustomizableUI.createWidget({
id: "uc-restart", // button id
defaultArea: CustomizableUI.AREA_NAVBAR,
removable: true,
label: button_label, // button title
tooltiptext: button_label, // tooltip title
onClick: function(event) {
var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"].createInstance(Components.interfaces.nsISupportsPRBool);
var observerSvc = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
if(event.button=='1') { // middle-click - clear caches
Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULRuntime).invalidateCachesOnRestart();
}
if(event.button=='0' || event.button=='2') { // left-click - restart/right-click - clear caches
observerSvc.notifyObservers(cancelQuit, "quit-application-requested", "restart");
if(cancelQuit.data) return false;
Services.startup.quit(Services.startup.eRestart | Services.startup.eAttemptQuit);
}
},
onCreated: function(button) {
return button;
}
});
// style button icon
var uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent('\
\
#uc-restart .toolbarbutton-icon {\
list-style-image: url("chrome://global/skin/reload.svg"); \
fill: red; \
\
}\
\
'), null, null);
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
} catch (e) {
Components.utils.reportError(e);
};
})();
Alles anzeigen
chrome://global/skin/icons/reload.svg wäre korrekt.
wäre korrekt.
Danke, Sören, perfekt.
Wie bekomme ich es hin, dass in folgendem Script der Button auch so aussieht, wie die anderen.
// ==UserScript==
// @name Appmenu.uc.js
// @namespace Appmenu@gmail.com
// @description Basiert auf dem Script externalFuncButtonM.uc.js, Wiederherstellung der Orangenen FF-Menü Schaltfläche
// @include main
// @version update for Firefox 68+ by aborix
// @author defpt
// @charset UTF-8
// @version 2019.08.04
// ### Z.181 geändert von Toolbar in Menüleiste
// zurück in Toolbar (Z.191)
// ==/UserScript==
var Appmenu = {
// Editor mit angegebenem Pfad verwenden
editor: 'C:\\notepad++\\notepad++.exe',
// in 'view_source.editor.path' eingetragenen Editor verwenden
editor: Services.prefs.getCharPref('view_source.editor.path'),
// Dateimanager mit angegebenem Pfad verwenden
//fileManager: '""',
autohideEmptySubDirs: true,
// Submenüs ohne Inhalt im Hauptmenü automatisch ausblenden
moveSubDirstoBottom: true,
// Submenüs im Hauptmenü nach unten verschieben
subdirPopupHash: [],
subdirMenuHash: [],
toolbar: {
// Submenüs des Hauptmenüs definieren; Separator einfügen mit {name: 'separator'}
subdirs: [{
name: 'Firefox Verzeichnis',
image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADC0lEQVQ4jYWTa0wVBBiGXxHKLmyobUe3rFaOFBRcDAs1OM0WBsWEtZZQLSugUNSBI0wEFDAPMAQ6XGY5Qd2JDlK0qTDczDnDSmIoCmarcRiXgCmH2yE4l6c/xepH9Px+vmffj++T5uHbo7l+CeEh8fM5/4n9Qk1+0b43MFRYTq0urq0LtlrX/+/Q8MDAFvq7LBez42eeyypGg6Dm39DHX6G40lH/PQfPblnrGyZJsyNtz0wOdRr+FaiLf+LDS+WJB1XaNq2GHlR/GyVbMCamUWbZD13vgC0TT+9+sO3D1VnQLEn6Y+iXp+xtSTe4a5rBUc6d1nRWRr2J1mSwPT8HpgpgugrPeBXYK2Gigu4z7zNyJfO0JGnm3q9rGcrD4/gMt+0Q2LKhLw8G8sHxKZ67Zhg1M2sr4t7VNNoqkzgWG0C9Obxsbn1Xxwd4xo7jvBCHu8+Ep78Iek24bEdwdB2mtySWG4mPci76EW6ejMSabaBsT/SBucDQ2ZibDJqZOB/H1PepTLXuZLw1hYnz6UweXoOzdhH2muU07V3MriB/GvaGU53xaspcoL/mxWuuzmz6a40MWl+h3xJNX3EUM/Wv42kK5IfCeBICHyZ542M0ZoXSU7WBL46mvyZJmvoy6ZDz+ufYG2PpLAzgekkw3TufxNlSjftiKJc++YjYlYuo2+HPj/nBXMtfxzepy+luPRYhSaIjmYa3Q8d7zME07vKjPTUAR+Vu3B1bGT1jwrpNDJeu4ve8ZXTmLCEvxovcKB/aL1cHaOb2T0Hu796lvfCFse6KCHpLNjN7MgLXz+lw6wATV97jxI6Xydjsw5EEb7Zv8iYm2Hs2cvXCMUkbdM56Ytlk4UtwKwX31UCcLWFMn47A2RJDfZqRVQ/K9fhSTa7w08D9XuqSdFnS15LKJa2TJL21Qs0jmc/iyI1gLG8jwwWRmJ5fiqQ7kpokHZdUIGm3pG2SQsPCwh745xX73idlBfmqYf1iNS1ZoHpJOX/JmyQ9LclgMBgeMhqN3vP9k1dISIiPpIWSFswn/s2f5mHBqON1Ok8AAAAASUVORK5CYII="
},
{
name: 'Firefox Profil',
image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACc0lEQVQ4ja3TW0iTARjG8RdnKo4yHcimRRmRNCyMIKc1Sy1IKtTGVlppqMVKp81MZ2FYmlEhuSJrDjQNSxeCdGBY0+hAB1CRMiRP0zzu2z53NtDg6aoQ6aKsB36X/8uH6D/Nh0O0h8OhpPmISPBHdex6jyaHdgnm6r1+ma3zQsMxT1axndOetcDJaI5htT/Jf/bcksNik/VhLlhdDsyNCjAPsjB1TYxTxReQqdWjsqEWZW0dKHz8HhkaPZo0x6FTx30nolAiouTR8UnYnS5Ypm2YZFh8HeiDUbkKfeXR6C8WorbqLLL1H5D2pAuK9k/YqtDgUtU5ENEB4nK5uXanCw6nG9M2BxiLFWPtGhhVQRhSCjCkFKC/KALVN0uRUGPAZtVdxJbpcLSqFd6+vlkUHLzyonvmG5zuGdgcTrBWO8bqMmHM56M/R4CX+wNRXVEAqaYN+64/xdKobPBEcuzKuAI+P+g8hW0Mv2UcncDI+BRGJxmMT5nRWyKD8bQA7xL9YIjyQemZPOQXlaHyajHWiNLgsWwbaivSESZcd4N2xMQ1TpjMmK+voRq9qcsxmBMIY6ovDHt5qIgRIl4ogrdPOJJEYnxsXouYyA33SSKVPWetdsxnMVvQIRHhc4o/BhQ8DCl5aD4SisvxO3EnMRTDeQGwPQqGVCJuJbn8RJfT5cZC7KARb+O2wLCCizeb/NC5OxA9h/j4ogjA2G1POLvDIU+XdFJhoWqEYafxOybGjB6tFq+SpXgmjsCLhEh0lx/EyOsaMAyDAlXRMFWq1a7Z2TkshlqtdpFElmyq17Xg3l+q17VAIksxERGFEFHSIoX8841/AH8LBtcBwgOXAAAAAElFTkSuQmCC"
},
{
name: 'Firefox Funktionen',
image: "data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAB0AAAAzAAAAQgAAAEUAAAA4AAAAIwAAAA0AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAKgQAIngOFHPPHiGf9hwnsv4aK7H+HCid9BYmiNoNEVGWAAAAOQAAAAkAAAAAAAAAAAAAAAAAAAAAAAAADhISZ4oiJaj4JTfD/yVDzf8lTNP/JU/X/yVT2f8lUNL/HDas/g4bbJsAAAAaAAAAAAAAAAAAAAAAAAAAACAmkVYeKLn+JT7I/yVL0/8lVNr/JVrd/yVf3/8lZuL/JW3k/yVk4P8bT9P+HkXBjAAAAAAAAAAAAAAAABoaaxMeMbXqJT/K/yVN1v8lWN3/JmDf/ytSr/81OWr/M0qL/yZ64/8jiez/JXXh/x9Msv4ITLo/AAAAAAAAAAAiN6B3JT7I/yVN1v8lWd3/JV3d/ytEnv81J1T/SiIe/04iFf9BISL/I6HV/xus7v8hhtn/JVCofAAAAAAAAAAAIEGw0SVL0/8lV9z/JVnb/yZn4P8oct7/Jnjg/ydjt/9RUE3/WCgR/zp3fv8axfb/EMj1/xmC0LQAAAAAAAAAABxKxv0lVNr/Jl/f/ydCyf84WaX/a0AX/3NMHP9lZEf/dUQT/2cyDf9ZNB//Q9j3/ybh/P8ap9X1AAAAAAAAAAAbWM/8JVve/yZm4P8mWNP/Nkh+/3JXLf+aWgv/mFkL/4tNBv+ARQf/bTcH/6Pw+v977v7/Opuz/gB/fwIAAAAAIWHV5SZf4P8ma+H/Jnfk/yOP5/9QZYT/qXAm/7NyHP+qaBX/mVkN/4xPCP+dtKv/lu3+/yOy1uUAAAAAAAAAAB1exJElZeL/Jm7i/yZ+5f8iheD/QHDX/2uAk//DiRP/vH4V/7V0GP+jZRn/rbKa/4js//8AyOONAAAAAAAAAAAdU7JGJVnY/yZw4/8kguX/IJLg/4p4N/+wjhv/0p0F/9GaCf/FiRD/sHkv/8Ts8P+L4/L/DcbnTQAAAAAAAAAAGVnYFB5m3P12eX39coBn/02bp/92i1H/1qYb/+GvIf/cqQz/yJId/8SlaP+539//Za/KtwAAAAAAAAAAAAAAAAAAAAAiguZSv5tRZMKXQPXBkiX/xKU3/+a2Qf/rvEj/5bQ4/9OpQP/XyZ7vkqmnegAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkwWkd5cBimOe/X+TswV7+7sNe/um/X+HivWeRzbBOGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
}],
// Untermenü Firefox Funktionen
apps: [{
name: 'userChrome.css',
path: '\\chrome\\userChrome.css',
subdir: 'Firefox Profil',
image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADFklEQVQ4jXXR3U9bdQDG8fMHbFcjLjFRE2PIEhsTTfTOK++8UmNc2JzeaIQ0GzFBnSxLUDvs1DnCRJSgvIjsFUYXNg/Ki8IKnfQFCm3T0xZq11Eobc/pK6ft+fXrxYyhMT7Jc/l8bh5J2heLZeKxmZlQdGU1oblXtjWXN6m5fBlt2ZfRFr2aKk/Hfzt84PAj0v/lwjcLjelkTvBP8gIeFAWr6Qq3lQLTgTIX+mZ+P7AfmYjSfS0o+q9E6B9yF8cmAyVjJlrlTrjCLaXMgLfEoCeDM17E5lZxx+BM38KCdPDgIUmSJOlnP7WLdsHQSpWh1QoDrj0653L0O3K8O7bDs71/0XIjSDRdYno9hyOgsxiBiz/MLTQ0NDwqjfrQupcENwNVuhb3sPl0+hx5bKt5Prid5LneKO9PBNnN6Tg3Svy6nuXassovCrSe7uqRBjcQX3lgJAwjCnzrrHD+bpEue573bCkaL8Uwjytki2UiqoE7UWZ2o4QtbGD97s6S9NTRsz1PvH5m9PFXP/rpyTfOTjYPOIzWy25ahpd550cHb35vp3tqjVTRYFM1WNup4IjrzCfB0ntrqe6Fl196q3Ezsq0blRJqrviw2QKpfJlEocb9nCCUruJNVnCp8FnPxGIdYLXOPq1Es/oesFuCnSIkCrCVrxHPGsQ0QSRtEEhV8Rfgk0s364GOjkmTP5LRCwK2C4KtvCCeE9zPCmJZQVQ1iKhVQqpAKUFH93g90N4+bvKGUrpWhQf7h5ogouko2Sz2eBRHPE9Yh/avx+qBtrYrJldwV09X+Xe4oQoiWo3lrTh3E2HkYIZR/xoezeDjL/8DDJuWAkk9WYZNTRBWBUrmYWeDGtfXfVz1xBj88x72ZIXTX1yvB06dGjbN+5J6ogwhtUYwLQikBYGMYH6zwohTYdC+zpgzgTsHbZ9frQdaWoee+SOQZxuI6hDZA6UE/iKs5cCegLkYONLg0qHt/A1PHXDkyAuHXjvx4eW3T1qmTpgt8nGzRT7Wck4+2nxObmrulJvMVvmY2So3NXfKx09ap55/8ZVP/waJWLfEOCt3rAAAAABJRU5ErkJggg=='
},
{
name: 'userContent.css',
path: '\\chrome\\userContent.css',
subdir: 'Firefox Profil',
image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADFklEQVQ4jXXR3U9bdQDG8fMHbFcjLjFRE2PIEhsTTfTOK++8UmNc2JzeaIQ0GzFBnSxLUDvs1DnCRJSgvIjsFUYXNg/Ki8IKnfQFCm3T0xZq11Eobc/pK6ft+fXrxYyhMT7Jc/l8bh5J2heLZeKxmZlQdGU1oblXtjWXN6m5fBlt2ZfRFr2aKk/Hfzt84PAj0v/lwjcLjelkTvBP8gIeFAWr6Qq3lQLTgTIX+mZ+P7AfmYjSfS0o+q9E6B9yF8cmAyVjJlrlTrjCLaXMgLfEoCeDM17E5lZxx+BM38KCdPDgIUmSJOlnP7WLdsHQSpWh1QoDrj0653L0O3K8O7bDs71/0XIjSDRdYno9hyOgsxiBiz/MLTQ0NDwqjfrQupcENwNVuhb3sPl0+hx5bKt5Prid5LneKO9PBNnN6Tg3Svy6nuXassovCrSe7uqRBjcQX3lgJAwjCnzrrHD+bpEue573bCkaL8Uwjytki2UiqoE7UWZ2o4QtbGD97s6S9NTRsz1PvH5m9PFXP/rpyTfOTjYPOIzWy25ahpd550cHb35vp3tqjVTRYFM1WNup4IjrzCfB0ntrqe6Fl196q3Ezsq0blRJqrviw2QKpfJlEocb9nCCUruJNVnCp8FnPxGIdYLXOPq1Es/oesFuCnSIkCrCVrxHPGsQ0QSRtEEhV8Rfgk0s364GOjkmTP5LRCwK2C4KtvCCeE9zPCmJZQVQ1iKhVQqpAKUFH93g90N4+bvKGUrpWhQf7h5ogouko2Sz2eBRHPE9Yh/avx+qBtrYrJldwV09X+Xe4oQoiWo3lrTh3E2HkYIZR/xoezeDjL/8DDJuWAkk9WYZNTRBWBUrmYWeDGtfXfVz1xBj88x72ZIXTX1yvB06dGjbN+5J6ogwhtUYwLQikBYGMYH6zwohTYdC+zpgzgTsHbZ9frQdaWoee+SOQZxuI6hDZA6UE/iKs5cCegLkYONLg0qHt/A1PHXDkyAuHXjvx4eW3T1qmTpgt8nGzRT7Wck4+2nxObmrulJvMVvmY2So3NXfKx09ap55/8ZVP/waJWLfEOCt3rAAAAABJRU5ErkJggg=='
},
{
name: 'prefs.js',
path: '\\prefs.js',
subdir: 'Firefox Profil',
image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAsZJREFUeNqMU1tIFGEU/uafm+6urhKWt80UEUFzs10LkkhIsgyCeggrCLPwqadeIqIwQoSIHnrpQl4Qil6EXuqhLboQ5GUXDZYS0iV1uyCGru22u7Pzz/T/s7slUdGBb2bOmXPO/813zggVfT5wMxl0aiCm0cX6kvyifEXEckKHP7wCURCsHH4lRIAsMhACVSLVEjJmmiYSunH55sGGoo4tZfiX+d4vwpkjY3//6B2SDRqsQVxLdWWLdeZz0DUwM7l9z2aRZGw3rbO3SFn6zEdL9fpS7kc1ajVca5y+yOjbZBHPQ0s4ei8KRSKQsgKwExx5atpNUApeL/xG3UZEq7FK42/C5w+c5LGfDPRkonZrqdNK1FIGTC5cRjxk2NhVEROfIqzInC/vfRxwMD8jIvtGg+7ylDuZ8ikkeL4oApwRf9Z0K4uH3sa4FkaIMjbfWJhkDzAorS3MVbCapEiwcDxHQtRVjJhrA5KyZGGmpBi79zYgBkxFVDs4fo1RVLZ7ypyYWkmC2hRIrnK4Hw4jeKgbSSF9iKzmYOODfoSOnB5UZXGIiATEmgB767TnunijpKpCqnTBfasHuNEDVWCUU0BKY3edAtcvoPLaOXwVVHNZzgVJUcNk22dGqVlQezuAghp2cg8T2DeCd68iaO/1YSQwB0XXUBxewOSLZZiP7mPzmcNIGYJJkrqByKV9iFxsw3S3J70sS1/YzBxgq4Gr7TUY8i8wPUWEaHohBFsey/lsTYkQLTZx5eUs5lYTmInpEBbCCA0+YQ1sqOvwwu2twtm2Oqg2CYXVm9B4bBvgyMPU3ddwj496hfzWzlZlZ4ePfQoM1pHKCr7bnJgd7ETViRbMDzxFxfEBS8UPw12oOLWHFY+h0T/mDe5oDvBNURnq//TTTDc1+fP0OMomg17uf2ys96/IjNn4uDfY3BzAf5gng7/5+CHAAPUhK3nsRsW2AAAAAElFTkSuQmCC'
},
{
name: 'user.js',
path: '\\user.js',
subdir: 'Firefox Profil',
image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArBJREFUeNqMU11IFFEU/vbO7Iyuums/GvmXhISBiOWWGFgGiyaC0UMkWRT11FNPQbEl9iNb0mtgUEQW+xjUQ5RrlClZ5IbaQ0bpw+paSGLGbrs7O3emc2d/kKjowBnm3HvnO9/5vju2Tb4ARJiUOjcQ1fhizUZnkVORsBzXMT7/HZLNZp0RT8ZssEuUjEGVWZWMdJimibhuXO4/UFvUWVeKf0Xg0yJcOXa03359i2UWDQKIackTmY91qkXyVWmmz/qezyBBbCvX5TXLGfpUo7mquETUEY1bgKtD0JeIvsMu4cXsNxz2R6DIDHJGAOqQX6CmyjjnEN/bfqPuYJIFrPLY5Ly346RYyzLQE/Hq7SUu66CWNFJd0+KZaTYFioxgeAV2mKH1vYPBfFVCWgOa0eB76stcpHwSmmFAQMiktkjxLpJUR2glBtlIzArsn9QoxYAaGJxXr8lVECHruGHSrEDxhccWfLinLcXozEM4cmTkJmITWVuzNkpKQ32pC1GuW1039DzB6OlWSCQaSUoacTCJYfiUB2ZRxR3RRAzGLAeIQmFeTrkAUumCVF4ZxMCR3bg0HLaU13UDMaJr0GjnhkLoP9gIjXNT1CxJUHT7zKhuFO68MYKqa8/g62jEgw/LePP5I3ZVroV/cgGin9m3HyPT0/BPLcHbskOMasoJQl+52Ja1ip19hIWoBofKLG2ut29Fp/8duraVIvwjBiGe2AtHEpYIjGnRt30vZxCizTnKJRLs7qsp5NOdONRQi703x9Dt2QInWbj56hC6GutQoNpxb+w9vpzf57Y5Pcc9SlNngEaxRJFpZoVEFN4fbarDwMhkyiXaFYofo7X7oxP42t3mrvAFgsIJlbLmTz9NWe/TcRvxnPO2uEVd3js4LrSY97a66S8O4j+iPp1/q/FLgAEAGto2bg8Nx1UAAAAASUVORK5CYII='
},
// Lokaler Pfad
{
name: 'Profil',
path: '\\',
subdir: 'Firefox Verzeichnis',
image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Qzc3OTM4REU3NkFEMTFFMkJGRDBENEQyQ0IxOTY5MEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qzc3OTM4REY3NkFEMTFFMkJGRDBENEQyQ0IxOTY5MEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDNzc5MzhEQzc2QUQxMUUyQkZEMEQ0RDJDQjE5NjkwQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDNzc5MzhERDc2QUQxMUUyQkZEMEQ0RDJDQjE5NjkwQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pk3JkLkAAAL0SURBVHjadJPba1xVFMZ/+8yZMZ3MZCaJSUNaWqkkKY2k2kDwWm21lgRMhBSFWpJC60MVLIXqkz70DyiIF1A0iLRoK1YtJA+2Sm0CQWIg+GATgiUwkmSSSWaSmcz1XLbrTEZTxC7Yh7XXWetb37ps9dZXU3jiuPoHy3H7XFejuUeU8j4VHXxy9xvqus/gZc9gena9CdD36UBnWddbIfzz3ztGxX7mynSfYeiybmploPVmzsHPJyg5Dt5VSSbD/wDmWozI8El2hDPk8rCcj2AOXMXQFp6jaZshcG0sK8fQ6S7EjFSBIfB+0d978SiPHQgSqW9nLQO5yTnWLp0SynY5sXFw/DiHf30FxwhQkICPbsfJ2XBrAX5JQ2Ylgatq0L46HN1IYNt2CqsJurs7eeH5RzE8Bo4ZvIxZhSsA+1uaGBqb50gz1AQo027pfJrd7e0cPfYUr5/rpVgsYdnuZduWElzUt5aj+n8b+ZpP1h9iJS/Ugg287w/w9jMNjLS10XnkIOvzKySTa2QzOUqhRoqF4mtoVaWGzj2nu7qPo1wL7TrSGIEMPsj56wliiQz1/jyXTlBuaCqVJr64RLhhP+HaRiZGvsS0LIfG3Y8wfuUCyvDJaGQ8AvJh76sCFoX0LMnYn2QC25lfWGZjbpJd9TPsGfyMknTclPmTT/1FKBisAGxOPjZxlVD8R5r3thHYd4b1uTvkMinMpgN07Jxh9ZuXZJR7ZA+0wkkvEqreJgCGZNesdrzLrp+eYEf/G/ir8lS1Pknt42dpy8p4kjepXb9GsFBN17UPMFwBMAsJojUhoqFqIuEQ1ugF/L4iti6R+v0L4t91Idgon4kz2sPq1BCWU5JkUkK2YN/+fnjsWf3vAisJ9NPaXGBjaZas7IKW3qYuVpbbRxksuDRTdvesD8uJ8h/54x0m3aY6WcfAPS+CrVdi2bjxFcyP3zx0d+vReNlNeqI3GJ7m7GGSF4Wmyf+IVG7/PMt5xf0lUmF3Px+P0t2/BRgAgYA3fi+XoFwAAAAASUVORK5CYII='
},
{
name: 'chrome',
path: '\\chrome',
subdir: 'Firefox Verzeichnis',
image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACnElEQVR4Xm2RzYtbZRSHn/fr3pvJzTB3qiNM2k2pMBUGhEHaqsUqdeFGQalCobgREaFu/B/cqCtxVSjoQhBEQRBmIfWDKgNGJUPt0Nhah9JJ4iSd5E6+bu5972tAO4SS5/DjXZ1znsMrNiq1eikMQqYYJCmjxNH5+zdW777L0J5KKl9VPmnf+ut9KWkwhbheuzNcOVYOmGKc5iRO0r1ykeXCx0h7kt4fC3z5wfqbQnAJwQHa5S7jAZSRuJ0mkf81cheobhBXZa+ri1uptQjHAZoZCEC1PiPgDuwxCfwerBU7b73zXn//3usCcdt4HkZ7SGZg431U51NUCgwlO3cV/bVXhR/6p9ut+nP9QYeNn7/n8qUPZxvQ/Q6VVWHk4ZqWRvlJjpx9hcGfW2wO95N2q8m3618A2WwDt/0RplSAXsBed57eyossHl5GYdHacG3zGpADM06wjQ1UUIN+CLHPvfAxojPnKLiE+bDE1R9+5GatAmgPeGCAteQ7l5GBhGSyuROyd/gFouUyWkqEErR2mwXAAA8BRS0AgMQBjSra30ZkEeDzz9Dn4ZcvMO51SMcJcTdGChmA0ABA6cAgzyG3I8jLEBylV4fWoaeIc0V7t0Uv7pFbC+CA+28mp/8+SwXKnMVmz1O9HpE+eobMZdjcoY1GIHD/NwIdoH1fBaNguzlg88pVyoUi4vTbFI8eJxsNAIfSkrliESllH/L0v0jktNNomFGv1TFrL3Fo9QSMR3jaEEXzLC09gjaKp595No0WjyCEB4zRclICUMDxtRMce/wJ1MIi2SglXShhfI/cOjxPoZRmbq4gXzt/gVrtBrdvbiG+Wf+p/mvll1BpiVAGhCDPxuAUDotz4HKHlIJON6bRbL4hhPjcMx5mkn8BBLEUrsVZbq0AAAAASUVORK5CYII='
},
{
name: 'css',
path: '\\chrome\\css',
subdir: 'Firefox Verzeichnis',
image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAatJREFUeNqkU7tKA0EUPbM7boISNKhBsLRQ9AMECx8EEQstgqVgL1iYyg+w1UbwC6ziA1TyA7FKjCKiYCGihSAIikiIJptZ7527amIjmmWHnXNn7jn3tSoIAjTzOGjy0cerI2umZtKB+VskylFwXGdds/Pw/AzgG8ByKHrV901OUYV2i41stYP81mFaW+X3MnC5IZctgabkaBmfbDWWo9VCe18WKw0tgX21dfJfgbE9IJEUlccjIJcKbWNi200Ao3X4fNkKasvml8R5p5OUSSn1IPXly9txCreNoCc40wG0tAJ9czZV6UJQEVavHYh2A9lB2sfENr4PuKTjeoInDmhPIqZS30Y/7EkkXFEhyA6QigvM3oo920+XGN8RQcmm4NiicWVtoSkd8wZMnRK1K0T5BTnjCBgXQmyqoilVp91zEZi+ksPnEyIg7skzwU9FiSBZCM+LX63VtkWc48UKfalY1Rdpo0fFyyXDvruNmKOL9dj2ap4oRIgkiMscRLuk759DZIXUDwzrw7765rG8icz1YuMoq18GObDO7Ms3KRb0/vNfulfN/s4fAgwAwWWMUVTgPhoAAAAASUVORK5CYII='
},
{
name: 'CSSWeb',
path: '\\chrome\\CSSWeb',
subdir: 'Firefox Verzeichnis',
image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAatJREFUeNqkU7tKA0EUPbM7boISNKhBsLRQ9AMECx8EEQstgqVgL1iYyg+w1UbwC6ziA1TyA7FKjCKiYCGihSAIikiIJptZ7527amIjmmWHnXNn7jn3tSoIAjTzOGjy0cerI2umZtKB+VskylFwXGdds/Pw/AzgG8ByKHrV901OUYV2i41stYP81mFaW+X3MnC5IZctgabkaBmfbDWWo9VCe18WKw0tgX21dfJfgbE9IJEUlccjIJcKbWNi200Ao3X4fNkKasvml8R5p5OUSSn1IPXly9txCreNoCc40wG0tAJ9czZV6UJQEVavHYh2A9lB2sfENr4PuKTjeoInDmhPIqZS30Y/7EkkXFEhyA6QigvM3oo920+XGN8RQcmm4NiicWVtoSkd8wZMnRK1K0T5BTnjCBgXQmyqoilVp91zEZi+ksPnEyIg7skzwU9FiSBZCM+LX63VtkWc48UKfalY1Rdpo0fFyyXDvruNmKOL9dj2ap4oRIgkiMscRLuk759DZIXUDwzrw7765rG8icz1YuMoq18GObDO7Ms3KRb0/vNfulfN/s4fAgwAwWWMUVTgPhoAAAAASUVORK5CYII='
},
{
name: 'about',
path: '\\chrome\\about',
subdir: 'Firefox Verzeichnis',
image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAatJREFUeNqkU7tKA0EUPbM7boISNKhBsLRQ9AMECx8EEQstgqVgL1iYyg+w1UbwC6ziA1TyA7FKjCKiYCGihSAIikiIJptZ7527amIjmmWHnXNn7jn3tSoIAjTzOGjy0cerI2umZtKB+VskylFwXGdds/Pw/AzgG8ByKHrV901OUYV2i41stYP81mFaW+X3MnC5IZctgabkaBmfbDWWo9VCe18WKw0tgX21dfJfgbE9IJEUlccjIJcKbWNi200Ao3X4fNkKasvml8R5p5OUSSn1IPXly9txCreNoCc40wG0tAJ9czZV6UJQEVavHYh2A9lB2sfENr4PuKTjeoInDmhPIqZS30Y/7EkkXFEhyA6QigvM3oo920+XGN8RQcmm4NiicWVtoSkd8wZMnRK1K0T5BTnjCBgXQmyqoilVp91zEZi+ksPnEyIg7skzwU9FiSBZCM+LX63VtkWc48UKfalY1Rdpo0fFyyXDvruNmKOL9dj2ap4oRIgkiMscRLuk759DZIXUDwzrw7765rG8icz1YuMoq18GObDO7Ms3KRb0/vNfulfN/s4fAgwAwWWMUVTgPhoAAAAASUVORK5CYII='
},
{
name: 'icons',
path: '\\chrome\\icons',
subdir: 'Firefox Verzeichnis',
image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAatJREFUeNqkU7tKA0EUPbM7boISNKhBsLRQ9AMECx8EEQstgqVgL1iYyg+w1UbwC6ziA1TyA7FKjCKiYCGihSAIikiIJptZ7527amIjmmWHnXNn7jn3tSoIAjTzOGjy0cerI2umZtKB+VskylFwXGdds/Pw/AzgG8ByKHrV901OUYV2i41stYP81mFaW+X3MnC5IZctgabkaBmfbDWWo9VCe18WKw0tgX21dfJfgbE9IJEUlccjIJcKbWNi200Ao3X4fNkKasvml8R5p5OUSSn1IPXly9txCreNoCc40wG0tAJ9czZV6UJQEVavHYh2A9lB2sfENr4PuKTjeoInDmhPIqZS30Y/7EkkXFEhyA6QigvM3oo920+XGN8RQcmm4NiicWVtoSkd8wZMnRK1K0T5BTnjCBgXQmyqoilVp91zEZi+ksPnEyIg7skzwU9FiSBZCM+LX63VtkWc48UKfalY1Rdpo0fFyyXDvruNmKOL9dj2ap4oRIgkiMscRLuk759DZIXUDwzrw7765rG8icz1YuMoq18GObDO7Ms3KRb0/vNfulfN/s4fAgwAwWWMUVTgPhoAAAAASUVORK5CYII='
},
{
name: 'Icons Hamburger Menü',
path: '\\chrome\\IconsHamburger',
subdir: 'Firefox Verzeichnis',
image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAatJREFUeNqkU7tKA0EUPbM7boISNKhBsLRQ9AMECx8EEQstgqVgL1iYyg+w1UbwC6ziA1TyA7FKjCKiYCGihSAIikiIJptZ7527amIjmmWHnXNn7jn3tSoIAjTzOGjy0cerI2umZtKB+VskylFwXGdds/Pw/AzgG8ByKHrV901OUYV2i41stYP81mFaW+X3MnC5IZctgabkaBmfbDWWo9VCe18WKw0tgX21dfJfgbE9IJEUlccjIJcKbWNi200Ao3X4fNkKasvml8R5p5OUSSn1IPXly9txCreNoCc40wG0tAJ9czZV6UJQEVavHYh2A9lB2sfENr4PuKTjeoInDmhPIqZS30Y/7EkkXFEhyA6QigvM3oo920+XGN8RQcmm4NiicWVtoSkd8wZMnRK1K0T5BTnjCBgXQmyqoilVp91zEZi+ksPnEyIg7skzwU9FiSBZCM+LX63VtkWc48UKfalY1Rdpo0fFyyXDvruNmKOL9dj2ap4oRIgkiMscRLuk759DZIXUDwzrw7765rG8icz1YuMoq18GObDO7Ms3KRb0/vNfulfN/s4fAgwAwWWMUVTgPhoAAAAASUVORK5CYII='
},
{
name: 'Icons Menüs',
path: '\\chrome\\IconsMenü',
subdir: 'Firefox Verzeichnis',
image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAatJREFUeNqkU7tKA0EUPbM7boISNKhBsLRQ9AMECx8EEQstgqVgL1iYyg+w1UbwC6ziA1TyA7FKjCKiYCGihSAIikiIJptZ7527amIjmmWHnXNn7jn3tSoIAjTzOGjy0cerI2umZtKB+VskylFwXGdds/Pw/AzgG8ByKHrV901OUYV2i41stYP81mFaW+X3MnC5IZctgabkaBmfbDWWo9VCe18WKw0tgX21dfJfgbE9IJEUlccjIJcKbWNi200Ao3X4fNkKasvml8R5p5OUSSn1IPXly9txCreNoCc40wG0tAJ9czZV6UJQEVavHYh2A9lB2sfENr4PuKTjeoInDmhPIqZS30Y/7EkkXFEhyA6QigvM3oo920+XGN8RQcmm4NiicWVtoSkd8wZMnRK1K0T5BTnjCBgXQmyqoilVp91zEZi+ksPnEyIg7skzwU9FiSBZCM+LX63VtkWc48UKfalY1Rdpo0fFyyXDvruNmKOL9dj2ap4oRIgkiMscRLuk759DZIXUDwzrw7765rG8icz1YuMoq18GObDO7Ms3KRb0/vNfulfN/s4fAgwAwWWMUVTgPhoAAAAASUVORK5CYII='
}
],
// Firefox Funktionen definieren
configs: [
// Firefox Funktionen
{
name: 'about:config',
command: "openTrustedLinkIn('about:config', gBrowser.selectedTab.isEmpty ? 'current' : 'tab')",
subdir: 'Firefox Funktionen',
image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACkUlEQVQ4ja2SX0hTcRTHv27euz/qLvfqdtO8lRmEoLm2RTTUmWHFtlgYIlFPleNuI5cggYTJpDGIVnP+CaVQ3FtCkYQvPfYSprewxCZCUYwgUKIeHIidHvSKiPrUef2ez/ec3/l9gf9VoijmhcPhq7FYbKizszNSUVFRvFOfATggsqgEUA5AtynYbDb78PDwfCaToaWlJUokEk8A6LfxZfHThsG3rcKk38reA3Bwq8hJktQSiUSmstksLS8vr9XX11/cokv3bRih0fI1Shyi+euGNMfAAQCMw+E4KoriSQD5jY2NiUwmQ0REsiz3qnDMhhEaMBNN24nuFtH4GShGwA4AOo/Hc01RFOrq6nqZTCa/K4pCCwtpejqammIY5kTMiiHqK1yjaTtRTwk9d2sWLDoEAZgAACzLVvb393+amZmh2dlZGhsbo0g0Sg/jiWz0WO7HvwlhVYVfuDWLJgZBAGYAOer7dDqd7qzX632dSqXoZlvbvBzu+BFv2E+rj0ykwuPnMcczCAEQdvohlud5r8fjeceybDOg9QdrKn/+8YMouo8mzmmpLI95ACB/jzSgiGGY4wDMDoejnYio54p35VldLk1UW+mWif/WUlratJcBALBOpzNAROSX5UkA0RqN/utEtZXSPh/Fef53myR1ANDuBBe6XK4gEVEgEHgFoA5AIQe0tHPc5w+1tZT2+aiX4+h2SUkfAIMKakRRbKCNktcnuwGwG7oxH2jqtli+vKmqotaCgulujlu5xPNu1UAbCoVGVQNBEG4A4LZtZ+CBy3fM5sUBSfrl57j3xRtBAgCjy+UaTCaTcxaLpQfA4V3uUyBotc2n9PrHPHABgHHTHUA1ACeAI7sdSB2G9RwYAeT8A0L0/bjRXZQXAAAAAElFTkSuQmCC'
},
{
name: 'Neustart im abgesicherten Modus',
command: "safeModeRestart();",
subdir: 'Firefox Funktionen',
image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACh0lEQVQ4jY2SW0iTARzFz7cvRfqclA7Lpi51tjlnikukB3VKFzQC02UPmQaVRqlpRqiVLak0UUIxsVroTAsFTUzmJY1u0HUJ2YWCVg9RCWEPZauETk8+zJZ1ns/vxx/+B5gnmZlZuRZL23W5XK6Yr+c2OwsOhFg7Lz28Zx/n9pzdVQaDwWNeoKAgT9vQUJfX2Tuw2dpqbXxhM3+6032E7VcG2HI7jcdbiu2l+8pKy0vLTWtS1+coFIoAF0GgWmucsOb/mmyP43SPjt/bwJt1ETSf3sa6JwKrHCKzbkRS1x/FDcUb7RKkKNcTfPziu7MSf07lg9/OgzNN4Mdd4IkGsPYNWDYBqgZAtAqMSNHdAqB1FXh765tXJ315HwR+zQFn1oHOMLC6Hix3gPn3QekiiAYZdQmRQwCCXXhJqYw+m5DkfA3w83LQ6Q9Oi2BBBWgaB402EI2gUCNjVLJhGECQi8DDf1F0fVKy8wHAtwqBk34CJ0WBm/aAQTZQbgFRA4pVMuoTY0YAqOY+IjxtS+XUyoxhphfeZW7FU2YUPqO5MYHdI6ClF2zqBGvPiYyO1fYDCJgrUCSkFz2XbX1Jn8IPVB91MqDsB082p9I+DI72gYM9oOWMnEuXqZoBSH9sITY2rss3bYhIe0zP7FcUTA4erDZy9CrY0wX294JFxUoCC3e4HZOPl5i9am0FoRkkDNeIyDGWHIqjrQ/s6wFbL8io0QY7AGjcCgD4rlCrbCExlYRkJcQ2luyP5Ngw2GEFjSn+BBaY/wbPJj40NPCRWptDQTjGwr3hPFUN6nSLCXhcBrDkXwIAMEiS2BGm1k/p9BrKRK93AGoAKP8Hns1iACYAhwEkAvB0V/oNnDMV0lvYzsIAAAAASUVORK5CYII='
},
/* {
name: 'Browser-Werkzeuge',
subdir: 'Firefox Funktionen',
image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAdUlEQVQokZVSwRHAIAgLPYfoXs7RCTpG53Avt7APrhaFU8gLMEEJAkEQgFbc7IxkVjt0r6Sp7VIVITumBpKt00FA2ThmjXzkfMMWO8EZFSj8LrUyjsG9b9DaJXq+qAIVxEUxtLHpaXE95dj1NcK2rmbwaGJ4Af0tIg00j/6iAAAAAElFTkSuQmCC',
command: "var { require } = ChromeUtils.import('resource://devtools/shared/Loader.jsm', {});\
var { BrowserToolboxLauncher } = require('resource://devtools/client/framework/browser-toolbox/Launcher.jsm');\
BrowserToolboxLauncher.init();",
}, */
/* {
name: 'separator'
}, */
]
},
_externalAppPopup: null,
_isready: false,
init: function() {
var isUrlbar = 1; // 0: TabsToolbar; 1: navbar
this.handleRelativePath(this.toolbar.apps);
const XULNS = 'http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul';
var ExternalAppBtn = document.createElementNS(XULNS, 'toolbarbutton');
ExternalAppBtn.id = "AppMenuButton";
ExternalAppBtn.setAttribute("label", "AppButton");
ExternalAppBtn.setAttribute("onclick", "event.preventDefault();event.stopPropagation();");
ExternalAppBtn.setAttribute("tooltiptext", "Firefox Menü");
ExternalAppBtn.setAttribute("type", "menu");
ExternalAppBtn.setAttribute("removable", "true");
if (isUrlbar) {
document.getElementById("nav-bar-customization-target").appendChild(ExternalAppBtn);
ExternalAppBtn.style.listStyleImage = "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAA6SURBVDhPYxgcIDg+6z8IQ7lwPiEMVT4YDBh4gO4kZGfiw1Dlg8GAgQfoTkJ2Jj4MVT4YDCAfMDAAAFSm42US1bMnAAAAAElFTkSuQmCC)";
} else {
ExternalAppBtn.style.listStyleImage = "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEYAAAAUCAYAAAAwaEt4AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAF3SURBVFhH7ZUxS8RAEIX9M1fb29vb+wP8AdaCYCVY2FmInY1YWmlrp7WtNp6ihyKKCDYrb7kPxsuMJiG5CO6DR5LZmd2Zl9ndhduNUSqssggTsAgTsAgTsAgTsLEw71enyYPGHvZW8vvHzUUlrinvd5e/reX59Mk/K8zn5DrPBTyfPtlamOeTTXe8K4LHg1V3vG92KgwdI2ADT8fr+UmcfNVZ4OVspzIH0Joau9teSq/n+1Nryl1l8yA3/LUdgWLxq8NOthKJ/CQMUCE2YQuJEwkz3lqsbC+AOCoeaB5y1U8hn7qcmzB0hArkr79dHuVvhFLhs3GaU9+Tw7WpJWV/2SQIIA4bIpJbU85tK1Gg6IkLojgKtoV664kWbc+oQYRRpwh0DHZLQJztGM6LOh3T9oYcRBjrZ2F9ADYJGIFcZg9bxPFy/Y2DCCOqxe2tpHd7cwAbp3G6TVDh9mBlPp1h+va6rC4bC/NfWIQJWIQJWIQJWIRxOUpfQ+jqXwPuQ7IAAAAASUVORK5CYII=)";
var TabsToolbar = document.getElementById("nav-bar");
TabsToolbar.insertBefore(ExternalAppBtn, TabsToolbar.firstChild);
}
var ExternalAppPopup = document.createElementNS(XULNS, 'menupopup');
//ExternalAppPopup.setAttribute('onpopupshowing', 'event.stopPropagation(); Appmenu.onpopupshowing();');
ExternalAppPopup.setAttribute('id', 'AMpopup');
this._externalAppPopup = ExternalAppPopup;
ExternalAppBtn.appendChild(ExternalAppPopup);
Appmenu.onpopupshowing();
},
onpopupshowing: function() {
if (this._isready)
return;
if (this._externalAppPopup === null)
return;
var ExternalAppPopup = this._externalAppPopup;
for (let subdir of this.toolbar.subdirs) {
if (subdir.name == 'separator') {
ExternalAppPopup.appendChild(document.createXULElement('menuseparator'));
} else {
var subdirItem = ExternalAppPopup.appendChild(document.createXULElement('menu'));
var subdirItemPopup = subdirItem.appendChild(document.createXULElement('menupopup'));
subdirItem.setAttribute('class', 'menu-iconic');
subdirItem.setAttribute('label', subdir.name);
subdirItem.setAttribute('image', subdir.image);
Appmenu.subdirPopupHash[subdir.name] = subdirItemPopup;
Appmenu.subdirMenuHash[subdir.name] = subdirItem;
}
}
for (let app of this.toolbar.apps) {
var appItem;
if (app.name == 'separator') {
appItem = document.createXULElement('menuseparator');
} else {
appItem = document.createXULElement('menuitem');
appItem.setAttribute('class', 'menuitem-iconic');
appItem.setAttribute('label', app.name);
appItem.setAttribute('image', app.image);
appItem.setAttribute('oncommand', "Appmenu.exec(this.path, this.args);");
appItem.setAttribute('tooltiptext', app.name);
appItem.path = app.path;
appItem.args = app.args;
}
if (app.subdir && Appmenu.subdirPopupHash[app.subdir])
Appmenu.subdirPopupHash[app.subdir].appendChild(appItem);
else ExternalAppPopup.appendChild(appItem);
}
for (let config of this.toolbar.configs) {
var configItem;
if (config.name == 'separator') {
configItem = document.createXULElement('menuseparator');
} else {
configItem = ExternalAppPopup.appendChild(document.createXULElement('menuitem'));
configItem.setAttribute('class', 'menuitem-iconic');
configItem.setAttribute('label', config.name);
configItem.setAttribute('image', config.image);
configItem.setAttribute('oncommand', config.command);
configItem.setAttribute('tooltiptext', config.name);
configItem.setAttribute('id', config.id);
}
if (config.subdir && Appmenu.subdirPopupHash[config.subdir]) {
Appmenu.subdirPopupHash[config.subdir].appendChild(configItem);
} else {
ExternalAppPopup.appendChild(configItem);
}
}
if (this.autohideEmptySubDirs) {
for (let i = 0; i < Appmenu.subdirPopupHash.length; i++) {
if (Appmenu.subdirPopupHash[i].hasChildNodes()) {
continue;
} else {
Appmenu.subdirMenuHash[i].setAttribute("hidden", "true");
}
}
}
if (this.moveSubDirstoBottom) {
let i = ExternalAppPopup.childNodes.length;
while (ExternalAppPopup.firstChild.getAttribute('class') != 'menuitem-iconic' && i-- != 0) {
ExternalAppPopup.appendChild(ExternalAppPopup.firstChild);
}
}
this._isready = true;
},
handleRelativePath: function(apps) {
for (let app of apps) {
if (app.path) {
app.path = app.path.replace(/\//g, '\\');
var ffdir = Cc['@mozilla.org/file/directory_service;1'].getService(Ci.nsIProperties).get("ProfD", Ci.nsIFile).path;
if (/^(\\)/.test(app.path)) {
app.path = ffdir + app.path;
}
}
}
},
exec: function(path, args) {
args = args || [];
var args_t = args.slice(0);
for (let arg of args_t) {
arg = arg.replace(/%u/g, gBrowser.currentURI.spec);
}
var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
file.initWithPath(path);
if (!file.exists()) {
//Cu.reportError('Datei nicht gefunden: ' + path);
alert('Datei nicht gefunden: ' + path);
return;
}
if (file.isExecutable() && !path.endsWith('.js')) {
var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
process.init(file);
process.run(false, args_t, args_t.length);
} else if (file.isFile()) {
if (this.editor) {
let UI = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter);
UI.charset = window.navigator.platform.toLowerCase().includes('win') ? 'Shift_JIS' : 'UTF-8';
let path = UI.ConvertFromUnicode(file.path);
let app = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
app.initWithPath(this.editor);
let process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
process.init(app);
process.run(false, [path], 1);
} else {
file.launch();
}
} else if (file.isDirectory()) {
if (this.fileManager) {
let app = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
app.initWithPath(this.fileManager);
let process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
process.init(app);
process.run(false, [path], 1);
} else {
file.launch();
}
}
},
};
if (window.gBrowser)
Appmenu.init();
Alles anzeigen
Wie bekomme ich es hin, dass in folgendem Script der Button auch so aussieht, wie die anderen.
Du hast doch bestimmt das Aussehen der anderen Schaltflächen mit einem CSS-Code angepasst. Und den musst du dir mal hersuchen.
Du hast doch bestimmt das Aussehen der anderen Schaltflächen mit einem CSS-Code angepasst.
Ja, schon immer.
Du brauchst eigentlich nur einen Satz Eigenschaften ergänzen. Ich denke, die betreffende ID steht in Zeile 156.
Du brauchst eigentlich nur einen Satz Eigenschaften ergänzen. Ich denke, die betreffende ID steht in Zeile 156.
Bei anderen habe ich es auch schon gemacht, aber da stand dann toolbarbutton , was ich geändert habe in class: 'toolbarbutton-1 chromeclass-toolbar-additional',
Aber hier sehe ich diese Möglichkeit nicht.
Das sind doch bloß Selektoren. Auf die Eigenschaften kommt es an. Du hast jetzt die ID als Selektor und schreibe die Eigenschaften dazu und teste.
und schreibe die Eigenschaften dazu und teste.
Wenn ich nur wüsste wie.
Wenn ich nur wüsste wie.
Teste bitte mal:
/* Firefox Quantum userChrome.css tweaks ************************************************/
/* Github: https://github.com/aris-t2/customcssforfx ************************************/
/****************************************************************************************/
/****************************
******* BUTTONS *************
****************************/
/*******************************************/
/* Classic Button ui on navigation toolbar */
/*******************************************/
/* main menu button adjustment */
#PanelUI-button {
margin-inline-start: 0px !important;
border-inline-start: 0px solid !important;
border-image-slice: 0 !important;
padding-left: 2px !important;
padding-right: 2px !important;
}
#PanelUI-menu-button {
-moz-appearance: unset !important;
background: unset !important;
box-shadow: unset !important;
border-image: unset !important;
border: unset !important;
padding: unset !important;
margin: unset !important;
min-width: unset !important;
width: unset !important;
max-width: unset !important;
min-height: unset !important;
height: unset !important;
max-height: unset !important;
}
#PanelUI-button #whats-new-menu-button:not([hidden="true"]) {
margin-inline-end: 3px !important;
}
/* back button adjustment */
#nav-bar #back-button .toolbarbutton-icon {
border: 0 !important;
}
/* adjust zoom reset and copy buttons position */
#nav-bar :-moz-any(#copy-button,#zoom-reset-button) {
-moz-margin-start: -1px !important;
-moz-margin-end: -1px !important;
}
#nav-bar :-moz-any(#edit-controls, #zoom-controls) separator {
visibility: collapse !important;
}
/* classic button style */
#AppMenuButton {
margin-top: 3px !important;
margin-bottom: 3px !important;
}
#AppMenuButton,
#main-window:not([customizing]) #nav-bar .toolbarbutton-1:not(#PlacesChevron)[disabled=true]:-moz-any([open],[checked],:hover:active,:active) > .toolbarbutton-icon,
#main-window:not([customizing]) #nav-bar .toolbarbutton-1[disabled=true]:-moz-any([open],[checked],:hover:active,:active) > .toolbarbutton-text,
#main-window:not([customizing]) #nav-bar .toolbarbutton-1[disabled=true]:-moz-any([open],[checked],:hover:active,:active) > .toolbarbutton-badge-stack,
#nav-bar toolbarbutton[type="menu-button"] > .toolbarbutton-icon,
#nav-bar .toolbarbutton-1 > .toolbarbutton-menubutton-button[open] + .toolbarbutton-menubutton-dropmarker > .dropmarker-icon,
#nav-bar .toolbarbutton-1[open] > .toolbarbutton-menubutton-button > .toolbarbutton-icon,
#nav-bar .toolbarbutton-1[open] > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon,
#nav-bar .toolbarbutton-1:not(#PlacesChevron):not([checked]):not([open]):not(:active) > .toolbarbutton-icon,
#nav-bar .toolbarbutton-1:not([checked]):not([open]):not(:active) > .toolbarbutton-text,
#nav-bar .toolbarbutton-1:not([checked]):not([open]):not(:active) > .toolbarbutton-badge-stack,
#nav-bar .toolbarbutton-1:not([buttonover]):not([open]):not(:active) > .toolbarbutton-menubutton-dropmarker:not([disabled]) > .dropmarker-icon {
background: rgba(151,152,153,.05) linear-gradient(rgba(251,252,253,.95), rgba(246,247,248,.47) 49%,
rgba(231,232,233,.45) 51%, rgba(225,226,229,.3)) !important;
border-color: rgba(0,0,0,.12) rgba(0,0,0,.19) rgba(0,0,0,.38) !important;
box-shadow: 0 0 0 1px rgba(255,255,255,.3) inset,
0 0 0 2px rgba(255,255,255,.1) inset,
0 0 0 1px rgba(0,0,0,.4) inset !important;
}
#nav-bar .toolbarbutton-1:not([disabled=true]) > .toolbarbutton-menubutton-button[open] + .toolbarbutton-menubutton-dropmarker > .dropmarker-icon,
#nav-bar .toolbarbutton-1:not([disabled=true]):-moz-any(:hover,[open]) > .toolbarbutton-menubutton-button > .toolbarbutton-icon,
#nav-bar .toolbarbutton-1:not([disabled=true]):-moz-any(:hover,[open]) > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon,
#nav-bar .toolbarbutton-1:not(#PlacesChevron):not([disabled=true]):not([checked]):not([open]):not(:active):hover > .toolbarbutton-icon,
#nav-bar .toolbarbutton-1:not([disabled=true]):not([checked]):not([open]):not(:active):hover > .toolbarbutton-text,
#nav-bar .toolbarbutton-1:not([disabled=true]):not([checked]):not([open]):not(:active):hover > .toolbarbutton-badge-stack,
#nav-bar .toolbarbutton-1:not([buttonover]):not([open]):not(:active):hover > .toolbarbutton-menubutton-dropmarker:not([disabled]) > .dropmarker-icon {
background-color: hsla(190,60%,70%,.5) !important;
border-color: hsla(190,50%,65%,.8) hsla(190,50%,50%,.8) hsla(190,50%,40%,.8) !important;
box-shadow: 0 0 0 1px rgba(255,255,255,.3) inset,
0 0 0 1.5px rgba(255,255,255,.1) inset,
0 0 3.5px hsl(190,90%,80%),
0 0 0 1px rgba(0,0,0,.4) inset !important;
transition: background-color .3s ease-in,
border-color .2s ease-in,
box-shadow .2s ease-in !important;
}
#nav-bar toolbarbutton:not(#PlacesChevron)[type="menu"][open]:not([disabled]):not(.bookmark-item):not([container="true"]) > .toolbarbutton-icon,
#nav-bar toolbarbutton:not(#PlacesChevron)[type="menu-button"]:not([open]):hover:not([disabled]):not(.bookmark-item):active > .toolbarbutton-icon,
#nav-bar .toolbarbutton-1 > .toolbarbutton-menubutton-button:not([disabled=true]):-moz-any(:hover:active,:active, [open]) > .toolbarbutton-icon,
#nav-bar .toolbarbutton-1[open] > .toolbarbutton-menubutton-dropmarker:not([disabled=true]) > .dropmarker-icon,
#nav-bar .toolbarbutton-1:not(#PlacesChevron):not([disabled=true]):-moz-any([open],[checked],:hover:active,:active) > .toolbarbutton-icon,
#nav-bar .toolbarbutton-1:not([disabled=true]):-moz-any([open],[checked],:hover:active,:active) > .toolbarbutton-text,
#nav-bar .toolbarbutton-1:not([disabled=true]):-moz-any([open],[checked],:hover:active,:active) > .toolbarbutton-badge-stack {
background-color: transparent !important;
border-color: rgba(0,0,0,.65) rgba(0,0,0,.55) rgba(0,0,0,.5) !important;
box-shadow: 0 0 6.5px rgba(0,0,0,.4) inset,
0 0 2px rgba(0,0,0,.4) inset,
0 1px 0 rgba(255,255,255,.4),
0 0 0 1px rgba(0,0,0,.4) inset !important;
}
#nav-bar toolbarbutton[disabled=true] > .toolbarbutton-icon {
opacity: .6 !important;
}
#nav-bar toolbarbutton[disabled=true]{
opacity: 1.0 !important;
}
Alles anzeigen
Ich blicke bei Aris' Code ehrlich gesagt nicht durch, was der alles bewirkt. Da gibt es für die Schaltflächen der #nav-bar alle möglichen Szenarien. Das brauchst du doch nicht.
Teste bitte mal:
Oder auch so, mit angepasster Breite vom Button:
/* Firefox Quantum userChrome.css tweaks ************************************************/
/* Github: https://github.com/aris-t2/customcssforfx ************************************/
/****************************************************************************************/
/****************************
******* BUTTONS *************
****************************/
/*******************************************/
/* Classic Button ui on navigation toolbar */
/*******************************************/
/* main menu button adjustment */
#PanelUI-button {
margin-inline-start: 0px !important;
border-inline-start: 0px solid !important;
border-image-slice: 0 !important;
padding-left: 2px !important;
padding-right: 2px !important;
}
#PanelUI-menu-button {
-moz-appearance: unset !important;
background: unset !important;
box-shadow: unset !important;
border-image: unset !important;
border: unset !important;
padding: unset !important;
margin: unset !important;
min-width: unset !important;
width: unset !important;
max-width: unset !important;
min-height: unset !important;
height: unset !important;
max-height: unset !important;
}
#PanelUI-button #whats-new-menu-button:not([hidden="true"]) {
margin-inline-end: 3px !important;
}
/* back button adjustment */
#nav-bar #back-button .toolbarbutton-icon {
border: 0 !important;
}
/* adjust zoom reset and copy buttons position */
#nav-bar :-moz-any(#copy-button,#zoom-reset-button) {
-moz-margin-start: -1px !important;
-moz-margin-end: -1px !important;
}
#nav-bar :-moz-any(#edit-controls, #zoom-controls) separator {
visibility: collapse !important;
}
/* classic button style */
#AppMenuButton {
width: 29px !important;
margin-top: 3px !important;
margin-bottom: 3px !important;
}
#AppMenuButton,
#main-window:not([customizing]) #nav-bar .toolbarbutton-1:not(#PlacesChevron)[disabled=true]:-moz-any([open],[checked],:hover:active,:active) > .toolbarbutton-icon,
#main-window:not([customizing]) #nav-bar .toolbarbutton-1[disabled=true]:-moz-any([open],[checked],:hover:active,:active) > .toolbarbutton-text,
#main-window:not([customizing]) #nav-bar .toolbarbutton-1[disabled=true]:-moz-any([open],[checked],:hover:active,:active) > .toolbarbutton-badge-stack,
#nav-bar toolbarbutton[type="menu-button"] > .toolbarbutton-icon,
#nav-bar .toolbarbutton-1 > .toolbarbutton-menubutton-button[open] + .toolbarbutton-menubutton-dropmarker > .dropmarker-icon,
#nav-bar .toolbarbutton-1[open] > .toolbarbutton-menubutton-button > .toolbarbutton-icon,
#nav-bar .toolbarbutton-1[open] > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon,
#nav-bar .toolbarbutton-1:not(#PlacesChevron):not([checked]):not([open]):not(:active) > .toolbarbutton-icon,
#nav-bar .toolbarbutton-1:not([checked]):not([open]):not(:active) > .toolbarbutton-text,
#nav-bar .toolbarbutton-1:not([checked]):not([open]):not(:active) > .toolbarbutton-badge-stack,
#nav-bar .toolbarbutton-1:not([buttonover]):not([open]):not(:active) > .toolbarbutton-menubutton-dropmarker:not([disabled]) > .dropmarker-icon {
background: rgba(151,152,153,.05) linear-gradient(rgba(251,252,253,.95), rgba(246,247,248,.47) 49%,
rgba(231,232,233,.45) 51%, rgba(225,226,229,.3)) !important;
border-color: rgba(0,0,0,.12) rgba(0,0,0,.19) rgba(0,0,0,.38) !important;
box-shadow: 0 0 0 1px rgba(255,255,255,.3) inset,
0 0 0 2px rgba(255,255,255,.1) inset,
0 0 0 1px rgba(0,0,0,.4) inset !important;
}
#nav-bar .toolbarbutton-1:not([disabled=true]) > .toolbarbutton-menubutton-button[open] + .toolbarbutton-menubutton-dropmarker > .dropmarker-icon,
#nav-bar .toolbarbutton-1:not([disabled=true]):-moz-any(:hover,[open]) > .toolbarbutton-menubutton-button > .toolbarbutton-icon,
#nav-bar .toolbarbutton-1:not([disabled=true]):-moz-any(:hover,[open]) > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon,
#nav-bar .toolbarbutton-1:not(#PlacesChevron):not([disabled=true]):not([checked]):not([open]):not(:active):hover > .toolbarbutton-icon,
#nav-bar .toolbarbutton-1:not([disabled=true]):not([checked]):not([open]):not(:active):hover > .toolbarbutton-text,
#nav-bar .toolbarbutton-1:not([disabled=true]):not([checked]):not([open]):not(:active):hover > .toolbarbutton-badge-stack,
#nav-bar .toolbarbutton-1:not([buttonover]):not([open]):not(:active):hover > .toolbarbutton-menubutton-dropmarker:not([disabled]) > .dropmarker-icon {
background-color: hsla(190,60%,70%,.5) !important;
border-color: hsla(190,50%,65%,.8) hsla(190,50%,50%,.8) hsla(190,50%,40%,.8) !important;
box-shadow: 0 0 0 1px rgba(255,255,255,.3) inset,
0 0 0 1.5px rgba(255,255,255,.1) inset,
0 0 3.5px hsl(190,90%,80%),
0 0 0 1px rgba(0,0,0,.4) inset !important;
transition: background-color .3s ease-in,
border-color .2s ease-in,
box-shadow .2s ease-in !important;
}
#nav-bar toolbarbutton:not(#PlacesChevron)[type="menu"][open]:not([disabled]):not(.bookmark-item):not([container="true"]) > .toolbarbutton-icon,
#nav-bar toolbarbutton:not(#PlacesChevron)[type="menu-button"]:not([open]):hover:not([disabled]):not(.bookmark-item):active > .toolbarbutton-icon,
#nav-bar .toolbarbutton-1 > .toolbarbutton-menubutton-button:not([disabled=true]):-moz-any(:hover:active,:active, [open]) > .toolbarbutton-icon,
#nav-bar .toolbarbutton-1[open] > .toolbarbutton-menubutton-dropmarker:not([disabled=true]) > .dropmarker-icon,
#nav-bar .toolbarbutton-1:not(#PlacesChevron):not([disabled=true]):-moz-any([open],[checked],:hover:active,:active) > .toolbarbutton-icon,
#nav-bar .toolbarbutton-1:not([disabled=true]):-moz-any([open],[checked],:hover:active,:active) > .toolbarbutton-text,
#nav-bar .toolbarbutton-1:not([disabled=true]):-moz-any([open],[checked],:hover:active,:active) > .toolbarbutton-badge-stack {
background-color: transparent !important;
border-color: rgba(0,0,0,.65) rgba(0,0,0,.55) rgba(0,0,0,.5) !important;
box-shadow: 0 0 6.5px rgba(0,0,0,.4) inset,
0 0 2px rgba(0,0,0,.4) inset,
0 1px 0 rgba(255,255,255,.4),
0 0 0 1px rgba(0,0,0,.4) inset !important;
}
#nav-bar toolbarbutton[disabled=true] > .toolbarbutton-icon {
opacity: .6 !important;
}
#nav-bar toolbarbutton[disabled=true]{
opacity: 1.0 !important;
}
Alles anzeigen
Oder auch so, mit angepasster Breite vom Button:
Das hat mir geholfen, jetzt weiß ich, wo ich ansetzen muss. Danke, Andreas!
Ich blicke bei Aris' Code ehrlich gesagt nicht durch, was der alles bewirkt.
Ich auch nicht so wirklich, nur bestimmte Sachen.