Um item recente da lista de discussão dá uma pista ( Re: Newbie: XQuartz instalação para perguntas FontForge ):
I suggest you just move it aside. If you want to do things, drop scripts into ~/.xinitrc.d and set them executable.
e uma pequena verificação mostra que se você colocar um script cujo nome tenha o sufixo ".sh" no diretório ~/.xinitrc.d
, poderá colocar comandos X (como xset
) nele. Certifique-se de terminar os comandos com &
(para desanexar).
Por exemplo, seu script quick.sh
pode ter esta aparência:
xset r rate 10 &
No entanto (notando comentário), é um pouco mais envolvido do que isso. O Xquartz redefine a taxa de teclado após executando os scripts em /.xinitrc
. Possivelmente, isso está relacionado a um relatório de erros resolvido fazendo Xquartz corresponder ao preferências do sistema.
Como solução alternativa, você pode fazer com que o quick.sh
chame um script mais complicado:
pkill -9 rapid-keyboard
$HOME/.xinitrc.d/rapid-keyboard &
e (colocando o novo script no mesmo diretório por conveniência), o conteúdo de rapid-keyboard
poderia ser assim:
#!/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
O script registra suas alterações (não são realmente necessárias, exceto para fins de demonstração) e aguarda que o Xquartz altere as configurações novamente. Ao testá-lo, vejo as configurações mudarem duas vezes, durante a inicialização, mas não depois.