web-dev-qa-db-fra.com

Désactiver / supprimer la notification de volume dans Ubuntu 12.04?

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.

2
Qcc

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.

3
Jason Conti