Beiträge von Mira_Belle
-
-
Horstmann Mit "Freundin"?
Aber wenn Du jetzt JavaScript-Profi bist, kann ich mich ja immer an Dich wenden.
Och, habe gerade gesehen, dass Du das über CSS realisiert hast. Schade.
Mit JS geht es doch auch, nur schöner, wie ich finde. -
Sehr schöne Spielerei.
Das Skript lädt ja gerade zu dazu ein.Farbspiele sind keine Herausforderung, weder bei den Symbolen,
wenn es sich um anpassbare SVG handelt, noch bei der Schriftfarbe.Auch Größe und Schriftdicke sollten für Dich absolut kein Problem sein.
Aber, ich habe da noch was!
Ich habe gesehen, dass Du in einem Ordner über 180 Lesezeichen hast.
Also ich finde mach ja schon nicht mehr zurecht, wenn da mehr als 10 drin sind.Wie wäre es, einen Schwellenwert zu definieren, darf natürlich der Nutzer selbst festlegen,
ab dem der Zählwert nicht mehr "normal" angezeigt wird, sondern FETT und ROT?
Wobei auch das Fett und die Schriftfarbe vom Nutzer "eingestellt" werden sollte.Ich mein' ja nur, damit Dir am Ende nicht langweilig wird.
-
omar1979 Ist doch recht einfach!
1. Eintrag "Firefox Verzeichnisse" führt zu den verschiedenen Ordner, z.B. "Profil-Verzeichniss", .... , bis "Startup-Cache".
D. h. wenn Du da drauf klickst, öffnet sich der Explorer mit entsprechenden Ordner.2. Eintrag "Firefox Funktionen", auch selbsterklärend! Öffnet die jeweilige Firefoxfunktion.
"Anpassen", bis "Offline arbeiten"!Danach gibt es noch, getrennt durch einen Separator, 'Neustart' & 'Beenden'.
-
Mach einfach einen Thread auf und schaue, was daraus wird.
Grundsätzlich wäre ich dabei, aber ich werde mich für so etwas nicht mehr ins Zeug werfen. -
Ich stelle hier mal "mein" Skript rein, dass ohne Veränderungen in about:config auskommt und auch in der Nightly funktioniert.
JavaScript
Alles anzeigen// ==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 // @version 2020.05.27 // @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 // ==/UserScript== // Definiere den Profilpfad let ProfilePath = PathUtils.toFileURI( PathUtils.join(PathUtils.profileDir, "chrome", "icons") ); var Appmenu = { // Beginn der Konfiguration ------------------ // 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: 1, // 0: TabsToolbar; 1: navbar, 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", // Ende der Konfiguration -------------------- // 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", }, ], apps: [ // Untermenü Firefox Verzeichnisse { name: 'Profil-Verzeichniss', 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-Verzeichniss', id: "AMAddons", root: 'ProfD', path: '\\extensions', subdir: 'Firefox Verzeichnisse', }, { name: 'Programm-Verzeichniss', 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", // "var { require } = ChromeUtils.importESModule('resource://devtools/shared/loader/Loader.sys.mjs', {});\ // var { BrowserConsoleManager } = require('resource://devtools/client/webconsole/browser-console-manager');\ // BrowserConsoleManager.openBrowserConsoleOrFocus();", subdir: "Firefox Funktionen", }, { name: "Browser-Werkzeuge", id: "AMWerkzeuge", command: "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();", subdir: "Firefox Funktionen", }, { name: "Web-Entwickler", id: "AMEntwickler", command: "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());", subdir: "Firefox Funktionen", }, { name: "Firefox synchronisieren", id: "AMsynchron", command: "gSync", // command: "gSync.openPrefs('menubar');", subdir: "Firefox Funktionen", }, { 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", // "Services.appinfo.invalidateCachesOnRestart(); \ // Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);", }, { 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.setAttribute("onclick", "event.preventDefault();event.stopPropagation();"); 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"; 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 = "16px"; ExternalAppBtn.style.height = "21px"; // Feste Höhe für kleines Symbol } 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.setAttribute('onpopupshowing', 'event.stopPropagation(); Appmenu.onpopupshowing();'); 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.setAttribute('oncommand', 'document.getElementById("AMpopup").openPopup();'); key.addEventListener('command', function () { document.getElementById("AMpopup").openPopup(); }); document.getElementById('mainKeyset').appendChild(key); } }, 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.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 = 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.addEventListener('command', () => { // eval(config.command); // }); 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 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; }, 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()) { //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 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 = "css3.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(` menuitem[label="Profil-Verzeichniss"] { 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-Verzeichniss"] { 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-Verzeichniss"] { 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();
Wie immer, es darf gebastelt werden.
-
Nach einer kompletten Neuinstallation ist das Problem immer noch vorhanden. Jetzt muss ich sogar zwei mal auf "Abbrechen" klicken.
Eventuell gar kein Firefox-Problem!?
Wenn auch andere Zugriff auf Deinen Rechner haben, warum nicht die von Windows bereitgestellte Möglichkeit nutzen? -
Wieso überrascht dich das?
Erstaunt ich bin.
Habe ich doch in der aktuellen Version diesen Schalter ausprobiert, und es funktionierte.
Aber wieder gelöscht, da es mir nichts brachte. -
Aber Du schriebst doch, dass Du das "Masterpasswort" aktiviert hast. Warum, wenn Du es doch gar nicht brauchst?
Das kann ich gerade nicht nachvollziehen.Lass das deaktiviert und es sollte gut sein, denke ich.
-
In diesem Thema geht es immer um die Nightly-Version.
Oh.
-
lichen Dank.
-
Und wo und wie kann man diese lokalen KI-Modelle herbekommen?
-
Wie bekomme ich den früheren Zustand denn wieder hin?
Wofür?
-
Zitat
Allerdings hätte das Moskauer Unternehmen im Zweifel keine Wahl. Denn in Russland gibt es Gesetze, mit denen Kaspersky gezwungen werden könnte, Rechner im Ausland anzugreifen oder auszuspionieren. Für die USA Grund genug für ein Verbot. Und auch die Niederlande und Litauen schätzen die Software bereits seit Jahren als Bedrohung ein.
Mh,
.
Trifft aber genau SO auch auf alle Software aus den USA zu
Auf des Orangen geheiß, alle Dienste für den Internationalen Gerichtshof in Den Haag gekappt!
Und einige UNI's in China wurden auch die Dienste gekündigt und verweigert. -
Hast Du in den Einstellungen unter "Datenschutz & Sicherheit" \ "Passwörter"
den Punkt "Hauptpasswort verwenden" aktiviert?Denn
ZitatWichtig: Wenn Sie ein Hauptpasswort definiert und festgelegt haben, werden Sie einmal pro Browsersitzung danach gefragt, sobald Firefox auf die durch das Hauptpasswort geschützten Zugangsdaten zugreifen muss. Das trifft auch dann zu, wenn Sie ein Passwort hinzufügen, entfernen oder anzeigen möchten.
-
PS: Ab Fx 139 sollte das alte Script nicht mehr funktionieren, und evtl. kommen dann Anfragen und weitere Kommentare; ...
Nach Belieben veränder, zerpflücken und anpassen, funktioniert in der Nightly.
JavaScript
Alles anzeigen// BookmarkCount.uc.js /* ******************************************************************************************************************* */ /* Author BrokenHeart => https://www.camp-firefox.de/forum/thema/136572/?postID=1229536#post1229536 **** */ /* Correction from BrokenHeart => https://www.camp-firefox.de/forum/thema/136572/?postID=1229696#post1229696 **** */ /* Extension from Sören Henschel => https://www.camp-firefox.de/forum/thema/136572/?postID=1229555#post1229555 **** */ /* Customized by Mira inspired by grisu2099 ********************************************************************** */ /* Source => https://www.camp-firefox.de/forum/thema/136572/?postID=1229875#post1229883 **** */ /* Customized by Mira inspired by Horstmann ********************************************************************** */ /* Source => https://www.camp-firefox.de/forum/thema/136572/?postID=1229993#post1229993 **** */ /* Adjustments for 139 and customized by Mira inspired by Horstmann ********************************************** */ /* Source => https://www.camp-firefox.de/forum/thema/136572/?postID=1270254#post1270254 **** */ /* ******************************************************************************************************************* */ /* Version 1.01 => https://www.camp-firefox.de/forum/thema/136572/?postID=1230128#post1230128 **** */ /* Version 1.02 => https://www.camp-firefox.de/forum/thema/136572/?postID=1230334#post1230334 **** */ /* Version 1.03a => https://www.camp-firefox.de/forum/thema/136572/?postID=1270258#post1270258 **** */ /* ******************************************************************************************************************* */ /* Custom Counter in the Bookmarks for folders and links ************************************************************* */ /* ******************************************************************************************************************* */ (function() { if (!window.gBrowser) return; setTimeout(function() { setFunction(); },50); //Custom icons in profile/chrome/icons folder let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')); let icon1 = "folder-fat.svg"; // Custom Folder Icon let icon2 = "bookmark-hollow.svg"; // Custom Link Icon let icon3 = "arrow-right.svg"; // Custom Arrow Icon // Custom settings let bm_font_size = 12; let cs_font_weight = 700; let bm_icon_size = 16; // NEU: Schriftfarbe getrennt definieren //let cs_font_color_1 = "#FFA500"; // Farbe für Folder-Zähler (links) //let cs_font_color_2 = "#00FFFF"; // Farbe für Link-Zähler (rechts) let cs_font_color_1 = "#FFD700"; // Farbe für Folder-Zähler (links) let cs_font_color_2 = "#FFD700"; // Farbe für Link-Zähler (rechts) // NEU: Symbolfarber getrennt definieren //let cs_icon_color_1 = "#5fe575"; // Farbe für "Ordner", 1.Symbol //let cs_icon_color_2 = "#fbf328"; // Farbe für "Link", 2.Symbol //let cs_icon_color_3 = "#bbf700"; // Farbe für den Pfeil let cs_icon_color_1 = "#C0C0C0"; // Farbe für "Ordner", 1.Symbol let cs_icon_color_2 = "#C0C0C0"; // Farbe für "Link", 2.Symbol let cs_icon_color_3 = "#C0C0C0"; // Farbe für den Pfeil // Calculated settings let cs_font_size = `${bm_font_size}px`; let cs_icon_size = `${bm_icon_size}px`; let cs_width_one = `calc(${bm_icon_size}px + 1.4em)`; let cs_width_uno = `calc(${bm_icon_size}px)`; let cs_width_two = `calc(${bm_icon_size}px + 1.4em)`; let cs_width_due = `calc(${bm_icon_size}px)`; //let useStyle1 = true; // <- HIER Weiche setzen: true = Variante 1, false = Variante 2 let useStyle = 1; // <- HIER Weiche setzen: 0 = Symbole hinter den Zählern, 1 = Symbole vor den Zählern // Symbole vor den Zählern let css_one = ` /* Counter #1 Folder */ #bmContent::before { content: attr(data-value1) !important; width: ${cs_width_one} !important; align-items: center !important; display: flex !important; justify-content: end !important; /*margin-inline: 16px 4px; */ /* min. Abstand links für enge Popups, rechts zum 2ten Counter */ margin-left: 16px !important; /* Abstand links minimum für schmale Popus CHANGE */ margin-right: -1px !important; /* Abstand Icon "Ordner" bis zum "Zähler" */ background-image: url("${ProfilePath}/${icon1}")!important; background-position: center right calc(${cs_width_one} - ${cs_icon_size}) !important; background-repeat: no-repeat !important; background-size: ${cs_icon_size} ${cs_icon_size} !important; color: ${cs_font_color_1} !important; /* Farbe der 1. Zahl */ fill: ${cs_icon_color_1} !important; /* Farbe des 1. Symbols */ } /* Counter #2 Links */ #bmContent::after { content: attr(data-value2) !important; width: ${cs_width_two} !important; align-items: center !important; display: flex !important; justify-content: end !important; /*margin-inline: -2px;*/ margin-left: 4px !important; /* Abstand "Zähler 1" zum Icon2 */ margin-right: -1px !important; /* Abstand Icon "Links" bis zum "Zähler" */ background-image: url("${ProfilePath}/${icon2}") !important; background-position: center right calc(${cs_width_two} - ${cs_icon_size}) !important; background-repeat: no-repeat !important; background-size: ${cs_icon_size} ${cs_icon_size} !important; color: ${cs_font_color_2} !important; /* Farbe der 2. Zahl */ fill: ${cs_icon_color_2} !important; /* Farbe des 2. Symbols */ } `; // Symbole hinter den Zählern let css_two = ` /* Counter #1 Folder */ #bmContent::before { content: attr(data-value1) !important; width: ${cs_width_one} !important; align-items: center !important; display: flex !important; justify-content: end !important; background-image: url("${ProfilePath}/${icon1}")!important; background-position: center right calc(${cs_width_uno} - ${cs_icon_size}) !important; background-repeat: no-repeat !important; background-size: ${cs_icon_size} ${cs_icon_size} !important; color: ${cs_font_color_1} !important; /* Farbe der 1. Zahl */ fill: ${cs_icon_color_1} !important; /* Farbe des 1. Symbols */ padding: 2px 20px 0px 10px !important; /* top | right | bottom | left */ /*margin-inline: 0px -10px; */ margin-left: 16px !important; /* Abstand links minimum für schmale Popus CHANGE */ margin-right: 12px !important; /* Abstand Icon "Ordner" bis zum "Zähler" */ } #bmContent::after { content: attr(data-value2) !important; width: ${cs_width_two} !important; align-items: center !important; display: flex !important; justify-content: end !important; /*justify-content: flex-end; */ background-image: url("${ProfilePath}/${icon2}")!important; background-position: center right calc(${cs_width_due} - ${cs_icon_size}) !important; background-repeat: no-repeat !important; background-size: ${cs_icon_size} ${cs_icon_size} !important; color: ${cs_font_color_2} !important; /* Farbe der 2. Zahl */ fill: ${cs_icon_color_2} !important; /* Farbe des 2. Symbols */ padding: 2px 22px 0 0 !important; /* top | right | bottom | left */ margin-left: -14px !important; /* Abstand "Zähler 1" zum Icon2 */ margin-right: -1px !important; /* Abstand Icon "Links" bis zum "Zähler" */ } `; function setFunction() { const css =` /* Counter rechtsbuendig */ #bmContent { display: flex !important; margin-inline: auto 0 !important; font-family: Consolas, "Lucida Console", "Courier New", monospace !important; font-size: ${cs_font_size} !important; font-weight: ${cs_font_weight} !important; height: ${cs_icon_size} !important; } /* Dynamisch gewählter before-Block */ ${useStyle ? css_one : css_two} /* Pfeil */ menupopup > menu::after { content: "" !important; background-image: url("${ProfilePath}/${icon3}")!important; height: ${cs_icon_size} !important; height: ${cs_icon_size} !important; fill: ${cs_icon_color_3} !important; } `; const sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService); const uri = Services.io.newURI('data:text/css,' + encodeURIComponent(css)); sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); let bmbMenu = document.getElementById('bookmarks-menu-button'); let bookMenu = document.getElementById('bookmarksMenu'); let persToolBar = document.getElementById('PersonalToolbar'); if(bmbMenu) bmbMenu.addEventListener('popupshowing', onPopupShowing ); if(bookMenu) bookMenu.addEventListener('popupshowing', onPopupShowing ); if(persToolBar) persToolBar.addEventListener('popupshowing', onPopupShowing ); } function onPopupShowing(aEvent) { let popup = aEvent.originalTarget; for (let item of popup.children) { if (item.localName != 'menu' || item.id?.startsWith('history')) continue; setTimeout(() => { let itemPopup = item.menupopup; itemPopup.hidden = true; itemPopup.collapsed = true; itemPopup.openPopup(); itemPopup.hidePopup(); let menuitemCount = 0; let menuCount = 0; for (let subitem of itemPopup.children) { if (subitem.classList.contains('bookmark-item') && !subitem.disabled && !subitem.hidden) { if (subitem.localName == 'menuitem') { menuitemCount++; } else if (subitem.localName == 'menu') { menuCount++; } } } itemPopup.hidden = false; itemPopup.collapsed = false; // Neues Element für Zaehler let bmCounta = item.childNodes[1]; if (!bmCounta) return; // Falls undefiniert bmCounta.innerHTML = "" let bmContent = document.createElement("bmContent"); bmContent.id = "bmContent"; bmCounta.appendChild(bmContent); //let strCountOut1 = " " + menuCount + " "; // Has no brackets //let strCountOut1 = "(" + menuCount + ")"; // Has round brackets //let strCountOut1 = "[" + menuCount + "]"; // Has square brackets let strCountOut1 = String(menuCount).padEnd(2, " "); bmContent.setAttribute('data-value1', strCountOut1); //let strCountOut2 = " " + menuitemCount + " "; // Has no brackets //let strCountOut2 = "(" + menuitemCount + ")"; // Has round brackets //let strCountOut2 = "[" + menuitemCount + "]"; // Has square brackets // let strCountOut2 = String(menuitemCount).padEnd(2, " "); // bmContent.setAttribute('data-value2', strCountOut2); let strCountOut2 = (useStyle === 0) ? String(menuitemCount).padStart(4, "/ ") : String(menuitemCount).padEnd(2, " "); bmContent.setAttribute('data-value2', strCountOut2); }, 100); } } })();
-
Vorschlag.
JavaScript// Variable zur Auswahl der Klammern let out = 0; // 0 für "ohne Klammern", 1 für "runde Klammern", 2 für "eckige Klammern"
und ganz unten dann:
JavaScript
Alles anzeigen//Zaehler Design Optionen => mit, ohne, eckige, runde Klammern let strCountOut1, strCountOut2; if (out === 0) { strCountOut1 = "" + menuCount + ""; strCountOut2 = "" + menuitemCount + ""; } else if (out === 1) { strCountOut1 = "(" + menuCount + ")"; strCountOut2 = "(" + menuitemCount + ")"; } else if (out === 2) { strCountOut1 = "[" + menuCount + "]"; strCountOut2 = "[" + menuitemCount + "]"; } bmVario.setAttribute('data-value1', strCountOut1); bmVario.setAttribute('data-value2', strCountOut2);
-
Nur, wenn Du möchtest!!
Du könntest oben Variablen definieren, die die Einstellung für das Klammergedöhns vereinfachen,
und niemand müsste im Code groß was verändern.
Einfach eine "0" für ohne, eine "1" für runde oder eine "2" für eckige Klammern.
Und das mit der Trennlinie ließe sich auch so lösen.
"0" keine, "1" eine Trennlinie, ginge auch mit true & false.
Aber ist nur so eine Idee und muss ja auch nicht sein.
Finde Dein Skript gut. -
Dato Wenn Du das unbedingt mit einem Rechtsklick machen möchtest,
dann in Zeile 58 "if (event.button == 0) {" zu "if (event.button == 2) {" ändern. -
In deinem Beispiel hast du der Funktion aber keinen Namen verpasst, sondern du hast einen "Parameter" übergeben?!
Oh, stimmt, da war was!
In der Klammer nicht keine "Namen" oder "Bezeichnungen" sondern Parameter!
Solche Sachen vergesse ich hin und wieder. Danke für den "Klaps".