macOS Monterey Wie Pinta beim Start eine Umgebungsvariable mitgeben?

iMaxer

iMaxer

Aktives Mitglied
Thread Starter
Dabei seit
26.10.2021
Beiträge
2.984
Reaktionspunkte
2.517
Moin. :)
Das mir schon von Linux bekannte Programm Pinta startet auf meinem deutschen Monterey leider immer in Englisch, nicht tragisch, aber unschön.

Es startet laut Websuche in deutsch, wenn man es aus dem Terminal aufruft mit
env LANGUAGE=de open pinta.app
und das funktioniert auch.
Meine Versuche, diese Variable systemweit einzutragen über Bearbeitung der profile
sudo nano /etc/profile
sind leider gescheitert. Wie gehe ich das richtig an? Unter Linux würde ich jetzt einfach die Zeile
"env LANGUAGE=de open pinta.app" in den Programmstarter, also die .desktop Datei eintragen. Geht sowas auch bei MacOS? Kann dazu nichts finden leider.
Danke für erhellende Hinweise! :)
 
das sollte reichen:

Code:
LANGUAGE=de open -a pinta

Bist du sicher, dass die Variable LANGUAGE heißt und nicht LANG? Die wäre nämlich standardmäßig gesetzt in Terminal.app auf dem Mac. Zudem sollte es wenn schon LANGUAGE, dann auch LANGUAGE=de_DE.UTF-8 lauten
 
Die "normale" Sprachvariable (LANG=de_DE.UTF-8) ist bereits gesetzt, wird anscheinend von Pinta aber nicht ausgewertet. Meine Frage ist nicht beantwortet, wie ich die ja funktionierende Definition fest eintragen kann. Deine Version funktioniert auch, aber ich will halt nicht jedes mal das Terminal bemühen. ;)
 
Ob die /etc/profile überhaupt für deine shell gelesen wird, weiß ich nicht. Soweit ich mich auch erinnere, wird die auch überhaupt nicht für native macOS-App-Bundles verwendet.

Bei von Linux portiert apps kommt es halt drauf an, wie die portiert wurden. Da gibt es die wildesten Varianten.

Besonders kommt es drauf an, wie diese App genau startet. Damit meine ich nicht den Doppelklick aufs App-Icon, sondern, ob das im App-Bundle enthaltene executable file (liegt unter "pinta.pp/Contents/MacOS/xxxx" wobei xxx eben dieses executable file) ein script ist oder ein binary.

Bei einem script (kommt recht oft vor) kannst du dieses script ändern und dort ein "export LANGUAGE=de" eintragen.

Ist es ein binary, gibts keine pauschale Lösung. Die im App-Bundle vorhanden Info.plist würde Einträge erlauben, mit denen man environment Variablen setzen kann. Ich bin mir da nicht sicher, ob diese Environment-Variablen von macOS gesetzt werden (höchstwahrscheinlich) oder doch von der App auf eine bstimmte Art angesprochen werden müssen. Dazu müsste ich erst die Developer-Doku durchforsten.

Du könntest es aber auch einfach probieren. Am einfachsten geht es, wenn du Xcode hast. (ohne Xcode musst du xml per Hand schreiben. Ist nervig. Sag Bescheid, wenn du das tun willst)

Dann kannst du die Info.plist (liegt in pinta.app/Contents/Info.plist) einfach mit Xcode öffnen. Da suchst du dir eine Zeile weit oben, sinnvoll wäre vor "Executable file", klickst da rein. Dann erscheint ein + un - Button.

Bildschirmfoto 2023-01-06 um 14.00.41.jpg

Mit dem Plus fügst du eine neue Zeile ein und kannst den Key wählen. Da nimmst du "Environment variables" und markierst dann diese Zeile

Bildschirmfoto 2023-01-06 um 14.03.22.jpg

Links von "Enviroment variables" ist ein kleines Dreieck. Da klickst du drauf, so dass es nach unten zeigt, also aufklappt ist. Dann kannst du erst einen neuen Eintrag für dieses dictionary hinzufügen.

Nun gehst du wieder aufs + für einen Eintrag (es erscheint New item) für die environment variables und trägst dann dort als Key/Item LANGUAGE und als Wert de ein.

Bildschirmfoto 2023-01-06 um 14.06.48.jpg

Abspeichern. Fertig.

Das wäre dann die Art, wie man eine App von Linux nach macOS richtig portiert. Macht aber so gut wie niemand, zumindest habe ich es nicht nicht groß erlebt.
 
  • Gefällt mir
Reaktionen: agrajag und dg2rbf
Mach ein alias für deine Shell.
Oder gleich eine Applescript app, um was zum Doppelklicken zu haben.

Die in profile zu setzen gilt nur für interaktive Shells wie die bash.

Für MacOS gibt es eine Environment.plist, um so was global für das System zu setzen.
 
  • Gefällt mir
Reaktionen: dg2rbf
Danke für die Hinweise so weit. :)
Ich möchte weder AppleScript lernen noch Xcode, das ist dies Problem nun nicht wert.
Wenn ihr mir verraten würdet, welche Datei ich wie mit dem Editor bearbeiten muss, damit die ENV für Pinta gesetzt ist und es ohne Terminal gestartet werden kann?
 
Ich möchte weder AppleScript lernen noch Xcode, das ist dies Problem nun nicht wert.
Äh, das ist ein Einzeiler.
Code:
do shell script "LANGUAGE=de open pinta"
Ausführbar speichern.

Der PropertyListEditor ist halt keine einzelne App mehr, sondern in Xcode integriert.
 
Du musst ja Xcode nicht lernen, ich habe dir ja nur eine bebilderte Klickanleitung geschrieben.

Wenn du die Info.plist manuell ändern willst, bitte sehr. Du musst das einfügen (achte aber auf Tippfehler, auch keine zusätzlichen Leerzeichen in den strings / keys

Code:
    <key>LSEnvironment</key>
    <dict>
        <key>LANGUAGE</key>
        <string>de</string>
    </dict>

und zwar am besten analog wie auf diesem screenshot:

Bildschirmfoto 2023-01-06 um 17.44.23.jpg
 
  • Gefällt mir
Reaktionen: dg2rbf
Bei einem script (kommt recht oft vor) kannst du dieses script ändern und dort ein "export LANGUAGE=de" eintragen.
Pinta scheint über eine kleine 134 kB Datei gestartet zu werden. Aber auf cat sieht mir das nicht nach einer Scriptdatei aus. Eine info.plist gibt es aber, die ist überschaubar. Aber KA, wie man da korrekt die Sache einfügt.
 
Danke nochmal, das mit der info.plist kriege ich dann wohl hin! Melde mich, wenn es geklappt hat....

Edit: Also, wenn das keinen Neustart erfordert, dann scheint es nicht geklappt zu haben. Die Änderungen stehen drin (per C&P), aber es wirkt nicht.
 
Zuletzt bearbeitet:
Edit: Also, wenn das keinen Neustart erfordert, dann scheint es nicht geklappt zu habe
doch klar. Es kann auch sein, dass du die App erst mal umbennen und wirder zurück umbenennen musst, damit getriggert wird, dass ie Info.plist definnitv eingelesen wird.

Und: 100% keine Tippfehler und an richtiger Stelle einfügen.
 
  • Gefällt mir
Reaktionen: dg2rbf
Ok, aber was ist die richtige Stelle? Was du im Bild zeigst gibt es bei meiner so nicht. Ich hatte es weiter unten drin, wo offenbar auch weitere keys gesetzt werden.
 
Das ist klar, dass es bei dir anderes aussieht. Ist ja auch ein anderes Prgramm. Darum habe ich geschrieben "analog" und bei der Klickanleitung mit Xcode erwähnt, dass es sehr weit oben, am besten eben vor dem key für "executable file" erscheinen sollte.

Poste mal die plist. Aber unbedingt in Code-Tags

Wie gesagt: xml per Hand ist nicht so easy.
 
Ich habe es jetzt an analoger Stelle drin, wie du sagst, vor dem key für "executable file" uns starte nun neu......
 
Zuletzt bearbeitet:
Hmmm, nun startet Pinta nicht mehr. Mache es rückgängig. Installiere Pinta mal neu und poste dann mal die Info.plist ...
 
Zuletzt bearbeitet:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDocumentTypes</key>
    <array>
            <dict>
                <key>CFBundleTypeIconFile</key>
                <string>pinta.icns</string>
                <key>CFBundleTypeName</key>
                <string>PNG</string>
                <key>CFBundleTypeRole</key>
                <string>Editor</string>
                <key>LSItemContentTypes</key>
                <array>
                    <string>public.png</string>
                </array>
            </dict>
            <dict>
                <key>CFBundleTypeIconFile</key>
                <string>pinta.icns</string>
                <key>CFBundleTypeName</key>
                <string>JPEG</string>
                <key>CFBundleTypeRole</key>
                <string>Editor</string>
                <key>LSItemContentTypes</key>
                <array>
                    <string>public.jpeg</string>
                </array>
            </dict>
            <dict>
                <key>CFBundleTypeIconFile</key>
                <string>pinta.icns</string>
                <key>CFBundleTypeName</key>
                <string>TIFF</string>
                <key>CFBundleTypeRole</key>
                <string>Editor</string>
                <key>LSItemContentTypes</key>
                <array>
                    <string>public.tiff</string>
                </array>
            </dict>
            <dict>
                <key>CFBundleTypeIconFile</key>
                <string>pinta.icns</string>
                <key>CFBundleTypeName</key>
                <string>ICO</string>
                <key>CFBundleTypeRole</key>
                <string>Editor</string>
                <key>LSItemContentTypes</key>
                <array>
                    <string>com.microsoft.ico</string>
                </array>
            </dict>
            <dict>
                <key>CFBundleTypeIconFile</key>
                <string>pinta.icns</string>
                <key>CFBundleTypeName</key>
                <string>BMP</string>
                <key>CFBundleTypeRole</key>
                <string>Editor</string>
                <key>LSItemContentTypes</key>
                <array>
                    <string>com.microsoft.bmp</string>
                </array>
            </dict>
            <dict>
                <key>CFBundleTypeIconFile</key>
                <string>pinta.icns</string>
                <key>CFBundleTypeName</key>
                <string>GIF</string>
                <key>CFBundleTypeRole</key>
                <string>Editor</string>
                <key>LSItemContentTypes</key>
                <array>
                    <string>com.compuserve.gif</string>
                </array>
            </dict>
            <dict>
                <key>CFBundleTypeIconFile</key>
                <string>pinta.icns</string>
                <key>CFBundleTypeName</key>
                <string>TGA</string>
                <key>CFBundleTypeRole</key>
                <string>Editor</string>
                <key>LSItemContentTypes</key>
                <array>
                    <string>com.truevision.tga-image</string>
                </array>
            </dict>
            <dict>
                <key>CFBundleTypeIconFile</key>
                <string>pinta.icns</string>
                <key>CFBundleTypeName</key>
                <string>ORA</string>
                <key>CFBundleTypeRole</key>
                <string>Editor</string>
                <key>LSItemContentTypes</key>
                <array>
                    <string>public.ora</string>
                </array>
            </dict>
        </array>
    <key>CFBundleDevelopmentRegion</key>
    <string>English</string>
    <key>CFBundleExecutable</key>
    <string>Pinta</string>
    <key>CFBundleIconFile</key>
    <string>pinta.icns</string>
    <key>CFBundleIdentifier</key>
    <string>com.ximian.pinta</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>Pinta</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>2.1</string>
    <key>CFBundleSignature</key>
    <string>xmmd</string>
    <key>CFBundleVersion</key>
    <string>2.1</string>
    <key>NSAppleScriptEnabled</key>
    <string>NO</string>
    <key>UTImportedTypeDeclarations</key>
    <array>
        <dict>
            <key>UTTypeIdentifier</key>
        <string>public.ora</string>
        <key>UTTypeReferenceURL</key>
        <string>http://www.freedesktop.org/wiki/Specifications/OpenRaster/</string>
        <key>UTTypeDescription</key>
        <string>OpenRaster Image</string>
        <key>UTTypeIconFile</key>
        <string>pinta.icns</string>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.image</string>
            <string>public.data</string>
        </array>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>com.apple.ostype</key>
            <string>ORA</string>
            <key>public.filename-extension</key>
            <array>
                <string>ora</string>
            </array>
            <key>public.mime-type</key>
            <string>image/openraster</string>
        </dict>
        </dict>
    </array>
</dict>
</plist>
 
Ich schreibe das um. Warte einwenig.
 
Die benutzt du dann als pinta Launcher.
Ich komme drauf zurück, wenn das mit der Info.plist nicht klappt. "Als Launcher" versteh ich so, dass ich die Datei in den Programme-Ordner ziehen kann?
 
Zurück
Oben Unten