Где разместить конфигурацию X11 (XQuartz) на OS X?
Я пытаюсь установить частоту повторения ключа на другое значение, используя xset r rate 280 50
, Я попытался добавить этот оператор конфигурации в различные файлы конфигурации (~/.zprofile
, ~/.xinitrc
, ~/.zlogin
), но это всегда приводило к бесконечным циклам сбоя, когда я пытался запустить XQuartz.app. Это работает нормально, если я удаляю файлы конфигурации и использую xset
Заявление в Xterm напрямую вместо.
XQuartz 2.7.8 (xorg-server 1.16.4)
OS X 10.11.1 (15B42)
1 ответ
Недавний элемент списка рассылки дает подсказку ( Re: Newbie: XQuartz установка для вопросов FontForge):
Я предлагаю вам просто отодвинуть его в сторону. Если вы хотите что-то сделать, поместите скрипты в ~/.xinitrc.d и установите их исполняемыми.
и небольшая проверка показывает, что если вы поместите скрипт, имя которого суффикс ".sh" в ваш ~/.xinitrc.d
каталог, вы можете поместить команды X (например, xset
) там. Обязательно заканчивайте команды &
(отсоединить).
Например, ваш quick.sh
скрипт может выглядеть так:
xset r rate 10 &
Однако (отмечая комментарий), это немного более сложно, чем это. Xquartz сбрасывает скорость клавиатуры после запуска скриптов в /.xinitrc
, Возможно, это связано с сообщением об ошибке, разрешенным путем настройки Xquartz на системные настройки.
В качестве обходного пути вы могли бы сделать quick.sh
вызовите более сложный скрипт:
pkill -9 rapid-keyboard
$HOME/.xinitrc.d/rapid-keyboard &
и (поместив новый скрипт в ту же директорию для удобства), содержимое rapid-keyboard
может быть так:
#!/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
Сценарий регистрирует свои изменения (на самом деле не нужны, за исключением демонстрационных целей) и ждет, пока Xquartz снова изменит настройки. При тестировании я вижу, что настройки меняются дважды, во время инициализации, но не после.