web-dev-qa-db-ja.com

クリック時に閉じるようにUnity通知を構成する

私はUnityの通知バブルが好きですが、私が本当に嫌いなことの1つは、それらを離れてクリックできないことです。

それらの上にカーソルを合わせると、それらがほぼ透明になり、下のウィンドウでクリックスルーできることを知っていますが、小さな(x)アイコンを閉じてください。

代わりに、それをクリックしても閉じられるかもしれませんが、それは問題ではありません。

Unity 15.04でUnity Desktopを使用してこれを設定することは可能ですか?どうすればいいですか?

5
Byte Commander

通知のマウスオーバー動作を変更する

ほとんどあなたが求めたもの、そしておそらくあなたが好きかもしれないもの、小さな非常に明るいバックグラウンドスクリプト(通知がなければ、システムへの顕著な負荷はまったくありません実行すると、表示されるのを待つ/チェックするだけです)フェードからの通知のマウスオーバー効果をchange

enter image description here

enter image description here

消える(閉じる):

enter image description here

これは、マウスが領域外から通知領域に移動した場合にのみ有効になります。マウスの場合に通知を見逃さないようにするためです。メッセージが起動されると、すでに通知領域にあります。

使い方

  1. スクリプトにはxdotoolが必要です

    Sudo apt-get install xdotool
    
  2. 以下のスクリプトを空のファイルにコピーし、manage_notifications.pyとして保存します

  3. 次のコマンドでスクリプトをテスト実行します。

    python3 /path/to/manage_notifications.py
    

    スクリプトを実行した状態で、ターミナルウィンドウを開き、コマンドを実行します。

    notify send 'This is a test'
    

    マウスを通知に移動します。フェードする代わりに、消えます。

  4. すべてが正常に機能する場合は、スタートアップアプリケーションに追加します。[ダッシュ]> [スタートアップアプリケーション]> [コマンドを追加]:

    /bin/bash -c "sleep 15 && python3 /path/to/manage_notifications.py"
    

スクリプト

#!/usr/bin/env python3
import subprocess
import time

w = int([s.split("x")[0] for s in subprocess.check_output(
    ["xrandr"]).decode("utf-8").split() if "+0+0" in s][0]
        )

def get_mouse():
    loc = subprocess.check_output(["xdotool", "getmouselocation"]).decode("utf-8").split()[:2]
    return [int(n.split(":")[1]) for n in loc]

while True:
    time.sleep(1)
    try: 
        subprocess.check_output(["pgrep", "notify-osd"]).decode("utf-8")
        curloc1 = get_mouse(); t = 1
        while t < 10:
            time.sleep(1)
            curloc2 = get_mouse()
            test1 = curloc1[0] > w - 400 and curloc1[1] < 400
            test2 = curloc2[0] > w - 400 and curloc2[1] < 400
            if all([test1 == False, test2 == True]):
                subprocess.Popen(["pkill", "notify-osd"])
                break
            curloc1 = curloc2
            t = t+1
    except:
        pass
4
Jacob Vlijm
  1. [設定]-> [キーボード]-> [ショートカット]-> [カスタム]に移動します。
  2. コマンドxkillをキーボードショートカットにバインドします(たとえば、私の設定を AltShiftK )
  3. 通知が表示されるたびに、キーボードショートカットをクリックして、通知にポインターを合わせてクリックすると、通知が消えます。
0