将鼠标滚轮音量控制扩展到整个面板

有一个我错过了Windows的应用程序,它是Volumouse 。 简单而有效的应用程序,使您可以从整个任务栏(面板)控制音量,而不仅仅是从指标图标。 特别是如果你使用无线鼠标,你会明白它是多么实用。 由于Ubuntu没有类似的解决方案,因此有一个覆盖它的脚本会很不错。

运行查询xinput list时,现代鼠标设备具有多个id 。 此脚本也将涵盖这些设备,但必须确定第一个正确的ID 。 选择基于xinput query-state 命令的输出之间的差异,并假设一个id将在输出中具有某个键245 ,因此该行:

 moid0=$(xinput query-state $moid1 | grep 245) 

对于您的设备,输出之间的差异可能会有所不同,但您可以使用另一个不是245关键字并更改该行。
所以脚本看起来像这样:

 #!/bin/bash vctrl1 () { xinput test $mo | while read line do eval $(xdotool getmouselocation --shell) if [ $Y -gt 24 ]; then break elif [ "$wnn" != "Desktop" ] && [ $sd3 == $wg2 ]; then break elif [[ $line == "button release 5" ]] ; then xdotool key XF86AudioLowerVolume elif [[ $line == "button release 4" ]] ; then xdotool key XF86AudioRaiseVolume fi done } sd1=$(xdpyinfo | grep dimensions) sd2="${sd1#*dimensions: }" sd3="${sd2%% pixels*}" while : do moid=$(xinput list | grep -iPo 'mouse.*id=\K\d+') eval $(xdotool getmouselocation --shell) if [[ $Y -le 24 && ! -z $moid ]]; then wg1=$(xdotool getactivewindow getwindowgeometry) wg2="${wg1#*Geometry: }" wnn=$(xdotool getactivewindow getwindowname) read moid1 moid2 < <(echo $moid) moid0=$(xinput query-state $moid1 | grep 245) if [[ ! -z $moid0 ]]; then mo=$moid2 && vctrl1 else mo=$moid1 && vctrl1 fi elif [[ -z $moid ]]; then sleep 3 fi sleep 0.2 done 

当鼠标hover在面板上时,它将允许使用鼠标滚轮进行音量控制。

此外,您可以使用此python脚本从屏幕的任何位置使用鼠标滚轮控制音量。 只需编辑代码即可。 https://github.com/mnural/pyvolume