Exemple #1
0
ICN_PLAY = '0' * ICON_DIMS[0] * ICON_DIMS[1]


import os, sys, time
from dbus import Bus, DBusException

message_pipe = os.path.join(os.environ["HOME"], ".g15_audacious_pipe")

def get_aud():
	try: return session_bus.get_object('org.atheme.audacious', '/org/atheme/audacious')
	except DBusException: return None

def draw_state(icon):
	msg_handle.write('PO 0 0 %d %d "%s"\n' % (ICON_DIMS[0], ICON_DIMS[1], icon))

session_bus = Bus(Bus.TYPE_SESSION)

if not os.path.exists(control_pipe) and not (os.path.isfile(control_pipe) and os.path.isdir(control_pipe)):
	print "ERROR: Not a g15composer control pipe: %s" % control_pipe
	sys.exit(1)

if os.path.exists(message_pipe) and not (os.path.isfile(control_pipe) and os.path.isdir(control_pipe)):
	os.remove(message_pipe)

try:
	file(control_pipe, 'w').write('SN "%s"\n' % message_pipe)
	time.sleep(0.5)
	msg_handle = file(message_pipe,'w')

	oldTitleString = ''
	while True:
Exemple #2
0
#!/usr/bin/env python3
#coding=utf-8
import sys, os, tweepy, urllib
from dbus import Bus, DBusException
import gi
gi.require_version('Notify', '0.7')
from gi.repository import Notify
from mastodon import Mastodon

NS = 'org.mpris.MediaPlayer2.'

bus = Bus(Bus.TYPE_SESSION)
folder = os.path.dirname(__file__) + "/"  # edit this if needed


def try_player(name):
    try:
        return bus.get_object(NS + name, '/org/mpris/MediaPlayer2')
    except DBusException as e:
        return False


def get_player():
    players = ['quodlibet', 'clementine', 'spotify']
    for p in players:
        player = try_player(p)
        if player:
            return player
    Exception('No player found')

Exemple #3
0
    def do_activate(self):
        config = ConfigParser()
        config.read(os.path.expanduser('~/.config/litome'))

        self.client = MPDClient()
        for milliseconds in range(100, 5100, 1000):
            self.client.timeout = milliseconds / 1000
            for section in config.sections():
                host = config.get(section, 'host')
                port = config.getint(section, 'port', fallback=6600)
                password = config.get(section, 'password', fallback=None)
                try:
                    self.client.connect(host, port)
                except BaseException:
                    continue
                else:
                    if password:
                        self.client.password(password)
                    self.client.timeout = config.getint(
                        section, 'timeout', fallback=self.client.timeout * 10)
                    break
            else:
                continue
            break

        DBusGMainLoop(set_as_default=True)
        self.bus = Bus(Bus.TYPE_SESSION)
        self.bus_object = self.bus.get_object(
            'org.gnome.SettingsDaemon.MediaKeys',
            '/org/gnome/SettingsDaemon/MediaKeys')
        self.bus_object.GrabMediaPlayerKeys(
            'Litome', 0, dbus_interface='org.gnome.SettingsDaemon.MediaKeys')
        self.bus_object.connect_to_signal('MediaPlayerKeyPressed',
                                          self.media_key)

        self.window = Gtk.ApplicationWindow(application=self)
        self.window.set_title('Litome')
        self.window.set_icon_name('audio-x-generic')
        self.window.connect('destroy', lambda window: sys.exit())

        self.header = Gtk.HeaderBar()
        self.header.set_title('Litome')
        self.header.set_show_close_button(True)
        self.window.set_titlebar(self.header)

        self.play_button = Gtk.Button()
        self.play_button.add(
            Gtk.Image.new_from_icon_name('media-playback-start-symbolic', 1))
        self.play_button.connect('clicked', lambda button: self.play())
        self.header.pack_start(self.play_button)

        self.pause_button = Gtk.Button()
        self.pause_button.add(
            Gtk.Image.new_from_icon_name('media-playback-pause-symbolic', 1))
        self.pause_button.connect('clicked', lambda button: self.pause())
        self.header.pack_start(self.pause_button)

        self.volume_button = Gtk.VolumeButton()
        self.volume_button.use_symbolic = True
        self.volume_connection = self.volume_button.connect(
            'value-changed', lambda button, value: self.set_volume(value))
        self.header.pack_start(self.volume_button)

        self.add_button = Gtk.ToggleButton()
        self.add_button.add(
            Gtk.Image.new_from_icon_name('list-add-symbolic', 1))
        self.header.pack_end(self.add_button)

        self.search_entry = Gtk.Entry()
        self.search_entry.connect('activate',
                                  lambda entry: self.search(entry.get_text()))

        self.search_store = Gtk.ListStore(str, str, str)

        self.search_menu = Gtk.Popover()
        self.search_menu.set_relative_to(self.add_button)
        self.search_menu.set_modal(False)
        self.add_button.connect(
            'toggled', lambda button: self.search_menu.show_all()
            if button.get_active() else self.search_menu.hide())
        self.search_vbox = Gtk.VBox()
        self.search_vbox.add(self.search_entry)
        self.search_menu.add(self.search_vbox)

        self.list_view = Gtk.TreeView()
        self.list_store = Gtk.ListStore(str, str, str)
        self.list_view.set_model(self.list_store)
        self.list_view.set_headers_visible(False)
        self.list_view.connect(
            'row-activated', lambda treeview, path, view: self.play_song(path))
        self.list_view.connect(
            'key-release-event',
            lambda treeview, event: self.remove_song(treeview.get_cursor()[0])
            if event.keyval == 65535 else None)

        playing_column = Gtk.TreeViewColumn('')
        playing_cell = Gtk.CellRendererPixbuf()
        playing_column.pack_start(playing_cell, True)
        playing_column.add_attribute(playing_cell, 'icon-name', 1)
        self.list_view.append_column(playing_column)

        song_column = Gtk.TreeViewColumn('Song')
        song_cell = Gtk.CellRendererText()
        song_column.pack_start(song_cell, True)
        song_column.add_attribute(song_cell, 'text', 2)
        song_column.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
        self.list_view.append_column(song_column)

        scroll = Gtk.ScrolledWindow()
        scroll.add(self.list_view)
        scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        self.window.add(scroll)

        self.window.maximize()
        self.window.show_all()
        self.update()
        self.client.send_idle()
        GLib.io_add_watch(self.client, GLib.IO_IN, self.update_idle)