J'ai supprimé notify-osd mais une autre notification a commencé à apparaître à la place lors du changement de volume:
Existe-t-il un moyen de supprimer également cette notification? J'utilise le contrôleur de volume de mon clavier Logitech G110 pour régler le volume.
La notification de volume de votre capture d'écran est générée par le plugin media-keys pour gnome-settings-daemon. Malheureusement, après avoir parcouru un peu le code, il ne semble pas qu'il existe un moyen de désactiver l'OSD sans interrompre la fonctionnalité des touches (sans bien sûr modifier le code et recompiler, ce qui est bien sûr une option viable) .
Cependant, j'ai remarqué qu'il est supprimé lorsque les notifications Ubuntu sont activées. Bien sûr, cela ne nous aide pas immédiatement, car vous vouliez et avez supprimé notify-osd. Mais j'ai trouvé une sorte de solution idiote. Au lieu de cela, nous créons notre propre démon de notification simple qui dit qu'il prend en charge les messages de volume, puis mange silencieusement toutes les notifications. Le code:
from __future__ import print_function
import dbus
import dbus.service
import dbus.mainloop.glib
from gi.repository import GObject
SERVICE_NAME = "org.freedesktop.Notifications"
SERVICE_PATH = "/org/freedesktop/Notifications"
class Notifications(dbus.service.Object):
@dbus.service.method(SERVICE_NAME,
in_signature="susssasa{sv}i", out_signature="u")
def Notify(self, app_name, id, icon, summary, body, actions, hints, timeout):
print(app_name, summary, body)
return 1
@dbus.service.method(SERVICE_NAME,
in_signature="u", out_signature="")
def CloseNotification(self, id):
pass
@dbus.service.method(SERVICE_NAME,
in_signature="", out_signature="as")
def GetCapabilities(self):
return ["x-canonical-private-synchronous"]
@dbus.service.method(SERVICE_NAME,
in_signature="", out_signature="ssss")
def GetServerInformation(self):
return ("empty", "empty", "empty", "empty")
if __== "__main__":
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
session_bus = dbus.SessionBus()
name = dbus.service.BusName(SERVICE_NAME)
path = Notifications(session_bus, SERVICE_PATH)
mainloop = GObject.MainLoop()
mainloop.run()
Vous pouvez bien sûr commenter la fonction d'impression dans la méthode Notify, je pensais juste qu'il serait bien d'inclure une sortie afin que vous puissiez voir qu'elle fonctionne. GetCapabilities
est l'endroit où la magie opère, gnome-settings-daemon pense que nous le supportons donc il n'utilise pas son propre OSD.