|
#!/bin/sh
|
|
# File: mouse-sensitivity.sh
|
|
# Location: /usr/local/bin
|
|
# Author: bgstack15
|
|
# Startdate: 2024-02-14-4 14:04
|
|
# SPDX-License-Identifier: GPL-3.0-only
|
|
# Title: Simple control for mouse sensitivity
|
|
# Purpose: provide easy options to slow down my mouse
|
|
# History:
|
|
# Usage: ./mouse-sensitivity.sh slow
|
|
# Reference:
|
|
# https://unix.stackexchange.com/questions/90572/how-can-i-set-mouse-sensitivity-not-just-mouse-acceleration
|
|
# https://shallowsky.com/blog/linux/setting-mouse-speed.html
|
|
# experimentation for my mouse
|
|
# Improve:
|
|
# Dependencies:
|
|
# x11, notify-send | zenity
|
|
# Documentation:
|
|
|
|
# Functions
|
|
warn() {
|
|
#zenity --icon-name mouse --warning --text "${1}"
|
|
notify-send --icon mouse --expire-time=2000 "Mouse sensitivity" "${1}"
|
|
}
|
|
|
|
# Load config
|
|
test -f "${XDG_CONFIG_HOME:-~/.config}/mouse-sensitivity.conf" && . "${XDG_CONFIG_HOME:-~/.config}/mouse-sensitivity.conf"
|
|
test -z "${DEVICE_NAME}" && DEVICE_NAME="Logitech Wireless Receiver Mouse"
|
|
# Load environment/runtime settings
|
|
if test -z "${SPEED}" ;
|
|
then
|
|
if test -n "${1}" ;
|
|
then
|
|
SPEED="${1}"
|
|
else
|
|
warn "Need SPEED or \$1 of number between -1.0 and 1.0, or slow, normal, fast."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# determine xinput id
|
|
xid="$( xinput list | sed -n -r -e "/${DEVICE_NAME}/{s/.*id=([0-9]+).*/\1/;p;}" )"
|
|
|
|
# Validate SPEED
|
|
if echo "${SPEED}" | grep -qE '^[0-9\.\-]+$' ;
|
|
then
|
|
# a decimal number, so running with just that number
|
|
:
|
|
elif echo "${SPEED}" | grep -qE '^(slow|normal|fast)' ;
|
|
then
|
|
case "${SPEED}" in
|
|
slow) SPEED=-1 ;;
|
|
normal) SPEED=0 ;;
|
|
fast) SPEED=1 ;;
|
|
esac
|
|
else
|
|
warn "Need speed of number between -1.0 and 1.0, or slow, normal, fast."
|
|
exit 1
|
|
fi
|
|
|
|
# Run command
|
|
printf '%s\n' "Setting device ${xid} speed ${SPEED}" 1>&2
|
|
xinput set-prop "${xid}" "libinput Accel Speed" "${SPEED}"
|