Esta abordagem usa utilitários para servidores X, presumivelmente não funcionará com Wayland.
Aqui está uma pequena função bash
para você:
line_up ()
{
vc=$(( $(xwininfo -root|sed '/Height/!d;s/.* //') / 2 ));
[[ -n $2 ]] && vc=$(( -$2 + vc ));
xdotool mousemove $(( $1 )) $vc
}
Como um oneliner:
line_up(){ vc=$(($(xwininfo -root|sed '/Height/!d;s/.* //')/2));[[ $2 ]]&&vc=$((-$2+vc));xdotool mousemove $(($1)) $vc;}
Isso usa a saída de xwininfo
para obter a altura da exibição atual, divide-a pela metade e a salva como variável cv
. Se $2
existir, será subtraído. xdotool
, em seguida, move o cursor para as coordenadas $1,$vc
. Eu aproveito o fato de que a expressão aritmética de bash
apenas retorna 0
se $1
não estiver definido, um xdotool mousemove $1 …
simples apenas lançaria um erro nesse caso. Como acima você pode chamar a função com tantos argumentos quanto quiser, se não houver nenhum, apenas moverá o cursor para 0,totalheight/2
, se houver um para $1,totalheight/2
e se houver dois ou mais para $1,totalheight/2-$2
. / p>
Exemplo de execução
$ xwininfo -root|sed '/Height/!d' # display height is 1024 px
Height: 1024
$ xdotool getmouselocation # current mouse location: 469,875
x:469 y:875 screen:0 window:15294612
$ line_up
$ xdotool getmouselocation # current mouse location: 0,512
x:0 y:512 screen:0 window:14680366
$ line_up 10
$ xdotool getmouselocation # current mouse location: 10,512
x:10 y:512 screen:0 window:14680366
$ line_up 20 -10
$ xdotool getmouselocation # current mouse location: 20,522
x:20 y:522 screen:0 window:14680366
Fontes
- Como descubro minha resolução de tela a partir de um script de shell?
- O Wiki do Bash Hackers
-
man xdotool
- o habitual tente & erro