gns_ua: (Default)
gns_ua ([personal profile] gns_ua) wrote2011-05-27 11:10 pm

deadbeef dbus plugin

Как бы вот эту вот херню перепейсать на Цэ (это полбеды) да засунуть плагином в сам deadbeef (а это четвертьбеды, разглядывание плагина gtkui кагбе пояснило что нет никакой проблемы плагин гонять в отдельном треде с собственным евентлупом. И передавать в центр сообщения).

    #!/usr/bin/env python
    # coding: utf-8
    import os
    import dbus
    import gobject
    import dbus.service
    import dbus.mainloop.glib
    from subprocess import Popen, PIPE
     
    VERBOSE = False
     
    def keypress(send, key):
        if VERBOSE: print ('comes from:%s  key:%s') % (send, key)
     
        if Popen(['pgrep', 'deadbeef'], stdout=PIPE).communicate()[0] == '':
            os._exit(1)
     
        elif key in ['Stop','Play','Next','Pause']:
            Popen('deadbeef --%s 2>/dev/null &' % key.lower(), shell=True)     
               
        elif key == "Previous":
            Popen('deadbeef --prev 2>/dev/null &', shell=True)
     
     
    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
    bus = dbus.Bus(dbus.Bus.TYPE_SESSION)
    bus_object = bus.get_object('org.gnome.SettingsDaemon',
                                '/org/gnome/SettingsDaemon/MediaKeys')
     
    dbus_interface='org.gnome.SettingsDaemon.MediaKeys'
    bus_object.GrabMediaPlayerKeys("KeySender", 0,
                                    dbus_interface=dbus_interface)
     
    bus_object.connect_to_signal('MediaPlayerKeyPressed', keypress)
    mainloop = gobject.MainLoop()
    mainloop.run()

IMHO

[identity profile] constdr.livejournal.com 2011-05-27 08:34 pm (UTC)(link)
все эти MediaPlayerKey.* -- попса в чистом виде.

Re: IMHO

[identity profile] gns-ua.livejournal.com 2011-05-27 08:39 pm (UTC)(link)
Попса-то оно попса, но я так или иначе вешаю глобальные хоткеи в дедбиф.

Однако, события XF86AudioPlay XF86AudioPrev XF86AudioNext могут быть обработаны только одним процессом. Поэтому гномосеки справедливо решили, что этим процессом должна быть gnome-session затем орущая по дбусу to whom it may concern.