Liberty pointer share script

charls1001000

New Member
Joined
Apr 8, 2024
Messages
15
Reaction score
1
Credits
183
Would anyone take the time to perfect this script and then share it with the community?


#!/bin/bash

LOCKFILE="/tmp/mouse_move.lock"
PIDFILE="/tmp/mouse_move.pid"

# Si el script ya está en ejecución, detén el proceso en segundo plano
if [ -f "$LOCKFILE" ]; then
echo "El script ya está en ejecución. Deteniendo..."
# Obtén el PID del proceso y termina el script en segundo plano
PID=$(cat "$PIDFILE")
if ps -p $PID > /dev/null; then
kill $PID
echo "Proceso detenido."
else
echo "No se pudo detener el proceso: PID no encontrado."
fi
rm -f "$LOCKFILE" "$PIDFILE"
exit 0
fi

# Crea el archivo de bloqueo para indicar que el script está en ejecución
touch "$LOCKFILE"

# Inicia el script en segundo plano
(
while true; do
# Obtener las dimensiones de la pantalla y la posición del mouse
eval $(xdotool getmouselocation --shell)
SCREEN_WIDTH=$(xdpyinfo | grep dimensions | awk '{print $2}' | cut -d 'x' -f 1)
SCREEN_HEIGHT=$(xdpyinfo | grep dimensions | awk '{print $2}' | cut -d 'x' -f 2)
MARGIN=5 # Define un margen en píxeles para el área de activación

# Comportamiento de salto al borde opuesto
if [ "$X" -ge "$((SCREEN_WIDTH - MARGIN))" ]; then
xdotool mousemove $MARGIN "$Y"
elif [ "$X" -le $MARGIN ]; then
xdotool mousemove "$((SCREEN_WIDTH - MARGIN))" "$Y"
elif [ "$Y" -ge "$((SCREEN_HEIGHT - MARGIN))" ]; then
xdotool mousemove "$X" $MARGIN
elif [ "$Y" -le $MARGIN ]; then
xdotool mousemove "$X" "$((SCREEN_HEIGHT - MARGIN))"
fi

sleep 0.001 # Intervalo entre verificaciones
done
) &

# Guarda el PID del proceso en segundo plano
echo $! > "$PIDFILE"

# Elimina el archivo de bloqueo una vez que se ha iniciado el proceso
rm -f "$LOCKFILE"

echo "El script está en ejecución."
 


Looks okay. May be a tad resource-hungry. I'd say move the screen dimension check to outside the while-loop, but if someone changes resolutions, it means the script needs a restart. You choose.
And if xdpyinfo changes the output format (unlikely), you may be in trouble. I would suggest using a proper API call. Python has Xlib, so it's worth looking into. There will be performance gains, too. But above all, it's easier to to abstract so it can be ported to Wayland.

...though I'm not sure I see what the purpose here is of the script. I mean unless you have actual cursor issues, I'd find it disorienting jumping from the edge -- but maybe for FPS games, it's useful as a "cheat", lol.
 

Staff online


Top