Xorg: двигаем мышку
Это какая-то напасть. Мониторы стаповятся больше, мониторов становится больше. А курсор мыши так и остался крохотным.
В винде была (может быть есть и сейчас) прикольная функция, которая позволяла подсветить местоположение курсора. Я хотел что-то аналогичное, но потом понял, что имея под руеой три монитора этот курсор потом надо еще и пригнать на нужный монитор, а это огромные затраты энеркии по его перемещению.
Что делать? Сделать хоткей, который будет пригонять курсор в центр конкретного экрана.
#!/usr/bin/env bash
SCREEN=${1:-0}
GEOMETRY=`xdotool getdisplaygeometry --screen ${SCREEN}`
while read w h
do
xdotool mousemove --screen $SCREEN $((w/2)) $((h/2))
done < <(echo $GEOMETRY)
В качестве аргумента скрипт принимает номер монитора на который хочется пригнать курсор.
Что полезного можно тут увидеть?
Первое - это подстановки. В качестве примера инициализация SCREEN.
Выражение | parameter | parameter | parameter |
---|---|---|---|
в скрипте: | установлен и не Null | установлен и Null | не установлен |
${parameter:-word} | подставит parameter | подставит word | подставит word |
${parameter-word} | подставит parameter | подставит null | подставит word |
${parameter:=word} | подставит parameter | присвоит word | присвоит word |
${parameter=word} | подставит parameter | подставит null | присвоит word |
${parameter:?word} | подставит parameter | ошибка, exit | ошибка, exit |
${parameter?word} | подставит parameter | подставит null | ошибка, exit |
${parameter:+word} | подставит word | подставит null | подставит null |
${parameter+word} | подставит word | подставит word | подставит null |
Тут нужно обратить внимание на то, как раскрывается это выражение интерпретатором и что подстановка и присвоение - это разные вещи.
Подстановка возвращает выбранное значение word вместо переменной parameter. Присвоение же устанавливает parameter значение word.
Пример.
Выражение | parameter | parameter | parameter |
---|---|---|---|
в скрипте: | установлен и не Null | установлен и Null | не установлен |
${FOO:-hello} | world | hello | hello |
${FOO-hello} | world | ”” | hello |
${FOO:=hello} | world | FOO=hello | FOO=hello |
${FOO=hello} | world | ”” | FOO=hello |
${FOO:?hello} | world | ошибка, exit | ошибка, exit |
${FOO?hello} | world | ”” | ошибка, exit |
${FOO:+hello} | hello | ”” | ”” |
${FOO+hello} | hello | hello | ”” |
А так же неименованные каналы. Про именованые каналы я уже писал. А неименованые отличаются тем, что не надо делать его вручную.
Литература:
Категории: HowTo