Ich hab woanders noch eine Schnipsel gefunden:
#nav-bar .toolbarbutton-1 { --toolbarbutton-outer-padding: 0px !important;}
--toolbarbutton-outer-padding ist in FF 152 durch --toolbarbutton-padding-outer ersetzt worden
Ich hab woanders noch eine Schnipsel gefunden:
#nav-bar .toolbarbutton-1 { --toolbarbutton-outer-padding: 0px !important;}
--toolbarbutton-outer-padding ist in FF 152 durch --toolbarbutton-padding-outer ersetzt worden
Update am 2026-06-15: Neue Version (Angepasst für FF 152).
A. event.target.ownerGlobal entfernt
B. --toolbarbutton-inner-padding / --toolbarbutton-outer-padding ersetzt durch
--toolbarbutton-padding-inner / --toolbarbutton-padding-outer
juzzlukin , good luck, have fun. Why you don't try a Ki/Ai for this reason? Other without knowledge will use the same way. Verdammt, hier spricht man doch deutsch...
Läuft diese Diskusion gerade 'aus dem Ruder'?
Ein BS solllte mir bei der Arbeit mit Programmen helfen, nicht mich per se beschäftigen; ich möchte einfach nur mit Programmen arbeiten können... das BS sollte mich dabei unterstützen und einfach nur funktionieren...
Hallo juzzlukin , in deinem letzten Beitrag hast du mich zitiert, die screenshots zeigen aber ein anderes Script. Mein Script befindet sich in Beitrag #3. Es hat einen Button mit Symbol. Onclick öffnet die Seite about:addons in einem neuen Tab. Add-Ons werden automatisch aktualisiert oder manuelle Updates werden angezeigt .
Meldungen:
A. Keine Updates gefunden
B. Add-ons wurden aktualisiert
C. Manuelle Updates anzeigen
D. Add-ons werden aktualisiert (> Add-On benötigt neue Berechtigung > Aktualisieren/Abrechen)
E.____
Das Icon befindet sich im Dateianhang des Beitrags und gehört in diesen Ordner:
/chrome/icons/ (Zeile 17 im Script)
Hallo FuchsFan , wenn dass das offizielle update ist, könntest Du das bitte mal verlinken? Ansonsten hätte ich gern die Quelle/Source als Link (wenn möglich).
Hier ein funktionierender Button:
// JavaScript Document
// B_AddonsUpdate.uc.js
// Das Script erstellt einen Button, der die AddOns updatet. Das .svg-Icon kann - je nach Hover-Zustand - mit zwei unterschiedlichen Farben gefüllt werden [fill].
(function() {
if (!window.gBrowser)
return;
const
// ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
id = 'addons-update-button', // Id des Buttons
label = 'Add-ons Update', // Bezeichnung des Buttons
tooltiptext = 'Add-ons aktualisieren',
// Icon-------------------------------------------------------
icon = '16synchronization-13_moz.svg', // [Name.Dateiendung] des Symbols
iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon enthält
iconColOu = 'currentColor', // Farbe des Icons (nur .svg-Datei mit [moz-context-properties], bei anderen Icons hat const iconColOu keine Funktion)
iconColOv = 'yellow', // Farbe des Icons beim Überfahren des Buttons (nur .svg-Datei mit [moz-context-properties], bei anderen Icons hat const iconColOv keine Funktion)
// ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
}
//BUTTON
try {
CustomizableUI.createWidget({
id: id,
defaultArea: CustomizableUI.AREA_NAVBAR,
label: label,
tooltiptext: tooltiptext,
onCreated: (button) => {
button.style.MozContextProperties = 'fill, stroke, fill-opacity, stroke-opacity';
button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
button.style.fill = iconColOu;
button.style.minWidth = 'fit-content';
}
});
} catch(e) {};
const button = document.getElementById(id);
//over
button.addEventListener('mouseover', () => {
button.style.fill = iconColOv;
});
//out
button.addEventListener('mouseout', () => {
button.style.fill = iconColOu;
});
//contextmenu
button.addEventListener('contextmenu', e => {
if (event.button === 2) {
e.preventDefault();
}
});
//click
button.addEventListener('click', () => {
if (event.button == 0) {
update();
}
});
//----
function update () {
let targetUpdateMessage=null;
let categories=null;
openTrustedLinkIn('about:addons', 'tab');
addEventListener('pageshow', function onPageshow(event) {
let document = event.target;
if (document.URL != 'about:addons')
return;
removeEventListener('pageshow', onPageshow);
categories = document.getElementById('categories');
targetUpdateMessage = document.querySelector('#page-header .main-heading #updates-message');
const configObserver = { attributes: true };
const observerUpdateMessage = new MutationObserver(callback);
observerUpdateMessage.observe(targetUpdateMessage, configObserver);
document.querySelector('addon-page-options panel-item[action="check-for-updates"]').click();
});
const callback = (mutationList, observer) => {
for (const mutation of mutationList) {
if (mutation.type === 'attributes') {
message = targetUpdateMessage.getAttribute('state');
if( message == "manual-updates-found" ) {
setTimeout(function() {
gBrowser.selectedTab.linkedBrowser.reload();
}, 1000);
categories.querySelector('button[viewid="addons://updates/available"]').click();
return;
}
else if( message == "none-found" )
{
return;
}
else if( message == "installed" )
{
document.querySelector('addon-page-options panel-item[action="view-recent-updates"]').click();
setTimeout(function() {
categories.querySelector('button[viewid="addons://updates/recent"]').click();
}, 1000);
return;
}
}
}
}
};
})();
Alles anzeigen
Ein Weg mental mit Internet-Trollen umzugehen...
Hallo Mira_Belle ,
Mach doch bitte mal ein paar Vorschläge, denn ich habe auch so meine Probleme für mich das passende "Linux" zu finden.
Nett wäre es, wenn das "Linux" sich an W7 orientieren würde.
mir hat es geholfen das Linux meiner Wahl erst einmal per bootable Stick auszubrobieren; habe Mint Cinnamon (LTS) dann tatsächlich vom Stick installiert, allerdings habe ich auch das alte Windows behalten und kann immernoch (2026) per bootloader 'grub2' auf Win 7 zugreifen.
In der ersten Zeit war das hilfreich auf Win 7 wegen der darauf befindlichen Software, Word-Vorlagen usw. zugreifen zu können, heute ist das einfach nur Ballast.
Bei der Installation von Mint wirst du gefragt ob du das vorhandene BS behalten möchtest, wenn ja wird der bootloader 'Grub2' installiert und du kannst später im Bootvorgang per ESC-Taste das Win-System anstatt des Linux-Systems starten (Dualboot).
Download Linux Mint 22.3 - Linux Mint
Linux Mint Installation Guide — Linux Mint Installation Guide documentation
Create the bootable media — Linux Mint Installation Guide documentation
Hallo Jack D., unter Umständen könntest Du auch mit dem Gedanken spielen ohne Neuanschaffung eines Rechners in Zukunft einfach Deinen scheinbar veralteten vorhandenen Rechner mit einem alternativen Betriebssystem (z.B. Linux) auszustatten (Diese Lsg. benötigt natürlich Gehirnschmalz, Arbeit, ist aber kostenlos und funktioniert). Das könntest Du sofort machen, oder ...
Hallo lenny2 , in 152 wird aus --toolbarbutton-inner-padding --toolbarbutton-padding-inner. Ebenso verhält es sich mit --toolbarbutton-padding-outer. So musste ich z.B. dies ändern um die Buttongröße wieder anzupassen:
Auch dieses Script könnte für Tester der Nightly 152.0a1 nützlich sein; es erstellt einen Button der die 'Neue Sidebar' ein/aus -schaltet:
(EDIT: stand 16.05 funktionieren die 'Neue' sowie die 'Alte (mit hover-css)' 'noch?' gleichzeitig/parallel)
// JavaScript Document
// B_UserPrefSidebarRevamp.uc.js
// Firefox Nightly 152.0a1
// Quelle: https://www...
// Das Script erstellt einen Button, der in about:config boolsche Werte ändert. In der UserConfiguration unter 'const boolPref' kann die zu ändernde Einstellung (hier: sidebar.revamp) festgelegt werden. Das icon/label/tooltiptext kann in der UserConfiguration dem jeweiligen Zustand angepasst werden (true/false).
// Der Button schaltet die neue Sidebar ein/aus. Eine Änderung des Wertes benötigt keinen Neustart des Browsers.
(function() {
if (!window.gBrowser)
return;
const
// ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
id = 'UserPref-Sr-button', // Id des Buttons
boolPref = 'sidebar.revamp', // Einstellung in about:config deren boolesche Variable geschaltet werden soll
labelT = 'Neue Sidebar aktiviert', // Bezeichnung des Buttons bei boolPref=true
labelF = 'Neue Sidebar deaktiviert', // Bezeichnung des Buttons bei boolPref=false
tooltiptextT = 'Neue Sidebar anzeigen\n[true=>Standardeinstellung]',
tooltiptextF = 'Neue Sidebar nicht anzeigen\n[false=>Benutzereinstellung]',
// Icon-------------------------------------------------------
iconT = '16-control-panel-20_moz.svg', // [Name.Dateiendung] des Symbols für boolPref=true
iconF = '16-control-panel-18_moz.svg', // [Name.Dateiendung] des Symbols für boolPref=false
bgImage = 'blue', //'transparent' // Farbe des Indikators (zur Unterscheidung mehrerer UserPref-buttons;)
iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon enthält
iconColorT = 'forestgreen', // Farbe des Icons (nur .svg-Datei mit [moz-context-properties] für die Standardeinstellung, bei anderen Icons hat const iconColorT keine Funktion)
iconColorF = 'firebrick', // Farbe des Icons (nur .svg-Datei mit [moz-context-properties] für die geänderte Usereinstellung, bei anderen Icons hat const iconColorF keine Funktion)
// ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
}
//BUTTON
try {
CustomizableUI.createWidget({
id: id,
defaultArea: CustomizableUI.AREA_NAVBAR,
onCreated: (button) => {
button.style.MozContextProperties = 'fill, stroke, fill-opacity, stroke-opacity';
button.style.minWidth = 'fit-content';
//bgImage
button.style = 'background-image:linear-gradient('+bgImage+','+bgImage+'); background-repeat: no-repeat; background-size: 4px 4px; background-position: left 2px top calc(50% - 8px);';
}
});
} catch(e) {};
setTimeout(() => {
const button = document.getElementById(id);
//start
if (Services.prefs.getBoolPref(boolPref) == false ) {
button.style.fill = iconColorF;
button.style.listStyleImage = 'url("' + curProfDir + iconPath + iconF + '")';
button.style.fontStyle = 'italic';
button.setAttribute('label', labelF);
button.setAttribute('tooltiptext', tooltiptextF);
}
else
if (Services.prefs.getBoolPref(boolPref) == true ) {
button.style.fill = iconColorT;
button.style.listStyleImage = 'url("' + curProfDir + iconPath + iconT + '")';
button.style.fontStyle = 'normal';
button.setAttribute('label', labelT);
button.setAttribute('tooltiptext', tooltiptextT);
}
//contextmenu
button.addEventListener('contextmenu', e => {
if (event.button === 2) {
e.preventDefault();
}
});
//click
button.addEventListener('click', () => {
if (event.button === 0) {
if (Services.prefs.getBoolPref(boolPref) == false ) {
Services.prefs.setBoolPref(boolPref, true);
button.style.fill = iconColorT;
button.style.listStyleImage = 'url("' + curProfDir + iconPath + iconT + '")';
button.style.fontStyle = 'normal';
button.setAttribute('label', labelT);
button.setAttribute('tooltiptext', tooltiptextT);
}
else
if (Services.prefs.getBoolPref(boolPref) == true ) {
Services.prefs.setBoolPref(boolPref, false);
button.style.fill = iconColorF;
button.style.listStyleImage = 'url("' + curProfDir + iconPath + iconF + '")';
button.style.fontStyle = 'italic';
button.setAttribute('label', labelF);
button.setAttribute('tooltiptext', tooltiptextF);
}
}
});
}, 10);
})();
Alles anzeigen
Die Icons/Iconpfade sind identisch
Screen:
Es gibt viel zu tun: Packen wir es an!
Dieses Script könnte für Tester der Nightly 152.0a1 nützlich sein; es erstellt einen Button der das 'Nova-Design' ein/aus -schaltet:
// JavaScript Document
// B_UserPrefNovaEnabled.uc.js
// Firefox Nightly 152.0a1
// Quelle: https://www...
// Das Script erstellt einen Button, der in about:config boolsche Werte ändert. In der UserConfiguration unter 'const boolPref' kann die zu ändernde Einstellung (hier: browser.nova.enabled) festgelegt werden. Das icon/label/tooltiptext kann in der UserConfiguration dem jeweiligen Zustand angepasst werden (true/false).
// Der Button blendet das neue Design 'Nova' ein/aus. Eine Änderung des Wertes benötigt keinen Neustart des Browsers.
(function() {
if (!window.gBrowser)
return;
const
// ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
id = 'UserPref-bNE-button', // Id des Buttons
boolPref = 'browser.nova.enabled', // Einstellung in about:config deren boolesche Variable geschaltet werden soll
labelT = '"browser.nova.enabled" aktiviert', // Bezeichnung des Buttons bei boolPref=true
labelF = '"browser.nova.enabled" deaktiviert', // Bezeichnung des Buttons bei boolPref=false
tooltiptextT = '"browser.nova.enabled" aktiviert\n[true=>Benutzereinstellung]',
tooltiptextF = '"browser.nova.enabled" deaktiviert\n[false=>Standardeinstellung]',
// Icon-------------------------------------------------------
iconT = '16-control-panel-20_moz.svg', // [Name.Dateiendung] des Symbols für boolPref=true
iconF = '16-control-panel-18_moz.svg', // [Name.Dateiendung] des Symbols für boolPref=false
bgImage = 'darkorange', //'transparent' // Farbe des Indikators (zur Unterscheidung mehrerer UserPref-buttons;)
iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon enthält
iconColorT = 'forestgreen', // Farbe des Icons (nur .svg-Datei mit [moz-context-properties] für die Standardeinstellung, bei anderen Icons hat const iconColorT keine Funktion)
iconColorF = 'firebrick', // Farbe des Icons (nur .svg-Datei mit [moz-context-properties] für die geänderte Usereinstellung, bei anderen Icons hat const iconColorF keine Funktion)
// ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
}
//BUTTON
try {
CustomizableUI.createWidget({
id: id,
defaultArea: CustomizableUI.AREA_NAVBAR,
onCreated: (button) => {
button.style.MozContextProperties = 'fill, stroke, fill-opacity, stroke-opacity';
button.style.minWidth = 'fit-content';
//bgImage
button.style = 'background-image:linear-gradient('+bgImage+','+bgImage+'); background-repeat: no-repeat; background-size: 4px 4px; background-position: left 2px top calc(50% - 8px);';
}
});
} catch(e) {};
setTimeout(() => {
const button = document.getElementById(id);
//start
if (Services.prefs.getBoolPref(boolPref) == false ) {
button.style.fill = iconColorF;
button.style.listStyleImage = 'url("' + curProfDir + iconPath + iconF + '")';
button.style.fontStyle = 'normal';
button.setAttribute('label', labelF);
button.setAttribute('tooltiptext', tooltiptextF);
}
else
if (Services.prefs.getBoolPref(boolPref) == true ) {
button.style.fill = iconColorT;
button.style.listStyleImage = 'url("' + curProfDir + iconPath + iconT + '")';
button.style.fontStyle = 'italic';
button.setAttribute('label', labelT);
button.setAttribute('tooltiptext', tooltiptextT);
}
//contextmenu
button.addEventListener('contextmenu', e => {
if (event.button === 2) {
e.preventDefault();
}
});
//click
button.addEventListener('click', () => {
if (event.button === 0) {
if (Services.prefs.getBoolPref(boolPref) == false ) {
Services.prefs.setBoolPref(boolPref, true);
button.style.fill = iconColorT;
button.style.listStyleImage = 'url("' + curProfDir + iconPath + iconT + '")';
button.style.fontStyle = 'italic';
button.setAttribute('label', labelT);
button.setAttribute('tooltiptext', tooltiptextT);
}
else
if (Services.prefs.getBoolPref(boolPref) == true ) {
Services.prefs.setBoolPref(boolPref, false);
button.style.fill = iconColorF;
button.style.listStyleImage = 'url("' + curProfDir + iconPath + iconF + '")';
button.style.fontStyle = 'normal';
button.setAttribute('label', labelF);
button.setAttribute('tooltiptext', tooltiptextF);
}
}
});
}, 10);
})();
Alles anzeigen
We Love Udo
im Submenü mit Immer anzeigen etc. sind alle Einträge Radios.
Das hatte ich mir schon gedacht. Im den Screens 1+2 sind aber Symbole für Checkboxen (content: "\2713"; /* a checkmark */) dargestellt.
Naja, in Linux eben nicht da sind Radios Radios und Checkboxen Checkboxen, so wie es im Quellcode steht. Deshalb die Verwirrung.
Aber warum ist deine Darstellung (Screen 3+4) der Radiob. so angelehnt an die Checkb.? Radiob. auch im Zusammenhang mit Websitecontent/about:preferences könnten dort sinnvoller sein. So aber jetzt stelle ich die Menüleiste endgültig auf display:none;
!
Ah, jetzt macht das Sinn;
Welche Symbole zeigt denn der Mac an diesen Menüpunkten? Nichts/nur Checkboxen? Aber jetzt verstehe ich auch dein "gleichmachendes" css aus Beitrag #35.
Ich betrachte allerdings die Menüleiste als Teil des Browsers und dort wird ja auch zwischen den Check/Radiobuttons unterschieden. Jedenfalls auf Linux:
Menüleiste eingeblendet bei offenem Einstellungstab ist dann doch verwirrend, wenn in der Ml. nur Checkboxen zu sehen sind.
Aber das ist schon kleinlich...So und nun blende ich sie wieder aus..
Ohje. „Form follows function” erinnert in gewisser Hinsicht an „Never change a running system” –
Der Ausdruck Form follows function (englisch für: ‚Form folgt Funktion‘, im Deutschen oftmals auch als vollständiger Satz „Die Form folgt der Funktion“ gebraucht) (FFF) ist ein Designleitsatz insbesondere aus dem Produktdesign und der Architektur. Die Gestalt (äußere Form) von Gegenständen soll sich dabei aus ihrer Funktion oder ggf. ihrem Zweck ableiten; im Gegenzug kann man nach Abschluss der Formgebung aus der Form des designten Gegenstands gegebenenfalls auf dessen Funktion bzw. Zweck rückschließen.
[Wikipedia]
Aber im Design der Menüleiste von Firefox wird ganz bewusst auf einen Unterschied verzichtet.
Linux fügt hier die Systemsymbole hinzu:
Aber scheinbar habe ich das lediglich falsch verstanden. Im Sidebar-Untermenü verwirrt mich die Darstellung schon ein wenig.
, aber wo ist der Funktionsaspekt, bzw. der funktionale Unterschied zw. checkbox und radio
Es besteht ein grundlegender Unterschied zwischen ihnen. In einer Checkbox-Gruppe kann ein Benutzer mehrere Optionen auswählen. Jede Checkbox funktioniert einzeln, sodass der Benutzer jede Antwort einzeln aktivieren oder deaktivieren kann. Optionsfelder hingegen funktionieren als Gruppe und bieten sich gegenseitig ausschließende Auswahlmöglichkeiten.
Wobei die Darstellung Menüleiste > Ansicht > Sidebar als Checkboxen dann nicht richtig wäre, die unter Webseiten-Stil als Radiobuttons aber schon...
Im Quellcode: type="checkbox"

Im Quellcode: type="radio"