web-dev-qa-db-ja.com

マウスを右下隅に移動したときに画面をロックする方法は?

マウスを右下隅に移動すると画面がロックされます。

そのタスクのcompiz-configurationはありますか?

Compizconfig-settings-managerおよびシステム設定に何も見つかりませんでした。

4
Edward

マウスの位置を取得する簡単なツールは、xdotoolを最初にインストールし、手順に従うだけです。

_Sudo apt-get install xdotool
_

次に、_xdotool getmouselocation --Shell_を使用してマウスの現在の位置を確認します。結果は次のようになります。

_X=845
Y=447
SCREEN=0
_

またはeval $(xdotool getmouselocation --Shell)を実行することにより、シェル変数XY、およびSCREENに位置を設定します。その後、次の変数を使用してこれらの変数にアクセスできます。

_echo $X $Y $SCREEN
_

さて、毎回マウスの位置をチェックするwhileループが必要です:

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

スクリプトは次のようになります。

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

「lock.sh」という名前のスクリプトをホームディレクトリに保存し、_sh lock.sh_で実行し、マウスを右下隅に移動して結果を確認します。涼しい!

説明する:

特定の演算子を使用して条件を組み合わせます。これまで使用してきたシングルブラケット構文では、「-a」をandに使用しました。または「-o」。例:

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

_$foo_に整数gまたはe3(-ge)に等しい整数が含まれる場合、上記の条件はtrueを返します。 3)また、_$bar_には整数g10以上のeが含まれます。その後、ロック画面コマンドを実行します行 gnome-screensaver-command -l

2
αғsнιη

CompizマネージャーにもUni​​ty Tweak設定(これを使用)にも設定が見つかりませんでしたが、以下のスクリプトをスタートアップアプリケーションに追加すると、画面の解像度とマウスの位置がチェックされます。マウスがコーナーからマージ内にある場合(スクリプトのヘッドに設定されている場合)、画面がロックされます。

使用方法

  1. Xdotoolをインストールします。

    Sudo apt-get install xdotool
    
  2. 以下のスクリプトを空のファイルに貼り付け、ホットコーナーが動作する範囲(ピクセル)を設定し、screenlock.pyとして保存し、便宜上の理由で実行可能にし、スタートアップアプリケーションに追加します(ダッシュ>スタートアップアプリケーション>追加)。追加コマンドを追加します。

    /path/to/screenlock.py
    

スクリプト:

#!/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)
1
Jacob Vlijm