Mh, Bilder sagen mehr aus, als tausend Worte!
Und da wäre ja dann auch noch die Sprachbarriere und eben Missverständnisse.
Beiträge von Mira_Belle
-
-
Mit Windows 8.1 hinkst Du aber wirklich ein wenig weit hinterher!
Windows 10 kann man mittlerweile ganz gut händeln und dem nach Hause telefonieren den gar aus machen!
-
Hier das vorläufige Ergebnis!
Es funktioniert so weit! Aber es ist noch etwas feinschliff nötig!
Der Button für das Menü, ob groß oder klein, ist etwas unscharf, muss noch behoben werden.
Die Symbole möchte ich in einen CSS-Teil auslagern und
die "gespiegelten" Menüs der Menüleiste haben ja noch keine Symbole.Auch der Header soll und muss Neu!
Zwar basiert das erste Skript auf eine Vorlage von aborix,
aber ist mittlerweile so weit verändert, dass es mit der Vorlage nicht mehr viel gemein hat!Das zweite Skript stammt von Jizz!
Es ist nahezu unverändert und braucht noch einen Header!Hier erst einmal die Vorversionen:
JavaScript
Alles anzeigen// ==/UserScript== 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: 0, // 0: TabsToolbar; 1: navbar; 2: toolbar-menubar isButton: 0, // 0: Hamburger,klein; 1: Firefox,groß, // Hotkey zum Öffnen des Appmenüs oder leer ('') hotkey: 'x', 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: "data:image/svg+xml;base64,PCEtLSBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljCiAgIC0gTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcwogICAtIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uIC0tPgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2IiBmaWxsPSJjb250ZXh0LWZpbGwgIzBiMGIwYiI+CiAgPHBhdGggZD0iTTE0IDNIOC4xNUw2LjU4IDEuNTRBMiAyIDAgMCAwIDUuMjIgMUgyYTIgMiAwIDAgMC0yIDJ2MTBhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjVhMiAyIDAgMCAwLTItMnpNNS4yMiAzbDEuMDcgMUgyVjN6TTE0IDEzSDJWNWg2di0uMDFsLjE1LjAxSDE0eiIvPgo8L3N2Zz4K" }, { name: 'Firefox Funktionen', image: "data:image/svg+xml;base64,PCEtLSBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljDQogICAtIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMNCiAgIC0gZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4gLS0+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgZmlsbD0iY29udGV4dC1maWxsIiA+DQogIDxwYXRoIGQ9Ik0xOTAuMzY4IDE1MC41OTFjMC4xNTcgMC4wMDkgMC4wNzkgMC4wMDMgMCAwem0tNTcuODc0LTI4LjkzM2MwLjE1OCAwLjAwOCAwLjA3OSAwLjAwMyAwIDB6bTM0Ni4yMjggNDQuNjc0Yy0xMC40NDUtMjUuMTIzLTMxLjYtNTIuMjQ4LTQ4LjIxMS02MC44MiAxMy41MiAyNi41IDIxLjM0NSA1My4wOTMgMjQuMzM1IDcyLjkzNSAwIDAuMDQgMC4wMTUgMC4xMzYgMC4wNDcgMC40LTI3LjE3NS02Ny43MzItNzMuMjU0LTk1LjA0Ny0xMTAuODg2LTE1NC41MTItMS45LTMuMDA4LTMuODA1LTYuMDIyLTUuNjYxLTkuMmE3My4yMzcgNzMuMjM3IDAgMCAxLTIuNjQ2LTQuOTcyIDQzLjc1NyA0My43NTcgMCAwIDEtMy41ODUtOS41IDAuNjI1IDAuNjI1IDAgMCAwLTAuNTQ2LTAuNjQ0IDAuOCAwLjggMCAwIDAtMC40NTEgMGMtMC4wMzMgMC4wMTEtMC4wODQgMC4wNTEtMC4xMTkgMC4wNjUtMC4wNTMgMC4wMi0wLjEyIDAuMDY5LTAuMTc2IDAuMDk1IDAuMDI2LTAuMDM2IDAuMDgzLTAuMTE3IDAuMS0wLjEzNS01My40MzcgMzEuMy03NS41ODcgODYuMDkzLTgxLjI4MiAxMjAuOTdhMTI4LjA1NyAxMjguMDU3IDAgMCAwLTQ3LjYyNCAxMi4xNTMgNi4xNDQgNi4xNDQgMCAwIDAtMy4wNDEgNy42MyA2LjAzNCA2LjAzNCAwIDAgMCA4LjE5MiAzLjUyNSAxMTYuMTc1IDExNi4xNzUgMCAwIDEgNDEuNDgxLTEwLjgyNmMwLjQ2OC0wLjAzMyAwLjkzNy0wLjA2MiAxLjQwNS0wLjFhMTE3LjYyNCAxMTcuNjI0IDAgMCAxIDUuOTMyLTAuMjExIDEyMC44MzEgMTIwLjgzMSAwIDAgMSAzNC40OTEgNC43NzdjMC42NTQgMC4xOTIgMS4yOTUgMC40MTQgMS45NDYgMC42MTZhMTIwLjE1IDEyMC4xNSAwIDAgMSA1LjUzOSAxLjg0MiAxMjEuODUyIDEyMS44NTIgMCAwIDEgMy45OTIgMS41NjRjMS4wNzQgMC40MzQgMi4xNDggMC44NjggMy4yMDYgMS4zMzFhMTE4LjQ1MyAxMTguNDUzIDAgMCAxIDQuOSAyLjMwN2MwLjc0MyAwLjM2OCAxLjQ4NSAwLjczNSAyLjIxNyAxLjExN2ExMjAuNTM1IDEyMC41MzUgMCAwIDEgNC42NzUgMi41ODcgMTA3Ljc4NSAxMDcuNzg1IDAgMCAxIDIuOTUyIDEuNzc2IDEyMy4wMTggMTIzLjAxOCAwIDAgMSA0Mi4wMjggNDMuNDc3Yy0xMi44MzMtOS4wMTUtMzUuODEtMTcuOTE4LTU3Ljk0Ny0xNC4wNjggODYuNDQxIDQzLjIxNCA2My4yMzQgMTkyLjAyNy01Ni41NDUgMTg2LjQwOGExMDYuNyAxMDYuNyAwIDAgMS0zMS4yNzEtNi4wMzEgMTMyLjQ2MSAxMzIuNDYxIDAgMCAxLTcuMDU5LTIuODg2Yy0xLjM1Ni0wLjYxOC0yLjcxMS0xLjI0My00LjA1MS0xLjkzNS0yOS4zNDktMTUuMTY4LTUzLjU4My00My44MzMtNTYuNjExLTc4LjY0MyAwIDAgMTEuMDkzLTQxLjMzNSA3OS40MzMtNDEuMzM1IDcuMzg4IDAgMjguNTA4LTIwLjYxNCAyOC45LTI2LjU5My0wLjA5LTEuOTUzLTQxLjkxNy0xOC41OS01OC4yMjMtMzQuNjU2LTguNzE0LTguNTg1LTEyLjg1MS0xMi43MjMtMTYuNTE0LTE1LjgyOWE3MS43IDcxLjcgMCAwIDAtNi4yMjUtNC43IDExMS4zMzUgMTExLjMzNSAwIDAgMS0wLjY3NS01OC43MzNjLTI0LjY4NyAxMS4yNDItNDMuODkgMjkuMDExLTU3Ljg0OSA0NC43aC0wLjExMWMtOS41MjgtMTIuMDY3LTguODU1LTUxLjg3My04LjMxMi02MC4xODQtMC4xMTQtMC41MTYtNy4xMDcgMy42My04LjAyNCA0LjI1NGExNzUuMjEgMTc1LjIxIDAgMCAwLTIzLjQ4NiAyMC4xMiAyMTAuNSAyMTAuNSAwIDAgMC0yMi40NDMgMjYuOTEzYzAgMC4wMTItMC4wMDcgMC4wMjUtMC4wMTEgMC4wMzcgMC0wLjAxMiAwLjAwNy0wLjAyNSAwLjAxMS0wLjAzOGEyMDIuODM3IDIwMi44MzcgMCAwIDAtMzIuMjQ0IDcyLjgxYy0wLjA1OCAwLjI2NS0yLjI5IDEwLjA1NC0zLjkyIDIyLjE0N2EyNjUuNzk0IDI2NS43OTQgMCAwIDAtMC43NjkgNS42NTFjLTAuNTU4IDMuNjM2LTAuOTkyIDcuNi0xLjQyIDEzLjc2Ny0wLjAxOSAwLjIzOS0wLjAzMSAwLjQ3NC0wLjA0OCAwLjcxMmE1OTEuMTUyIDU5MS4xNTIgMCAwIDAtMC40ODEgNy45OTVjMCAwLjQxMS0wLjAyNSAwLjgxNi0wLjAyNSAxLjIyNyAwIDEzMi43MDkgMTA3LjYgMjQwLjI5IDI0MC4zMjQgMjQwLjI5IDExOC44NjUgMCAyMTcuNTU5LTg2LjI4OCAyMzYuODgyLTE5OS42MyAwLjQwNy0zLjA3NSAwLjczMi02LjE2OCAxLjA5Mi05LjI3IDQuNzc3LTQxLjIxLTAuNTMtODQuNTI1LTE1LjU4OC0xMjAuNzQ3em0tMTY0LjA2OCA3Mi4xeiIvPg0KPC9zdmc+" }, { name: 'separator', }, ], apps: [ /* Directories */ // Untermenü Firefox Verzeichnisse { name: 'Profil', root: 'ProfD', path: '\\', subdir: 'Firefox Verzeichnisse', image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Qzc3OTM4REU3NkFEMTFFMkJGRDBENEQyQ0IxOTY5MEIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qzc3OTM4REY3NkFEMTFFMkJGRDBENEQyQ0IxOTY5MEIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDNzc5MzhEQzc2QUQxMUUyQkZEMEQ0RDJDQjE5NjkwQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDNzc5MzhERDc2QUQxMUUyQkZEMEQ0RDJDQjE5NjkwQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pk3JkLkAAAL0SURBVHjadJPba1xVFMZ/+8yZMZ3MZCaJSUNaWqkkKY2k2kDwWm21lgRMhBSFWpJC60MVLIXqkz70DyiIF1A0iLRoK1YtJA+2Sm0CQWIg+GATgiUwkmSSSWaSmcz1XLbrTEZTxC7Yh7XXWetb37ps9dZXU3jiuPoHy3H7XFejuUeU8j4VHXxy9xvqus/gZc9gena9CdD36UBnWddbIfzz3ztGxX7mynSfYeiybmploPVmzsHPJyg5Dt5VSSbD/wDmWozI8El2hDPk8rCcj2AOXMXQFp6jaZshcG0sK8fQ6S7EjFSBIfB+0d978SiPHQgSqW9nLQO5yTnWLp0SynY5sXFw/DiHf30FxwhQkICPbsfJ2XBrAX5JQ2Ylgatq0L46HN1IYNt2CqsJurs7eeH5RzE8Bo4ZvIxZhSsA+1uaGBqb50gz1AQo027pfJrd7e0cPfYUr5/rpVgsYdnuZduWElzUt5aj+n8b+ZpP1h9iJS/Ugg287w/w9jMNjLS10XnkIOvzKySTa2QzOUqhRoqF4mtoVaWGzj2nu7qPo1wL7TrSGIEMPsj56wliiQz1/jyXTlBuaCqVJr64RLhhP+HaRiZGvsS0LIfG3Y8wfuUCyvDJaGQ8AvJh76sCFoX0LMnYn2QC25lfWGZjbpJd9TPsGfyMknTclPmTT/1FKBisAGxOPjZxlVD8R5r3thHYd4b1uTvkMinMpgN07Jxh9ZuXZJR7ZA+0wkkvEqreJgCGZNesdrzLrp+eYEf/G/ir8lS1Pknt42dpy8p4kjepXb9GsFBN17UPMFwBMAsJojUhoqFqIuEQ1ugF/L4iti6R+v0L4t91Idgon4kz2sPq1BCWU5JkUkK2YN/+fnjsWf3vAisJ9NPaXGBjaZas7IKW3qYuVpbbRxksuDRTdvesD8uJ8h/54x0m3aY6WcfAPS+CrVdi2bjxFcyP3zx0d+vReNlNeqI3GJ7m7GGSF4Wmyf+IVG7/PMt5xf0lUmF3Px+P0t2/BRgAgYA3fi+XoFwAAAAASUVORK5CYII=' }, { name: 'chrome', root: 'ProfD', path: '\\chrome', subdir: 'Firefox Verzeichnisse', image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACnElEQVR4Xm2RzYtbZRSHn/fr3pvJzTB3qiNM2k2pMBUGhEHaqsUqdeFGQalCobgREaFu/B/cqCtxVSjoQhBEQRBmIfWDKgNGJUPt0Nhah9JJ4iSd5E6+bu5972tAO4SS5/DjXZ1znsMrNiq1eikMQqYYJCmjxNH5+zdW777L0J5KKl9VPmnf+ut9KWkwhbheuzNcOVYOmGKc5iRO0r1ykeXCx0h7kt4fC3z5wfqbQnAJwQHa5S7jAZSRuJ0mkf81cheobhBXZa+ri1uptQjHAZoZCEC1PiPgDuwxCfwerBU7b73zXn//3usCcdt4HkZ7SGZg431U51NUCgwlO3cV/bVXhR/6p9ut+nP9QYeNn7/n8qUPZxvQ/Q6VVWHk4ZqWRvlJjpx9hcGfW2wO95N2q8m3618A2WwDt/0RplSAXsBed57eyossHl5GYdHacG3zGpADM06wjQ1UUIN+CLHPvfAxojPnKLiE+bDE1R9+5GatAmgPeGCAteQ7l5GBhGSyuROyd/gFouUyWkqEErR2mwXAAA8BRS0AgMQBjSra30ZkEeDzz9Dn4ZcvMO51SMcJcTdGChmA0ABA6cAgzyG3I8jLEBylV4fWoaeIc0V7t0Uv7pFbC+CA+28mp/8+SwXKnMVmz1O9HpE+eobMZdjcoY1GIHD/NwIdoH1fBaNguzlg88pVyoUi4vTbFI8eJxsNAIfSkrliESllH/L0v0jktNNomFGv1TFrL3Fo9QSMR3jaEEXzLC09gjaKp595No0WjyCEB4zRclICUMDxtRMce/wJ1MIi2SglXShhfI/cOjxPoZRmbq4gXzt/gVrtBrdvbiG+Wf+p/mvll1BpiVAGhCDPxuAUDotz4HKHlIJON6bRbL4hhPjcMx5mkn8BBLEUrsVZbq0AAAAASUVORK5CYII=' }, { name: 'CSS', root: 'ProfD', path: '\\chrome\\css', subdir: 'Firefox Verzeichnisse', image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAatJREFUeNqkU7tKA0EUPbM7boISNKhBsLRQ9AMECx8EEQstgqVgL1iYyg+w1UbwC6ziA1TyA7FKjCKiYCGihSAIikiIJptZ7527amIjmmWHnXNn7jn3tSoIAjTzOGjy0cerI2umZtKB+VskylFwXGdds/Pw/AzgG8ByKHrV901OUYV2i41stYP81mFaW+X3MnC5IZctgabkaBmfbDWWo9VCe18WKw0tgX21dfJfgbE9IJEUlccjIJcKbWNi200Ao3X4fNkKasvml8R5p5OUSSn1IPXly9txCreNoCc40wG0tAJ9czZV6UJQEVavHYh2A9lB2sfENr4PuKTjeoInDmhPIqZS30Y/7EkkXFEhyA6QigvM3oo920+XGN8RQcmm4NiicWVtoSkd8wZMnRK1K0T5BTnjCBgXQmyqoilVp91zEZi+ksPnEyIg7skzwU9FiSBZCM+LX63VtkWc48UKfalY1Rdpo0fFyyXDvruNmKOL9dj2ap4oRIgkiMscRLuk759DZIXUDwzrw7765rG8icz1YuMoq18GObDO7Ms3KRb0/vNfulfN/s4fAgwAwWWMUVTgPhoAAAAASUVORK5CYII=' }, { name: 'JS', root: 'ProfD', path: '\\chrome\\scripts', subdir: 'Firefox Verzeichnisse', image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAC4gAAAuIAeWOKUkAAAEZSURBVDhP7ZMxLENRFIa/c2l5ESrFI+KpoUQTRoOYTJp0NBgsFpP5xSAxWNgkNlYJo72L3SIhMRiaaCxdRKIRkfQet+81FhUPsTnLvfnPzfefc3Ku6MW08oswrfPH8Q/4c8DohjKyFt+7AmVix5I/ULIlG4tfAfoXlb75eE+mDiGzIBgPctuG9HCkJ2tBOpTunPB4DrfrwvWS8lqTZioZQBvCQ9nirwqFU6Vn9n17kw+xEhqqu5a079o5MgwuR3NoD0j5sYO4tLbMmq61Y8NVUXipKAOlT1oINi0zZ8L4lsWbjB/3zlkKJ+KclSB0VYw5/S4if/yNKVdiECpeHp5vlOqe0HgSskXL0IrQmYH6JdzvO73eBvCtgDf14FTmcYgI3gAAAABJRU5ErkJggg==' }, { name: 'Addons', root: 'ProfD', path: '\\extensions', subdir: 'Firefox Verzeichnisse', image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjbQg61aAAACkUlEQVQ4T43T60tTYRwH8HMQ9QQJRSBJ50xU8BL1QpJMsbxNc162edxcYlAoZdkFh6gZurF5WV6nc7M/oBdBb7q9DSPEVBDbZtN0c5tzNymolwXht2eDhVO0Dnx4Hn6/5/me8xx4KOqQR2rcYfjpIC81BpXiqWBnxUSgpWQ0kHrY+gN1xdOdu/XTQfDGIMSGAET6AMpG/TbhiD/uv0LqTYF7cmPgN2/wQzzhh2jMB+Gwz1I65I3/Z8A1o5eRTXqP85M+pVTv260Z86JieNtcMridXNjnZvI1Lia31xV7IIgf99AKg/e1wrAN+YQHtXoPJKNbqBrewlWdG6UDLlzRupCv3sTFns3vFx47SqJCFHoPoyAb5eNb4MlGyYgb1UNuiHQulPW7UKRx4rJqE5d6HMjpdiC7066mRFpHvFTnbCHuSJ84E+rIJumQExKdEzVE5YAT5RoHCnvsyO3aQHb7Os63rSHrwRoy76+qqErNBi/ut4PYrdFsKCWDDoj77CjvXUdu+yqyWleQcsuK5GYrBE0WcE0Wm6DZmsk1W7VEI1XRu6YUqb6gUh22W9BhQ8ZtCwQ3PoEjQuM+psi5SSBNCR/Zusq7bSju+IyMpmWwjUvgrh+hcWks6scVKs0tBQ/NSG5YBKtYNHOKRRxt4WUogKufTwmh8lqXU9MaFlY42UcLJ5tnOfk8yPwov0j/LfGNUIe/huXnYrm6uTiOn2UI7GEjcxMxTrwifu7rq6KOw0o+MAT2SI8sYGtnaVJ/s68fFUCfONd2jK2e+cFWv0dY1bu+mPiTocsTmyR8kU56X//2wmtmuiMvoMkkdEkEp3K0N08XPZsKScwzdNB0zFlSz0pIaxBG6mQ0JBU/1yXmm878AbFQoHrb98HyAAAAAElFTkSuQmCC' }, { name: 'Programm', root: 'CurProcD', path: '\\', subdir: 'Firefox Verzeichnisse', image: 'data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAB0AAAAzAAAAQgAAAEUAAAA4AAAAIwAAAA0AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAKgQAIngOFHPPHiGf9hwnsv4aK7H+HCid9BYmiNoNEVGWAAAAOQAAAAkAAAAAAAAAAAAAAAAAAAAAAAAADhISZ4oiJaj4JTfD/yVDzf8lTNP/JU/X/yVT2f8lUNL/HDas/g4bbJsAAAAaAAAAAAAAAAAAAAAAAAAAACAmkVYeKLn+JT7I/yVL0/8lVNr/JVrd/yVf3/8lZuL/JW3k/yVk4P8bT9P+HkXBjAAAAAAAAAAAAAAAABoaaxMeMbXqJT/K/yVN1v8lWN3/JmDf/ytSr/81OWr/M0qL/yZ64/8jiez/JXXh/x9Msv4ITLo/AAAAAAAAAAAiN6B3JT7I/yVN1v8lWd3/JV3d/ytEnv81J1T/SiIe/04iFf9BISL/I6HV/xus7v8hhtn/JVCofAAAAAAAAAAAIEGw0SVL0/8lV9z/JVnb/yZn4P8oct7/Jnjg/ydjt/9RUE3/WCgR/zp3fv8axfb/EMj1/xmC0LQAAAAAAAAAABxKxv0lVNr/Jl/f/ydCyf84WaX/a0AX/3NMHP9lZEf/dUQT/2cyDf9ZNB//Q9j3/ybh/P8ap9X1AAAAAAAAAAAbWM/8JVve/yZm4P8mWNP/Nkh+/3JXLf+aWgv/mFkL/4tNBv+ARQf/bTcH/6Pw+v977v7/Opuz/gB/fwIAAAAAIWHV5SZf4P8ma+H/Jnfk/yOP5/9QZYT/qXAm/7NyHP+qaBX/mVkN/4xPCP+dtKv/lu3+/yOy1uUAAAAAAAAAAB1exJElZeL/Jm7i/yZ+5f8iheD/QHDX/2uAk//DiRP/vH4V/7V0GP+jZRn/rbKa/4js//8AyOONAAAAAAAAAAAdU7JGJVnY/yZw4/8kguX/IJLg/4p4N/+wjhv/0p0F/9GaCf/FiRD/sHkv/8Ts8P+L4/L/DcbnTQAAAAAAAAAAGVnYFB5m3P12eX39coBn/02bp/92i1H/1qYb/+GvIf/cqQz/yJId/8SlaP+539//Za/KtwAAAAAAAAAAAAAAAAAAAAAiguZSv5tRZMKXQPXBkiX/xKU3/+a2Qf/rvEj/5bQ4/9OpQP/XyZ7vkqmnegAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkwWkd5cBimOe/X+TswV7+7sNe/um/X+HivWeRzbBOGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' }, { name: 'Startup-Cache', root: 'ProfLD', path: '\\startupCache', subdir: 'Firefox Verzeichnisse', image: 'data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAB3RJTUUH1wcREBAg9OD7NAAAAAlwSFlzAAAewQAAHsEBw2lUUwAAAARnQU1BAACxjwv8YQUAAAH6SURBVHjaxVNBaxNBFP4mGRNp06bSaGu9qXhRLOSQX6Dg0d48SMWC4Mmbv8AfYA7Sgp6UgteCF29CKahBsKKWglgam4rRxGxiks3u7Mz6zZIlSVHRk7N8vLcz7/vemzczwP8eorSCgtLJJeXpUGtMBQHgK5RptxbuYJUx5o8CL5bx+OzCkyuZ2cLIwtPihbVW9a1GiCyFQyusFD4S2zfv4x5DtI2TAphOZk8zbXFE4NKt5ctInDmY8OLd6zNrtI+IlhURG0Xs55dezZXXF9Gq7CA9NQvNbAH19W/wo+6gWXeaN1aQkybEXLv2Bb36Z+SvfUAynYLgB9Y+GLEv6Sl4HTdcvX0yy4kZqdkit1nFWC4Pme4ydvMXxNiOwwTfIVP5OCBlK0Cv8Y4C5xnXYM+bB0ixTwjWHwpUdzbh+ijZSWlYQefrcxwrLJJcIZxRAWM33qP1KTCOwJ9ErbyLno8trvqRgOrsITV5ik6pT2IXvbZdINmjVr8CmYMx09h7/8wKMBtUtIWgu4/DE8e5lxob4pLsDkhhvxJrjYfE2Am065/Et1ZUQRAJTBxJIDQJZrgKZDiRwYA03AlxCF1Ho92oYGM7ElCS5/qmVjXzLx+cg71tMex5D/8Pw+ng4etd2GYpER0ucJRI26v9l2/Ivg82CI2YIP+BPCyifwI91AzKs/qQkQAAAABJRU5ErkJggg==' }, ], configs: [ // Untermenü Firefox Funktionen { name: 'Anpassen', command: "gCustomizeMode.enter()", subdir: 'Firefox Funktionen', image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAdhsAAHYbAfWG3pUAAAHbSURBVDhPY2QgA6jVnZD8958pmuH3zwXMUDGigVrjWZc/HMJ7f7MJBTD9/PSaJBeoNp5P+cMpPP0vAysL0/cP71m+vdJhgsoRBMq1p8t/sQnN+vufhYXx17f/zN/fJt/ptH9GlAFKFcfqfrMKdvz7y8D4/+d3Buavr1rvdtisB8kRNECxcH/lL2b+xr9//jP8//WDgeXLy8WMv3/UQaUZ8IaBWuGe3C8sQpP+M7MBFf5nYP31fiPLv5+hdye4/oYqYcAZCwsO3ArX1VScff7RD8bfv/8wsP58t4n597ewe5M94JpBAKsB3VuumnILSmzg5eVlkxXh+H/r7qNV/39+i7w/1QtFMwhgGFC26rIEB5/IXkYOPuGvP38x/PnyZrK6BGvaxhLrv1AlKAAlDM7n8vIttzmyjVNSzZrpz4/fvz+9ymsJUJ8BlcYK4C64XsQdK8z+c7fS22Oqpzmd3n758tm3J1RzDVQaJwC7YL2FAru+4au3ovzfuH98ZGS49YLP33r9x01gFQQAOB18estk8/46G/evtwwM79+wvGX4+28vWJYIwLhARUmA+8+//XyMvwx+szK+/cLCHBlx7dFuqDxBAHQBo9YPJqbVz5k4Q9/85VAgRTMDAwMDAIpDuk3/mjFSAAAAAElFTkSuQmCC' }, { name: 'Neustart im abgesicherten Modus', command: "safeModeRestart();", subdir: 'Firefox Funktionen', image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACh0lEQVQ4jY2SW0iTARzFz7cvRfqclA7Lpi51tjlnikukB3VKFzQC02UPmQaVRqlpRqiVLak0UUIxsVroTAsFTUzmJY1u0HUJ2YWCVg9RCWEPZauETk8+zJZ1ns/vxx/+B5gnmZlZuRZL23W5XK6Yr+c2OwsOhFg7Lz28Zx/n9pzdVQaDwWNeoKAgT9vQUJfX2Tuw2dpqbXxhM3+6032E7VcG2HI7jcdbiu2l+8pKy0vLTWtS1+coFIoAF0GgWmucsOb/mmyP43SPjt/bwJt1ETSf3sa6JwKrHCKzbkRS1x/FDcUb7RKkKNcTfPziu7MSf07lg9/OgzNN4Mdd4IkGsPYNWDYBqgZAtAqMSNHdAqB1FXh765tXJ315HwR+zQFn1oHOMLC6Hix3gPn3QekiiAYZdQmRQwCCXXhJqYw+m5DkfA3w83LQ6Q9Oi2BBBWgaB402EI2gUCNjVLJhGECQi8DDf1F0fVKy8wHAtwqBk34CJ0WBm/aAQTZQbgFRA4pVMuoTY0YAqOY+IjxtS+XUyoxhphfeZW7FU2YUPqO5MYHdI6ClF2zqBGvPiYyO1fYDCJgrUCSkFz2XbX1Jn8IPVB91MqDsB082p9I+DI72gYM9oOWMnEuXqZoBSH9sITY2rss3bYhIe0zP7FcUTA4erDZy9CrY0wX294JFxUoCC3e4HZOPl5i9am0FoRkkDNeIyDGWHIqjrQ/s6wFbL8io0QY7AGjcCgD4rlCrbCExlYRkJcQ2luyP5Ngw2GEFjSn+BBaY/wbPJj40NPCRWptDQTjGwr3hPFUN6nSLCXhcBrDkXwIAMEiS2BGm1k/p9BrKRK93AGoAKP8Hns1iACYAhwEkAvB0V/oNnDMV0lvYzsIAAAAASUVORK5CYII=' }, { name: 'Browser-Konsole', command: "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', image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACwElEQVQ4jU2TS28SURiG5yf5G1xo1KqJd43aJkYTEzfGuNSdMV5jotVYG6vponipF3BKL7SAlrZWipbeLdABBsoMMMOAU+48LuaYuHhzvrP5zvs933mlOJAGNoVUIAPEbNBFvS2UAmLAOpAQdylQh8G4xf05hdvftrgzneLRnEbvQpnHP0rcnda4F9K5N5Pj4XeN++Ect2dTPFnM8j7bQLoShsPDCsfdCc5Naez/orJ3LM8+v8ku12/2+i12j+bYM5LlyGSe0+MZTni26JmyuL4C0sGxBodkk0v+PBeDObq8GQ74S5yKdDgabtIV+sMeX4F9vjzHfRrn5E3OuxMckwvsd5tI5ydtetPgM2BC3eGzDu90eJsFjwkjFnwRp1eHYMYiZEBfCi6M6UgnvTqfGg4wo9VC+w9ktgWaAKgBuQ7YjQplYNSGHjmB1OU3GKyBSoOF9VnkSJQVCyzABqpABSgBfwDYxqaC3IIT4zGkQ8Earg4Ugbga5albZnQ9gwEUOlAGtBYU/jVoK1Qp8cGGUxMq0pERGCo5LzRp415WuDu2wEINFBylhIoAdQ27WSXYhG6PiXR2uMWc6B5dWmPAF0HeqqIA3qRFX/AXDz3feOL9QSRVhB0LOjBThsvvS0hXXAbzFTBMUFYTLCXKaG2HQaIIkU2DUDTD9JKOVmjDTg2aECnCjY860vURg4AFZgeaODMXO46jShvMqgOzDNhtaLccsLMmXBuOI3VPKLytw6r434rIRk4oI1asiqykRBYGS3BGXka6GorzYKPEi5hB/3KGobUi8lYVn1JjKlEloNTxrJl44jZvYhYuxeJVssKtJY2by3mkmWIH12Kagfk4r8NxXoZWeT4V4dnkPP1ff9IfXKR3fJ6BmTWeBaI8DqzwNLTBQDjJnA2SBShVx3YaSAq7qqhTYiz1vwingWTLWetfmUuJaUgo1TsAAAAASUVORK5CYII=' }, { name: 'Browser-Werkzeuge', command: "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', image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAdUlEQVQokZVSwRHAIAgLPYfoXs7RCTpG53Avt7APrhaFU8gLMEEJAkEQgFbc7IxkVjt0r6Sp7VIVITumBpKt00FA2ThmjXzkfMMWO8EZFSj8LrUyjsG9b9DaJXq+qAIVxEUxtLHpaXE95dj1NcK2rmbwaGJ4Af0tIg00j/6iAAAAAElFTkSuQmCC', }, { name: 'Web-Entwickler', command: "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', image: 'data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAB0AAAAzAAAAQgAAAEUAAAA4AAAAIwAAAA0AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAKgQAIngOFHPPHiGf9hwnsv4aK7H+HCid9BYmiNoNEVGWAAAAOQAAAAkAAAAAAAAAAAAAAAAAAAAAAAAADhISZ4oiJaj4JTfD/yVDzf8lTNP/JU/X/yVT2f8lUNL/HDas/g4bbJsAAAAaAAAAAAAAAAAAAAAAAAAAACAmkVYeKLn+JT7I/yVL0/8lVNr/JVrd/yVf3/8lZuL/JW3k/yVk4P8bT9P+HkXBjAAAAAAAAAAAAAAAABoaaxMeMbXqJT/K/yVN1v8lWN3/JmDf/ytSr/81OWr/M0qL/yZ64/8jiez/JXXh/x9Msv4ITLo/AAAAAAAAAAAiN6B3JT7I/yVN1v8lWd3/JV3d/ytEnv81J1T/SiIe/04iFf9BISL/I6HV/xus7v8hhtn/JVCofAAAAAAAAAAAIEGw0SVL0/8lV9z/JVnb/yZn4P8oct7/Jnjg/ydjt/9RUE3/WCgR/zp3fv8axfb/EMj1/xmC0LQAAAAAAAAAABxKxv0lVNr/Jl/f/ydCyf84WaX/a0AX/3NMHP9lZEf/dUQT/2cyDf9ZNB//Q9j3/ybh/P8ap9X1AAAAAAAAAAAbWM/8JVve/yZm4P8mWNP/Nkh+/3JXLf+aWgv/mFkL/4tNBv+ARQf/bTcH/6Pw+v977v7/Opuz/gB/fwIAAAAAIWHV5SZf4P8ma+H/Jnfk/yOP5/9QZYT/qXAm/7NyHP+qaBX/mVkN/4xPCP+dtKv/lu3+/yOy1uUAAAAAAAAAAB1exJElZeL/Jm7i/yZ+5f8iheD/QHDX/2uAk//DiRP/vH4V/7V0GP+jZRn/rbKa/4js//8AyOONAAAAAAAAAAAdU7JGJVnY/yZw4/8kguX/IJLg/4p4N/+wjhv/0p0F/9GaCf/FiRD/sHkv/8Ts8P+L4/L/DcbnTQAAAAAAAAAAGVnYFB5m3P12eX39coBn/02bp/92i1H/1qYb/+GvIf/cqQz/yJId/8SlaP+539//Za/KtwAAAAAAAAAAAAAAAAAAAAAiguZSv5tRZMKXQPXBkiX/xKU3/+a2Qf/rvEj/5bQ4/9OpQP/XyZ7vkqmnegAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkwWkd5cBimOe/X+TswV7+7sNe/um/X+HivWeRzbBOGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' }, { name: 'Firefox synchronisieren', command: "gSync.openPrefs('menubar');", subdir: 'Firefox Funktionen', image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7DAAAOwwHHb6hkAAADcElEQVR4nHVTXWxTZRh+zzntOafn9Gdt3enoz8po2dauMLYat6iom5OpCwMGmswrLjRecAGBkDkTkCtCiDeQaGKCF7vQoBL0gpARJyFTxCDQwqA/6Nba/bU9Xdedru1pe3441Y2MGJ7kTb683/c835PvfT4E1jB66E2zQ2/4WG8wD+KUzmgwvsCwqYWSUC4VVSKXZsz6B6HH8c+OnPslBRuArS8yCzGqu9075vG2tkp8zhwLXieTM0HdcipmSubKlv1793Q1O5kjO1u08nfXo5P/Ezh/bOh0y9bNfdmFx8AmQiBUy4ChKFTxhspAfy9eb9ICRWCow2rqfcOjt34zEb3yVODCSM9Aq8t+vlLioLiSVjoIEFojqEmtfPt+5F5yOkgE7tymljJpqDfqwLmpzv+iiwpfmow/QmsCjYzxKzUiAggFIEkCArH83G+h9JiAGVJ3Zrh9uNpkUxH4udzyMvx6609IZ5Zg21b7F7WbsAuf9HXsaLYdl8QKIDLA71MJ9tufA+2hxeSP2z3t5MXxwJUbIVacCC6N7+5u7K7T0e4iXwUrU6exm/AfVEaafI8kcUVMBgRB4G5k/uzfSWBrzkY+v3hq44trCOKMXke/TRI4rBYqyA6P/SBKooJP2QCNYp3AcQhPZ6/Cc/Aono3ptBTUSo0TgKtU9agoVUVRFoE2bQKDmYF3X201P0+gKsrv6LQ0/FcUZLjSFJpcKl+ORKJA1VlBZ2uHXT0vndxIOjzUNliblt8P6ja3daRGpCgSaJqSI3H2Kpb/IxHydpo/RRAJtTZ3gaO5Y8vwK0z+y+9v3lKI6Ae97gkCFfS9Ps/Z9/v9XprSQKEkQI7jY/tGL5/E4gBSf5ezMfzwfudKJgFN23ZCQ9uu/pHhzuEOO/gseqxn4HXfa2+97LNqaQ1kuRJUBFEOhGc/unQjGkbWE/n10e7p2bk5Z21Em5tcYHe6gZ2bWTVoMK3DYYEtThtwRQHiC1lYzhXGDpz46SD8G7k1WCxAjw75g8nFRffKagkaLPW8BhXIRpsVXC4nJNJFKPIVKFeF8Idnrm1XKMIzf6FQAPnuP8I9iqI5bxNjL/CSSlKRMsej0oNpVszl+TxfFVO5QuVmdDExns9D9RkHa1AxDOOUZdmGYeBCAXHUzoiC9JcS9HklaPMsy8aUnrhOeALXrFu6bGkawwAAAABJRU5ErkJggg==' }, { name: 'Zugangsdaten und Passwörter', command: "LoginHelper.openPasswordManager(window, { entryPoint: 'mainmenu' })", tooltiptext: 'about:logins', subdir: 'Firefox Funktionen', image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwACTowAAk6MAZI9dFgAAAFSSURBVDhPzVG9SgNBGPxmQ4qAZ7SRVKIIom+gIBbaWagIigg2iZVgkc4HER8jiL2dnaAgNqJGU4gaYsIR4w/J3Tq7dwb0vFOwcWCY/b7dmf2TvwKhxsI9zDqUBXKQvCL3s1PuC9UiMYDmSUqJzNlGgAo5z5BTU8QG0NxHOScHTI0mWtLEse7XE5LRt2yNM+RVmckYLJPWbNHCYu9KYxqeFFkNkXOmnRQwHKqFzvmzPNWI7tEzQUNGjcQH+JIJRx/YJi/JJVPgGR2j3wbY+yvJh2UUbQZUcWCGcSdYgwuHx4yC+6Kqdp31xokpIwHcfROP2OFCoMEnE6lTy6jBw4O6UDepIn9kK1j95Ru7ZtPvwKcx7495JX5XM1gRRTfgk1nkCDW16hTqZTuZABtAc5rmN965LWkp4E49ORv1PbviB9g3UNep4CQeUrhXZ781/weIvAOtoWn16DKkRwAAAABJRU5ErkJggg==' }, { name: 'Task Manager', command: "switchToTabHavingURI('about:processes', true)", tooltiptext: 'about:processes', subdir: 'Firefox Funktionen', image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMWSURBVDhPbZNPbNNWHMe/dprasR23zULGHDIEalnXVV3TFE4ITkiIG2LSxpU/F4TEASEEJ7QjTKBtB6QdBxoCtUg7QOGwCYSEAEFBFNYUUP8GktZJ7Th//Df23jMlbBJf6T372b/P9/l9/R6DTyiX3cclP9uUSaWSaUVJKXFZ+lyWpYQgcHGGgTUxcfu3setn52htB+127zohHTi494wkysMdHdEtHMelu3tkVhR5RKMsbNdEpVLCykoRmUwGenU4PnYdR9sG6XRqdNu20ePT+RnMLU5B01VUVpehEqBUKsCoarAsK2yHDh1BjFeSlKNiaVcolFTLtDH59C7u3BnHk8d/49XMUxTsN7BtMyz8IMOoguP4nrXhe4NafaWoaQZiQhye56HVasFv+XBHXQS+D3+tBUEAXdfJsjoTIU0UGjx6fE03jJopxmS4rhuasAoL8ZUERmLgd/nwFPJc8VD1NGrQ/YENO8+z/aZplUQxjqbcgLvOQRDx0cg3EBviEbABggVSuAhU31EDTiajML/QgKrZtIqC1AVP9WDN2tCmdDi2A40nAb612kvTdY1kEBMJ0km5tkGj0VyWxW44NZcEZ8NxHHJ1oJc1eO5aLiQHmoEgiDzDMALlws+gqhn1oiwnQpgWUoDOGjwks5Ddk83m8M3ACLr6eTKOsnEpJRq15Y8GpmkVeT4Gzw8QjUQwNJRF/1fDGPg6h97eQZTVejA7+6b0enr6/s9Xzt0m8BLl2gb1RrPYIjNe+Okyvlj/JVYrDTTNBhAwWFwo45dfz19UlMw9rlM0dd25TxCPchHaUW1QhmyybXfOzxWej4//ea9/IL15ONvHCYIEkbRs9tutvb2bvhsc7PshmYyPTNy6+jvl2gYv/rmr9vVtX0inld253MieZDLBOQ7579U62WgGeJ4luTit/MzUgyt/XPpxqZAPD1P7NO7Yflg6dfqYlujp6mAjLEhuJHEjqFRUdbWiPpucfP7XjZtjN94VX+ZJees99R8Dcsvs//7kvnWpno3lcqWWz88U5ucnX69qSwXy8v8Hoi3gX7e/eW+7FbGUAAAAAElFTkSuQmCC' }, { name: 'Offline arbeiten', command: "BrowserOffline.toggleOfflineStatus();", subdir: 'Firefox Funktionen', image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMUSURBVDhPXZPbS1RRFMa/vfeZ8TSXLiJZY5ZNMmhRBPVUSkUXinzIN+mhC0UvPkRID/UHFET04lOC9BAE0UtUUElXREy7l6Y5k4GXJqecu47OmXNWa5+MogU/9t7r7PXttdbeR+QMBW3CNKFsG0KqIBYHt8uqqiZj9Zo6+9u3uBgd7XqdST8/Ol8cG3Z3/zV1Xkp3IpSCIqo11tVeNXbuOq8aGraJSCQsly3bJIPB5gBhTyKXy/WUSh/cgAX7LUAE6fXuLFu/4Z5qbNwq6us9KCsDsllgfp53KZimWblLykOzuZyv17IeL8RDnRMCkKreXBu+q2prV6a5FBmNQnV3w+nthYjFYKfTSDoOAsWi2CxEw1ihYAza9hMtIAtCBopLl14wTHNFkjP5ePAg3tfU4MeLF0ix0NTQEB6EQuhpbcVYVRUMzqhl0aIzQeCAm8K417t3IhTKWuEwTe3YQZOxGCVtm3ra2mhIKbrd3EyfxsfJIaLJ48cpaprUv2QJNRvGHVdgwO9vH66ooERlJWX8foru3k2JiQmaYZGBri76nkgQOQ5NnjjhCr71+aibOe3xjLkC3X7/o75AgIaDQYqxwCdu6ZvGBppOcUFsNhNtaaF+9r9kgR6vlx4wZwwjo+NlwS6lsqUS0sUiZhjuO74vr+T2Gvo7iElWVyPP4xw3MsdvJc/MEnH3WcC0Sk84XSfDIhnLwtemJqxrb0e5z4f4tWuYS0yh7tIlWGfPIunxIMcieW52ghxLC+CyEOFOpT7f4sOu19XRh9FRt+aBkyfpLvue7dtHP+NxKnAp948coQ72XZSSqgXe63j1FEgFAGONEPutfB6rIhHEOzsx0tHhpp/98gXJwUEEKiowzP7p6Wn0sb+PcIOHh24dXK08KsT1LUSHtUNXr9Fzmykycwy/SYwwN4H+GeAYT4fcP8nhtN6xmhIiVA5s1ifrAM0sU1gY3/GrvQ284uA2Xr5m3EP+NbUWaN0oxKlyoogH8OhOpZgYkOArvsfiV3g5qDdr+1/gj61ktjI1DOu4tzvAvGF0RQsG/AKOw3K+vE21tQAAAABJRU5ErkJggg==' }, { name: 'separator', }, { name: 'Neustart', tooltiptext: 'userChrome.js-Cache wird geleert', command: 'Services.appinfo.invalidateCachesOnRestart(); \ Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);', id: 'AMreboot', image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tISBGb250IEF3ZXNvbWUgRnJlZSA2LjMuMCBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKSBDb3B5cmlnaHQgMjAyMyBGb250aWNvbnMsIEluYy4gLS0+PHBhdGggZD0iTTIyNCA5NmMzOC40IDAgNzMuNyAxMy41IDEwMS4zIDM2LjFsLTMyLjYgMzIuNmMtNC42IDQuNi01LjkgMTEuNS0zLjUgMTcuNHM4LjMgOS45IDE0LjggOS45SDQxNmM4LjggMCAxNi03LjIgMTYtMTZWNjRjMC02LjUtMy45LTEyLjMtOS45LTE0LjhzLTEyLjktMS4xLTE3LjQgMy41bC0zNCAzNEMzMzEuNCA1Mi42IDI4MC4xIDMyIDIyNCAzMmMtMTAuOSAwLTIxLjUgLjgtMzIgMi4zVjk5LjJjMTAuMy0yLjEgMjEtMy4yIDMyLTMuMnpNMTAwLjEgMTU0LjdsMzIuNiAzMi42YzQuNiA0LjYgMTEuNSA1LjkgMTcuNCAzLjVzOS45LTguMyA5LjktMTQuOFY2NGMwLTguOC03LjItMTYtMTYtMTZIMzJjLTYuNSAwLTEyLjMgMy45LTE0LjggOS45cy0xLjEgMTIuOSAzLjUgMTcuNGwzNCAzNEMyMC42IDE0OC42IDAgMTk5LjkgMCAyNTZjMCAxMC45IC44IDIxLjUgMi4zIDMySDY3LjJjLTIuMS0xMC4zLTMuMi0yMS0zLjItMzJjMC0zOC40IDEzLjUtNzMuNyAzNi4xLTEwMS4zek00NDUuNyAyMjRIMzgwLjhjMi4xIDEwLjMgMy4yIDIxIDMuMiAzMmMwIDM4LjQtMTMuNSA3My43LTM2LjEgMTAxLjNsLTMyLjYtMzIuNmMtNC42LTQuNi0xMS41LTUuOS0xNy40LTMuNXMtOS45IDguMy05LjkgMTQuOFY0NDhjMCA4LjggNy4yIDE2IDE2IDE2SDQxNmM2LjUgMCAxMi4zLTMuOSAxNC44LTkuOXMxLjEtMTIuOS0zLjUtMTcuNGwtMzQtMzRDNDI3LjQgMzYzLjQgNDQ4IDMxMi4xIDQ0OCAyNTZjMC0xMC45LS44LTIxLjUtMi4zLTMyek0yMjQgNDE2Yy0zOC40IDAtNzMuNy0xMy41LTEwMS4zLTM2LjFsMzIuNi0zMi42YzQuNi00LjYgNS45LTExLjUgMy41LTE3LjRzLTguMy05LjktMTQuOC05LjlIMzJjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDExMmMwIDYuNSAzLjkgMTIuMyA5LjkgMTQuOHMxMi45IDEuMSAxNy40LTMuNWwzNC0zNEMxMTYuNiA0NTkuNCAxNjcuOSA0ODAgMjI0IDQ4MGMxMC45IDAgMjEuNS0uOCAzMi0yLjNWNDEyLjhjLTEwLjMgMi4xLTIxIDMuMi0zMiAzLjJ6Ii8+PC9zdmc+" }, { name: 'Beenden', command: "goQuitApplication(event);", id: 'AMquit', image: "data:image/svg+xml;base64,PCEtLSBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljCiAgIC0gTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcwogICAtIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uIC0tPgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiIGZpbGw9InJlZCI+CiAgPHBhdGggZD0iTTggNmExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTIgMHY0YTEgMSAwIDAgMCAxIDF6bTMuNS00LjAzMmExIDEgMCAwIDAtMSAxLjczMkE0Ljk0NiA0Ljk0NiAwIDAgMSAxMyA4IDUgNSAwIDAgMSAzIDhhNC45NDYgNC45NDYgMCAwIDEgMi41LTQuMyAxIDEgMCAwIDAtMS0xLjczMiA3IDcgMCAxIDAgNy4wMDYgMHoiLz4KPC9zdmc+Cg==" }, ] }, _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.setAttribute("tooltiptext", "Firefox Menü"); ExternalAppBtn.setAttribute("type", "menu"); ExternalAppBtn.setAttribute("removable", "true"); if (Appmenu.isButton) { ExternalAppBtn.style.listStyleImage = "url(data:image/png;base64,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)"; ExternalAppBtn.style.width = "6%"; ExternalAppBtn.style.height = "1%"; ExternalAppBtn.style.backgroundSize = "cover"; // Sorgt dafür, dass das Bild die gesamte Fläche des Buttons einnimmt. } else { ExternalAppBtn.style.listStyleImage = "url(data:image/png;base64,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)"; ExternalAppBtn.style.width = "3%"; ExternalAppBtn.style.height = "1%"; ExternalAppBtn.style.backgroundSize = "cover"; // Sorgt dafür, dass das Bild die gesamte Fläche des Buttons einnimmt. } 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('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();'); document.getElementById('mainKeyset').appendChild(key); } }, */ init: function() { // var isUrlbar = 1; // 0: TabsToolbar; 1: navbar // var isButton = 0; // 0: Hamburger,klein; 1: Firefox,groß 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.setAttribute("tooltiptext", "Firefox Menü"); ExternalAppBtn.setAttribute("type", "menu"); ExternalAppBtn.setAttribute("removable", "true"); /* if (Appmenu.isButton) { ExternalAppBtn.style.listStyleImage = "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEYAAAAUCAYAAAAwaEt4AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAF3SURBVFhH7ZUxS8RAEIX9M1fb29vb+wP8AdaCYCVY2FmInY1YWmlrp7WtNp6ihyKKCDYrb7kPxsuMJiG5CO6DR5LZmd2Zl9ndhduNUSqssggTsAgTsAgTsAgTsLEw71enyYPGHvZW8vvHzUUlrinvd5e/reX59Mk/K8zn5DrPBTyfPtlamOeTTXe8K4LHg1V3vG92KgwdI2ADT8fr+UmcfNVZ4OVspzIH0Joau9teSq/n+1Nryl1l8yA3/LUdgWLxq8NOthKJ/CQMUCE2YQuJEwkz3lqsbC+AOCoeaB5y1U8hn7qcmzB0hArkr79dHuVvhFLhs3GaU9+Tw7WpJWV/2SQIIA4bIpJbU85tK1Gg6IkLojgKtoV664kWbc+oQYRRpwh0DHZLQJztGM6LOh3T9oYcRBjrZ2F9ADYJGIFcZg9bxPFy/Y2DCCOqxe2tpHd7cwAbp3G6TVDh9mBlPp1h+va6rC4bC/NfWIQJWIQJWIQJWIRxOUpfQ+jqXwPuQ7IAAAAASUVORK5CYII=)"; } else { ExternalAppBtn.style.listStyleImage = "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAA6SURBVDhPYxgcIDg+6z8IQ7lwPiEMVT4YDBh4gO4kZGfiw1Dlg8GAgQfoTkJ2Jj4MVT4YDCAfMDAAAFSm42US1bMnAAAAAElFTkSuQmCC)"; } */ if (Appmenu.isButton) { ExternalAppBtn.style.listStyleImage = "url(data:image/png;base64,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)"; ExternalAppBtn.style.width = "6%"; ExternalAppBtn.style.height = "1%"; ExternalAppBtn.style.backgroundSize = "cover"; // Sorgt dafür, dass das Bild die gesamte Fläche des Buttons einnimmt. } else { ExternalAppBtn.style.listStyleImage = "url(data:image/png;base64,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)"; ExternalAppBtn.style.width = "3%"; ExternalAppBtn.style.height = "1%"; ExternalAppBtn.style.backgroundSize = "cover"; // Sorgt dafür, dass das Bild die gesamte Fläche des Buttons einnimmt. } 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.setAttribute('id', 'AMpopup'); this._externalAppPopup = ExternalAppPopup; ExternalAppBtn.appendChild(ExternalAppPopup); Appmenu.onpopupshowing(); // Menü mit Tastaturkürzel öffnen let key = document.createXULElement('key'); key.id = 'key_AppMenuPopup'; // key.setAttribute('key', 'X'); key.setAttribute('key', Appmenu.hotkey); if (Appmenu.hotkeyModifier) // key.setAttribute('modifiers', 'alt'); key.setAttribute('modifiers', Appmenu.hotkeyModifier); key.setAttribute('oncommand', 'document.getElementById("AMpopup").openPopup();'); document.getElementById('mainKeyset').appendChild(key); }, /* ****** NEU ****** */ onpopupshowing: function() { if (this._isready) return; if (this._externalAppPopup === null) return; var ExternalAppPopup = this._externalAppPopup; // Funktion zum Erstellen eines Menüs mit Untermenüs function createMenuItem(parentPopup, item) { var menuItem; if (item.name == 'separator') { menuItem = document.createXULElement('menuseparator'); parentPopup.appendChild(menuItem); } else if (item.submenu && item.submenu.length > 0) { menuItem = document.createXULElement('menu'); var subMenuPopup = document.createXULElement('menupopup'); menuItem.appendChild(subMenuPopup); menuItem.setAttribute('class', 'menu-iconic'); menuItem.setAttribute('label', item.name); menuItem.setAttribute('image', item.image); parentPopup.appendChild(menuItem); for (let subItem of item.submenu) { createMenuItem(subMenuPopup, subItem); } } else { menuItem = document.createXULElement('menuitem'); menuItem.setAttribute('class', 'menuitem-iconic'); menuItem.setAttribute('label', item.name); menuItem.setAttribute('image', item.image); if (item.command) { menuItem.setAttribute('oncommand', item.command); } else if (item.path) { menuItem.setAttribute('oncommand', "Appmenu.exec(this.path, this.args);"); menuItem.path = item.path; menuItem.args = item.args; } menuItem.setAttribute('tooltiptext', item.tooltiptext || item.name); menuItem.setAttribute('id', item.id || ""); parentPopup.appendChild(menuItem); } } // Verarbeitung der Subdirs 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; } } // Verarbeitung der Apps for (let app of this.toolbar.apps) { if (app.subdir && Appmenu.subdirPopupHash[app.subdir]) { createMenuItem(Appmenu.subdirPopupHash[app.subdir], app); } else { createMenuItem(ExternalAppPopup, app); } } // Verarbeitung der Configs for (let config of this.toolbar.configs) { if (config.subdir && Appmenu.subdirPopupHash[config.subdir]) { createMenuItem(Appmenu.subdirPopupHash[config.subdir], config); } else { createMenuItem(ExternalAppPopup, config); } } if (this.autohideEmptySubDirs) { for (let key in Appmenu.subdirPopupHash) { if (Appmenu.subdirPopupHash[key].hasChildNodes()) { continue; } else { Appmenu.subdirMenuHash[key].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; }, 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()) { 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() { // if (location.href !== 'chrome://browser/content/browser.xhtml') return; let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')); // var css =` 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(` #main-menubar > menu { display: none !important; } `), null, null); sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET); })(); if (window.gBrowser) Appmenu.init();Und hier das zweite, um die Menüs der Menüleiste zu spiegeln (klonen):
Code
Alles anzeigen// Menüleiste spiegeln (function () { setTimeout(async function () { // Menüs einfügen var item2 = document.getElementById('AMreboot') var mb = document.getElementById('main-menubar'); // clone menues [...mb.children].forEach(m => { if (m.tagName.toLowerCase() === "menu") { let cl = m.cloneNode(true); let t = cl.querySelector('.menubar-text'); if (t) cl.removeChild(t); cl = item2.parentNode.insertBefore(cl, item2); } }); // bind event let source = await readSource('chrome://browser/content/browser-menubar.js'); source = source.replace(/.*let mainMenuBar/is, 'let mainMenuBar').replace(/},\n\s+{ once: true }.*/is, '').replace("main-menubar", "AMpopup").replace('.getElementById("historyMenuPopup")', '.querySelector("#AMpopup #historyMenuPopup")').replaceAll('getElementById("history-menu")', 'querySelector("#AMpopup #history-menu")').replace('.getElementById("menu_EditPopup")', '.querySelector("#AMpopup #menu_EditPopup")') eval(source); async function readSource (url) { return new Promise(resolve => { let xhr = new XMLHttpRequest(); xhr.open('GET', url); xhr.onload = function () { resolve(xhr.responseText); }; xhr.send(); }); } }, 300); })(); -
Jizz war sehr beschäftigt, aber er hat gerade geantwortet
und mir ein neues passendes Skript geschickt!



Es funktioniert!
Werde also doch weiter machen!
-
Er fragte nach einem Video! Warum erstellst Du ihm keins?
-
-
jizz hat da auch ein eigenes Script usw.
Vielleicht schaust Du Dir das mal an:https://github.com/benzBrake/Fire…eJS/addMenuPlus
Mfg.
EndorDanke Dir, das hatte ich auch schon gesehen und versucht zu verstehen.
-
So!
Ich schmeiße das Handtuch.
Meine JavaScript-Kenntnisse sind leider doch sehr eingeschränkt und im Sourcecode des Firefox komme ich auch nicht so zurecht.
Jizz hat sich nicht mehr gemeldet und ich denke, dass ich dieses Projekt nicht mehr abschließen werde.Die Idee, bzw. meine Idee, war ja, die kompletten Menüs der Menüleiste in ein per Button zu öffnen, neues Menü zu verschieben,
oder zu kopieren. Wie auch immer, das klappt halt nicht so, wie ich es mir vorgestellt habe.OK, nun ist hier an dieser Stelle das Projekt gestorben.
Schade. -
Geht doch viel einfacher, und wurde auch schon mehrmals genannt.

Ach ja, die vierte Möglichkeit sogar ohne irgendwas am Firefox machen zu müssen.
-
"Grafik speichern unter" kommt bei mir nach einem rechtsklick bei mir nicht.
sondern nur "seite speichern unter" usw
lg
stedenon
Mh, hast Du Beitrag # 23 gelesen?
Da werden gleich zwei Möglichkeiten beschrieben!
Wichtig ist, damit das Kontextmenü überhaupt bei Rechtsklick erscheint, dass Du in die Konfig gehst.
Also, in die Adresszeile "aabout:config" eingeben!
Danach in das Eingabefenster "dom.event.contextmenu.enabled" und den angezeigten Eintrag auf "false" setzen!
Das war der erste Schritt.
Jetzt kommt es darauf an, wie Dein Firefox so eingerichtet ist!
Kannst Du das von Andy gepostete JavaScript nutzen, nimm es.
Hast Du den uBlock Origin als Erweiterung, kannst Du Dir ganz einfach einen Filter erstellen!
Magst Du nichts von den beschriebenen Möglichkeiten umsetzen, hast aber Deinen Firefox so konfiguriert,
dass Du CSS nutzen kannst, trage in die userContent.css
ganz einfach folgender ein:
CSS@-moz-document domain("fotocommunity.de") { .fcx-photo-filter-addon { display: none !important; } }Firefox neu starten und fettich.
-
Für jene, die uBlock nutzen!
1. dom.event.contextmenu.enabled auf false setzt
2. Filter in uBlock anlegen =>
Es erscheint das Kontextmenü (1.) und durch den Filter können die Bilder auch gespeichert werden.
Nachtrag!
Eleganter ist natürlich das ganze per userContent.css zu machen.
Den Code dazu hat ja Sören geliefert. ^
-
Habe das Thema wieder auf unerledigt gesetzt!
Es ist immer noch offen! Bin auch weiterhin bemüht, die Probleme des Skripts zu lösen
und habe Kontakt zu Jizz aufgenommen. Dauert halt.
-
Oh Gott, bin doch Dement!
Sören hatte mir das mit den Variablen mal recht genau erklärt. -
Danke für den Hinweis.
Es wird jetzt echt lustig.
... Dabei hat er aber programm-technische No-Goes eingebaut, nämlich 2 nur lokal genutzte Variablen global definiert.
...
Die da wären?
-
Endor Es gibt wohl eine neuere Version von heute!
JavaScript
Alles anzeigen// ==UserScript== // @name zzzz-MultiRowTab_LiteforFx48.uc.js // @namespace http://space.geocities.yahoo.co.jp/gl/alice0775 // @description 多段タブもどき実験版 CSS入れ替えまくりLiteバージョン // @include main // @compatibility Firefox128esr Firefox131+ // @author Alice0775 // @version 2016/08/05 00:00 Firefox 48 // @version 2016/05/01 00:01 hide favicon if busy // @version 2016/03/09 00:01 Bug 1222490 - Actually remove panorama for Fx45+ // @version 2016/02/09 00:01 workaround css for lwt // @version 2016/02/09 00:00 // ==/UserScript== "use strict"; MultiRowTabLiteforFx(); function MultiRowTabLiteforFx() { if (!window.gBrowser) { return; } // -- Config -- const // タブバーの段数 TabBar_Rows = false ,// [false] = 段数無制限 // true = 段数指定 Maximum_Rows = 3 ,// 段数指定 デフォルト3段 // ProtonUI タブの見た目 ProtonUI = true ,// [true] = ProtonUI デフォルト // false = Firefox90以前は出来た設定で「browser.proton.enabled」を「false」にした時の見た目にする // タブの周りにある空白を0にしてUI密度の高さにするので上下にあった空白の分-8px低くなります // タブバーの位置 TabBar_Position = 0 ,// [0] = ツールバーの上 デフォルト // 1 = ツールバーの下 // 2 = ウインドウの下 // タブバーの位置デフォルト用 タイトルバーボタン[-□×]を隠くしてその分タブバーの横幅を広く使う TitleBar_Button_Autohide = false ,// [false] = 使用しない // true = 使用する // タイトルバーボタン[-□×]の外枠を小さくして透明化、タブバーの右上をマウスオーバーで元のサイズに戻して透明化を解除 // UI密度 タブの高さ UI_Density_Compact = 29 ,// デフォルト29px コンパクト UI_Density_Normal = 36 ,// デフォルト36px 通常 UI_Density_Touch = 41 ,// デフォルト41px タッチ // 同じ様なCSSを書いた場合userChrome.cssが優先されます // タブの横幅 Tab_Min_Width = 76 ,// デフォルト76px 最小値 Tab_Max_Width = 225 ,// デフォルト225px 最大値 // 指定する数値を両方同じにすると横幅が固定化します // 同じ様なCSSを書いた場合userChrome.cssが優先されます // タブをドラッグ&ドロップで移動中に表示されるアイコンの差し替え Tab_Drop_Indicator = false ,// [false] = しない デフォルトアイコン // true = する 赤線アイコン(2px×29px) // タブの左右に境界線 Tab_Separators = false ,// [false] = 表示しない // true = 表示する // Firefox90以前は出来た設定で「browser.proton.enabled」を「false」にした時に表示されていた境界線のCSSを抽出して調整しています // タブバーのドラッグ領域 Left_Drag_Area = 0 ,// デフォルト40px 左のドラッグ領域 Right_Drag_Area = 0 ,// デフォルト40px 右のドラッグ領域 Window_Maximize_Left_Drag_Area = false ,// [false] = デフォルト // true = ウィンドウを最大化した時、非表示になる 左のドラッグ領域が表示出来ます Fullscreen_Drag_Area = false ,// [false] = デフォルト // true = フルスクリーンにした時、非表示になる 左右のドラッグ領域が表示出来ます // ピン留めタブの位置 Separate_Tabs_and_PinnedTabs = false ,// [false] = デフォルト // true = ピン留めタブをタブの行から分離して上に出来る行へ移動する // タブを閉じるボタン Tab_Close_Button = 0 ,// [0] = デフォルト // 1 = 非表示 // 2 = すべてのタブに表示 // 3 = タブをマウスオーバーで表示 // タブを一覧表示するボタン All_Tabs_Button = false ,// [false] = 非表示 // true = 表示 // -- Config End -- css = ` #TabsToolbar { :root[uidensity="compact"] & { --tab-min-height: ${UI_Density_Compact}px; } :root:not([uidensity]) & { --tab-min-height: ${UI_Density_Normal}px; } :root[uidensity="touch"] & { --tab-min-height: ${UI_Density_Touch}px; } ${Tab_Drop_Indicator ? ` #tabbrowser-tabs > .tab-drop-indicator { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAAdCAIAAAAPVCo9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAASSURBVBhXY3growJEQ5+SUQEAOb1EM8kwskcAAAAASUVORK5CYII=) no-repeat center !important; } ` : ``} .titlebar-spacer[type="pre-tabs"] { width: ${Left_Drag_Area}px !important; } .titlebar-spacer[type="post-tabs"] { width: ${Right_Drag_Area}px !important; } ${Window_Maximize_Left_Drag_Area ? ` .titlebar-spacer { :root:not([sizemode="normal"], [inFullscreen]) &[type="pre-tabs"] { display: block !important; } } ` : ``} ${Fullscreen_Drag_Area ? ` .titlebar-spacer { :root[inFullscreen] &, :root:not([tabsintitlebar]) & { display: block !important; } } ` : ``} #tabbrowser-arrowscrollbox { &::part(scrollbox) { &:has(+ spacer) > slot, .scrollbox-clip > & { flex-wrap: wrap; } ${TabBar_Rows ? ` max-height: calc((var(--tab-min-height) + ${ProtonUI ? 8 : 0}px) * ${Maximum_Rows}); overflow: hidden auto; & scrollbar { -moz-window-dragging: no-drag; } ` : ``} } &::part(overflow-start-indicator), &::part(overflow-end-indicator), &::part(scrollbutton-up), &::part(scrollbutton-down) { display: none; } ${Separate_Tabs_and_PinnedTabs ? ` &::part(scrollbox) { &:has(+ spacer) > slot::after, .scrollbox-clip > &::after { display: flow-root list-item; content: ""; flex-basis: -moz-available; height: 0; overflow: hidden; } } .tabbrowser-tab:not([pinned]) { #tabbrowser-tabs[haspinnedtabs] & { &, & + :not(#tabs-newtab-button) { order: 1; } } } ` : ``} .tabbrowser-tab[fadein]:not([pinned]) { --tab-min-width: ${Tab_Min_Width}px; --tab-max-width: ${Tab_Max_Width}px; max-width: var(--tab-max-width); ${Tab_Close_Button !== 0 ? ` ${Tab_Close_Button === 1 ? ` .tab-close-button { display: none !important; } ` : Tab_Close_Button === 2 ? ` .tab-close-button { display: block !important; } ` : Tab_Close_Button === 3 ? ` .tab-close-button { opacity: 0; } &:hover .tab-close-button { opacity: 1; display: block !important; } ` : ``} ` : ``} } #tabbrowser-tabs[haspinnedtabs]:not([positionpinnedtabs]):not([orient="vertical"]) > & > .tabbrowser-tab:nth-child(1 of :not([pinned], [hidden])) { margin-inline-start: 0 !important; } } ${ProtonUI ? `` : ` .toolbarbutton-1 { margin: 0 !important; padding: 0 !important; } .tabbrowser-tab, #tabs-newtab-button { height: var(--tab-min-height); padding: 0 !important; } .tab-background { box-shadow: none !important; margin-block: 0 !important; } .tabbrowser-tab[usercontextid] > .tab-stack > .tab-background > .tab-context-line { margin: 1px 2px 0 !important; } `} ${Tab_Separators ? ` .titlebar-spacer[type="pre-tabs"] { border-inline-end: 1px solid color-mix(in srgb, currentColor 20%, transparent); } .tabbrowser-tab::after, .tabbrowser-tab::before { border-left: 1px solid color-mix(in srgb, currentColor 50%, transparent); height: calc(var(--tab-min-height) - 15%); margin-block: auto; } .tabbrowser-tab:hover::after, .tabbrowser-tab[multiselected]::after, #tabbrowser-tabs:not([movingtab]) .tabbrowser-tab:has(+ .tabbrowser-tab:hover)::after, #tabbrowser-tabs:not([movingtab]) .tabbrowser-tab:has(+ [multiselected])::after { height: 100%; } .tabbrowser-tab::after, #tabbrowser-tabs[movingtab] .tabbrowser-tab[visuallyselected]::before { content: ""; display: block; } ` : ``} ${All_Tabs_Button ? `` : ` #alltabs-button { display: none; } `} } ${TabBar_Position === 0 ? ` #TabsToolbar { .titlebar-buttonbox-container { height: calc(var(--tab-min-height) + ${ProtonUI ? 8 : 0}px); margin-bottom: 0 !important; ${TitleBar_Button_Autohide ? ` background-color: color-mix(in srgb, currentColor 20%, transparent); height: 6px; opacity: 0; position: fixed; right: 0; z-index: 2147483647; .titlebar-button { opacity: 0; padding: 0; } &:hover { height: calc(var(--tab-min-height) + ${ProtonUI ? 8 : 0}px); opacity: 1; .titlebar-button { opacity: 1; padding: 8px 17px; } } ` : ``} } } ` : ` #nav-bar { :root:not([inFullscreen]) #toolbar-menubar:not([inactive]) + & > .titlebar-buttonbox-container { display: none; } .titlebar-button { padding-block: 0 !important; } } `} ${TabBar_Position !== 2 ? `` : ` body { & > #fullscr-toggler[hidden] + tabbox, :root[inFullscreen] & > tabbox:hover { border-top: 0.5px solid var(--toolbar-bgcolor); } & > tabbox > #navigator-toolbox { border-block: none !important; } :root[inFullscreen] & { & > #navigator-toolbox { transition: none; &:has(~ tabbox:hover) { margin-top: 0 !important; } &:hover ~ tabbox > #navigator-toolbox { max-height: 100%; }} & > tabbox:not(:hover) { border-top: .5px solid transparent; & > #navigator-toolbox { max-height: 0; } } } } `} `, sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService), uri = Services.io.newURI("data:text/css;charset=UTF=8," + encodeURIComponent(css)); if (TabBar_Rows == false) { ["0", "2"].find(type => { if(sss.sheetRegistered(uri, type)) sss.unregisterSheet(uri, type); sss.loadAndRegisterSheet(uri, type); }); } else { ["0", "2", "SSTabRestored", "TabMove", "TabOpen", "TabSelect"].find(type => { if(sss.sheetRegistered(uri, type)) sss.unregisterSheet(uri, type); sss.loadAndRegisterSheet(uri, type); gBrowser.tabContainer.addEventListener(type, (e) => { e.target.scrollIntoView({ block: "nearest" }); }); }); } if (TabBar_Position !== 0) { if (TabBar_Position === 1) { document.getElementById("navigator-toolbox").prepend( document.getElementById("toolbar-menubar"), document.getElementById("nav-bar"), document.getElementById("PersonalToolbar"), document.getElementById("titlebar"), ); } else { document.getElementById("navigator-toolbox").prepend( document.getElementById("toolbar-menubar"), document.getElementById("nav-bar"), document.getElementById("PersonalToolbar"), ); } document.getElementById("nav-bar").appendChild( document.querySelector("#TabsToolbar > .titlebar-buttonbox-container") ); } if (TabBar_Position === 2) { document.body.appendChild( document.createXULElement("tabbox") ).appendChild( document.importNode(document.getElementById("navigator-toolbox")) ).appendChild( document.getElementById("titlebar") ); } gBrowser.tabContainer.addEventListener("dragover", function(event) { this._on_dragover(event); }, false) gBrowser.tabContainer.addEventListener("drop", function(event) { this._on_drop(event); }, false) gBrowser.tabContainer.on_dragover = function(event) { return false; } gBrowser.tabContainer.on_drop = function(event) { return false; } gBrowser.tabContainer._on_dragover = function(event) { var effects = this.getDropEffectForTabDrag(event); var ind = this._tabDropIndicator; if (effects == "" || effects == "none") { ind.hidden = true; return; } event.preventDefault(); event.stopPropagation(); var arrowScrollbox = this.arrowScrollbox; if (effects == "link") { let tab = this._getDragTargetTab(event, { ignoreTabSides: true }); if (tab) { if (!this._dragTime) { this._dragTime = Date.now(); } if (Date.now() >= this._dragTime + this._dragOverDelay) { this.selectedItem = tab; } ind.hidden = true; return; } } var tabRect, rect = arrowScrollbox.getBoundingClientRect(); var newMarginX, newMarginY; let newIndex = this._getDropIndex(event); let children = this.allTabs; if (newIndex == children.length) { tabRect = this._getVisibleTabs().at(-1).getBoundingClientRect(); newMarginX = tabRect.right - rect.left; } else { tabRect = children[newIndex].getBoundingClientRect(); newMarginX = tabRect.left - rect.left; } newMarginY = tabRect.top - rect.top + tabRect.height / 2 - rect.height / 2; ind.hidden = false; newMarginX += ind.clientWidth / 2; ind.style.transform = "translate(" + Math.round(newMarginX) + "px," + Math.round(newMarginY) + "px)"; } gBrowser.tabContainer._on_drop = function(event) { var dt = event.dataTransfer; var dropEffect = dt.dropEffect; var draggedTab; let movingTabs; if (dt.mozTypesAt(0)[0] == TAB_DROP_TYPE) { // tab copy or move draggedTab = dt.mozGetDataAt(TAB_DROP_TYPE, 0); // not our drop then if (!draggedTab) { return; } movingTabs = draggedTab._dragData.movingTabs; draggedTab.container._finishGroupSelectedTabs(draggedTab); } this._tabDropIndicator.hidden = true; event.stopPropagation(); if (draggedTab && dropEffect == "copy") { // copy the dropped tab (wherever it's from) let newIndex = this._getDropIndex(event); let draggedTabCopy; for (let tab of movingTabs) { let newTab = gBrowser.duplicateTab(tab); gBrowser.moveTabTo(newTab, newIndex++); if (tab == draggedTab) { draggedTabCopy = newTab; } } if (draggedTab.container != this || event.shiftKey) { this.selectedItem = draggedTabCopy; } } else if (draggedTab && draggedTab.container == this) { let oldTranslate = Math.round(draggedTab._dragData.translatePos); let tabSize = Math.round(draggedTab._dragData.tabSize); let translateOffset = oldTranslate % tabSize; let newTranslate = oldTranslate - translateOffset; if (oldTranslate > 0 && translateOffset > tabSize / 2) { newTranslate += tabSize; } else if (oldTranslate < 0 && -translateOffset > tabSize / 2) { newTranslate -= tabSize; } let dropIndex; if (draggedTab._dragData.fromTabList) { dropIndex = this._getDropIndex(event); } else { dropIndex = this._getDropIndex(event); // "animDropIndex" in draggedTab._dragData && // draggedTab._dragData.animDropIndex; } let incrementDropIndex = true; if (dropIndex && dropIndex > movingTabs[0]._tPos) { dropIndex--; incrementDropIndex = false; } if (oldTranslate && oldTranslate != newTranslate && !gReduceMotion) { for (let tab of movingTabs) { tab.toggleAttribute("tabdrop-samewindow", true); tab.style.transform = this.verticalMode ? "translateY(" + newTranslate + "px)" : "translateX(" + newTranslate + "px)"; let postTransitionCleanup = () => { tab.removeAttribute("tabdrop-samewindow"); this._finishAnimateTabMove(); if (dropIndex !== false) { gBrowser.moveTabTo(tab, dropIndex); if (incrementDropIndex) { dropIndex++; } } gBrowser.syncThrobberAnimations(tab); }; if (gReduceMotion) { postTransitionCleanup(); } else { let onTransitionEnd = transitionendEvent => { if ( transitionendEvent.propertyName != "transform" || transitionendEvent.originalTarget != tab ) { return; } tab.removeEventListener("transitionend", onTransitionEnd); postTransitionCleanup(); }; tab.addEventListener("transitionend", onTransitionEnd); } } } else { this._finishAnimateTabMove(); if (dropIndex !== false) { for (let tab of movingTabs) { gBrowser.moveTabTo(tab, dropIndex); if (incrementDropIndex) { dropIndex++; } } } } } else if (draggedTab) { // Move the tabs. To avoid multiple tab-switches in the original window, // the selected tab should be adopted last. const dropIndex = this._getDropIndex(event); let newIndex = dropIndex; let selectedTab; let indexForSelectedTab; for (let i = 0; i < movingTabs.length; ++i) { const tab = movingTabs[i]; if (tab.selected) { selectedTab = tab; indexForSelectedTab = newIndex; } else { const newTab = gBrowser.adoptTab(tab, newIndex, tab == draggedTab); if (newTab) { ++newIndex; } } } if (selectedTab) { const newTab = gBrowser.adoptTab( selectedTab, indexForSelectedTab, selectedTab == draggedTab ); if (newTab) { ++newIndex; } } // Restore tab selection gBrowser.addRangeToMultiSelectedTabs( gBrowser.tabs[dropIndex], gBrowser.tabs[newIndex - 1] ); } else { // Pass true to disallow dropping javascript: or data: urls let links; try { links = browserDragAndDrop.dropLinks(event, true); } catch (ex) {} if (!links || links.length === 0) { return; } let inBackground = Services.prefs.getBoolPref( "browser.tabs.loadInBackground" ); if (event.shiftKey) { inBackground = !inBackground; } let targetTab = this._getDragTargetTab(event, { ignoreTabSides: true }); let userContextId = this.selectedItem.getAttribute("usercontextid"); let replace = !!targetTab; let newIndex = this._getDropIndex(event); let urls = links.map(link => link.url); let csp = browserDragAndDrop.getCsp(event); let triggeringPrincipal = browserDragAndDrop.getTriggeringPrincipal(event); (async () => { if ( urls.length >= Services.prefs.getIntPref("browser.tabs.maxOpenBeforeWarn") ) { // Sync dialog cannot be used inside drop event handler. let answer = await OpenInTabsUtils.promiseConfirmOpenInTabs( urls.length, window ); if (!answer) { return; } } gBrowser.loadTabs(urls, { inBackground, replace, allowThirdPartyFixup: true, targetTab, newIndex, userContextId, triggeringPrincipal, csp, }); })(); } if (draggedTab) { delete draggedTab._dragData; } } };Doof, dass da die Historie nicht gepflegt wird, oder wenigstens eine fortlaufende Versionsnummer, oder eben das Datum.
-
Zitat
... was bedeutet „kein Zugriff“?
Bekommst Du eine Fehlermeldung? Oder tut sich da gar nichts?
Zitat... Online-Dokumente ...
Was sind das für Dokumente? Sind es PDF's oder ... ?
-
Durch Zufall gerade gesehen, dass ich hier nie das fertige CSS veröffentlicht habe.
Wird hiermit nachgeholt.CSS
Alles anzeigen/*** Curved tabs beta D2b sauber - dunkles Theme ***/ /* aus #130 https://www.camp-firefox.de/forum/thema/137164-tabform/?postID=1239391#post1239391 */ /* -------------------------------------------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------------------------------------------- */ /*** General adjustments ***/ /*** Allgemeine Anpassunge ***/ :root { /* Tabs bar height adjust */ /* Tabbar Höhe einstellen */ /*--tabs-navbar-shadow-size: 0 !important;*/ /*--tab-block-margin: 4px !important;*/ --tab-block-margin: var(--uc-block-margin) !important; /* 2px */ --tab-min-height: var(--uc-min-height) !important; /* 36px */ /* Edges without corner Svg / Radius */ /* Kanten ohne Ecken (svg / Radien */ /*--ug-radius: 20px;*/ --ug-radius: var(--uc-radius) !important; /* 19px */ /* Edges (borders, outlines) colors */ /* Farben für Ränder (Umrandungen, Konturen) */ /* Edges not selected */ /* Ränder nicht ausgewählt */ /* --ug-color-border: hsla(0, 0%, 83%, 0.5); /* hellgrau unselected Kante Tab */ /* --ug-color-border: var(--uc-color-orange-test); */ --ug-color-border: var(--uc-color-grey-light); --ug-stroke: var(--ug-color-border); /* unselected Kante Svg */ /* --ug-kante_hova: hsla(0, 0%, 93%, 0.65); /* mittelgrau unselected alle Kanten hover */ --ug-kante_hova: var(--ug-color-border); /* Edges selected , multiselected */ /* Kanten ausgewählt, mehrfach ausgewählt */ /* --ug-color-border_select: hsla(0, 0%, 93%, 0.75); /* mittelgrau hell+ selected Kante Tab */ --ug-color-border_select: var(--uc-color-orange-normal); --ug-stroke_select: var(--ug-color-border_select); /* selected Kante Svg */ /* --ug-kante_hova_select: hsla(0, 0%, 100%, 0.8); /* mittelgrau hell++ multiselected alle Kanten hover */ --ug-kante_hova_select: var(--uc-color-orange-normal); /* Tabs background colors: */ /* --ug-color1: hsla(0, 0%, 83%, 0.25); /* hellgrau basis, unselected */ /* --ug-color2: hsla(35, 80%, 60%, 0.25); /* zart orange selected */ /* --ug-color2-multi: hsla(35, 80%, 40%, 0.25); /* zart orange dunkel+ multiselected */ /* --ug-color_multi_hova: hsla(35, 70%, 40%, 0.35); /* zart orange dunkel++ multiselected hover */ /* --ug-color_hova: hsla(0, 0%, 50%, 0.25); /* mittelgrau#2 unselected hover */ --ug-color1: var(--uc-color); /* hellgrau basis, unselected */ --ug-color2: var(--uc-color-sel); /* zart orange selected */ --ug-color2-multi: var(--uc-color-musel); /* zart orange dunkel+ multiselected */ --ug-color_hova: var(--uc-color_hov); /* mittelgrau unselected hover */ --ug-color_multi_hova: var(--uc-color_musel_hov); /* zart orange dunkel++ multiselected hover */ /* Tab bar unten, border bottom color */ /* --ug-color_bottom: hsla(0, 0%, 93%, 1); /* hellgrau nicht transparent, Kante unten */ --ug-color_bottom: var(--uc-color-orange-normal); /* Symbole für about:xxx */ --ug-color_tab-icon: var(--uc-color-red-normal); } /*** General adjustments end ***/ /* -------------------------------------------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------------------------------------------- */ /*** Tabs base ***/ /* tabs connected bottom */ .tab-background { margin-block: calc(2 * var(--tab-block-margin)) 0 !important; } /*** Tabs Radien, borders, corners, tab shapes order , inline borders only where no custom corners ***/ /* Basis alle Tabs */ .tabbrowser-tab .tab-background { border-radius: var(--ug-radius) var(--ug-radius) var(--ug-radius) 0 !important; border: 1px solid !important; /*border-bottom: none !important;*/ } .tabbrowser-tab:not([pinned]) .tab-background { border-left: none !important; } /* Zusatzregeln, überschreiben Basis alle Tabs */ /* selected , pinned tabs */ .tabbrowser-tab:is([visuallyselected], [pinned]) .tab-background { border-radius: var(--ug-radius) var(--ug-radius) 0 0 !important; } /* Tab selected no inline border */ .tabbrowser-tab[visuallyselected]:not([pinned]) .tab-background { border-inline: none !important; } /* Tab after selected tab completely round, no corners */ .tabbrowser-tab:is([visuallyselected]):not([pinned]) + .tabbrowser-tab:not([visuallyselected]) .tab-background { border-radius: var(--ug-radius) !important; border-left: 1px solid var(--ug-color-border) !important; } /* Last tab dual corners, unless it comes after selected tab */ .tabbrowser-tab:not([pinned]):last-of-type .tab-background { border-radius: var(--ug-radius) var(--ug-radius) 0 0 !important; border-inline: none !important; } .tabbrowser-tab:is([visuallyselected]):not([pinned]) + .tabbrowser-tab:not([visuallyselected]):last-of-type .tab-background { border-radius: var(--ug-radius) var(--ug-radius) 0 var(--ug-radius) !important; border-right: none !important; } /* Erster Tab nach ausgewähltem Tab komplett rund, keine Ecken !! multiselected */ .tabbrowser-tab:is([visuallyselected]):not([pinned]) + .tabbrowser-tab:is([visuallyselected], [multiselected]) .tab-background { border-color: var(--uc-color-orange-normal) !important; } /*** COLORS ***/ /** In about:config set svg.context-properties.content.enabled to true **/ /* Basis alle Tabs */ .tabbrowser-tab .tab-background { outline: none !important; box-shadow: none !important; background-color: var(--ug-color1) !important; border-color: var(--ug-color-border) !important; stroke: var(--ug-stroke) !important; fill: var(--ug-color1) !important; border-bottom: none !important; /* Muss zusätzlich, da unten ja keine Kante sein soll ! */ } /* Zusatzregeln, überschreiben Basis alle Tabs */ /* Colors, outlines: selected / multiselected / hover */ /* tabs selected base */ .tabbrowser-tab:is([visuallyselected], [multiselected]) .tab-background { background-image: none !important; background-color: var(--ug-color2) !important; stroke: var(--ug-stroke_select) !important; border-color: var(--ug-color-border_select) !important; fill: var(--ug-color2) !important; } /* tabs multiselected */ .tabbrowser-tab:not([visuallyselected])[multiselected] .tab-background { background-color: var(--ug-color2-multi) !important; fill: var(--ug-color2-multi) !important; } /* tabs multiselected hover */ .tabbrowser-tab:not([visuallyselected]):hover .tab-background { background-color: var(--ug-color_multi_hova) !important; fill: var(--ug-color_multi_hova) !important; stroke: var(--ug-kante_hova_select) !important; border-color: var(--ug-kante_hova_select) !important; } /* tabs unselected hover */ .tabbrowser-tab:not([visuallyselected], [multiselected]):hover .tab-background { background-color: var(--ug-color_hova) !important; fill: var(--ug-color_hova) !important; stroke: var(--ug-kante_hova) !important; border-color: var(--ug-kante_hova) !important; } /* -------------------------------------------------------------------------------------------------------------- */ /* fill colors selected / unselected hover */ .tabbrowser-tab:is([visuallyselected], [multiselected]) .tab-background::before, .tabbrowser-tab:is([visuallyselected], [multiselected]) .tab-background::after { fill: var(--ug-color2) !important; stroke: var(--uc-color-orange-normal) !important; } .tabbrowser-tab:not([visuallyselected]):is([multiselected]) .tab-background::before, .tabbrowser-tab:not([visuallyselected]):is([multiselected]) .tab-background::after { fill: var(--ug-color2-multi) !important; } .tabbrowser-tab:not([visuallyselected]):is([multiselected]):hover .tab-background::before, .tabbrowser-tab:not([visuallyselected]):is([multiselected]):hover .tab-background::after { fill: var(--ug-color_multi_hova) !important; } /* right corner bg, selected --> vor not selected */ .tabbrowser-tab:is([visuallyselected]) + .tabbrowser-tab:not([visuallyselected]) .tab-background::before { background-image: none !important; } /* -------------------------------------------------------------------------------------------------------------- */ /*** tabs corners ***/ /* base */ #TabsToolbar { --ug-corner-size: var(--tab-min-height) !important; /* 36px */ --ug-corner-image: url("../icons/tab_corner.svg") !important; } .tabbrowser-tab .tab-background::before, .tabbrowser-tab .tab-background::after { -moz-context-properties: fill, fill-opacity, stroke, stroke-opacity !important; content: ""; position: absolute; width: var(--ug-corner-size) !important; height: var(--ug-corner-size) !important; background-size: var(--ug-corner-size) !important; background-repeat: no-repeat !important; background-position: bottom center !important; mask-image: linear-gradient(215deg, transparent, black 18px) !important; pointer-events: none !important; } /* left */ .tabbrowser-tab .tab-background::before { left: calc(0px - var(--ug-corner-size) / 2); /* -18px */ background-image: var(--ug-corner-image) !important; } /* right */ .tabbrowser-tab:is([visuallyselected], :last-of-type) .tab-background::after { right: calc(0px - var(--ug-corner-size) / 2); /* -18px */ background-image: var(--ug-corner-image) !important; transform: scaleX(-1) !important; } /**** Margins etc. overflow fix ****/ /* .tabbrowser-tab:not([pinned]) { outline: 1px solid hsla(135, 80%, 50%, 0.75) !important; outline-offset: -1px !important; } */ /* Base values ; tab padding, margin */ #tabbrowser-tabs { /* --ug-tab_Pad: calc(8px + var(--ug-corner-size) / 2); /* 26px */ --ug-tab_Pad: calc(-10px + var(--ug-corner-size) / 2); /* 8px */ /* --ug-tab_Marge: calc(0px - var(--ug-corner-size) - 12px); /* -48px */ --ug-tab_Marge: calc(0px - var(--ug-corner-size) / 2 + 6px); /* -12px */ } /* Basis all Tabs */ .tabbrowser-tab:not([pinned]) { overflow: visible !important; padding-inline: var(--ug-tab_Pad) !important; /* padding-inline: 0px !important; */ } /* Tab before any tab */ .tabbrowser-tab:not([pinned], [visuallyselected]) + .tabbrowser-tab:not([pinned]) { margin-inline: var(--ug-tab_Marge) 0px !important; /* margin-inline: -48px 0px !important; */ } /* Tab after selected */ .tabbrowser-tab:not([pinned]):is([visuallyselected]) + .tabbrowser-tab:not([pinned]) { margin-inline: var(--ug-tab_Marge) 0px !important; /* margin-inline: -48px 0px !important; */ } /* Tab selected */ .tabbrowser-tab:not([pinned]):is([visuallyselected], :last-of-type) { margin-inline: 0px !important; } /* Last tab after selected tab */ .tabbrowser-tab:is([visuallyselected]):not([pinned]) + .tabbrowser-tab:not([visuallyselected]):last-of-type { margin-inline: var(--ug-tab_Marge) 0px !important; /* margin-inline: -48px 0px !important; */ } /*** Tab left higher z index / Vorrang vor Tab rechts ***/ .tabbrowser-tab:not([pinned]) .tab-content { z-index: 1 !important; } /*** Space for corner left/right - first/last tab, overflow bugs fix ***/ /* Test #6 */ #tabbrowser-tabs .tabbrowser-tab:nth-child(1 of :not([pinned], [hidden])) { /* margin-inline-start: 0px !important; */ margin-inline-start: 10px !important; } #tabbrowser-tabs:not([pinned]) .tabbrowser-tab:last-of-type { /* margin-inline-start: 0px !important; */ margin-inline-end: 10px !important; } #tabbrowser-tabs[overflow]:not([movingtab]) .tabbrowser-tab:nth-child(1 of :not([pinned], [hidden])) { margin-inline-start: -12px !important; } #tabbrowser-tabs[overflow]:not([movingtab]) .tabbrowser-tab:last-of-type { margin-inline-end: -12px !important; } /* Move buttons up/down, optional, OFF */ /* #TabsToolbar toolbarbutton { margin-top: -1px !important; } #tabbrowser-tabs { --ug_margin_plus: 1px -1px; } :is(#scrollbutton-up, #scrollbutton-down) { margin-block: var(--ug_margin_plus) !important; } */ /*-----------------------------------------------*/ /**** Tabtext nicht verkürzt bei hover ****/ /*-----------------------------------------------*/ /* Ein längerer Tabtext wird am Ende ja ausgeblendet. */ /* Diese Verkürzung bei hover hätte ich gerne verhindert. */ .tabbrowser-tab:not(:hover) > .tab-stack > .tab-content > .tab-close-button { padding-inline-start: 7px !important; width: 24px !important; } .tabbrowser-tab[visuallyselected=true]:not(:hover), #tabbrowser-tabs:not([closebuttons=activetab]) > #tabbrowser-arrowscrollbox > .tabbrowser-tab:not([visuallyselected=true]):not(:hover) { --tab-label-mask-size: 1em !important; } /* Tabtext wird nicht ausgeblendet */ .tab-label-container[textoverflow][labeldirection=ltr]:not([pinned]), .tab-label-container[textoverflow]:not([labeldirection]):not([pinned]):-moz-locale-dir(ltr) { mask-image: none !important; } /*--------------------------------------------*/ /**** Tabbar nach unten verschieben ****/ /*--------------------------------------------*/ #navigator-toolbox { position: relative !important; padding-bottom: calc( var(--tab-min-height) + 8px ); /* 44px */ /* padding-bottom: 42px !important; */ } #TabsToolbar { position: absolute !important; display: block !important; } /*--------------------------------------------------*/ /**** Trennlinie zwischen Inhalt und Tableiste ****/ /*--------------------------------------------------*/ #TabsToolbar { bottom: 6px !important; /* Tableiste etwas angehoben */ width: 100vw !important; /* Tableistenbreite festgelegt */ background-image: linear-gradient(to top, var(--ug-color_bottom) 7px, transparent 1px) !important; margin-bottom: -7px !important; /* Trennlinie nach unten verschoben */ padding-bottom: 7px !important; /* Tabs etwas angehoben */ } /*---------------------------------------------*/ /**** Symbole für about:xxx anpassen ****/ /*---------------------------------------------*/ .tab-icon-image { -moz-context-properties: fill !important; /* fill: #FFAA00 !important; */ fill: #FF0000 !important; } /*-----------------------------------------------------------------------*/ /* Ausblenden des Meüs "Link in neuem Tab in Umgebung öffnen" im Popoup **/ /*-----------------------------------------------------------------------*/ #context_reopenInContainer { display: none !important; } /*---------------------------------------------------*/ /************** Tab schließen X hover ***************/ /*---------------------------------------------------*/ .tabbrowser-tab:not([pinned]) .tab-close-button { /* Button rund */ border-radius: 50% !important; display: flex !important; } .tab-content > .tab-close-button:hover { /*outline: none !important;*/ outline: 1px solid rgba(255, 0, 0, 0.3) !important; outline-offset: -1px !important; background-color: rgba(255, 0, 0, 0.4) !important; /* Rot */ box-shadow: 0 0 1em rgba(255, 0, 0, 0.7) !important; /* Rot, glow */ } /*---------------------------------------------------*/ /************* New Tab Button (+) hover *************/ /*---------------------------------------------------*/ /* Abstand vom Tab */ #tabbrowser-arrowscrollbox-periphery #tabs-newtab-button .toolbarbutton-icon { margin-left: 6px !important; border-radius: 50% !important; } /* New Tab (+) button hover outline */ #tabbrowser-arrowscrollbox-periphery:hover #tabs-newtab-button .toolbarbutton-icon { outline: 1px solid var(--uc-color-orange-normal) !important; outline-offset: -1px !important; background-color: var(--ug-color1) !important; } /* New Tab (+) button hover color */ #tabbrowser-arrowscrollbox-periphery:hover #tabs-newtab-button:hover { fill: var(--uc-color-orange-normal) !important; } /* Position, closer to last tab */ #tabbrowser-arrowscrollbox-periphery #tabs-newtab-button { margin: 0 !important; margin-top: 2px !important; padding-inline: 0px !important; } .tabbrowser-tab:not([pinned]) + #tabbrowser-arrowscrollbox-periphery { margin-left: -16px !important; z-index: 2 !important; } /*-------------------------------------------------*/ /*************** Schrift in den Tabs ***************/ /*-------------------------------------------------*/ .tab-label { overflow: hidden !important; text-overflow: ellipsis !important; /* text-overflow: " " !important; */ text-overflow: " …" !important; white-space: nowrap !important; max-width: 95% !important; text-shadow: 1px 1px 1.5px var(--uc-color-black-light) !important; /* Schatten hinter Schrift */ } .tab-label[selected] { color: var(--uc-color-white-normal) !important; /* Aktiver Tab: Schriftfarbe (Orange) */ } .tab-label:not([selected]) { color: var(--uc-color-grey-lighter) !important; /* Aktiver Tab: Schriftfarbe (Hellgrau) */ } /* Move tab content */ .tab-content { margin-top: 1px !important; } /*************** Tests ***************/ #tabbrowser-tabs { /* --tab-min-width: 76px !important; */ --tab-min-width: 75px !important; --tab-loading-fill: lime !important; --tab-overflow-pinned-tabs-width: 0px !important; } /* userChrome.css */ /* progress-bar page loading in the tab header */ .tabbrowser-tab:not([usercontextid]) > .tab-stack > .tab-background > .tab-context-line { opacity: 0; background-color: #FFCC00; height: 2px; margin-inline: 12px; margin-top: 0px; border-radius: 90px; } .tabbrowser-tab:is([busy], [progress]) > .tab-stack > .tab-background > .tab-context-line { opacity: 1; transform-origin: left center; animation: 2s ease-in-out scale; } .tabbrowser-tab[bursting] > .tab-stack > .tab-background > .tab-context-line { transition: opacity 2s ease-out; } @keyframes scale { 0% {transform: scaleX(0);} 100% {transform: scaleX(1);} } /*background-position: right top -380px, var(--lwt-background-alignment) !important;*/ /* * Gesammelte Werke * #navigator-toolbox { background-image: url("../background/Bild1.jpg") !important; background-image: linear-gradient(to bottom, #4a4a4a 30%, #9a5a00 80%, #e49800 100%) !important; background-image: linear-gradient(to top, black 50px, transparent 10px) !important; background-image: linear-gradient(-2deg, rgba(172, 171, 194, 1) 10%, rgba(145, 145, 167, 1) 20%, rgba(120, 119, 140, 1) 35%, rgba(95, 94, 115, 1) 45%, rgba(71, 71, 90, 1) 55%, rgba(48, 48, 67, 1) 65%, rgba(27, 27, 45, 1) 80%, rgba(2, 0, 25, 1) 90%, rgba(0, 0, 0, 1) 100%) !important; } */ /* #navigator-toolbox { background-image: linear-gradient(1deg, rgba(255, 170, 0, 1) 2%, rgba(223, 144, 0, 1) 4%, rgba(192, 118, 0, 1) 8%, rgba(161, 93, 0, 1) 16%, rgba(131, 69, 0, 1) 32%, rgba(102, 47, 0, 1) 64%, rgba(74, 25, 0, 1) 72%, rgba(47, 3, 0, 1) 80%, rgba(11, 0, 0, 1) 88%, rgba(0, 0, 0, 1) 100%) !important; } */ -
JavaScript
Alles anzeigen// ==UserScript== // @name Quit.uc.js // @Version 2.1 // @author Mira Bellenbaum // @Korrektur Sören Hentzschel // @Source file https://www.camp-firefox.de/forum/thema/138324/?postID=1256294#post1256294 // @description Fügt ans Ende des Kontextmenüs der Tabs eine "Beenden" - Schaltfläche hinzu // ==/UserScript== location.href.startsWith('chrome://browser/content/browser.x') && (() => { document.getElementById('tabContextMenu').addEventListener('popupshowing', function () { // Falls die Schaltfläche bereits existiert, zuerst entfernen, um Mehrfacheinträge zu verhindern const existingQuitApp = document.getElementById('context_quitApp'); if (existingQuitApp) { existingQuitApp.remove(); } // Neues Menuitem für "Beenden" eigenständig erstellen const quitApp = document.createXULElement('menuitem'); quitApp.setAttribute('label', 'Beenden'); quitApp.setAttribute('id', 'context_quitApp'); // Eine ID für einfaches Referenzieren quitApp.classList.add('quit-app-separator'); // Klasse für das CSS hinzufügen // Event für das Menuitem zum Beenden der Anwendung quitApp.addEventListener('command', () => { goQuitApplication(event); // Anwendung beenden }); // Kontextmenü-Element abrufen const tabContextMenu = document.getElementById('tabContextMenu'); // Schaltfläche immer am Ende des Menüs hinzufügen tabContextMenu.appendChild(quitApp); }); })();Ach ja, und Danke für die Korrekturen!
Endor Eine weitere, verbesserte Version?!
-
Dharkness Danke,
dann funktioniert es wie gewünscht.
Das CSS kann ich nicht aushebeln! -
Dharkness
Bitte teste mal.JavaScript
Alles anzeigenlocation.href.startsWith('chrome://browser/content/browser.x') && (() => { document.getElementById('tabContextMenu').addEventListener('popupshowing', function () { // Falls die Schaltfläche bereits existiert, zuerst entfernen, um Mehrfacheinträge zu verhindern const existingQuitApp = document.getElementById('context_quitApp'); if (existingQuitApp) { existingQuitApp.remove(); } // Neues Menuitem für "Beenden" eigenständig erstellen const quitApp = document.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'menuitem'); quitApp.setAttribute('label', 'Beenden'); quitApp.setAttribute('id', 'context_quitApp'); // Eine ID für einfaches Referenzieren quitApp.classList.add('quit-app-separator'); // Klasse für das CSS hinzufügen // Event für das Menuitem zum Beenden der Anwendung quitApp.addEventListener('command', () => { goQuitApplication(); // Anwendung beenden }); // Kontextmenü-Element abrufen const tabContextMenu = document.getElementById('tabContextMenu'); // Schaltfläche immer am Ende des Menüs hinzufügen tabContextMenu.appendChild(quitApp); }, { once: false }) // { once: false } sorgt dafür, dass das Event jedes Mal bei der Anzeige ausgelöst wird })();// ==UserScript==
// Name Quit.uc.js
// @Version 2.0
// @author Mira Bellenbaum
// @Source file RE: Browser schließen im Kontextmenü
// @description Fügt ans Ende des Kontextmenüs der Tabs eine "Beenden" - Schaltfläche hinzu
// ==/UserScript==
location.href.startsWith('chrome://browser/content/browser.x') && (() => {
document.getElementById('tabContextMenu').addEventListener('popupshowing', function () {
// Falls die Schaltfläche bereits existiert, zuerst entfernen, um Mehrfacheinträge zu verhindern
const existingQuitApp = document.getElementById('context_quitApp');
if (existingQuitApp) {
existingQuitApp.remove();
}
// Neues Menuitem für "Beenden" eigenständig erstellen
const quitApp = document.createElementNS('http://www.mozilla.org/keymaster/gate…ere.is.only.xul', 'menuitem');
quitApp.setAttribute('label', 'Beenden');
quitApp.setAttribute('id', 'context_quitApp'); // Eine ID für einfaches Referenzieren
quitApp.classList.add('quit-app-separator'); // Klasse für das CSS hinzufügen
// Event für das Menuitem zum Beenden der Anwendung
quitApp.addEventListener('command', () => {
goQuitApplication(); // Anwendung beenden
});
// Kontextmenü-Element abrufen
const tabContextMenu = document.getElementById('tabContextMenu');
// Schaltfläche immer am Ende des Menüs hinzufügen
tabContextMenu.appendChild(quitApp);
}, { once: false }) // { once: false } sorgt dafür, dass das Event jedes Mal bei der Anzeige ausgelöst wird
})();