Alterar o comportamento do mouse sobre a notificação
Quase o que você pediu, e possivelmente o que você gostaria, um pequeno script de fundo muito claro (sem carga perceptível em seu sistema, se nenhuma notificação for executada, ele apenas aguardará / verificará para que um apareça) que irá alterar o efeito do mouse sobre as notificações do fade:
paradesaparecer(fechar):
Issosóteráefeitoseomousefordeforadaáreaparaaáreadenotificação,paratercertezadequevocênãoperderáasnotificaçõesseomousejáestivernaáreadenotificação,seomensagemélançada.
Comousar
Oscriptprecisade
xdotool
sudoapt-getinstallxdotool
copieoscriptabaixoemumarquivovazio,salve-ocomo
manage_notifications.py
Testeoscriptcomocomando:
python3/path/to/manage_notifications.py
comoscriptemexecução,abraumajaneladeterminaleexecuteocomando:
notifysend'Thisisatest'
agoramovaomouseparaanotificação.Emvezdedesvanecer,devedesaparecer.
Setudofuncionarbem,adicione-oaosseusaplicativosdeinicialização:Dash>Aplicativosdeinicialização>Adicioneocomando:
/bin/bash-c"sleep 15 && python3 /path/to/manage_notifications.py"
O script
#!/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