Windows Explorer ist ohne Parameter
Der Chrome- und CSS-Ordner werden geöffnet.
Windows Explorer ist mit Parameter
Der Chrome- und CSS-Ordner werden geöffnet.
Windows Explorer ist ohne Parameter
Der Chrome- und CSS-Ordner werden geöffnet.
Windows Explorer ist mit Parameter
Der Chrome- und CSS-Ordner werden geöffnet.
@Atze64 .DeJaVu ist eben so, kannst Du aber nicht wissen.
Aber Du musst nicht gleich Dein Konto löschen, nur weil in einem so speziellem Thema Dir hat keiner hat helfen können.
Dies ist primär ja auch ein Forum für Firefox! Muss man halt auch sehen.
Und wenn Du mal Fragen zum Browser hast, dann findest Du nirgends bessere Hilfe! (Finde ich!)
@Atze64 Kleiner Tipp am Rande!
Leg Dich bei diesem Thema nicht mit .DeJaVu an!
Erstens besteht er keinen Spaß, ok ist ein Joke, aber er wird ganz bestimmt sauer, wenn er sich verschaukelt vorkommt.
Was uBlock angeht, macht Ihm keiner so schnell was vor! Er hilft, auf seine weise, manches Mal auch etwas ruppig,
komm Ihm aber nicht blöd, sonst wird es ungemütlich.
Versuche es einfach mal nur mit:
/* UserStyles Loader Button */
#usercssloader-menu-item {
background-image: url("../icons/CSS.webp");
background-position: center;
background-repeat: no-repeat;
background-size: 15px;
margin-top: 1px !important;
}
#usercssloader-menu-item:hover {
background-color: var(--toolbarbutton-hover-background);
}
#usercssloader-menu-item #usercssloader-menu > .menu-text[value="CSS"] {
opacity: 0;
}
Alles anzeigen
Speravir So, eine große Herausforderung wird sein, aus zwei nur ein Skript zu machen.
Denn ich finde es echt doof, dass im Hintergrund das userCSSLoader-Skript laufen muss,
weil auf Funktionen (Code) in diesem zugegriffen wird!
Da habe ich also noch was vor.
Boersenfeger Speravir fragte Dich nach Deiner CSS, nicht nach Deinem JavaScript!
Hast Du die Änderungen aus #63 in Deinem CSS (#28) vorgenommen?
Speravir Ich denke, ich hab's. Na ja fast!
Erste Voraussetzung, das userCSSLoader-Skript muss vorhanden sein und vor dem Appmenü-Skript geladen werden.
Und dann das "neue" Appmenü-Skript:
// ==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 2020.07.13 Weitere Menüs und Funktionen ergänzt by bege
// @version 2024.08.10 alle Einstellungen im Abschnitt Konfiguration vornehmen
// @version 2024.08.18 einige Veränderungen am Skript, Symbole, Funktionen & Menüs by Mira Bellenbaum
// @version 2025.01.15 EventListener korrigiert und angepasst, by Mira Bellenbaum
// @version 2025.04.03 Zeile 340 "eval()" ersetzt. Nachfolgend Zeilen 381-416 ergänzt und Parameter (command:) angepasst
// @version 2025.07.21 Zeile 239 geändert! Button weiter nach rechts!
// ==/UserScript==
// Definiere den Profilpfad
let ProfilePath = PathUtils.toFileURI(
PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')
);
var Appmenu = {
// ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
// Editor mit angegebenem Pfad verwenden
// editor: 'C:\\Program Files\\Notepad++\\notepad++.exe',
editor: "C:\\Program Files\\Microsoft VS Code\\Code.exe",
// oder
// in 'view_source.editor.path' eingetragenen Editor verwenden
editor: Services.prefs.getCharPref('view_source.editor.path'),
// Dateimanager mit angegebenem Pfad verwenden oder leer ('') wenn System-Dateimanager verwenden
//fileManager: 'C:\\Program files\\FreeCommander XE\\FreeCommander.exe',
fileManager: "",
// Parameter für Dateimanager oder leer ('')
//FMParameter: '/T',
FMParameter: "",
// Submenüs ohne Inhalt im Hauptmenü automatisch ausblenden
autohideEmptySubDirs: true,
// Submenüs im Hauptmenü nach unten verschieben
moveSubDirstoBottom: false,
// Ort und Aussehen des Menü-Buttons einstellen
isUrlbar: 2, // 0: TabsToolbar; 1: navbar; 2: toolbar-menubar
isButton: 0, // 0: Hamburger,klein; 1: Firefox,groß,
// Hotkey zum Öffnen des Appmenüs oder leer ('')
hotkey: "f",
hotkeyModifier: "alt",
// ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
// 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 Verzeichnisse',
image: `${ProfilePath}/folder_currentColor.svg`, // Der Pfad wird direkt verwendet, ohne `url()`
},
{
name: 'Firefox Funktionen',
image: `${ProfilePath}/settings_currentColor.svg`, // Der Pfad wird direkt verwendet, ohne 'url()'
},
{
name: 'separator',
},
], */
subdirs: [
{
name: 'Firefox Verzeichnisse',
image: `${ProfilePath}/folder_currentColor.svg`,
},
{
name: 'Firefox Funktionen',
image: `${ProfilePath}/settings_currentColor.svg`,
},
{
name: 'separator',
},
{
name: 'CSS-Loader',
image: `${ProfilePath}/default-browser-red.svg`,
},
{
name: 'Style-Loader-Menü',
image: `${ProfilePath}/default-browser-red.svg`,
},
{
name: 'separator',
},
],
apps: [
// Untermenü Firefox Verzeichnisse
{
name: 'Profil-Verzeichnis',
id: 'AMProfil',
root: 'ProfD',
path: '\\',
subdir: 'Firefox Verzeichnisse',
},
{
name: 'Chrome-Ordner',
id: 'AMchrome',
root: 'ProfD',
path: '\\chrome',
subdir: 'Firefox Verzeichnisse',
},
{
name: 'CSS-Ordner',
id: 'AMCSS',
root: 'ProfD',
path: '\\chrome\\css',
subdir: 'Firefox Verzeichnisse',
},
{
name: 'JS-Ordner',
id: 'AMJS',
root: 'ProfD',
path: '\\chrome\\scripts',
subdir: 'Firefox Verzeichnisse',
},
{
name: 'Addon-Verzeichnis',
id: 'AMAddons',
root: 'ProfD',
path: '\\extensions',
subdir: 'Firefox Verzeichnisse',
},
{
name: 'Programm-Verzeichnis',
id: 'AMProgramm',
root: 'CurProcD',
path: '\\',
subdir: 'Firefox Verzeichnisse',
},
{
name: 'Startup-Cache',
id: 'AMCache',
root: 'ProfLD',
path: '\\startupCache',
subdir: 'Firefox Verzeichnisse',
},
],
configs: [
// Untermenü Firefox Funktionen
{
name: 'Anpassen',
id: 'AMAnpassen',
command: 'gCustomizeMode.enter()',
subdir: 'Firefox Funktionen',
},
{
name: 'Neustart im abgesicherten Modus',
id: 'AMModus',
command: 'safeModeRestart();',
subdir: 'Firefox Funktionen',
},
{
name: 'Browser-Konsole',
id: 'AMKonsole',
command: 'goKonsole',
subdir: 'Firefox Funktionen',
},
{
name: 'Browser-Werkzeuge',
id: 'AMWerkzeuge',
command: 'goWerkzeuge',
subdir: 'Firefox Funktionen',
},
{
name: 'Web-Entwickler',
id: 'AMEntwickler',
command: 'goEntwickler',
subdir: 'Firefox Funktionen',
},
{
name: 'Firefox synchronisieren',
id: 'AMsynchron',
command: 'gSync',
subdir: 'Firefox Funktione',
},
{
name: 'Zugangsdaten und Passwörter',
id: 'AMdaten',
command:
'LoginHelper.openPasswordManager(window, { entryPoint: "mainmenu" })',
tooltiptext: 'about:logins',
subdir: 'Firefox Funktionen',
},
{
name: 'Task Manager',
id: 'AMManager',
command: 'switchToTabHavingURI("about:processes", true)',
tooltiptext: 'about:processes',
subdir: 'Firefox Funktionen',
},
{
name: 'Offline arbeiten',
id: 'AMOffline',
command: 'BrowserOffline.toggleOfflineStatus();',
subdir: 'Firefox Funktionen',
},
/*
{
name: 'separator',
},
*/
{
name: 'Neustart',
id: 'AMreboot',
tooltiptext: 'userChrome.js-Cache wird geleert',
command: 'goReeboot',
},
{
name: 'Beenden',
id: 'AMquit',
command: 'goQuitApplication(event);',
},
]
},
_externalAppPopup: null,
_isready: false,
init: function() {
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.addEventListener('click', event => {
event.preventDefault();
event.stopPropagation();
});
ExternalAppBtn.setAttribute('tooltiptext', 'Firefox Menü');
ExternalAppBtn.setAttribute('type', 'menu');
ExternalAppBtn.setAttribute('removable', 'true');
// Definiere den Profilpfad
let ProfilePath = PathUtils.toFileURI(
PathUtils.join(PathUtils.profileDir, 'chrome', 'image')
);
// Symbole
let DefaultIcon = 'Button_groß.png';
let AlternateIcon = 'Button_klein-5.png';
// Wenn Appmenu.isButton true ist, benutze das große Symbol, sonst das kleine
if (Appmenu.isButton) {
ExternalAppBtn.style.listStyleImage = `url('${ProfilePath}/${DefaultIcon}')`; // Großes Symbol
ExternalAppBtn.style.width = '94px'; // Feste Breite für großes Symbol
ExternalAppBtn.style.height = '24px'; // Feste Höhe für großes Symbol
} else {
ExternalAppBtn.style.listStyleImage = `url('${ProfilePath}/${AlternateIcon}')`; // Kleines Symbol
//ExternalAppBtn.style.width = "16px"; // Feste Breite für kleines Symbol
//ExternalAppBtn.style.width = '26px';
ExternalAppBtn.style.width = '50px';
ExternalAppBtn.style.height = '21px'; // Feste Höhe für kleines Symbol
}
// Button in die richtige Toolbar einfügen
if (Appmenu.isUrlbar === 1) {
var navBar = document.getElementById('nav-bar-customization-target');
navBar.insertBefore(ExternalAppBtn, navBar.firstChild);
} else if (Appmenu.isUrlbar === 2) {
var menubar = document.getElementById('toolbar-menubar');
menubar.insertBefore(ExternalAppBtn, menubar.firstChild);
} else {
var TabsToolbar = document.getElementById('TabsToolbar');
TabsToolbar.insertBefore(ExternalAppBtn, TabsToolbar.firstChild);
}
var ExternalAppPopup = document.createElementNS(XULNS, 'menupopup');
ExternalAppPopup.addEventListener('click', event => {
event.stopPropagation();
});
ExternalAppPopup.setAttribute('id', 'AMpopup');
this._externalAppPopup = ExternalAppPopup;
ExternalAppBtn.appendChild(ExternalAppPopup);
Appmenu.onpopupshowing();
// Menü mit Tastaturkürzel öffnen
if (Appmenu.hotkey) {
let key = document.createXULElement('key');
key.id = 'key_AppMenuPopup';
key.setAttribute('key', Appmenu.hotkey);
if (Appmenu.hotkeyModifier)
key.setAttribute('modifiers', Appmenu.hotkeyModifier);
key.addEventListener('command', function () {
document.getElementById('AMpopup').openPopup();
});
document.getElementById('mainKeyset').appendChild(key);
}
},
buildCSSLoaderMenu: function(parentPopup) {
// Erst alle alten Einträge löschen
while (parentPopup.firstChild) {
parentPopup.removeChild(parentPopup.firstChild);
}
// Nur wenn UCL existiert und initialisiert ist
if (typeof UCL === 'undefined' || !UCL.readCSS) return;
// Alle CSS-Dateien aus UCL.readCSS auflisten
for (let leafName of Object.keys(UCL.readCSS)) {
let CSS = UCL.readCSS[leafName];
let menuitem = document.createXULElement("menuitem");
menuitem.setAttribute("label", leafName);
menuitem.setAttribute("type", "checkbox");
menuitem.setAttribute("checked", CSS.enabled);
menuitem.addEventListener("command", () => UCL.toggle(leafName));
menuitem.addEventListener("click", (event) => {
if (event.button === 1) {
UCL.toggle(leafName);
event.preventDefault();
}
});
menuitem.addEventListener("mouseup", (event) => {
if (event.button === 2) {
closeMenus(event.target);
UCL.edit(UCL.getFileFromLeafName(leafName));
event.preventDefault();
}
});
parentPopup.appendChild(menuitem);
}
},
buildStyleLoaderMenu: function(parentPopup) {
// Erst alle alten Einträge löschen
while (parentPopup.firstChild) {
parentPopup.removeChild(parentPopup.firstChild);
}
// Styles importieren
let rebuildItem = document.createXULElement("menuitem");
rebuildItem.setAttribute("label", "Styles importieren");
rebuildItem.addEventListener("command", () => UCL.rebuild());
parentPopup.appendChild(rebuildItem);
// CSS-Datei erstellen
let createCSS = document.createXULElement("menuitem");
createCSS.setAttribute("label", "CSS-Datei erstellen");
createCSS.addEventListener("command", () => UCL.create());
parentPopup.appendChild(createCSS);
// CSS-Ordner öffnen
let openFolder = document.createXULElement("menuitem");
openFolder.setAttribute("label", "CSS-Ordner öffnen");
openFolder.addEventListener("command", () => UCL.openFolder());
parentPopup.appendChild(openFolder);
// Chrome-Ordner öffnen
if (UCL.showChrome === 1) {
let openChromeFolder = document.createXULElement("menuitem");
openChromeFolder.setAttribute("label", "Chrome-Ordner öffnen");
openChromeFolder.addEventListener("command", () => UCL.openCHRMFolder());
parentPopup.appendChild(openChromeFolder);
}
// userChrome.css bearbeiten
let editChromeItem = document.createXULElement("menuitem");
editChromeItem.setAttribute("label", "userChrome.css bearbeiten");
editChromeItem.addEventListener("command", () => UCL.editUserCSS("userChrome.css"));
parentPopup.appendChild(editChromeItem);
// userContent.css bearbeiten
let editContentItem = document.createXULElement("menuitem");
editContentItem.setAttribute("label", "userContent.css bearbeiten");
editContentItem.addEventListener("command", () => UCL.editUserCSS("userContent.css"));
parentPopup.appendChild(editContentItem);
},
onpopupshowing: function() {
if (this._externalAppPopup === null) return;
var ExternalAppPopup = this._externalAppPopup;
// Erst alle alten Einträge löschen
while (ExternalAppPopup.firstChild) {
ExternalAppPopup.removeChild(ExternalAppPopup.firstChild);
}
// Subdirs neu aufbauen
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;
}
}
// Hier die neuen Menüpunkte einfügen
if (typeof UCL !== 'undefined') {
this.buildCSSLoaderMenu(Appmenu.subdirPopupHash['CSS-Loader']);
this.buildStyleLoaderMenu(Appmenu.subdirPopupHash['Style-Loader-Menü']);
}
// Apps und Configs neu aufbauen
this.handleRelativePath(this.toolbar.apps);
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.addEventListener('command', function () {
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 = document.createXULElement('menuitem');
configItem.setAttribute('class', 'menuitem-iconic');
configItem.setAttribute('label', config.name);
configItem.setAttribute('image', config.image);
configItem.addEventListener('command', () => {
Appmenu.executeCommand(config.command);
});
if (config.tooltiptext) {
configItem.setAttribute('tooltiptext', config.tooltiptext);
} else {
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 subdirName in Appmenu.subdirPopupHash) {
if (!Appmenu.subdirPopupHash[subdirName].hasChildNodes()) {
Appmenu.subdirMenuHash[subdirName].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;
},
executeCommand: function(command) {
const commandMap = {
'gCustomizeMode.enter()': () => gCustomizeMode.enter(),
'safeModeRestart();': () => safeModeRestart(),
'goKonsole': () => {
var { require } = ChromeUtils.importESModule('resource://devtools/shared/loader/Loader.sys.mjs', {});
var { BrowserConsoleManager } = require('resource://devtools/client/webconsole/browser-console-manager');
BrowserConsoleManager.openBrowserConsoleOrFocus();
},
'goWerkzeuge': () => {
var { require } = ChromeUtils.importESModule('resource://devtools/shared/loader/Loader.sys.mjs', {});
var { BrowserToolboxLauncher } = require('resource://devtools/client/framework/browser-toolbox/Launcher.sys.mjs');
BrowserToolboxLauncher.init();
},
'goEntwickler': () => {
var { require } = ChromeUtils.importESModule('resource://devtools/shared/loader/Loader.sys.mjs', {});
var { gDevToolsBrowser } = require('resource://devtools/client/framework/devtools-browser');
gDevToolsBrowser.toggleToolboxCommand(window.gBrowser, Cu.now());
},
'gSync': () => gSync.openPrefs('menubar'),
'LoginHelper.openPasswordManager(window, { entryPoint: "mainmenu" })': () => LoginHelper.openPasswordManager(window, { entryPoint: 'mainmenu' }),
'switchToTabHavingURI("about:processes", true)': () => switchToTabHavingURI('about:processes', true),
'BrowserOffline.toggleOfflineStatus();': () => BrowserOffline.toggleOfflineStatus(),
'goReeboot': () => {
Services.appinfo.invalidateCachesOnRestart();
Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);
},
'goQuitApplication(event);': () => goQuitApplication(event),
};
if (commandMap[command]) {
commandMap[command]();
} else {
console.warn('Unbekannter Befehl: ', command);
}
},
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(app.root, 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()) {
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 args=[this.FMParameter,path];
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, args, args.length);
} else {
file.launch();
}
}
},
};
(function () {
// Definiere den Profilpfad für die Symbole
let ProfilePath = PathUtils.toFileURI(
PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')
);
// Standard-Symbol-Dateiname
let ButtonIcon01 = 'restart.svg';
let ButtonIcon02 = 'quit.svg';
let Icon01 = 'profile.svg';
let Icon02 = 'chrome.svg';
let Icon03 = 'css4.svg';
let Icon04 = 'js.svg';
let Icon05 = 'addons.svg';
let Icon06 = 'folder.svg';
let Icon07 = 'folder-1.svg';
let Icon11 = 'Themes.svg';
let Icon12 = 'debugging-workers.svg';
let Icon13 = 'command-console.svg';
let Icon14 = 'window-dev-tools.svg';
let Icon15 = 'developer.svg';
let Icon16 = 'sync.svg';
let Icon17 = 'passwords.svg';
let Icon18 = 'performance.svg';
let Icon19 = 'plug-disconnected.svg';
// StyleSheetService zum Hinzufügen der CSS-Regeln
let sss = Components.classes['@mozilla.org/content/style-sheet-service;1'].getService(Components.interfaces.nsIStyleSheetService);
let uri = Services.io.newURI(
'data:text/css;charset=utf-8,' +
encodeURIComponent(`
#AMpopup { margin-left: 8px !important; }
menuitem[label='Profil-Verzeichnis'] { background-image: url('${ProfilePath}/${Icon01}');
background-repeat: no-repeat !important;
background-position: 11px 3px !important;
background-size: 16px 16px !important; /* Größe des Symbols anpassen */
-moz-context-properties: fill, fill-opacity;
fill: currentColor;
}
menuitem[label='Chrome-Ordner'] { background-image: url('${ProfilePath}/${Icon02}');
background-repeat: no-repeat !important;
background-position: 11px 3px !important;
background-size: 16px 16px !important; /* Größe des Symbols anpassen */
-moz-context-properties: fill, fill-opacity;
fill: currentColor;
}
menuitem[label='CSS-Ordner'] { background-image: url('${ProfilePath}/${Icon03}');
background-repeat: no-repeat !important;
background-position: 11px 3px !important;
background-size: 16px 16px !important; /* Größe des Symbols anpassen */
-moz-context-properties: fill, fill-opacity;
fill: currentColor;
}
menuitem[label='JS-Ordner'] { background-image: url('${ProfilePath}/${Icon04}');
background-repeat: no-repeat !important;
background-position: 11px 3px !important;
background-size: 16px 16px !important; /* Größe des Symbols anpassen */
-moz-context-properties: fill, fill-opacity;
fill: currentColor;
}
menuitem[label='Addon-Verzeichnis'] { background-image: url('${ProfilePath}/${Icon05}');
background-repeat: no-repeat !important;
background-position: 11px 3px !important;
background-size: 16px 16pxx !important; /* Größe des Symbols anpassen */
-moz-context-properties: fill, fill-opacity;
fill: currentColor;
}
menuitem[label='Programm-Verzeichnis'] { background-image: url('${ProfilePath}/${Icon06}');
background-repeat: no-repeat !important;
background-position: 11px 3px !important;
background-size: 16px 16px !important; /* Größe des Symbols anpassen */
-moz-context-properties: fill, fill-opacity;
fill: currentColor;
}
menuitem[label='Startup-Cache'] { background-image: url('${ProfilePath}/${Icon07}');
background-repeat: no-repeat !important;
background-position: 11px 3px !important;
background-size: 16px 16px !important; /* Größe des Symbols anpassen */
-moz-context-properties: fill, fill-opacity;
fill: currentColor;
}
#AMAnpassen { background-image: url('${ProfilePath}/${Icon11}');
background-repeat: no-repeat !important;
background-position: 11px 3px !important;
background-size: 16px 16px !important;
-moz-context-properties: fill, fill-opacity;
fill: currentColor;
}
#AMModus { background-image: url('${ProfilePath}/${Icon12}');
background-repeat: no-repeat !important;
background-position: 11px 3px !important;
background-size: 16px 16px !important;
-moz-context-properties: fill, fill-opacity;
fill: currentColor;
}
#AMKonsole { background-image: url('${ProfilePath}/${Icon13}');
background-repeat: no-repeat !important;
background-position: 11px 3px !important;
background-size: 16px 16px !important;
-moz-context-properties: fill, fill-opacity;
fill: currentColor;
}
#AMWerkzeuge { background-image: url('${ProfilePath}/${Icon14}');
background-repeat: no-repeat !important;
background-position: 11px 3px !important;
background-size: 16px 16px !important;
-moz-context-properties: fill, fill-opacity;
fill: currentColor;
}
#AMEntwickler { background-image: url('${ProfilePath}/${Icon15}');
background-repeat: no-repeat !important;
background-position: 11px 3px !important;
background-size: 16px 16px !important;
-moz-context-properties: fill, fill-opacity;
fill: currentColor;
}
#AMsynchron { background-image: url('${ProfilePath}/${Icon16}');
background-repeat: no-repeat !important;
background-position: 11px 3px !important;
background-size: 16px 16px !important;
-moz-context-properties: fill, fill-opacity;
fill: currentColor;
}
#AMdaten { background-image: url('${ProfilePath}/${Icon17}');
background-repeat: no-repeat !important;
background-position: 11px 3px !important;
background-size: 16px 16px !important;
-moz-context-properties: fill, fill-opacity;
fill: currentColor;
}
#AMManager { background-image: url('${ProfilePath}/${Icon18}');
background-repeat: no-repeat !important;
background-position: 11px 3px !important;
background-size: 16px 16px !important;
-moz-context-properties: fill, fill-opacity;
fill: currentColor;
}
#AMOffline { background-image: url('${ProfilePath}/${Icon19}');
background-repeat: no-repeat !important;
background-position: 11px 3px !important;
background-size: 16px 16px !important;
-moz-context-properties: fill, fill-opacity;
fill: currentColor;
}
/* Neustart-Button */
#AMreboot {
background-image: url('${ProfilePath}/${ButtonIcon01}');
background-repeat: no-repeat !important;
background-position: 10px 2px !important;
background-size: 20px 20px !important; /* Größe des Symbols anpassen */
padding-left: 10px !important; /* Platz für das Symbol lassen */
-moz-context-properties: fill, fill-opacity !important;
fill: #fbc96e !important;
}
/* Beenden-Button */
#AMquit {
background-image: url('${ProfilePath}/${ButtonIcon02}');
background-repeat: no-repeat !important;
background-position: 12px 3px !important;
background-size: 16px 16px !important; /* Größe des Symbols anpassen */
padding-left: 10px !important; /* Platz für das Symbol lassen */
-moz-context-properties: fill, fill-opacity !important;
fill: red !important;
}
`),
null,
null
);
// CSS-Regeln registrieren
sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
})();
if (window.gBrowser) Appmenu.init();
Alles anzeigen
Sören Hentzschel Danke für die ausführliche Erklärung.
Richtig, wie in dem Beispiel, nur so kenne ich das. Mit dem Backslash hatte ich tatsächlich zuvor noch nie gesehen.
Wie schreibt Andreas so gerne, man lernt nie aus. ![]()
Ah, verstehe.
Es ist ja anders als bei dem, was ich so kenne, wenn CSS eingebunden wird.
![]()
Habe mir beide Skripte mal genauer angeschaut!
Das CSS zum einbinden eines eigenen Symbols ist da vorhanden, aber ...
var uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent('\
\
#about-button .toolbarbutton-icon {\
list-style-image: url("chrome://global/skin/icons/defaultFavicon.svg"); /* icon / path to icon */ \
fill: dimgray; /* icon color name/code */\
}\
\
'), null, null);
... mich irritieren die Backslashes.
Habe es jetzt nicht ausprobiert. Eventuell, sind die das Problem.
Ich verstehe Dich schon!
Und was den Header angeht, inkl. Bedienungsanleitung, es ist einfach zu viel Text!
Aber das kann ja alles so im "normalen" Skript bleiben.
Die Überlegung ist ja, für einfachere Gemüter das gleiche Skript halt in einer Light-Version anzubieten.
Und in dieser Version den Code so zur Verfügung zu stellen, dass eben automatisch der Explorer unter Windows,
und entsprechen in anderen BS sich der Dateimanager öffnet.
Sinn und Zweck dieser Überlegung!
So einige Anwender sind mit den Einstellungen von Farben schon überfordert, geschweige denn
eigene Symbole zu integrieren.
Es soll also für jene einfach ein Skript geben, dass sie installieren können und das dann einfach funktioniert.
Und der Header, wie Du schon schreibst, ist Jahre alt. Eventuell könnte man den auch mal überarbeiten.
Aber das sollte man mit bedacht machen.
Aber Du hast recht, Speravir müsste sich dazu äußern,
Denn der Großteil der Benutzer
will sich gar nicht näher mit der Materie befassen müssen.
Es soll funktionieren und fertig.
Genau so ist es, deshalb ein normales Skript, für Leute die auch den Header, bzw. die Anleitung lesen
und eine Light-Version, wo gar nicht so viel Text steht, und das einfach funktioniert!
Wer dann extra Software nutzen möchte, soll sich mit dem normalen Skript auseinandersetzen müssen,
oder selber in der Lage sein, das Light-Skript sich seinen Wünschen anzupassen.
Wenn User das normale Skript nutzen wollen und wir hier wegen der vielen Konfigurationsmöglichkeiten
mit Fragen zugeschmissen werden, hilft das doch auch niemandem, oder?
2002Andreas schrieb mir, manchmal ist wenige mehr.
Und ich denke, er hat da absolut recht.
bege Du hast der Header (Kopf) mit 25 Zeilen. Ich bin mal frech, unwichtig.
Danach kommen noch einmal ca. 50 Zeilen Bedienungsanleitung und andere Infos.
Glaubst echt, das liest sich ein Anwender durch?
Ja, Leute wie Du und ich, wie so manch anderen hier onBoard, wir lesen so etwas.
aber die anderen?
Die wollen einfach ein Skript, das funktioniert.
Und fragen dann halt, wenn Kleinigkeiten geändert werden sollen.
Denk an unseren Wackeldackel, oder schau in den Thread mit der Scrollbar.
(Murmeltier, ich möchte den User hier nicht brandmarken, er gibt sich wirklich Mühe)
OK, dann ist eben 17px normal, nur wer sieht den Unterschied von einem Pixel?
Aber egal, es klappt ja,
nur haut bei mir irgendwas dazwischen.
Muss mal schauen, welches CSS das ist! Hab' ja den CSSloader,
damit sollte das dann schnell von der Hand gehen.
PS: In einem anderen Profil, ohne viele Anpassungen, greift das auch auf die horizontale Scrollbar!
Nachtrag!
Der Fuchs bringt mich noch um den Verstand!
Die userChrome.css bearbeitet, alle import deaktiviert.
Scrollbar unten und an der Seite breit!
So nach und nach alles wieder aktiviert. Scrollbar unten ist immer noch breit.
Ja, verdammt, wo lag denn das Problem?
grisu2099 Warum aber wirkt das nur auf die vertikale Leiste,
nicht aber auf die horizontale?
grisu2099 cool.
2002Andreas Den Firefox auch neu gestartet? Denn bei mir hat es funktioniert!
Mh, als ich so jung war, war es eine geile Zeit! Loveparade in Berlin, Sound of Frankfurt und vieles mehr.
Aber zurück zum Thema!
Boersenfeger Wie mir scheint, hast Du nur die Möglichkeit über das BS die Breite der Scrollbar breiter zu machen.
Hat halt den Nachteil, bzw. zur Auswirkung, dass dies im Prinzip alle Programmfenster betrifft.
2002Andreas Oh Herr im Himmel, ich bin sooo blöd!
Schon tausendmal diese Seite genutzt und gerade jetzt nicht mehr daran gedacht.
Alzheimer lässt grüßen. Ich werde alt, oder vielleicht bin ich es auch schon.