Wo ist die X11 (XQuartz) -Konfiguration unter OS X abzulegen?

2298
Lenar Hoyt

Ich versuche, die Wiederholrate der Tasten mit einem anderen Wert einzustellen xset r rate 280 50. Ich habe versucht, diese Konfiguration Anweisung an verschiedenen Konfigurationsdateien hinzugefügt ( ~/.zprofile, ~/.xinitrc, ~/.zlogin), aber es führte immer in unendlichen Crash - Schleifen, wenn ich versuchte XQuartz.app zu starten. Es funktioniert gut, wenn ich die Konfigurationsdateien entferne und xsetstattdessen die Anweisung in xterm direkt verwende.

XQuartz 2.7.8 (xorg-server 1.16.4) OS X 10.11.1 (15B42) 
1

1 Antwort auf die Frage

2
Thomas Dickey

Ein aktuelles Mailinglistenelement gibt einen Hinweis ( Re: Newbie: XQuartz-Installation für FontForge-Fragen ):

Ich schlage vor, Sie verschieben es einfach zur Seite. Wenn Sie etwas tun wollen, legen Sie Skripte in ~ / .xinitrc.d ab und legen Sie sie als ausführbar fest.

Eine kleine Überprüfung zeigt, dass Sie, wenn Sie ein Skript mit dem Zusatz ".sh" in Ihr ~/.xinitrc.dVerzeichnis einfügen, X-Befehle (wie z. B. xset) dort einfügen können . Beenden Sie die Befehle unbedingt mit &(zum Lösen).

Beispielsweise quick.shkönnte Ihr Skript so aussehen:

xset r rate 10 & 

Allerdings ist (etwas bemerkenswerter) etwas komplizierter. Xquartz setzt die Tastaturrate zurück, nachdem die Skripts ausgeführt wurden /.xinitrc. Möglicherweise hängt dies mit einem Fehlerbericht zusammen, der dadurch gelöst wird, dass Xquartz den Systemeinstellungen entspricht.

Als Problemumgehung können Sie den quick.shAufruf zu einem komplizierteren Skript machen:

pkill -9 rapid-keyboard $HOME/.xinitrc.d/rapid-keyboard & 

und (um das neue Skript der Einfachheit halber in dasselbe Verzeichnis zu legen), könnte der Inhalt rapid-keyboardwie folgt aussehen:

#!/bin/sh export PATH=\ /usr/bin:\ /bin:\ /opt/X11/bin  getvalue() { value=$(xset q |\ fgrep "$2" |\ sed -e 's/^.*'"$2"':[[:space:]]*//' -e 's/[[:space:]].*//') [ -z "$value" ] && value="not set" eval $1=$value }  WANT_RATE=50 WANT_DELAY=280 LOGFILE=/tmp/rapid-keyboard.log rm -f $LOGFILE  while : do X11_PID=$(pgrep Xquartz) if [ -n "$X11_PID" ] then getvalue XSET_RATE "repeat rate" getvalue XSET_DELAY "repeat delay" if [ "x$XSET_RATE" != "x$WANT_RATE" ] then echo "** rate was $XSET_RATE at $(date)" >>$LOGFILE xset r rate $WANT_DELAY $WANT_RATE elif [ "x$XSET_DELAY" != "x$WANT_DELAY" ] then echo "** delay was $XSET_RATE at $(date)" >>$LOGFILE xset r rate $WANT_DELAY $WANT_RATE fi fi sleep 1 done 

Das Skript protokolliert seine Änderungen (wird außer für Demonstrationszwecke nicht wirklich benötigt) und wartet, bis Xquartz die Einstellungen erneut ändert. Beim Testen sehe ich, dass sich die Einstellungen zweimal ändern, während der Initialisierung, aber nicht danach.

Skripte in ~ / .xinitrc.d werden ignoriert. Vielleicht werden die Einstellungen überschrieben, wenn xterm startet oder so etwas? Lenar Hoyt vor 8 Jahren 0
Es muss ausführbar sein, und der Name ist wichtig (ich habe das getestet, bevor ich mit El Capitan mit XQuartz 2.7.8 antwortete). Ich ignoriere jedoch auch das erste xterm, schließe das und führe ein, das ich selbst kompiliere - Reihenfolge kann von Bedeutung sein (wenn das xinitrc-Skript nach dem Starten von xterm ausgeführt wird). Thomas Dickey vor 8 Jahren 0
Ich habe das Skript in ~ / .xinitrc.d / keyboard.sh auf den Berechtigungscode 755 gesetzt. Sollte das nicht funktionieren? Lenar Hoyt vor 8 Jahren 0
Könnte es sein, dass der X11-Server im Hintergrund läuft, so dass durch das Beenden und Neustarten von XQuarts.app die Konfigurationsdateien nicht erneut geladen werden? Dies erscheint unwahrscheinlich, da das Vorhandensein der .initrc-Datei die Absturzschleife verursacht. Lenar Hoyt vor 8 Jahren 0
Ich sehe (Wiederbesichtigung). Das Skript wird aufgerufen, aber etwas in XQuartz folgt und setzt es zurück. Laut pstree läuft xterm bereits. Werde später einen Blick darauf werfen. Thomas Dickey vor 8 Jahren 0
Interessanterweise habe ich an anderer Stelle gelesen, dass "xset" es ein für alle Mal festlegen sollte. Ich bin mir nicht sicher, ob dies wahr ist, aber auf meiner Maschine ist es sicherlich nicht der Fall. Wenn ich XQuartz.app schließe und wieder öffne, werden die alten Einstellungen für die Schlüsselwiederholung wiederhergestellt. Lenar Hoyt vor 8 Jahren 0
Genial. Es klappt. Soll ich irgendwo einen Fehler melden? Lenar Hoyt vor 8 Jahren 0
Sie könnten [hier] (https://bugs.freedesktop.org/enter_bug.cgi?product=XQuartz&component=New%20Bugs). Thomas Dickey vor 8 Jahren 0