2021-07-06 12:52:33 +02:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
#############################################################
|
|
|
|
# Zenity interface for G203 (Prodigy & Ligthsync) driver #
|
2021-07-07 17:51:27 +02:00
|
|
|
# Last change: 07-07-2021 #
|
2021-07-06 12:52:33 +02:00
|
|
|
# Author: q3aql #
|
|
|
|
# Contact: q3aql@protonmail.ch #
|
|
|
|
# License: GPL v2.0 #
|
|
|
|
#############################################################
|
2021-07-07 17:51:27 +02:00
|
|
|
VERSION="1.1"
|
|
|
|
M_DATE="070721"
|
2021-07-06 12:52:33 +02:00
|
|
|
|
2021-07-07 10:20:07 +02:00
|
|
|
# Variables
|
|
|
|
iconPath="/usr/share/icons/logitech/logitech-black.png"
|
2021-07-07 13:30:26 +02:00
|
|
|
imagesPath="/usr/share/icons/logitech/images"
|
2021-07-06 12:52:33 +02:00
|
|
|
|
|
|
|
# Function to check admin rights.
|
|
|
|
function rootMessage() {
|
|
|
|
mkdir -p /etc/root &> /dev/null
|
|
|
|
administrador=$?
|
|
|
|
if [ ${administrador} -eq 0 ] ; then
|
|
|
|
rm -rf /etc/root
|
|
|
|
else
|
2021-07-07 11:32:26 +02:00
|
|
|
zenity --title "zenidrv-g203-lightsync ${VERSION} (${M_DATE})" --window-icon=${iconPath} --warning \
|
|
|
|
--width=340 --text "Administrator permissions are required"
|
2021-07-06 12:52:33 +02:00
|
|
|
echo ""
|
|
|
|
echo "* zenidrv-g203-lightsync ${VERSION} (${M_DATE}) (GPL v2.0)"
|
|
|
|
echo ""
|
|
|
|
echo "* Administrator permissions are required"
|
|
|
|
echo ""
|
|
|
|
exit
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
# Show menu with options.
|
|
|
|
showMenu=0
|
|
|
|
rootMessage
|
|
|
|
while [ ${showMenu} -eq 0 ] ; do
|
|
|
|
clear
|
2021-07-07 17:20:32 +02:00
|
|
|
opcion=$(zenity --width=280 --height=415 --list --title "zenidrv-g203-lightsync ${VERSION} ($M_DATE)" \
|
2021-07-07 17:23:24 +02:00
|
|
|
--window-icon=${iconPath} --imagelist --column "Icon" --column "Effect/Option" ${imagesPath}/solid.png "Solid" \
|
|
|
|
${imagesPath}/cycle.png "Cycle" ${imagesPath}/breathe.png "Breathe" ${imagesPath}/wave.png "Wave" \
|
|
|
|
${imagesPath}/blend.png "Blend" ${imagesPath}/intro-on.png "Intro (On)" ${imagesPath}/intro-off.png "Intro (Off)" \
|
|
|
|
${imagesPath}/mouse-dpi.png "Set DPI" ${imagesPath}/light-off.png "Light off" ${imagesPath}/exit.png "Exit")
|
2021-07-07 17:20:32 +02:00
|
|
|
if [ "${opcion}" == "${imagesPath}/solid.png" ] ; then
|
|
|
|
color_selected=$(zenity --list --width=260 --height=570 --title "zenidrv-g203-lightsync ${VERSION} ($M_DATE)" \
|
2021-07-07 13:30:26 +02:00
|
|
|
--window-icon=${iconPath} --imagelist --column "Color" --column "Name color" ${imagesPath}/black.png Black \
|
|
|
|
${imagesPath}/white.png White ${imagesPath}/red.png Red ${imagesPath}/lime.png Lime ${imagesPath}/blue.png Blue \
|
|
|
|
${imagesPath}/yellow.png Yellow ${imagesPath}/cyan.png Cyan ${imagesPath}/magenta.png Magenta \
|
|
|
|
${imagesPath}/silver.png Silver ${imagesPath}/gray.png Gray ${imagesPath}/maroon.png Maroon \
|
|
|
|
${imagesPath}/olive.png Olive ${imagesPath}/green.png Green ${imagesPath}/purple.png Purple ${imagesPath}/teal.png Teal \
|
|
|
|
${imagesPath}/navy.png Navy)
|
2021-07-07 12:14:26 +02:00
|
|
|
canceled=$?
|
|
|
|
if [ ${canceled} -eq 0 ] ; then
|
2021-07-07 13:30:26 +02:00
|
|
|
if [ "${color_selected}" == "${imagesPath}/black.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="000000"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/white.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="FFFFFF"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/red.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="FF0000"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/lime.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="00FF00"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/blue.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="0000FF"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/yellow.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="FFFF00"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/cyan.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="00FFFF"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/magenta.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="FF00FF"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/silver.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="C0C0C0"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/gray.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="808080"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/maroon.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="800000"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/olive.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="808000"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/green.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="008000"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/purple.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="800080"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/teal.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="008080"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/navy.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="000080"
|
|
|
|
fi
|
|
|
|
sleep 2 | zenity --progress --title "zenidrv-g203-lightsync ${VERSION} (${M_DATE})" --text "Applying Solid effect" \
|
|
|
|
--window-icon=${iconPath} --pulsate --no-cancel --auto-close
|
|
|
|
g203-led.py lightsync solid "${color_apply}"
|
|
|
|
device_error=$?
|
|
|
|
if [ ${device_error} -eq 0 ] ; then
|
|
|
|
echo > /dev/null
|
|
|
|
else
|
|
|
|
zenity --title "zenidrv-g203-lightsync ${VERSION} ($M_DATE)" --error --window-icon=${iconPath} --width=280 \
|
|
|
|
--text "Device not found or connected"
|
|
|
|
fi
|
|
|
|
color_apply="none"
|
2021-07-07 11:32:26 +02:00
|
|
|
else
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="none"
|
2021-07-07 11:32:26 +02:00
|
|
|
fi
|
2021-07-07 17:20:32 +02:00
|
|
|
elif [ "${opcion}" == "${imagesPath}/cycle.png" ] ; then
|
2021-07-07 11:14:16 +02:00
|
|
|
sleep 2 | zenity --progress --title "zenidrv-g203-lightsync ${VERSION} (${M_DATE})" --text "Applying Cycle effect" \
|
|
|
|
--window-icon=${iconPath} --pulsate --no-cancel --auto-close
|
2021-07-06 12:52:33 +02:00
|
|
|
g203-led.py lightsync cycle
|
2021-07-07 11:32:26 +02:00
|
|
|
device_error=$?
|
|
|
|
if [ ${device_error} -eq 0 ] ; then
|
|
|
|
echo > /dev/null
|
|
|
|
else
|
|
|
|
zenity --title "zenidrv-g203-lightsync ${VERSION} ($M_DATE)" --error --window-icon=${iconPath} --width=280 \
|
|
|
|
--text "Device not found or connected"
|
|
|
|
fi
|
2021-07-07 17:20:32 +02:00
|
|
|
elif [ "${opcion}" == "${imagesPath}/breathe.png" ] ; then
|
2021-07-07 13:30:26 +02:00
|
|
|
color_selected=$(zenity --list --width=260 --height=565 --title "zenidrv-g203-lightsync ${VERSION} ($M_DATE)" \
|
|
|
|
--window-icon=${iconPath} --imagelist --column "Color" --column "Name color" ${imagesPath}/black.png Black \
|
|
|
|
${imagesPath}/white.png White ${imagesPath}/red.png Red ${imagesPath}/lime.png Lime ${imagesPath}/blue.png Blue \
|
|
|
|
${imagesPath}/yellow.png Yellow ${imagesPath}/cyan.png Cyan ${imagesPath}/magenta.png Magenta \
|
|
|
|
${imagesPath}/silver.png Silver ${imagesPath}/gray.png Gray ${imagesPath}/maroon.png Maroon \
|
|
|
|
${imagesPath}/olive.png Olive ${imagesPath}/green.png Green ${imagesPath}/purple.png Purple ${imagesPath}/teal.png Teal \
|
|
|
|
${imagesPath}/navy.png Navy)
|
2021-07-07 12:14:26 +02:00
|
|
|
canceled=$?
|
|
|
|
if [ ${canceled} -eq 0 ] ; then
|
2021-07-07 13:30:26 +02:00
|
|
|
if [ "${color_selected}" == "${imagesPath}/black.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="000000"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/white.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="FFFFFF"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/red.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="FF0000"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/lime.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="00FF00"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/blue.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="0000FF"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/yellow.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="FFFF00"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/cyan.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="00FFFF"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/magenta.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="FF00FF"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/silver.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="C0C0C0"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/gray.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="808080"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/maroon.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="800000"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/olive.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="808000"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/green.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="008000"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/purple.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="800080"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/teal.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="008080"
|
2021-07-07 13:30:26 +02:00
|
|
|
elif [ "${color_selected}" == "${imagesPath}/navy.png" ] ; then
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="000080"
|
|
|
|
fi
|
|
|
|
sleep 2 | zenity --progress --title "zenidrv-g203-lightsync ${VERSION} (${M_DATE})" --text "Applying Breathe effect" \
|
|
|
|
--window-icon=${iconPath} --pulsate --no-cancel --auto-close
|
|
|
|
g203-led.py lightsync breathe "${color_apply}"
|
|
|
|
device_error=$?
|
|
|
|
if [ ${device_error} -eq 0 ] ; then
|
|
|
|
echo > /dev/null
|
|
|
|
else
|
|
|
|
zenity --title "zenidrv-g203-lightsync ${VERSION} ($M_DATE)" --error --window-icon=${iconPath} --width=280 \
|
|
|
|
--text "Device not found or connected"
|
|
|
|
fi
|
|
|
|
color_apply="none"
|
2021-07-07 11:32:26 +02:00
|
|
|
else
|
2021-07-07 12:14:26 +02:00
|
|
|
color_apply="none"
|
2021-07-07 11:32:26 +02:00
|
|
|
fi
|
2021-07-07 17:20:32 +02:00
|
|
|
elif [ "${opcion}" == "${imagesPath}/wave.png" ] ; then
|
2021-07-07 11:14:16 +02:00
|
|
|
sleep 2 | zenity --progress --title "zenidrv-g203-lightsync ${VERSION} (${M_DATE})" --text "Applying Wave effect" \
|
|
|
|
--window-icon=${iconPath} --pulsate --no-cancel --auto-close
|
2021-07-06 12:52:33 +02:00
|
|
|
g203-led.py lightsync wave
|
2021-07-07 11:32:26 +02:00
|
|
|
device_error=$?
|
|
|
|
if [ ${device_error} -eq 0 ] ; then
|
|
|
|
echo > /dev/null
|
|
|
|
else
|
|
|
|
zenity --title "zenidrv-g203-lightsync ${VERSION} ($M_DATE)" --error --window-icon=${iconPath} --width=280 \
|
|
|
|
--text "Device not found or connected"
|
|
|
|
fi
|
2021-07-07 17:20:32 +02:00
|
|
|
elif [ "${opcion}" == "${imagesPath}/blend.png" ] ; then
|
2021-07-07 11:14:16 +02:00
|
|
|
sleep 2 | zenity --progress --title "zenidrv-g203-lightsync ${VERSION} (${M_DATE})" --text "Applying Blend effect" \
|
|
|
|
--window-icon=${iconPath} --pulsate --no-cancel --auto-close
|
2021-07-06 12:52:33 +02:00
|
|
|
g203-led.py lightsync blend
|
2021-07-07 11:32:26 +02:00
|
|
|
device_error=$?
|
|
|
|
if [ ${device_error} -eq 0 ] ; then
|
|
|
|
echo > /dev/null
|
|
|
|
else
|
|
|
|
zenity --title "zenidrv-g203-lightsync ${VERSION} ($M_DATE)" --error --window-icon=${iconPath} --width=280 \
|
|
|
|
--text "Device not found or connected"
|
|
|
|
fi
|
2021-07-07 17:20:32 +02:00
|
|
|
elif [ "${opcion}" == "${imagesPath}/intro-on.png" ] ; then
|
2021-07-07 11:14:16 +02:00
|
|
|
sleep 2 | zenity --progress --title "zenidrv-g203-lightsync ${VERSION} (${M_DATE})" --text "Enabling startup effect" \
|
|
|
|
--window-icon=${iconPath} --pulsate --no-cancel --auto-close
|
2021-07-06 12:52:33 +02:00
|
|
|
g203-led.py lightsync intro on
|
2021-07-07 11:32:26 +02:00
|
|
|
device_error=$?
|
|
|
|
if [ ${device_error} -eq 0 ] ; then
|
|
|
|
echo > /dev/null
|
|
|
|
else
|
|
|
|
zenity --title "zenidrv-g203-lightsync ${VERSION} ($M_DATE)" --error --window-icon=${iconPath} --width=280 \
|
|
|
|
--text "Device not found or connected"
|
|
|
|
fi
|
2021-07-07 17:20:32 +02:00
|
|
|
elif [ "${opcion}" == "${imagesPath}/intro-off.png" ] ; then
|
2021-07-07 11:14:16 +02:00
|
|
|
sleep 2 | zenity --progress --title "zenidrv-g203-lightsync ${VERSION} (${M_DATE})" --text "Disabling startup effect" \
|
|
|
|
--window-icon=${iconPath} --pulsate --no-cancel --auto-close
|
2021-07-06 12:52:33 +02:00
|
|
|
g203-led.py lightsync intro off
|
2021-07-07 11:32:26 +02:00
|
|
|
device_error=$?
|
|
|
|
if [ ${device_error} -eq 0 ] ; then
|
|
|
|
echo > /dev/null
|
|
|
|
else
|
|
|
|
zenity --title "zenidrv-g203-lightsync ${VERSION} ($M_DATE)" --error --window-icon=${iconPath} --width=280 \
|
|
|
|
--text "Device not found or connected"
|
|
|
|
fi
|
2021-07-07 17:20:32 +02:00
|
|
|
elif [ "${opcion}" == "${imagesPath}/mouse-dpi.png" ] ; then
|
2021-07-07 10:20:07 +02:00
|
|
|
dpi_number=$(zenity --entry --title "Set DPI (from 50 to 8000)" --window-icon=${iconPath} --text "Enter DPI number (from 50 to 8000):" --entry-text "800")
|
2021-07-07 11:14:16 +02:00
|
|
|
sleep 2 | zenity --progress --title "zenidrv-g203-lightsync ${VERSION} (${M_DATE})" --text "Setting DPI to ${dpi_number}" \
|
|
|
|
--window-icon=${iconPath} --pulsate --no-cancel --auto-close
|
2021-07-06 12:52:33 +02:00
|
|
|
g203-led.py lightsync dpi ${dpi_number}
|
2021-07-07 11:32:26 +02:00
|
|
|
device_error=$?
|
|
|
|
if [ ${device_error} -eq 0 ] ; then
|
|
|
|
echo > /dev/null
|
|
|
|
else
|
|
|
|
zenity --title "zenidrv-g203-lightsync ${VERSION} ($M_DATE)" --error --window-icon=${iconPath} --width=280 \
|
|
|
|
--text "Device not found or connected"
|
|
|
|
fi
|
2021-07-07 17:20:32 +02:00
|
|
|
elif [ "${opcion}" == "${imagesPath}/light-off.png" ] ; then
|
2021-07-07 11:14:16 +02:00
|
|
|
sleep 2 | zenity --progress --title "zenidrv-g203-lightsync ${VERSION} (${M_DATE})" --text "Turning off the light on the mouse" \
|
|
|
|
--window-icon=${iconPath} --pulsate --no-cancel --auto-close
|
2021-07-06 12:52:33 +02:00
|
|
|
g203-led.py lightsync breathe 00FFFF 1000 0
|
2021-07-07 11:32:26 +02:00
|
|
|
device_error=$?
|
|
|
|
if [ ${device_error} -eq 0 ] ; then
|
|
|
|
echo > /dev/null
|
|
|
|
else
|
|
|
|
zenity --title "zenidrv-g203-lightsync ${VERSION} ($M_DATE)" --error --window-icon=${iconPath} --width=280 \
|
|
|
|
--text "Device not found or connected"
|
|
|
|
fi
|
2021-07-07 17:20:32 +02:00
|
|
|
elif [ "${opcion}" == "${imagesPath}/exit.png" ] ; then
|
2021-07-06 12:52:33 +02:00
|
|
|
showMenu=1
|
|
|
|
else
|
2021-07-07 11:32:26 +02:00
|
|
|
zenity --title "zenidrv-g203-lightsync ${VERSION} (${M_DATE})" --window-icon=${iconPath} --warning \
|
|
|
|
--width=300 --text "Choose one of the menu options"
|
2021-07-06 12:52:33 +02:00
|
|
|
fi
|
|
|
|
done
|