Die Einstellungen werden geändert, wenn die Standardeinstellungen nicht angewendet werden

1

Ich bin ein CLI-Enthusiast und als solcher war ich ein umfangreicher Benutzer von Brew, Cask, M, Mas, Softwareupdate und so weiter. Ich habe sogar ein paar Tutorials darüber geschrieben (siehe Hier und Dort ).

Im Moment tauche ich ein Standardeinstellungen um meine Einstellungen zu ändern.

Mein Problem ist, dass einige in der CLI eingestellte Standardeinstellungen nicht in der GUI angezeigt werden. Ich versuche beispielsweise, "Drei-Finger-Suche & amp; Datendetektoren" in den Systemeinstellungen & gt; Trackpad

enter image description here

Unter Verwendung von diff und Defaults Read stellte ich fest, dass die Einstellungen "TrackpadThreeFingerTapGesture" in "com.apple.AppleMultitouchTrackpad" sind.

Wenn das Kontrollkästchen aktiviert ist, gibt "Standardmäßig" com.apple.AppleMultitouchTrackpad TrackpadThreeFingerTapGesture "2 zurück. Dies ist der Standardwert. Wenn es nicht markiert ist, wird 0 zurückgegeben. Das ist, was ich will.

Um dies zu testen, habe ich die Einstellung in der GUI überprüft und dann die folgenden Befehle verwendet:

killall 'System Preferences'
defaults write com.apple.AppleMultitouchTrackpad TrackpadThreeFingerTapGesture -int 0
defaults read com.apple.AppleMultitouchTrackpad TrackpadThreeFingerTapGesture

Der letzte Befehl gibt 0 zurück, was in Ordnung ist. Aber wenn ich die GUI öffne, ist das Kontrollkästchen immer noch aktiviert! Das erneute Lesen des Werts gibt mir immer noch 0 ...

Ich habe sogar versucht, mich abzumelden, nachdem ich den Wert geändert habe. Das Problem bleibt bestehen.

Kann jemand helfen?

X99
quelle

Antworten:

1

Die Einstellung, die Sie festlegen möchten, wird in gespeichert ~/Library/Preferences/ByHost, also müssen Sie den Schalter hinzufügen -currentHost zum defaults Befehl

Versuchen Sie den folgenden Code mit Value einstellen 0, dann auf einstellen 2 und den Unterschied sehen

Value="0"; \
echo "before"; \
: read actual values; \
defaults -currentHost read -g "com.apple.trackpad.threeFingerTapGesture"; \
defaults read com.apple.AppleMultitouchTrackpad TrackpadThreeFingerTapGesture; \
: close System Preferenes; \
pkill -u "${USER}" \
      -f "^/Applications/System Preferences.app/Contents/MacOS/System Preferences$" 2>/dev/null; \
: set value in ~/Library/Preferences/ByHost/.GlobalPreferences.#Hardware UUID#.plist; \
: where your hardware uuid can be determined with; \
: ioreg -c IOPlatformExpertDevice  -d 2 | awk -F'"' '/IOPlatformUUID/ { print $(NF-1) }'; \
defaults -currentHost write -g "com.apple.trackpad.threeFingerTapGesture" -integer ${Value}; \
: set value in ~/Library/Preferences/.GlobalPreferences.plist; \
defaults write com.apple.AppleMultitouchTrackpad TrackpadThreeFingerTapGesture -integer ${Value}; \
: kill the preference cache process; \
pkill -u "${USER}" -l "^/usr/sbin/cfprefsd agent$" 2>/dev/null; \
: wait a second otherwise you get errors on the defaults commands; \
sleep 1; \
echo "after"; \
: read set values; \
defaults -currentHost read -g "com.apple.trackpad.threeFingerTapGesture"; \
defaults read com.apple.AppleMultitouchTrackpad TrackpadThreeFingerTapGesture; \
: open trackpad preference; \
open "/System/Library/PreferencePanes/Trackpad.prefPane"

gibt mir

before
2
2
after
0
0

Grüße

Gerd

gniemetz
quelle
Ich kann nicht glauben, dass mein Problem nach so langer Zeit gelöst wurde! Vielen Dank!
X99
0

Mein Freund, ich glaube, dass Sie ein bloßes "Auflegen" - oder "HUP" -Signal sein könnten, um Ihre Wünsche nicht zu realisieren. Senden Sie die Systemeinstellungen verarbeiten ein Signal namens "Auflegen" oder "HUP", auch bekannt als Signal Nummer 1, wie irgendwo in einer Header-Datei des Systems signals.h definiert. POSIX-Konvention, glaube ich.

Das schnelle und schmutzige:

sudo pkill -1 'System Preferences'

Was ein HUP-Signal im Empfangsprozess bewirken sollte, ist ein internes Anhalten und erneutes Auswerten, was normalerweise ein erneutes Lesen aller relevanten Konfigurationsdateien beinhaltet. Der Prozess wird nicht beendet, sondern nur selbst aktualisiert.

Hoffe das hilft.

F.

Francis from ResponseBase
quelle
Hilft nicht, das Kontrollkästchen ist immer noch aktiviert. Danke für die Idee;)
X99