1. Nachrichten
  2. Forum
    1. Unerledigte Themen
    2. Forenregeln
  3. Spenden
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. camp-firefox.de
  2. Horstmann

Beiträge von Horstmann

  • Button um weiteres Profil zu öffnen

    • Horstmann
    • 4. August 2023 um 18:28
    Zitat von FuchsFan

    Nun habe ich die Zeile von Aris für den Urheber erklärt, ist aber doch nicht so.

    Nur das Profile-Script noch im Einsatz, der Rest an Codes, Scripte, alles raus, und trotzdem das kleine Icon.

    Ich bedanke mich bei allen Unterstützern, wir lassen es einfach so. :)

    Hmm, zumindest das Icon könntest du noch reinstellen. ;)

  • Button um weiteres Profil zu öffnen

    • Horstmann
    • 4. August 2023 um 18:12
    Zitat von FuchsFan

    Das wundert mich auch, aber der Übeltäter ist die Zeile aus dem Code von Aris. Die kann ich aber nicht entfernen, weil sonst einige Button nicht angezeigt werden.

    Code
    #nav-bar .toolbarbutton-1:not([checked]):not([open]):not(:active) > .toolbarbutton-icon,

    Alles was man wissen sollte für einen Vorschlag fehlt hier... ;)

    Zumindest den gesamten Codeblock solltest du angeben, und die dazugehörige Datei die du benutzt innerhalb von Aris CSS.

  • Button um weiteres Profil zu öffnen

    • Horstmann
    • 4. August 2023 um 15:31
    Zitat von FuchsFan

    Das habe ich alles schon durch, Icons gewechselt, Größe gewechselt, Format gewechselt, nichts da.

    Ich habe dann doch mal die Aris CSS (v4.3.9, Fx115.1esr) im Testprofil geladen, und mit dem Script benutzt.

    Das Icon passt sich automatisch perfekt an (das "L" im Screenshot), auch mit verschiedenen Icondateien in verschiedenen Bildgrössen etc.. :/

    Ich könnte mir nur noch vorstellen, dass du evtl. zusätzliches eigenes CSS benutzt für spezifische Icons, oder eine veraltete und vielleicht zurechtgebastelte Version vom Aris CSS.


  • Button um weiteres Profil zu öffnen

    • Horstmann
    • 4. August 2023 um 12:35
    Zitat von Mira_Belle

    Äh, wie soll ich das nun erklären?

    :/

    Prima erklärt, herzlichen Dank für die Mühe! :)  :thumbup:

    Ich wollte v.a. sicher gehen, dass PathUtils nicht generell Probleme macht in neueren Fx Versionen.

    Ich bastle immer noch ein bisschen an unserer alten Baustelle herum, ich vermute dass damit alles iO sein sollte bzgl. der Dateipfade, da wird ja CSS im Script benutzt wie in deinem aktuellen Beispiel.

  • Button um weiteres Profil zu öffnen

    • Horstmann
    • 4. August 2023 um 11:36
    Zitat von Mira_Belle

    So dann hier die neue und aktuelle Version meines "Button-um-weiteres-Profil-zu-öffnen-Skripts".

    JavaScript
    // JavaScript Document
    // QuickProfilesChangesButton.uc.js
    // Source file https://www.camp-firefox.de/forum/thema/136664/?postID=1231647#post1231647
    // Source file https://www.camp-firefox.de/forum/thema/136664/?postID=1232240#post1232240
    // Version 1.07 from August 3, 2023
    (function() {
       if (location.href !== 'chrome://browser/content/browser.xhtml') return;
       try {
          CustomizableUI.createWidget({
             id: 'profileschange-button',
             type: 'custom',
             defaultArea: CustomizableUI.AREA_NAVBAR,
             onBuild: function(aDocument) {        
                let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
                toolbaritem.onclick = event => onClick(event);
                var props = {
                   id: 'profileschange-button',
                   class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                   removable: 'true',
                   label: 'Profil zusätzlich starten',
                   accesskey: '', // Wer möchte kann hier z.B. 'C' eintragen, dann kann per "Alt + C" das Skript ausgeführt werden
                   tooltiptext: 'Profile Changer',
                };            
                for (var p in props)
                   toolbaritem.setAttribute(p, props[p]);            
                return toolbaritem;
             }    
          });
       } catch(e) { };
       
       let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')); // Pfad zum Profilordner und gleich in den entsprechenden Unterordner
       let ButtonIcon = "user-group_2.svg"; // Name & Dateiendung des anzuzeigenden Symbols!
       var css =`
           #profileschange-button { list-style-image: url("${ProfilePath}/${ButtonIcon}") }
       `;
       var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
       var uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css));
       sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
         
       function onClick(event) {
          if (event.button != 0){
             return;
          }
          let file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
          let arguments = ["-no-remote", "-P", "Standard-Benutzer", "-foreground"]; // Profil wird ausgewählt Hier "XXX" den gewünschten Profilnamen eintragen
    //      let arguments = ["-no-remote", "-P"]; // Wer lieber den Profilmanager aufrufen möchte,nutzt diese Zeile!
          file.initWithPath("C:\\Program Files\\Mozilla Firefox\\firefox.exe"); // Pfad zur Firefox-Installation
    //      file.initWithPath("/Applications/Firefox.app/Contents/MacOS/firefox"); // Pfad zur Firefox-Installation, Dateipfad für Mac User
          let process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
          process.init(file);    
          process.run(false, arguments, arguments.length); // Profil wird bestätigt
       }    
    })();
    Alles anzeigen

    Nur mal für ganz Langsame wie mich: das hier ist wohl inzwischen überholt, und Zeile 31 ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')); - mit PathUtils - funktioniert also, auch in den aktuellen Nightlys?

    Ärgerlicherweise kann ich Nightlys nicht mehr benutzen auf der alten Mackiste, möchte nur weitmöglichst meine Scripts aktuell halten.

  • Button um weiteres Profil zu öffnen

    • Horstmann
    • 3. August 2023 um 17:04
    Zitat von FuchsFan
    Zitat von Horstmann

    ich vermute du hast evtl. CSS am Laufen das die Icongrösse für manche Buttons ändert, aber nicht für alle.

    Da liegst Du vollkommen richtig, in der Regel werden mit eingebunden, aber nicht alle, wie du andeutest.

    https://github.com/Aris-t2/Custom…_appearance.css

    Da seh ich aber nix bzgl. Grössen, oder ich bin blind.

    Das Aris Monster - genial wie es ist - hab ich aber schon zu oft durchgekämmt um das nochmal zu machen. ;)

    Eine komplett wilde Idee wäre in dem Fall das Icon in einer CSS Datei - am besten vielleicht unten in deiner userChrome.css - anzugeben, und damit das Icon im Script zu umgehen.

    Also sowas, angenommen dein Icon ist in einem Ordner namens icons im chrome Ordner:

    CSS
    #profileschange-button .toolbarbutton-icon {
        list-style-image: url("icons/DeinIcon.png") !important;
    }

    Könnte sein dass dann deine anderen Einstellungen für Icons auch für dieses Bild greifen, ohne zusätzliche Grössenangaben.

    Aber wie gesagt, wenn es auch anders funktioniert ist das ja auch ok, also muss man sich den Aufwand vielleicht nicht machen.

  • Button um weiteres Profil zu öffnen

    • Horstmann
    • 3. August 2023 um 16:36
    Zitat von Sören Hentzschel

    Alles, was als base64 kodiert ist, muss auch wieder dekodiert werden. Und das jedes Mal, wenn es angezeigt wird, da ist kein Caching möglich. Das ist deutlich langsamer und beansprucht die CPU mehr als Grafiken direkt anzuzeigen.

    Verstehe, dankeschön! :)

  • Button um weiteres Profil zu öffnen

    • Horstmann
    • 3. August 2023 um 15:57
    Zitat von Sören Hentzschel
    Zitat von Horstmann

    was wäre der Vorteil gegenüber .svg?

    Beitrag

    RE: Button um weiteres Profil zu öffnen

    […]

    console.log('Der Text, der geloggt werden soll') oder eben console.log(variable).

    Zum Thema base64:

    […]

    Sören Hentzschel
    2. August 2023 um 20:21

    Verstehe ich nicht so ganz; base64 ist langsamer an sich, oder mit Code eingebettete Icons generell?

    .svg kann man ja auch als Code in CSS benutzen, ohne eine separate Bilddatei zu benötigen - wenn man tatsächlich den einen Schritt sparen muss.

  • Button um weiteres Profil zu öffnen

    • Horstmann
    • 3. August 2023 um 14:56
    Zitat von FuchsFan

    Was kann ich machen, dass die Grafik im Button größer erscheint?

    Eine Änderung der Pixelzahl (Vergrößerung) für die Grafik bringt nichts.

    das wäre normal: und so mit dem Script:

    Das Icon für dieses Script funktioniert hier wie alle anderen auch; ich vermute du hast evtl. CSS am Laufen das die Icongrösse für manche Buttons ändert, aber nicht für alle.

    Es ist mir auch nicht so ganz klar, worauf die Screenshots basieren - ist das normale Icon für einen anderen Button mit CSS eingefügt, oder in der Bildbearbeitung manipuliert?

    Wäre vielleicht sinnvoller das mal zu eruieren, statt eine Einzelregel für nur einen Button reinzuwürgen; aber wenn's auch so geht, geht's auch so. ;)

  • Button um weiteres Profil zu öffnen

    • Horstmann
    • 3. August 2023 um 12:19
    Zitat von 2002Andreas

    Nur wieder so ein Gedanke:

    Wenn ich Zeile 26 - 27 auskommentiere, und dann als Pfad zum Icon im Ordner Icons das so eintrage:

    CSS
     var css =`
             #profileschange-button { 
             list-style-image: url("file:D:/Nightly Neu/Firefox/profile/chrome/Icons/1.gif")!important;
             }
        `;

    funktioniert auch das einwandfrei.

    Bei der Art muss/kann man ja das Icon auch ganz einfach ändern.

    Was leider nicht funktioniert ist die Kurzform davon: :/

    CSS
     var css =`
             #profileschange-button { 
             list-style-image: url("..//Icons/1.gif")!important;
             }
        `;

    Trage ich das aber so in die userChrome.css ein, dann passt es.

    Alles anzeigen

    In der userChrome.css brauchst du ja keinen (vollen) Dateipfad festzulegen, bzw. nur wenn die bezügliche Datei nicht im gleichen Ordner wie die zugehörige CSS Datei liegt.

    In diesem Fall dann eben list-style-image: url("Icons/1.gif");, gleiches Prinzip für importierte CSS Dateien, die evtl. in Unterordnern liegen.

    Im Gegensatz zur CSS weiss das JS Script aber nicht wo es die Datei suchen soll, wenn man den vollen Pfad nicht irgendwie definiert.

  • Button um weiteres Profil zu öffnen

    • Horstmann
    • 2. August 2023 um 21:05
    Zitat von Mira_Belle

    Erst einmal soll es hier aber um diese blöde nicht mehr funktionierende Pfadangabe gehen,

    Die da wäre:

    JavaScript
    let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));
    let buttonicon = "bookmark-hollow.svg";
    let props = {
        style: "list-style-image: url('" + ProfilePath + buttonicon + "');"
    };

    und die ich so habe ändern müssen:

    JavaScript
    let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");
    let buttonicon = "bookmark-hollow.svg";
    let props = {
        style: 'list-style-image: url("' + ("file:" + currentProfileDirectory + "/chrome/icons/" + buttonicon) +'");',
    };

    Warum funktioniert die erste Variante nicht mehr :?:

    Mal ganz doof gefragt - die 2te Variante ist doch schon relativ alt, soweit ich das abschätzen kann, und funktioniert anscheinend immer noch.

    Wieso braucht es die erste (neuere?) Variante überhaupt?


    Zitat von 2002Andreas

    PS:

    Vor Jahren hatten wir immer base64 Icons, da brauchte man das alles nicht ;)

    Mal abgesehen von den fragwürdigen Geschmäckern der Erzeuger (was sich hier noch in einigen Scripts an Icons rumtreibt ist schockierend) ;) , und dem furchtbaren Datenwulst in der Datei - was wäre der Vorteil gegenüber .svg?

  • Schaltfläche um Lesezeichen Leiste ein/auszublenden ?

    • Horstmann
    • 2. August 2023 um 16:30
    Zitat von Mira_Belle
    JavaScript
    let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));
    let buttonicon = "bookmark-hollow.svg";
    let props = {
        style: "list-style-image: url('" + ProfilePath + buttonicon + "');"
    };

    eingebunden wurden nicht mehr angezeigt.

    Daher musste ich das anpassen:

    JavaScript
    let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");
    let buttonicon = "bookmark-hollow.svg";
    let props = {
        style: 'list-style-image: url("' + ("file:" + currentProfileDirectory + "/chrome/icons/" + buttonicon) +'");',
    };

    Danke! :)

  • Button um weiteres Profil zu öffnen

    • Horstmann
    • 2. August 2023 um 15:37
    Zitat von Mira_Belle

    Zur Erklärung!

    Die Parameter von PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));

    funktionieren so nicht mehr, warum auch immer.

    Das kann uns Sören Hentzschel vielleicht erkären.

    Daraus folgt, dass auch style: "list-style-image: url('" + ProfilePath + buttonicon + "');"

    das Icon (Symbol) nicht mehr einbindet.

    Alles anzeigen

    Danke für die Erklärung! :)

    Zitat von Mira_Belle

    Zu Deinem Vorschlag, die Symbole per CSS einzubinden.

    Kann man machen, ist eventuell, wenn man eben sonst keine oder halt nur wenige Symbole hat,

    eine ganz gute Möglichkeit.

    Nur bei zig CSS-Dateien im Fall der Fälle den Fehler zu finden, ... :/

    Und ich habe gerne alles beisammen.

    Kann man so oder so sehen - wenn Icons nur über separates CSS benutzt werden, kann - zumindest momentan - der einzige Fehler eigentlich nur ein nicht existierendes/falsch benanntes oder abgelegtes Icon sein.

    Was das gleiche Problem in der Scriptvariante wäre, aber halt mit dem zusätzlichen Dateipfadgedöns.

    Mir gefällt es auch alles in einer Datei zu haben - andererseits ändere ich auch gerne mal individuelle Icons (Farbe, Deckkraft, Position in der toolbar oder im Überhangmenü, etc.), und dann müsste ich immer in das jeweilige Script rein - das dann auch die entsprechenden Parameter mitbringen müsste.

    Vielleicht sollte ich mir einfach eine separate icons.css anlegen. :/ ;)

  • Button um weiteres Profil zu öffnen

    • Horstmann
    • 2. August 2023 um 13:54
    Zitat von Mira_Belle

    Update

    Version 1.05 vom 27. Juli zeigt kein Symbol mehr an.

    Daher das Skript aktualisiert.

    Wäre interessant zu erfahren, was generell die aktuell funktionierende Variante für Dateipfade/Iconeinbindung in Scripts ist, bzw. was nicht mehr geht und warum. :/

    Ist aber vielleicht ein eigenes Thema, oder zu aufwendig zu erklären.

    Alternativ, könnte es mehr Sinn machen Icons einfach mit CSS einzubetten?

    Mach ich bei den meisten meiner Scripts so.

    Wenn man sich die Button ID aus dem Script nimmt, sollte das doch eigentlich generell klappen, ohne das Theater mit den Dateipfaden im Script?

    zB:

    CSS
    #profileschange-button {
        list-style-image: url("icons/profileschange-button.png") !important;
    }
  • Schaltfläche um Lesezeichen Leiste ein/auszublenden ?

    • Horstmann
    • 2. August 2023 um 13:26
    Zitat von Mira_Belle

    Update

    Da mein Skript unter Version 116 nicht mehr funktioniert,

    habe ich es umgeschrieben.

    Nur aus Neugierde - welcher Teil hatte denn nicht mehr funktioniert mit Fx 116?

    Kann meine Version nicht testen in der neusten Fx oder Nightly, mein OS ist zu alt und jetzt auf 115ESR ...

    Selber habe ich meine alte, einfache JS/CSS Kombo am laufen, könnte ich bei Gelegenheit mal zusammenlegen im Script:

    JavaScript
    //Toggle PersonalToolbar v3 left click button
    
    (function ptbut() {
        
            if (location.href !== 'chrome://browser/content/browser.xhtml')
           return;
    
        try {
            CustomizableUI.createWidget({
                id: 'PersonalToolbar-button',
                type: 'custom',
                defaultArea: CustomizableUI.AREA_NAVBAR,
                    onBuild: function(aDocument) {
                        var toolbaritem = aDocument.createXULElement('toolbarbutton');
                        var props = {
                            id: 'PersonalToolbar-button',
                            class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                            removable: true,
                            label: 'Toggle',
                            tooltiptext: 'Toggle Bookmarktoolbar',
                        };
                                       for(var p in props)
                            toolbaritem.setAttribute(p, props[p]);
                        return toolbaritem;
                    }
            });
        } catch(e) { };
        
    document.addEventListener('keydown', (event) => {
            var keyName = event.key;
    
           // Mac German keyboard shortcut Cmd + < 
            if (event.metaKey && keyName == '<') {
               onClick(event, true);        
            }
        }, false
    );
    
    document.getElementById('PersonalToolbar-button').addEventListener( "click", onClick );
    
            function onClick(aEvent, keyEvent=false) {          
            if(!keyEvent && aEvent.button != 0) {
                return;    
            }
    
           PersonalToolbar.classList.toggle("low-mode");
        }
    
    })();
    Alles anzeigen
    CSS
    /**  Bookmarks bar height Toggle  **/
    
    #PersonalToolbar:not([customizing]) {
        height: var(--uc-personalbar-height) !important;
        --uc-personalbar-height: 0px !important;
        min-height: 0px !important;
        transition: all 0.25s ease !important;
    }
    
    #PersonalToolbar.low-mode {
        --uc-personalbar-height: 24px !important;
    }
    
    #PersonalToolbar-button .toolbarbutton-icon {
        list-style-image: url("icons/toolbar12up.png") !important;
    }
    Alles anzeigen
  • Keine automatische Umstellung auf ESR für älteres OS (Mac?)

    • Horstmann
    • 2. August 2023 um 08:28

    Danke für die Antwort, Sören. :)

    Tatsächlich hat sich das Problem über Nacht gelöst - heute morgen liess sich das Update - wie "normale" Updates - in Fx intern laden und installieren.

  • Keine automatische Umstellung auf ESR für älteres OS (Mac?)

    • Horstmann
    • 1. August 2023 um 22:20

    Mein Firefox lässt sich nicht intern von 115.03 auf 115.x ESR updaten, was ursprünglich so angekündigt war als Vorgehensweise für ältere Betriebssysteme.

    ESR kann ich zwar separat herunterladen; meine Befürchtung ist nur, dass die Installation einer neuen Firefox.app meine bisherigen Änderungen mit CSS und JS Scripts zunichte macht.

    Gedanken oder evtl. schon Erfahrungen dazu?

  • non-flexible space wie in früheren Versionen des Browsers

    • Horstmann
    • 1. August 2023 um 16:57

    Eine Art CSS Variante ist etwas das ich gelegentlich einsetze, die nicht benutzte Buttons verwendet.

    Die für einen verfügbaren/sowieso nie benutzten Buttons muss man sich dann halt raussuchen.

    CSS
    /* Fake button spacer nav-bar separator */
    
    /* mark fake separator buttons in customize window  */
    
    toolbarpaletteitem :is(#library-button, 
    #home-button, 
    #characterencoding-button, 
    #sync-button, 
    #save-to-pocket-button) .toolbarbutton-icon {
        background-color: powderblue !important;
        outline: 2px solid orange !important;
    }
    
    :is(toolbarpaletteitem[place="toolbar"]) :is(#library-button, 
    #home-button, 
    #characterencoding-button, 
    #sync-button, 
    #save-to-pocket-button) {
        margin-inline: 4px !important;
        background-color: powderblue !important;
        outline: 1px solid orange !important;
        outline-offset: -1px !important;        
    }
    
    /* fake separator buttons */
    
    :is(toolbarpaletteitem[place="toolbar"], toolbar) :is(#library-button, 
    #home-button, 
    #characterencoding-button, 
    #sync-button, 
    #save-to-pocket-button) .toolbarbutton-icon {
        display: none !important;
    }
    
    :is(toolbarpaletteitem[place="toolbar"], toolbar) :is(#library-button, 
    #home-button, 
    #characterencoding-button, 
    #sync-button, 
    #save-to-pocket-button) {
        /*background-color: red !important;*/
        pointer-events: none !important;
        -moz-window-dragging: drag !important;
        width: 10px !important;
        margin-block: 6px !important;
        padding: 0 !important;
    }
    Alles anzeigen
  • Button um weiteres Profil zu öffnen

    • Horstmann
    • 27. Juli 2023 um 21:14
    Zitat von Mira_Belle

    Nun gut, es scheint, als wurde das Skript ohne große Fehler laufen.

    Ich habe es noch einmal ein bisschen überarbeitet,

    kleine Fehler korrigiert, die Variable für den Pfad zum "Symbolordner" ersetzt

    und die Möglichkeit zum Aufrufen des Profilmanagers überarbeitet.

    Auch wurden einige Kommentare überarbeitet und ergänzt.

    Wenn also keine weiteren Fehler sich eingeschlichen haben

    und es auch keine weiteren Verbesserungsvorschläge mehr gibt,

    wäre das nun die vorerst finale Version. ;)

    JavaScript
    ---
    Alles anzeigen

    Nochmal vielen Dank, das Script funktioniert hier prima! :) :thumbup:

    Und mit Varianten für Icon-Dateipfade bin ich jetzt erstmal eingedeckt, ;) auch sehr nützlich.

  • Button um weiteres Profil zu öffnen

    • Horstmann
    • 27. Juli 2023 um 14:25

    Bzgl. #64 - Hehehe:

    JavaScript
          let arguments = ["-no-remote", "-P", "Test", "-foreground"];

    Dank dem Link von .DeJaVu, und meiner bewährten Taktik von dummdreistem Reinkopieren - mit -foreground öffnet sich das Zusatzprofil auf meinem Mac damit aktiv/fokussiert, und immer im Vordergrund. :)

    Jetzt muss ich das nur noch auf die about:profiles Buttons (Profil zusätzlich ausführen) angewendet bekommen, in einem separaten Script wohl. :/

Unterstütze uns!

Jährlich (2025)

92,9 %

92,9% (604,17 von 650 EUR)

Jetzt spenden
  1. Kontakt
  2. Datenschutz
  3. Impressum
Community-Software: WoltLab Suite™
Mastodon