我喜欢 Unity 的那些通知气泡,但我真正讨厌的一点是我无法点击它们消失。
我知道当我将鼠标悬停在它们上方时,它们会变得几乎透明,我可能会在下面的窗口中点击它们,但我更喜欢小一点的(X)图标即可将其关闭。
或者,当单击其上的任意位置时它也可能会关闭,这并不重要。
是否可以使用 Unity Desktop 在 Ubuntu 15.04 上进行设置?我该怎么做?
答案1
更改通知的鼠标悬停行为
几乎您所要求的,也可能是您想要的,一个很小的、非常轻的后台脚本(不会对您的系统造成任何明显的负载,如果没有通知运行,它只会等待/检查通知是否出现),它将改变鼠标悬停时通知的淡出效果:
消失(关闭):
仅当鼠标移动时才会生效从区域外进入通知区域,以确保在消息启动时鼠标已位于通知区域时,您不会错过通知。
如何使用
脚本需要
xdotool
sudo apt-get install xdotool
将以下脚本复制到一个空文件中,并将其另存为
manage_notifications.py
通过以下命令测试运行脚本:
python3 /path/to/manage_notifications.py
脚本运行时,打开终端窗口并运行命令:
notify send 'This is a test'
现在将鼠标移到通知上。它不会淡出,而是会消失。
如果一切正常,请将其添加到您的启动应用程序中:Dash>启动应用程序>添加命令:
/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
答案2
- 转到设置->键盘->快捷键->自定义。
- 将命令绑定
xkill
到键盘快捷键(例如,我已将我的设置为AltShiftK) - 每当您看到通知时,单击键盘快捷键 ,将指针悬停在通知上,单击它,它就会消失。