Vorbereitung für Anpassungen mittels Scripte unter macOS am Mac

Du benötigst Hilfe bezüglich Firefox? Bitte stelle deine Frage im öffentlichen Bereich des Forums und nicht per Konversation an wahllos ausgesuchte Benutzer. Wähle dazu einen passenden Forenbereich, zum Beispiel „Probleme auf Websites“ oder „Erweiterungen und Themes“ und klicke dann rechts oben auf die Schaltfläche „Neues Thema“.
  • Ich krieg unter macOS Sierra einfach keine Scripte zum Laufen. Egal, welche Variante ich von hier nehme: https://www.camp-firefox.de/fo…ewtopic.php?f=16&t=122615


    Die Dateien wurden entsprechend der jeweiligen Variante korrekt verteilt, wobei sich die Ordnerstruktur unter macOS ja tw. völlig anders gestaltet. Als "Installationsordner" dient unter macOS Sierra dieser Pfad, in dem auch der defaults > pref-Ordner liegt:
    Programme > Firefox.app >Kontextmenü, "Paketinhalt zeigen" > Contents > Resources
    Der chrome-Ordner liegt, analog Windows, ganz normal im Profilordner.


    An der Dateiverteilung sollte es also nicht scheitern. Jedoch bleibt dieses Script hier z. B. völlig wirkungslos (getestet mit einem jungfräulichen Profil und jeder der 4 Varianten):


    Muss ich an irgendeinem Dateiinhalt etwas anpassen (Dateipfade ev.)? Sonst etwas am Mac beachten, damit Scripte laufen?

    Gruß
    Manfred


    FF in aktueller Releaseversion, auf MacBook Pro 15" Late 2015 unter macOS Mojave 10.14.6

  • Ich habe leider keine Ahnung von Mac-Systemen. :)
    Aber um zu testen, ob du alle notwendigen Dateien richtig eingebunden hast, könntest du mal eine Datei mit folgendem Script erstellen, von dem ich weiss, das es funktioniert:


    Dieses Script fügt dem Menü unter "Datei" einen neuen Menüpunkt "Neustart" mit der entsprechenden Funktion ein.

    Windows 10 | FF 62.0 (64-Bit) / FF 61.0 (64-Bit) / FF 63.0 (64-Bit)

  • Vielen Dank, dass du dich meines Problems annimmst, EffPeh!


    Das Script funktioniert bei mir nicht und ich denke, aus folgendem Grund:
    Die Menüleiste am Mac ist nicht Teil des jeweils geöffneten Programms, sondern des Systems. Soll heißen, die Menüleiste ist immer an der gleichen Stelle, hat immer das gleiche Aussehen und kann nur durch Systemeingriffe verändert werden, was dann aber generell Wirkung hat, egal welches Programm gerade läuft.
    Auf den untenstehenden Screenshots z. B. ist zu sehen, dass ich in den Systemeinstellungen "Dunkle Menüleiste verwenden" eingestellt habe.
    Wie gesagt gilt das systemweit. Je nach geöffnetem Programm werden lediglich die Menüeinträge angepasst - im Gegensatz zu Windows, bei dem jedes Programm seine "eigene" Menüleiste mitbringt und in ihm integriert ist.


    Konkret sieht das so aus bei Firefox:
    [attachment=1]Bildschirmfoto 2017-11-30 um 11.55.23.jpg[/attachment]


    Und so z. B. beim Texteditor:
    [attachment=0]Bildschirmfoto 2017-11-30 um 11.59.08.jpg[/attachment]

  • Na, da kannst du mal sehen, wieviel Ahnung ich von Macs habe. :D
    Dann probieren wir das nochmal mit diesem Script:


    Das sollte einen "Neustart"-Button hinzufügen. Falls er nicht direkt in der Leiste zu finden ist, musst du ihn erst aus dem "Anpassen"-Fenster in die Leiste ziehen.

    Windows 10 | FF 62.0 (64-Bit) / FF 61.0 (64-Bit) / FF 63.0 (64-Bit)

  • Danke vorweg für deine Unterstützung, EffPeh!


    Der Veruch mit dem Neustart-Button war leider auch erfolglos. Ich habe den chrome-Ordner bis auf die (von mir so benannte) ButtonNewStart.uc.js mit deinem Script und die userChrome.js mal testweise komplett leergeräumt - nix. :-???
    Sieht dann so aus:
    [attachment=1]Bildschirmfoto 2017-11-30 um 17.24.54.jpg[/attachment]
    Bzw. so:
    [attachment=0]Bildschirmfoto 2017-11-30 um 17.25.12.jpg[/attachment]

  • Gib nur das in die userChrome.js:


    Code
    userChrome.ignoreCache = true;
    userChrome.import("*", "UChrm");


    und teste dieses Skript, bei dem ein Meldungsfenster erscheinen sollte:


    Code
    if (location == 'chrome://browser/content/browser.xul') {
      alert('hi!');
    };
  • Gesagt, getan. Erfolglos. Kein Meldungsfenster zu sehen, weder mit meinem gegenwärtigen, noch mit einem extra neu angelegten Profil.
    Vielleicht hilfts: Ich habe die "Vorbereitungs"dateien von hier genommen (Zitronellas Vorschlag), weil nur 4 Dateien: https://www.camp-firefox.de/fo…hp?f=7&p=1044804#p1044799 Die Anzahl der Dateien unterscheidet sich von Variante zu Variante z. T. erheblich. Kann das ev. eine Rolle spielen?

    Gruß
    Manfred


    FF in aktueller Releaseversion, auf MacBook Pro 15" Late 2015 unter macOS Mojave 10.14.6

  • Glaube ich nicht.
    Versuche es nochmal in einem neuen Profil nach dieser Beschreibung:
    Firefox Anpassungen: die Basis


    und wieder mit dieser userChrome.js:


    Code
    userChrome.ignoreCache = true;
    userChrome.import("*", "UChrm");


    und diesmal diesem Skript:


    Code
    console.log('hi!');
    if (location == 'chrome://browser/content/browser.xul') {
      alert('hi!');
    };


    Öffne gleich nach dem Start mit Cmd+Umschalt+J die Browserkonsole und dort schalte oben die JS- und Logbuch-Meldungen ein und die anderen aus. Zeige bitte einen Screenshot mit den Meldungen, die dann dort stehen.

  • Ok, ausgeführt. "Hi" bekam ich aber nirgendwo zu sehen.


    Hier die Meldungen der Konsole. Ich hoffe, ich hab die korrekten Menüpunkte angehakt.
    Mit komplett neuem Profil:
    [attachment=1]Bildschirmfoto 2017-11-30 um 20.15.03.jpg[/attachment]


    Und mit "Arbeitsprofil:
    [attachment=0]Bildschirmfoto 2017-11-30 um 20.17.13.jpg[/attachment]


    Ich hoffe sehr, dass dir die Infos hilfreich sind!

  • Ja, sind sie, danke.


    In der config.js im Ordner, der dem Windows-Installationsordner entspricht, steht diese Zeile, es ist ca. die 12.:


    Code
    let path = OS.Constants.Path.libDir;


    Ersetze sie durch


    Code
    let path = OS.Constants.Path.macUserLibDir;


    und teste nochmal das gleiche.

  • nächster Versuch:


    Ersetze die Zeile durch


    Code
    let path = OS.Constants.Path.profileDir;


    und gib den Ordner userChromeJS in den Profilordner
    und mach nochmal den gleichen Test.

  • Durchgeführt. Hier die Konsolenmeldung:
    [attachment=0]Bildschirmfoto 2017-11-30 um 22.17.58.jpg[/attachment]



    EDIT: Vielleicht eine laienhafte Idee, doch sollte in dieser einen Zeile nicht ergänzend auf den tatsächlichen Speicherort im Unterordner chrome verwiesen werden? So wie es sich für mich liest, erwartet die Funktion den Ordner userChromeJS direkt im Profilverzeichnis. So ähnlich vielleicht:
    let path = OS.Constants.Path.profileDir.chrome


    EDIT 2: Mein Fehler! Ordner falsch gespeichert. Wird gleich korrigiert und gebe Rückmeldung!

  • So, jetzt befindet sich der Ordner userChromeJS auch tatsächlich im Profilordner und nicht, wie vorhin irrtümlich, im chrome-Ordner. Ich nehm an, das kann ich als Erfolg werten?!
    [attachment=1]Bildschirmfoto 2017-11-30 um 22.37.14.jpg[/attachment]
    :D


    Hier zwecks Vollständigkeit noch die Konsolenmeldung:
    [attachment=0]Bildschirmfoto 2017-11-30 um 22.39.11.jpg[/attachment]


    Ich glaub, so solte es nun passen. Ob es mit anderen Scripten klappt, werde ich morgen Abend testen. Für heute hab ich mal genug davon. ;) Vielen Dank jedenfalls! :klasse:


    Eine wichtige Frage hab ich aber noch zur userChrome.css und userContent.css:
    Wenn ich die Dateien aus dem Dateipaket verwende, dann haben sie folgenden Inhalt:



    und

    Code
    /* userContent.css *********************************************/
    /* Do not remove the @namespace line -- it's required for correct functioning
     * set default namespace to XUL
     */
    @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");


    Wenn ich nun Anpassungen unter diesem bestehenden Inhalt einfüge, werden diese nicht ausgeführt. Konkret handelt es sich um die Anpassungen, die Aris auf Github zur Verfügung stellt. Das hatte ich ursprünglich in einer sonst leeren userChrome.css stehen, womit es funktioniert hat:



    In einer sonst leeren userContent.css stand ursprünglich dieser Code (der den Einstellungs- und Erweiterungen-Tab einfärbte).



    Wie gesagt, sobald vor diesen Codes noch etwas steht (wie in den heruntergeladenen Dateien), werden die Codes nicht mehr umgesetzt. Kann das hier die Ursache sein? Zitat von Aris:

    Zitat

    CSS tweaks won't work, if '@namespace' references are used inside .css files!


    Gibts diesbezüglich eine Idee?


  • Ich nehm an, das kann ich als Erfolg werten?!


    Genau! :)
    Um einen Test möchte ich dich später noch bitten, aber zuvor teile mir bitte den genauen Pfad zur config.js mit.


    zur userChrome.css und userContent.css:
    Gib in die Dateien nur den Code von Aris, der enthält ohnehin alles Notwendige; das andere stört anscheinend. Allerdings hast du den gleichen Code in beiden Dateien, das ist wahrscheinlich nicht richtig.

  • Vorweg sorry für meine späte Antwort, ich war den ganzen Tag beruflich unterwegs.


    Du hast natürlich recht, ich habe irrtümlich 2x den Aris-Code aus meiner userContent.css gepostet. Die userChrome.css sieht folgendermaßen aus:


    Wenn der Ursprungstext in den beiden Dateien nicht nötig ist, werde ich nur den Aris-Code einfügen. Allerdings habe ich dennoch ein Problem, welches ich hier beschrieben habe: https://www.camp-firefox.de/fo…ic.php?p=1063237#p1063237




    Zitat

    Um einen Test möchte ich dich später noch bitten

    Sehr gerne, jederzeit!

    Zitat

    ...zuvor teile mir bitte den genauen Pfad zur config.js mit

    Klar. Er lautet "/Applications/Firefox.app/Contents/Resources".
    Ich weiß nicht, wie vertraut du mit Pfadangaben am Mac bist. Daher: Der Slash ("/") vor Applications sagt aus, dass Applications direkt im Wurzelverzeichnis der Systemplatte liegt. [Eine Tilde ("~") würde bedeuten, dass der Pfad im Benutzerverzeichnes startet.]
    Bildhaft sieht das so aus:
    [attachment=2]Bildschirmfoto 2017-12-01 um 17.04.21.jpg[/attachment]



    Den Pfad nach der Firefox.app, nämlich /Contents/Resources, erreicht man, indem man die Firefox.app im Programmeordner rechts anklickt und im Kontextmenü "Paketinhalt zeigen" auswählt:
    [attachment=1]Bildschirmfoto 2017-12-01 um 17.13.14.jpg[/attachment]



    Das Ergebnis sieht dann so aus:
    [attachment=0]Bildschirmfoto 2017-12-01 um 17.13.54.jpg[/attachment]


  • Vorweg sorry für meine späte Antwort, ich war den ganzen Tag beruflich unterwegs.


    Das macht überhaupt nichts, ich antworte manchmal sogar erst nach ein paar Tagen.


    Der Test:
    Ersetze die besagte Zeile in der config.js durch diese zwei Zeilen:


    Code
    let path = OS.Constants.Path.libDir;
        path = OS.Path.join(OS.Path.dirname(path), "Resources");


    und gib den Ordner userChromeJS wieder dorthin, wo er anfangs war; das ist der Ordner Resources, wenn ich es richtig verstanden habe.
    Teste, ob die Skripte funktionieren.


    Noch eine andere Frage, mach dazu bitte folgendes:
    Falls die Browserkomsole offen ist, schließe sie. Dann setze in about:config devtools.chrome.enabled auf true. Dann öffne die Browserkonsole und gib unten in die Eingabezeile folgendes ein, gefolgt von der Enter-Taste:

    Code
    Services.appinfo.OS


    Es erscheint dann eine Zeichenkette. Wie lautet sie?

  • Besagte Zeile in der config.ja durch deine beiden Zeilen ersetzt und den Ordner userChromeJS wieder in den Ordner Resources (entspricht dem Installationsordner unter Windows) verschoben - Scripte funktionieren weiterhin:
    [attachment=1]Bildschirmfoto 2017-12-02 um 10.43.43.jpg[/attachment]



    devtools.chrome.enabled unter about:confg auf true gesetzt, Browserkonsole gestartet und in der Konsoleneingabezeile Services.appinfo.OS eingegeben. Ergebnis:
    [attachment=0]Bildschirmfoto 2017-12-02 um 10.42.51.jpg[/attachment]

  • Vielen Dank.
    Damit lässt sich jetzt die config.js so abändern, dass sie für alle Betriebssysteme passt.
    Die Zeile


    Code
    let path = OS.Constants.Path.libDir;


    wird dann ersetzt durch:


    Code
    let path = OS.Constants.Path.libDir;
        if (Services.appinfo.OS == 'Darwin') {  // macOS
          path = OS.Path.join(OS.Path.dirname(path), "Resources");
        };


    :)