Sidebar - Symbol für Downloads
-
angel-ch -
5. September 2026 um 09:23 -
Erledigt
-
-
Das gibts schlichtweg nicht, noch nicht, würde ich sagen. Die Nightly bietet das auch nicht, es gibt auch keinen Verweis, mehr als diese 5 Einträge auszuwählen. Script, wenn, dann in der Anpassen-Sektion.
-
wie durch ein JavaScript etc?
Ich habe mal eine KI gefragt mit diesem Ergebnis:
JavaScript
Alles anzeigen// ==UserScript== // @name Downloads Sidebar.uc.js // @description Fügt der neuen Firefox-Sidebar ein natives Downloads-Panel hinzu. // @version 2.0 // @author KI ChatGPT // @compatibility Firefox 155 // ==/UserScript== (function DownloadsSidebar() { "use strict"; /* * ============================================================== * Downloads Sidebar * Firefox 155 + userChromeJS * * Es wird KEIN eigenes Downloads-Frontend erzeugt. * Stattdessen wird die native Firefox-Seite "about:downloads" * als Sidebar-Panel verwendet. * * Das hat den Vorteil, dass Firefox selbst: * * - Download-Fortschritt * - laufende Downloads * - Öffnen der Dateien * - Datei im Ordner anzeigen * - Entfernen * - Download-Historie * * weiterhin verwaltet. * ============================================================== */ const COMMAND_ID = "viewDownloadsSidebar"; const TOOL_ID = "downloads"; const PANEL_ELEMENT_ID = "sidebar-switcher-downloads"; const PANEL_URL = "about:downloads"; const TOOLS_PREF = "sidebar.main.tools"; /* * -------------------------------------------------------------- * Debug * -------------------------------------------------------------- */ const DEBUG = true; function log(...args) { if (DEBUG) { console.log( "[Downloads Sidebar]", ...args ); } } function warn(...args) { console.warn( "[Downloads Sidebar]", ...args ); } /* * -------------------------------------------------------------- * Nur browser.xhtml * -------------------------------------------------------------- */ if ( location.href !== "chrome://browser/content/browser.xhtml" ) { return; } /* * -------------------------------------------------------------- * Prüfen, ob die neue Sidebar aktiv ist * -------------------------------------------------------------- */ function isNewSidebarEnabled() { return Services.prefs.getBoolPref( "sidebar.revamp", false ); } /* * -------------------------------------------------------------- * sidebar.main.tools * -------------------------------------------------------------- */ function getSidebarTools() { let value = ""; try { value = Services.prefs.getStringPref( TOOLS_PREF, "" ); } catch (e) { return []; } return value .split(",") .map(x => x.trim()) .filter(Boolean); } function setSidebarTools(tools) { /* * Duplikate vermeiden. */ tools = [...new Set( tools.filter(Boolean) )]; Services.prefs.setStringPref( TOOLS_PREF, tools.join(",") ); } function enableDownloadsTool() { const tools = getSidebarTools(); if ( !tools.includes(TOOL_ID) ) { tools.push( TOOL_ID ); setSidebarTools( tools ); log( "Downloads zu sidebar.main.tools hinzugefügt." ); } } /* * -------------------------------------------------------------- * SidebarController abwarten * -------------------------------------------------------------- */ function waitForSidebarController() { if ( typeof SidebarController === "undefined" ) { return false; } if ( typeof SidebarController.sidebars === "undefined" ) { return false; } return true; } /* * -------------------------------------------------------------- * Native Sidebar-Definition * -------------------------------------------------------------- * * Mozilla verwendet intern ungefähr folgende Struktur: * * { * name, * elementId, * url, * revampL10nId, * iconUrl * } * * Das entspricht der Architektur der neuen Sidebar. * -------------------------------------------------------------- */ function createSidebarDefinition() { return { name: TOOL_ID, elementId: PANEL_ELEMENT_ID, url: PANEL_URL, /* * Titel. * * Wenn keine entsprechende FTL-ID vorhanden ist, * verwendet Firefox den normalen title-Fallback. */ title: "Downloads", /* * Icon der normalen Firefox-Downloadfunktion. */ iconUrl: "chrome://browser/skin/downloads/downloads.svg", /* * Damit die alte Sidebar-Logik nicht versucht, * einen nicht vorhandenen Menüeintrag zu manipulieren. */ visible: true, /* * Kein eigenes Kontextmenü notwendig. */ contextMenuId: null, toolContextMenuId: null }; } /* * -------------------------------------------------------------- * Sidebar registrieren * -------------------------------------------------------------- */ function registerSidebar() { const sidebars = SidebarController.sidebars; /* * Bereits vorhanden? */ if ( sidebars.has( COMMAND_ID ) ) { log( "Downloads-Sidebar bereits registriert." ); return true; } const sidebar = createSidebarDefinition(); /* * Die Map wird auch von show(), getTools() * und dem Sidebar-Launcher verwendet. */ sidebars.set( COMMAND_ID, sidebar ); log( "Downloads-Sidebar registriert." ); return true; } /* * -------------------------------------------------------------- * getTools() erweitern * -------------------------------------------------------------- * * In Firefox befindet sich die interne toolsNameMap * als lexical const im browser-sidebar.js und ist deshalb * aus userChromeJS nicht direkt erreichbar. * * Deshalb erweitern wir getTools() um unser Tool. * -------------------------------------------------------------- */ function patchGetTools() { if ( SidebarController .__ucDownloadsGetToolsPatched ) { return; } const originalGetTools = SidebarController.getTools; if ( typeof originalGetTools !== "function" ) { warn( "SidebarController.getTools() nicht gefunden." ); return; } SidebarController.getTools = function () { let tools = originalGetTools.call( this ); /* * Bereits vorhanden? */ if ( tools.some( tool => tool.commandID === COMMAND_ID ) ) { return tools; } const sidebar = this.sidebars.get( COMMAND_ID ); if (!sidebar) { return tools; } const disabled = !getSidebarTools().includes( TOOL_ID ); tools.push({ commandID: COMMAND_ID, view: COMMAND_ID, name: TOOL_ID, iconUrl: sidebar.iconUrl, /* * Falls Firefox 155 die * l10n-ID erwartet, lassen wir * den Text über title laufen. */ l10nId: null, disabled: disabled, hidden: false, attention: false, contextMenu: null }); return tools; }; SidebarController .__ucDownloadsGetToolsPatched = true; /* * toolsAndExtensions wird gecacht. * Ein eventuell bereits erzeugter Cache muss * verworfen werden. */ SidebarController ._toolsAndExtensions = null; log( "getTools() erweitert." ); } /* * -------------------------------------------------------------- * toolsAndExtensions reparieren * -------------------------------------------------------------- * * Der Launcher verwendet diese Map. * -------------------------------------------------------------- */ function patchToolsAndExtensions() { /* * Getter nicht überschreiben. * * Stattdessen den Cache nach getTools() * neu aufbauen. */ SidebarController ._toolsAndExtensions = null; try { const map = SidebarController .toolsAndExtensions; if ( !map.has( COMMAND_ID ) ) { const sidebar = SidebarController.sidebars.get( COMMAND_ID ); if (!sidebar) { return; } map.set( COMMAND_ID, { commandID: COMMAND_ID, view: COMMAND_ID, name: TOOL_ID, iconUrl: sidebar.iconUrl, l10nId: null, disabled: !getSidebarTools() .includes( TOOL_ID ), hidden: false, attention: false } ); log( "Downloads in toolsAndExtensions eingetragen." ); } } catch (e) { warn( "toolsAndExtensions konnte nicht erweitert werden:", e ); } } /* * -------------------------------------------------------------- * toggleTool() patchen * -------------------------------------------------------------- * * Wichtig: * * Firefox kennt unser TOOL_ID nicht in seiner * internen toolsNameMap. * * Ohne diesen Patch würde "Downloads" beim * Umschalten in "Sidebar anpassen" nicht korrekt * in sidebar.main.tools gespeichert. * -------------------------------------------------------------- */ function patchToggleTool() { if ( SidebarController .__ucDownloadsTogglePatched ) { return; } const originalToggleTool = SidebarController.toggleTool; if ( typeof originalToggleTool !== "function" ) { warn( "SidebarController.toggleTool() nicht gefunden." ); return; } SidebarController.toggleTool = function (commandID) { /* * Unser eigenes Tool */ if ( commandID === COMMAND_ID ) { const tools = getSidebarTools(); const index = tools.indexOf( TOOL_ID ); /* * Wenn vorhanden -> entfernen * * Wenn nicht vorhanden -> hinzufügen */ if ( index !== -1 ) { tools.splice( index, 1 ); } else { tools.push( TOOL_ID ); } setSidebarTools( tools ); /* * Tool-Zustand aktualisieren. */ const map = this.toolsAndExtensions; const tool = map.get( COMMAND_ID ); if (tool) { tool.disabled = !tools.includes( TOOL_ID ); } /* * Launcher benachrichtigen. */ window.dispatchEvent( new CustomEvent( "SidebarItemChanged" ) ); log( "Downloads-Tool umgeschaltet:", tools.includes( TOOL_ID ) ); return; } return originalToggleTool.call( this, commandID ); }; SidebarController .__ucDownloadsTogglePatched = true; } /* * -------------------------------------------------------------- * refreshTools() patchen * -------------------------------------------------------------- * * Wenn sidebar.main.tools geändert wird, * muss der Launcher den Status unseres Tools * ebenfalls aktualisieren. * -------------------------------------------------------------- */ function patchRefreshTools() { if ( SidebarController .__ucDownloadsRefreshPatched ) { return; } const originalRefreshTools = SidebarController.refreshTools; if ( typeof originalRefreshTools !== "function" ) { return; } SidebarController.refreshTools = function () { /* * Zuerst Firefox seine normalen * Tools aktualisieren lassen. */ originalRefreshTools.call( this ); /* * Unser Tool aktualisieren. */ const tool = this.toolsAndExtensions ?.get( COMMAND_ID ); if (tool) { tool.disabled = !getSidebarTools() .includes( TOOL_ID ); } window.dispatchEvent( new CustomEvent( "SidebarItemChanged" ) ); }; SidebarController .__ucDownloadsRefreshPatched = true; } /* * -------------------------------------------------------------- * Sidebar öffnen * -------------------------------------------------------------- * * Wir verwenden die normale SidebarController.show(). * * Dadurch läuft die Anzeige durch die originale * Firefox-Sidebar-Logik. * * Firefox lädt: * * about:downloads * * in den Sidebar-Browser. * -------------------------------------------------------------- */ function testPanel() { try { const sidebar = SidebarController.sidebars.get( COMMAND_ID ); if (!sidebar) { warn( "Downloads-Panel ist nicht registriert." ); return false; } /* * URL sicherheitshalber setzen. */ sidebar.url = PANEL_URL; return true; } catch (e) { warn( "Panel-Test fehlgeschlagen:", e ); return false; } } /* * -------------------------------------------------------------- * Launcher neu aufbauen * -------------------------------------------------------------- * * SidebarItemAdded/Changed veranlasst die * Custom-Lit-Komponenten der neuen Sidebar, * ihre Liste erneut zu lesen. * -------------------------------------------------------------- */ function notifySidebar() { window.dispatchEvent( new CustomEvent( "SidebarItemAdded" ) ); window.dispatchEvent( new CustomEvent( "SidebarItemChanged" ) ); } /* * -------------------------------------------------------------- * Initialisierung * -------------------------------------------------------------- */ function initialize() { if ( !isNewSidebarEnabled() ) { log( "Neue Sidebar ist nicht aktiviert." ); return; } if ( !waitForSidebarController() ) { return false; } /* * Reihenfolge ist wichtig. */ registerSidebar(); patchGetTools(); patchToggleTool(); patchRefreshTools(); /* * Downloads standardmäßig aktivieren. * * Wenn du das NICHT möchtest, entferne * diese Zeile. */ enableDownloadsTool(); /* * toolsAndExtensions nach dem Eintrag * neu erzeugen. */ patchToolsAndExtensions(); /* * URL prüfen. */ testPanel(); /* * Launcher informieren. */ notifySidebar(); log( "Downloads Sidebar erfolgreich initialisiert." ); return true; } /* * -------------------------------------------------------------- * SidebarController wird während des Browserstarts * relativ spät vollständig initialisiert. * * Daher mehrere kurze Versuche. * -------------------------------------------------------------- */ let attempts = 0; const timer = setInterval( () => { attempts++; if ( initialize() || attempts >= 40 ) { clearInterval( timer ); } }, 250 ); })(); -
2002Andreas
5. September 2026 um 11:59 Hat das Thema aus dem Forum Firefox Allgemein nach Individuelle Anpassungen verschoben. -
2002Andreas Top!

Verrate mir doch bitte Deine genaue Fragestellung,
denn mit mistral habe ich mir einen abgebrochen und es kam nur Mist dabei raus! -
doch bitte Deine genaue Fragestellung,
ZitatIch möchte bitte für die Firefox Version 155 ein .uc.js Skript, welches mir in der neuen Sidebar auch den Button für: Downloads anzeigt.
Dann hat mich die KI noch ein paar Einzelheiten gefragt, und der 2te Versuch mit dem Skript hat dann funktioniert.

-
Oder man installiert sich einfach eine entsprechende Erweiterung, was immer die bessere Lösung ist, wenn die Erweiterung alles abdeckt, was man benötigt. Beispiele:
Downloads Sidebar Reborn – Holen Sie sich diese Erweiterung für 🦊 Firefox (de)Laden Sie Downloads Sidebar Reborn für Firefox herunter. Displays a sidebar that lets you manage all your downloads. No new windows, no new tabs, just a…addons.mozilla.orgSideloads - Sidebar downloads – Holen Sie sich diese Erweiterung für 🦊 Firefox (de)Laden Sie Sideloads - Sidebar downloads für Firefox herunter. See your downloads in the sidebar.addons.mozilla.org -
Das Skript funktioniert bei mir nicht.
-
funktioniert bei mir nicht.

In einem anderen Profil getestet...funktioniert hier:
Funktionieren denn andere Skripte bei dir?
-
Es funktioniert hier auch bei mir!
Und 2002Andreas Danke.
-
Es funktioniert hier auch bei mir!
Danke für den Test und die Bestätigung


Danke.
Den Dank reiche ich mal an die KI weiter

-
..., was immer die bessere Lösung ist, ...
Sicher?
Man ist auf jeden Fall auf einen externen Entwickler angewiesen!
Ich habe es schon erlebt, dass eine Erweiterung einfach nicht mehr weiter entwickelt wurde, und bäm,
es kam der Tag, wo sie ihre Funktion einstellte.
Oder auch schon passiert, eine Erweiterung. jahrelang kostenlos, plötzlich wollte der Entwickler Kohle!
Verarscht kam ich mir vor, weil ich kurz vorher noch eine Spende überwiesen hatte.
Bei einem Script, weiß ich mir zu helfen!
Entweder bekomme ich Unterstützung auf diesem Board oder ich bekomme es mit mistal in den Griff.Den Dank reiche ich mal an die KI weiter
Quatsch, Du bist doch der, der den richtigen Promt erstellt hat!!
-
Ein kleines Bonbon!
Hatte ich mir mal "entwickelt", weil mir Platz wichtig ist.Das Firefox-UserScript verwandelt die standardmäßige Sidebar in eine schwebende, hover-aktivierte Leiste mit folgenden Funktionen:
- Dynamische Höhenanpassung an das Browser-Fenster (via ResizeObserver).
- Persistente Sichtbarkeit, wenn ein Sidebar-Menü geöffnet ist (popupshowing-Event).
- Manuelle Breitenanpassung per Drag & Drop (Resizer-Handle).
- CSS-Animationen für sanftes Ein-/Ausblenden (mit transform: translateX).
- Positionierung links oder rechts (über Attribute positionend/sidebar-positionend steuerbar).
-
Hatte ich mir mal "entwickelt",
Besser wäre es, dafür dann einen eigenen neuen Thread zu erstellen.
-
Besser wäre es, dafür dann einen eigenen neuen Thread zu erstellen.
Meinst Du?
Hat ja nie jemand nach so etwas gefragt.
Von daher wäre es doch völlig egal, wenn es hier untergeht. -
wenn es hier untergeht.
Wäre aber doch schade.
Hat ja nie jemand nach so etwas gefragt.
Ich nutze z.B. dafür einen kleinen CSS-Code, andere wissen evtl. gar nicht, dass man das machen kann

-
Sicher?
Absolut sicher. Nur eine Erweiterung nutzt offizielle Schnittstellen, was Garantien für Kompatibilität, Sicherheit und Stabilität bringt, wie sie kein Script bringt, schon gar kein KI-generiertes Script. Zumal der Erweiterungs-Code im Gegensatz zum Script-Code sowohl automatisisiert als auch durch Menschen überprüft wird. Dazu garantiert die Signaturprüfung die Integrität der enthaltenen Dateien. Und als Nutzer muss man bei einer Erweiterung auch nicht selbst aktiv nach Updates suchen, das macht der Browser von alleine.
Wenn eine Erweiterung nicht abdecken kann, was ein Script liefert, dann mag das Script in dem Fall eine bessere Lösung sein können. Aber wenn eine Erweiterung alle Anforderungen abdeckt, dann ist es für mich ganz eindeutig, dass eine Erweiterung die bessere Lösung ist. Scripts sind aus meiner Sicht Notfall-Lösungen für Anwendungsfälle, die Erweiterungen nicht können. Scripts für Dinge zu nutzen, die Erweiterungen können, halte ich für komplett sinnlos.
Man ist auf jeden Fall auf einen externen Entwickler angewiesen!
Ich habe es schon erlebt, dass eine Erweiterung einfach nicht mehr weiter entwickelt wurde, und bäm,
es kam der Tag, wo sie ihre Funktion einstellte.Für die Nutzer von Scripts, wie dem Themenstarter, gilt doch nichts anderes.
Bei einem Script, weiß ich mir zu helfen!
Entweder bekomme ich Unterstützung auf diesem Board oder ich bekomme es mit mistal in den Griff.Aus welchem Grund soll das bei einer Erweiterung nicht möglich sein? In beiden Fällen schreibst du JavaScript. Und wenn du nicht weißt, wie du eine Erweiterung signierst, aber sowieso schon eine KI nutzt, kann dir die KI dabei mit Sicherheit auch helfen.
Besser wäre es, dafür dann einen eigenen neuen Thread zu erstellen.
Meinst Du?
Natürlich. Das hat mit dem Anliegen des Themenstarters schließlich überhaupt nichts zu tun.
Das Skript funktioniert bei mir nicht.
Und was ist mit den zwei genannten Erweiterungen?
-
Natürlich. Das hat mit dem Anliegen des Themenstarters schließlich überhaupt nichts zu tun.
Ist ja gut, habe ich längst erledigt.
Immer gleich Schelte verteilen, wo ich doch unschuldig bin
-
Du hast recht!
Wie halt immer 😉
Meine Skripte laufen gar nicht mehr und ich bekomme es nicht mehr zum Laufen.
Sehe es am Skript für die Uhr oben in der Leiste, die nicht mehr angezeigt wird.
Vor einer Woche wurde die Uhr noch 100% angezeigt.toolkit.legacyUserProfileCustomizations.stylesheets ist auf True.
Und diese Dateien sind auf der HD C.
-
Meine Skripte laufen gar nicht mehr
Dann musst du erst diese Anpassungen machen:
BeitragRE: JavaScript in der Nightly 155.0a1 (2026-07-28)
Bitte mal testen.
Die Datei und den Ordner im Installatiosnordner umbenennen.
Dann die .zip entpacken und beides in den Ordner wieder einfügen.
Ordner.zip
2002Andreas29. Juli 2026 um 20:33 PS:
CSS-Codes haben nichts mit den Skripten zu tun.
-
Danke.
Läuft jetzt wieder.
Sehe es an der Uhr.
Habe heute das Update auf 155.0.1 gemacht.
Aber ich habe die Standardversion und nicht Nightly.Nur das Symbol in der Sidebar "Downloads" erscheint nicht.
Auch nicht zum Ankreuzen unter "Sidebar anpassen", "Werkzeuge".Hier nochmals meine Dateien.
PS:
Das mit den CSS Codes weiss ich.
Sind aber im selben Ordner Chrome. -