Und hier meins:
Icon: 16synchronization_moz.svg
JavaScript
// JavaScript Document
// B_RestartFirefox.uc.js
// Das Script erstellt einen Button, der Firefox neu startet. Linksklick: Neustart MIT löschen Js-Cache \ Mittelklick: Neustart OHNE löschen Js-Cache \ Rechtsklick: Neustart OHNE löschen Js-Cache. Das .svg-Icon kann - je nach Hover-Zustand - mit zwei unterschiedlichen Farben gefüllt werden [fill].
// Für das mitgelieferte Icon als .svg-Datei mit [moz-context-properties] ändert das Script die Einstellung [svg.context-properties.content.enabled] in about:config auf 'true'.
(function() {
if (!window.gBrowser)
return;
// ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
const id = 'restart-button'; // Id des neuen Buttons
const label = 'Restart - Quicklink'; // Bezeichnung des neuen Buttons
const tooltiptext = 'Restart - Quicklink\n\nLinksklick: Neustart MIT löschen Js-Cache\nMittelklick: Neustart OHNE löschen Js-Cache\nRechtsklick: Neustart OHNE löschen Js-Cache';
// Icon-------------------------------------------------------
const icon = '16synchronization_moz.svg'; // [Name.Dateiendung] des anzuzeigenden Symbols
const iconPath = '/chrome/icons/'; // Pfad zum Ordner der das Icon beinhaltet
const iconColOu = 'red'; // Farbe des Icons (nur .svg-Datei mit [moz-context-properties], bei anderen Icons hat const iconColOu keine Funktion)
const iconColOv = 'currentColor'; // Farbe des Icons beim Überfahren des Buttons (nur .svg-Datei mit [moz-context-properties], bei anderen Icons hat const iconColOv keine Funktion)
// ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
const curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
const cl = '.toolbarbutton-icon';
//----
if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
}
//----
CustomizableUI.createWidget({
id: id,
type: 'button',
defaultArea: CustomizableUI.AREA_NAVBAR,
label: label,
tooltiptext: tooltiptext,
onCreated: (button) => {
button.style.MozContextProperties = 'fill, stroke, fill-opacity';
button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
button.style.fill = iconColOu;
//over
button.addEventListener('mouseover', () => {
button.style.fill = iconColOv;
button.querySelector(cl).style.rotate = '90deg';
});
//out
button.addEventListener('mouseout', () => {
button.style.fill = iconColOu;
button.querySelector(cl).style.rotate = '0deg';
});
//click
button.addEventListener('click', () => {
if (event.button == 0) {
Services.appinfo.invalidateCachesOnRestart();
Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);
}
else
if (event.button == 1 || event.button == 2) {
Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);
}
});
}
});
//----
})();
Alles anzeigen