Button um weiteres Profil zu öffnen

  • Spoiler anzeigen

    Mira_Belle

    Diese Variante müsste auch funktionieren - konnte ich leider nicht ausprobieren bei diesem Button (bin auf Linux, müsste ich erst einmal viel anpassen!)?

    JavaScript
    // start configuration----------------------------------
    
    let buttonIcon = "bookmark-hollow.svg"  // Name.file extension of the symbol to be displayed
    let buttonPath = "/chrome/icons/" // Path to folder containing the icon
    
    // end configuration-----------------------------------
    
    let props = {
        style: "list-style-image: url('" + PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir)) + buttonPath + buttonIcon + "');",
                };

    Ich mach mir die Welt, wie sie mir gefällt. [Pippi Langstrumpf/Astrid Lindgren]

    4 Mal editiert, zuletzt von Mitleser (2. August 2023 um 23:51) aus folgendem Grund: Keine Reaktion von @Mira_Belle; Beitrag ist scheinbar überflüssig.

  • 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?


    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?

    Einmal editiert, zuletzt von Horstmann (2. August 2023 um 21:11) aus folgendem Grund: Ein Beitrag von Horstmann mit diesem Beitrag zusammengefügt.

  • 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?


    Bei der ersten Variante lassen sich die Ordner chrome und den darunter liegenden Ordner icons recht einfach

    in den Dateipfad (ProfilePath) einbinden.

    Geht in der zweiten Variante nicht, zumindest ist es mir bisher noch nicht gelungen.

    Um dann doch noch die zwei Ordner einzubinden, muss man sich der Krücke + "/chrome/icons/" +

    oder eben einer weiteren Variablen bedienen.

    Ich persönlich finde nach wie vor die erste Version am elegantesten.

    Eventuell geht das auch ähnlich mit der Zweiten.

    Mit <3lichem Gruß

    Mira

  • So Freunde der Nacht,

    ich habe nun einen gangbaren Weg gefunden,

    um meine favorisierte Methode des Profilpfades weiterhin verwenden zu können!

    Zugegeben, völlig unorthodox,

    aber wie so oft hat mich Horstmann darauf gebracht!

    Er schrieb:

    ...

    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;
    }

    Und so kam mir noch eine Idee!

    Denn das kuriose war/ist der Umstand, dass in meiner Symbole.us.js

    ja genau diese Variable: let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));

    genutzt wird, aber eben auch sonst nur CSS-Code.

    Und hier nun meine Lösung.

    Hätte ich schon einmal erwähnt, dass ich so hin und wieder an Schlafstörungen leide?

    Da rattert dann die ganze Nacht das Hirn und man kommt einfach nicht zur Ruhe.

    Aber fein ist es, wenn man dann seine Gedanken doch irgendwie fokussieren kann,

    und nicht wie so oft einfach es nur so um irgendwelchen Käse, für den es doch keine Lösungen gibt,

    oder weil es eine Sache aus der Vergangenheit ist, die eh nicht mehr zu ändern ist.

    Aber zurück zum Thema.

    Könnt Ihr das mal testen?

    Und wenn es geht auch mit Nightly's?

    Mit <3lichem Gruß

    Mira

  • Und hier nun meine Lösung.

    Hab das jetzt getestet. Icon wird angezeigt und der default-Profil wird auch geöffnen (bei mir der Test-Profil) und wenn der Test-Profil offen ist, man nochmals auf Icon klickt kommt Meldung, dass FF schon läuft und man es zuerst beenden soll. Also alles so wie es sein soll meiner Ansicht nach. Besten Dank.

    "Klug sein hat noch nie einen Menschen an Dummheiten gehindert." Stefan Zweig
    Firefox-Version: 125.0.3
    Edition: Windows 11 Home (64-Bit-Betriebssystem)
    Version: 23H2

  • Könnt Ihr das mal testen?

    Hallo Mira_Belle..

    das funktioniert hier auch einwandfrei im Nightly. :thumbup:

    Du bastelst doch gerne ;)

    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.

  • 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.

  • Hallo Mira_Belle..

    das funktioniert hier auch einwandfrei im Nightly. :thumbup:

    Du bastelst doch gerne ;)

    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.

    Du erinnerst Dich noch dunkel an mein Projekt,

    allen Menüs ein Symbol zu verpassen?

    Damals hatte ich arge Probleme das mit der Kurzform zu verstehen

    und das in einer CSS zu verarbeiten.

    Daher hatte ich mich damals für eine Lösung per JavaScript entschieden,

    da man dort ja Variablen verwenden kann. ;)

    Du definierst also eine Variable für den Pfad, z.B. let iconPath = D:\\Nightly Neu\\Firefox\\profile\\chrome\\Icons

    dann würde der Code dazu z.B. so aussehen:

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

    Auch hier kannst Du ganz einfach das Symbol austauschen.

    Bei JavaScript müssen halt immer absolute Pfade angegeben sein,

    egal wie.

    Und danke für das Testen.

    Mit <3lichem Gruß

    Mira

  • Aber jetzt:

    Hallo Mira_Belle..

    ich hatte es noch gar nicht getestet hier ;)

    Aber der neue Eintrag funktioniert so auch nicht.

    Geändert auf so, und es geht.

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

    In Zeile 1 habe ich noch die " eingefügt.

    Ansonsten...danke dafür :)

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

    Mit <3lichem Gruß

    Mira

  • 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:

    Grüße vom FuchsFan

    Einmal editiert, zuletzt von FuchsFan (3. August 2023 um 14:05)