Como bloquear a tela quando o mouse é movido para o canto inferior direito?

4

Eu gostaria de bloquear a tela quando movo meu mouse para o canto inferior direito.

Existe uma configuração de compiz para essa tarefa?

Não consegui encontrar nada nas configurações do gerenciador e configurações do compizconfig.

    
por Edward 02.09.2014 / 12:05

2 respostas

2

As ferramentas simples para obter a posição do mouse são xdotool , basta instalar primeiro e seguir as etapas:

sudo apt-get install xdotool

então estamos usando xdotool getmouselocation --shell para ver a posição atual do mouse: o resultado será algo assim:

X=845
Y=447
SCREEN=0

ou executando eval $(xdotool getmouselocation --shell) colocará a posição nas variáveis do shell X , Y e SCREEN . Depois disso, podemos acessar essas variáveis com isso:

echo $X $Y $SCREEN

Bem, agora precisamos de um loop while para verificar a posição do mouse sempre:

while true
  do
    [get mouse position]
    [if position =bottom-right corner then lock screen]
  done

ok, então nossos scripts seriam assim:

#! /bin/sh
while true
  do
    eval $(xdotool getmouselocation --shell)
    if [ $X -ge 1919 -a  $Y -ge 1079 ]; then
        gnome-screensaver-command -l
    fi
  done

salve o script chamado "lock.sh" no seu diretório home e execute-o por sh lock.sh e mova o mouse para o canto inferior direito e veja o resultado. legal!

explique:

Combinamos condições usando determinados operadores. Para a sintaxe de colchete único que temos usado até agora, "-a" é usada para e. e "-o" para ou. Exemplo:

if [ $foo -ge 3 -a $bar -ge 10 ]; then

A condição acima retornará true se $foo contiver um número inteiro g reater do que ou e qual para 3 (-ge 3) e também $bar contiver um integer g reater ou e qual para 10. depois execute a linha de comando da tela de bloqueio gnome-screensaver-command -l

    
por devWeek 02.09.2014 / 15:13
1

Não encontrei nenhuma configuração no gerenciador do Compiz, nem nas configurações do Unity Tweak (que usa o mesmo), mas se você adicionar o script abaixo aos seus aplicativos de inicialização, ele verificará a resolução da tela e a posição do mouse. Se o mouse estiver a uma distância do canto (definido na cabeça do script), ele bloqueará a tela.

Como usar

  1. Instale o xdotool:

    sudo apt-get install xdotool
    
  2. Cole o script abaixo em um arquivo vazio, defina o marge (pixels) dentro do qual você gostaria que o hotcorner agisse, salve-o como screenlock.py, torne-o executável por conveniência e adicione-o aos seus aplicativos de inicialização (Dash > Aplicações de inicialização > Adicionar). Adicione o comando:

    /path/to/screenlock.py
    

O script:

#!/usr/bin/env python3

import time
import subprocess

marge = 3 # (pixels) increase to increase sensitivity

output = subprocess.check_output(["xrandr"]).decode('utf-8').strip().split()
idf = output.index("current")
res = (int(output[idf+1]), int(output[idf+3].replace(",", "")))

command = "gnome-screensaver-command -l"

while True:
    get_pos = subprocess.check_output(["xdotool", "getmouselocation", "--shell"]).decode('utf-8').strip().split("\n")
    pos = (int(get_pos[0][2:]), int(get_pos[1][2:]))
    if res[0] - pos[0] < marge and res[1] - pos[1] < marge:
        subprocess.Popen(["/bin/bash", "-c", command])
    time.sleep(1)
    
por Jacob Vlijm 02.09.2014 / 15:42