Ein friedliches neues Jahr 2026 wünsche ich allen Menschen, achtet auf eure Gesundheit. Viel Glück...
Beiträge von Mitleser
-
-
Ein kleiner Update
Knapp 1000 Zeilen für eine Leiste? Geht auch kürzer (CSS muss angepasst werden):
JavaScript
Alles anzeigen/* Statusleiste für Firefox, für Änderungen ab 118/119: https://www.camp-firefox.de/forum/thema/112673-userchrome-js-scripte-f%C3%BCr-den-fuchs-diskussion/?postID=1234805#post1234805*/ (function() { if (location != 'chrome://browser/content/browser.xhtml') return; var tb = document.createXULElement('toolbar'); tb.id = 'new-toolbar'; tb.setAttribute('customizable', true); tb.setAttribute('mode', 'icons'); tb.setAttribute("context","toolbar-context-menu"); var vbox = document.createXULElement('vbox'); document.getElementById('browser').parentNode.insertBefore( vbox, null); vbox.appendChild(tb); CustomizableUI.registerArea('new-toolbar', {legacy: true}); CustomizableUI.registerToolbarNode(tb); })();CSS
Alles anzeigen#new-toolbar{ background-color: gray !important; border: none !important; border-top: 1px solid orange !important; box-shadow: none !important; --toolbarbutton-inner-padding: 6px !important; --toolbarbutton-outer-padding: 0px !important; overflow: hidden !important; bottom: 0 !important; height: 0px !important; min-height: 0px !important; max-height: 0px !important; margin-top: -4px !important; margin-bottom: 0px !important; opacity: 0 !important; transition: height .1s linear .1s, min-height .1s linear .1s, max-height .1s linear .1s, opacity .1s linear .1s, margin-top .1s linear .1s !important; } #new-toolbar:hover { height: 22px !important; min-height: 22px !important; max-height:22px !important; margin-top: 1px !important; opacity: 1 !important; transition: height .3s linear .3s, min-height .3s linear .3s, max-height .3s linear .3s, opacity .3s linear .3s, margin-top .3s linear .3s !important; overflow: hidden !important; } /*■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/ #new-toolbar { background-color: gray!important; max-height: 22px!important; box-shadow: none !important; overflow: hidden!important; } /*■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/ #new-toolbar toolbarbutton .toolbarbutton-icon { margin-bottom: -3px !important; margin-top: -3px !important; overflow: hidden !important; } /*■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/ #new-toolbar toolbarbutton, #new-toolbar .toolbarbutton-1 { height: 22px !important; min-height: 22px !important; max-height: 22px !important; overflow: hidden !important; min-width: fit-content !important; } #new-toolbar toolbarbutton:hover, #new-toolbar .toolbarbutton-1:hover { background-color: lightgray !important; } #new-toolbar toolbarbutton:active, #new-toolbar .toolbarbutton-1:active { background-color: lightgray !important; } /*■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/ #new-toolbar .toolbarbutton-1 { margin-top: -2px !important; } #new-toolbar toolbarbutton { margin-bottom: -1px !important; } /*■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/ :root[customizing] #new-toolbar{ height: 22px !important; min-height: 22px !important; max-height: 22px !important; margin-top: 0px !important; opacity: 1 !important; transition: none !important; } :root[customizing] #new-toolbar:hover{ height: 22px !important; min-height: 22px !important; max-height: 22px !important;/**/ margin-top: 0px !important; opacity: 1 !important; transition: none !important; } -
Uwe Kockisch aka Commissario Brunetti ist leider gestorben
Er war Commissario Brunetti: Schauspieler Uwe Kockisch ist totAls Kommissar ermittelte er in Venedig, in „Weissensee” spielte er einen Stasi-Mann: Jetzt ist Uwe Kockisch mit 81 Jahren in Madrid gestorben. Der alswww.mopo.de -
-
Horstmann
Wenn ich keine CSS-Hervorhebung im jeweiligen Editor möchte, kann ich das CSS einfach nur in js einbinden (auch shadowroot funzt damit). Genauso war es in der Zeit vor diesem wirklich nützlichen Script.Icons in shadow-root könnte man damit im Prinzip auch ändern mit einem relativen Pfad, dazu habe ich aber keine komplett überzeugende Lösung gefunden
Ich mach das so (In dieser Datei befindet sich lediglich der relative Pfad auf das Icon; fill usw. nicht):
JavaScript
Alles anzeigen// userChromeShadowIcons.css.uc.js (function() { if (location != 'chrome://browser/content/browser.xhtml') return; const // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ IconPath1 = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons', 'ff_svg')), // Pfad zum 1.Ordner der das .svg-Symbol (mit: fill="context-fill" fill-opacity="context-fill-opacity") beinhaltet. IconPath2 = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')); // Pfad zum 2.Ordner der das .svg-Symbol (mit: fill="context-fill" fill-opacity="context-fill-opacity") beinhaltet. // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ const sss = Components.classes['@mozilla.org/content/style-sheet-service;1'].getService(Components.interfaces.nsIStyleSheetService); const uri = Services.io.newURI('data:text/css;charset=utf-8,' + encodeURIComponent(` #tabbrowser-arrowscrollbox::part(scrollbutton-up), #tabbrowser-arrowscrollbox::part(scrollbutton-down) { list-style-image: url("${IconPath2}/arrow-left.svg") !important; } #tabbrowser-arrowscrollbox[scrolledtostart="true"]::part(scrollbutton-up), #tabbrowser-arrowscrollbox[scrolledtoend="true"]::part(scrollbutton-down) { list-style-image: url("${IconPath2}/arrow-right.svg") !important; } `), null, null); sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET); })();Hier die dazugehörige userChromeShadow.css:
CSS
Alles anzeigen/* userChromeShadow.css*/ /*■■■■■■■■■■■■■■■■scrollbuttons tableiste■■■■■■■■■■■■■■■■■■■■■■■■■*/ #tabbrowser-arrowscrollbox::part(scrollbutton-up), #tabbrowser-arrowscrollbox::part(scrollbutton-down) { appearance: none !important; background-color: gray !important; box-shadow: none !important; border: 0 !important; border-radius: 0 !important; width: 32px !important; min-width: 32px !important; max-width: 32px !important; overflow: hidden !important; padding-top: 0 !important; padding-bottom: 0 !important; } /*■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/ #tabbrowser-arrowscrollbox::part(scrollbutton-up):hover, #tabbrowser-arrowscrollbox::part(scrollbutton-down):hover { appearance: none !important; background-color: lightgray !important; } /*■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/ #tabbrowser-arrowscrollbox { &::part(scrollbutton-up), &::part(scrollbutton-down) { --arrowscrollbox-scrollicon-hover-background-color: unset !important; --arrowscrollbox-scrollicon-active-background-color: unset !important; } } /*■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/ #tabbrowser-arrowscrollbox::part(scrollbutton-up), #tabbrowser-arrowscrollbox::part(scrollbutton-down) { fill: green !important; fill-opacity: 1.0 !important; } #tabbrowser-arrowscrollbox::part(scrollbutton-up):hover, #tabbrowser-arrowscrollbox::part(scrollbutton-down):hover { fill: white !important; fill-opacity: 1.0 !important; } #tabbrowser-arrowscrollbox[scrolledtostart]::part(scrollbutton-up), #tabbrowser-arrowscrollbox[scrolledtoend]::part(scrollbutton-down) { fill: red !important; fill-opacity: 1.0 !important; opacity: 1.0 !important; background-color: gray !important; } #tabbrowser-arrowscrollbox[scrolledtostart]::part(scrollbutton-up):hover, #tabbrowser-arrowscrollbox[scrolledtoend]::part(scrollbutton-down):hover { fill: red !important; fill-opacity: 0.6 !important; opacity: 1.0 !important; } -
Habt ihr eine Idee wie man das anpassen muss?
Im Wesentlichen geht es um #urlbar-background. Daraus wurde .urlbar-background.
Hier mal 'mein' bereits angepasstes Script als Beispiel:JavaScript
Alles anzeigen// JavaScript Document // LoadingBar.uc.js // Location Bar Enhancer5.1; Loading Bar0.3.0 // Firefox 145 (function (){ if (location.href !== 'chrome://browser/content/browser.xhtml') return; var cssStr = ` #urlbar { --lb-stripes-A-0: rgba(74,74,74,0) !important; --lb-stripes-A-1: rgba(74,74,74,1) !important; --lb-stripes-B-0: rgba(204, 82, 0,0) !important; --lb-stripes-B-1: rgba(204, 82, 0,0.5) !important; } .urlbar-background { background-color: var(--lb-stripes-A-1) !important; } .urlbar-background { background-image: repeating-linear-gradient(-60deg, var(--lb-stripes-A-0), var(--lb-stripes-A-0) 4px, var(--lb-stripes-A-1) 4px, var(--lb-stripes-A-1) 8px), linear-gradient(to right, var(--lb-stripes-B-0) 0%, var(--lb-stripes-B-1) 100%); background-size: 0% 0%; background-repeat:repeat-x, no-repeat; transition: background-size 350ms ease-in-out 0ms; } .urlbar-background:not([style="background-size: 0% 100%;"]) { /* transition: background-size 350ms ease-in-out 0ms;*/ animation: progress-bar-stripes 5s linear infinite; } @keyframes progress-bar-stripes { from { background-position: -360px 0; } to { background-position: 360px 0; } } `.replace(/\s{2,}|\r|\n/,""); var style = document.createProcessingInstruction("xml-stylesheet", "type=\"text/css\"" + " href=\"data:text/css;base64," + btoa(cssStr) + "\""); var mainW = document.getElementById("main-window"); document.insertBefore(style, mainW); function main(window) { var {document, gBrowser} = window; function $(id) { return document.getElementById(id) }; var urlbar = $("urlbar"); const cl = '.urlbar-background'; let pageProgress = 0; let async = makeWindowHelpers(window).async; var LoadingBar = { listener: { onChangeTab: function(e) { urlbar.querySelector(cl).style.backgroundSize = '0% 100%'; pageProgress = 0; }, onProgressChange: function(aBrowser,webProgress,request,curSelfProgress,maxSelfProgress,curTotalProgress,maxTotalProgress) { if (gBrowser.contentDocument === aBrowser.contentDocument) { var val = (curTotalProgress-1)/(maxTotalProgress-1); pageProgress = val; urlbar.querySelector(cl).style.backgroundSize = (100*val) + '% 100%'; if (val > 0.9) async(function() { if (pageProgress > 0.95) urlbar.querySelector(cl).style.backgroundSize = '100% 100%'; }, 1000); } }, onStateChange: function() { if (pageProgress > 0.95){ async(function() { urlbar.querySelector(cl).style.backgroundSize = '0% 100%'; pageProgress = 0; }, 1000); }else{ urlbar.querySelector(cl).style.backgroundSize = '0% 100%'; } } } }; gBrowser.tabContainer.addEventListener('TabSelect',LoadingBar.listener.onChangeTab,false); gBrowser.addTabsProgressListener(LoadingBar.listener); unload(function() { gBrowser.tabContainer.removeEventListener('TabSelect',LoadingBar.listener.onChangeTab,false); gBrowser.removeTabsProgressListener(LoadingBar.listener); }, window); } watchWindows(main, "navigator:browser"); function runOnLoad(window, callback, winType) { window.addEventListener("load", function() { window.removeEventListener("load", arguments.callee, false); if (window.document.documentElement.getAttribute("windowtype") == winType) callback(window); }, false); } function runOnWindows(callback, winType) { function watcher(window) { try { callback(window); } catch(ex) {} } let browserWindows = Services.wm.getEnumerator(winType); while (browserWindows.hasMoreElements()) { let browserWindow = browserWindows.getNext(); if (browserWindow.document.readyState == "complete") watcher(browserWindow); else runOnLoad(browserWindow, watcher, winType); } } function watchWindows(callback, winType) { function watcher(window) { try { callback(window); } catch(ex) {} } runOnWindows(callback, winType); function windowWatcher(subject, topic) { if (topic == "domwindowopened") runOnLoad(subject, watcher, winType); } Services.ww.registerNotification(windowWatcher); unload(function() { Services.ww.unregisterNotification(windowWatcher) }); } function unload(callback, container) { let unloaders = unload.unloaders; if (unloaders == null) unloaders = unload.unloaders = []; if (callback == null) { unloaders.slice().forEach(function(unloader) { unloader() }); unloaders.length = 0; return null; } if (container != null) { container.addEventListener("unload", removeUnloader, false); let origCallback = callback; callback = function() { container.removeEventListener("unload", removeUnloader, false); origCallback(); } } function unloader() { try { callback(); } catch(ex) {} } unloaders.push(unloader); function removeUnloader() { let index = unloaders.indexOf(unloader); if (index != -1) unloaders.splice(index, 1); } return removeUnloader; } function makeWindowHelpers(window) { let {clearTimeout, setTimeout} = window; function async(callback, delay) { delay = delay || 0; let timer = setTimeout(function() { stopTimer(); callback(); }, delay); function stopTimer() { if (timer == null) return; clearTimeout(timer); timer = null; } } return { async: async, }; } })(); -
Moin 2002Andreas . Ich habe das über eine Rufumleitung auf einen internen Anrufbeantworter gelöst.
Ungefähr so:
Rufumleitung > Alle Anrufe ohne Rufnummer an.... > Anrufe umleiten auf internen Anrufbeantworter > unbekannter Anrufer > Hier können Sie die konfigurierte Rufumleitung bearbeiten > Alle Anrufe ohne Rufnummer an > Anrufe umleiten auf internen Anrufbeantworterund
Anrufbeantworter Name: unbekannter Anrufer>
Anrufbeantworter > Anrufe > an alle Rufnummern > Rufannahme sofort > Nachrichten aufnehmenKlingelt nicht, und so kann auch der Bot selber eintscheiden ob er dir eine Nachricht hinterlässt,

Der Privatanrufer mit versteckter Nummer hat aber wenigstens die Chance eine Nachricht zu hinterlassen und verschwindet nicht gleich im Nirvana.. -
Ich will aber nichts hören, hab extra die Testmaschine angeworfen
👏
-
Das Scroll Feature funktioniert bei mir am Mac leider nicht.
Hast du das in einem neuen Profil (ohne andere Toolbars) getestet? Mein Verdacht: Doppelte Nutzung der id #vert_toolbox. Und dort top: mit !important;. Dann kann das js toolbox.style.top = curPos + 'px'; das css nicht überschreiben. Sonst habe ich auch keine Lsg. parat.
-
FuchsFan DANKESCHÖN für das Testen! Das beruhigt mich dann ja schoneinmal ein wenig...
-
Horstmann, wiedereinmal DANKE fürs Testen!
Hier (Linux mit neuem Firefoxprofil) läuft es. Vielleicht funzt es ja unter Windows auch nicht? Das kann ich leider auch nicht testen.
-
Update am 2025-12-05: Neue Version (Die vertikale Position der Leiste kann jetzt gescrollt werden).
-
Update von 00_FlyVertToolbarWithButton_lite.uc.js vom 2025-12-05 gibt es jetzt (und für zukünftige Versionen nur noch) in Beitrag #1 in diesem Thema:
Schaltbare vertikale Overlay-Zusatzleiste ! -
Also Schwamm drüber, ja?
Ja gerne, entschuldige bitte meine Aussage:
ZitatDas ist doch wiedermal Schrott; niemand braucht das!
Ich war einfach nur genervt von äußeren Umständen; Sorry! Das ist bestimmt kein Grund so überzureagieren.
-
Danke! Habe ich geändert!
ZitatDu bist Dir sicher, dass Deine Leiste "gebraucht" wird?
Siehe
BeitragRE: Seitennavigation - Fly Out Menü
Horstmann , die Idee deiner 'Toggle newtoolbar 7D' fand ich gut und habe diese jetzt endlich (nach einem Jahr) für mich umgesetzt und angepasst. Wenn du mal schauen mochtest:
(Versteckter Text)
(Versteckter Text)
EDIT: 2025-12-05: NEUE VERSIONEN ERSCHEINEN IN ZUKUNFT IN BEITRAG #1 IN DIESEM THEMA:
Schaltbare vertikale Overlay-Zusatzleiste !

(Quelltext, 334 Zeilen)
Mitleser2. Juni 2025 um 18:37 ...Downloads
-
-
Ich meinte: Wenn du einen Eintrag im Kontextmenü beeinflussen möchtest solltest du ihn ersteinmal selber erstellen, nur dann kanst du diesen auch buttonbezogen abrufen. (das kann funktionieren, muss aber nicht => Theorie)
Ich habe bis jetzt! auch keine Lsg. gefunden. Viel Glück...
Funzt merkwürdigerweise auch nicht:
JavaScript
Alles anzeigen//contextmenu const xyz = document.getElementById("test_button_id"); xyz.addEventListener('contextmenu', () => { if (event.button === 2) { blabla(); } }); function blabla () { const abc = document.getElementById("toolbar-context-menu"); const def = abc.querySelector(".customize-context-removeFromToolbar"); def.style.outline = "2px solid orange"; }Kann ja auch nicht, denn in der Funktion 'blabla' fehlt ja irgendwie auch der Bezug zur ID des Buttons...
-
Dein JS Code ist etwas zu fortgeschritten für mein Vermögen; was reduziert bei dir den Rechtsklick auf den Button - preventDefault ?
-
Horstmann Du fragst eine bestehende Klasse, die für alle Kontextmenüs gilt ab und veränderst diese. Ich denke, dass eine zusätzliche Klasse mit der ID des Kontextmenüs zuerst generiert werden müsste (.classList.add); um sie dann per querySelector beeinflussen zu können. Schematisches Beispiel:
JavaScript//contextmenu const abc = document.getElementById("Kontextmenü").classList.add('NeueKlasse'); document.getElementById("test_button_id").addEventListener('contextmenu', e => { if (event.button === 2) { let contexter = abc.querySelector("NeueKlasse"); contexter.style.outline = "2px solid orange"; } }); -
Dann wandert er in das Überhangmenü.
Ist bei LINUX nicht so und der Button wird lediglich verkleinert und wandert eben nicht in das Überhangmenü; deshalb die Frage ob das auf dem MAC ebenso ist.
Zur Sicherheit sollte man also das: button.style.minWidth = 'fit-content'; lieber nicht löschen!Bitte eine Erklärung, wenn ich die Link-Adresse(siehe Bild oben) zu meinem Installationsordner eingebe, so erscheint dieses Fenster, und nicht der Win-Explorer.
Kannn ich nicht beantworten, da LINUX.
DANKE fürs testen!
