[Feedback] DBus Interface Needed Enhancements
Kimball Robinson
zwokkqxpozgc+nznebxRznvyYvfg1 at gmail.com
Sat Aug 11 06:43:00 UTC 2007
As for the talk regarding backward compatibility, perhaps the best thing would
be for someone to implement a dummy amarok dcop interface that merely
translates dcop calls into dbus calls as transparently as it can. This
project could play catch-up if needed, and if there wasn't enough interest,
it could fall by the wayside and the dcop interface would still die a natural
death.
I'd like to make a couple suggestions of my own in this vein. I'm a beginning
amarok script writer, and love the ideas in the original post--they would
make my life a lot easier.
I'm using 1.4.4, so hopefully some of this is already planned/implemented.
Interface interactions through dcop/dbus
* A dcop call to show an arbitrary string in the OSD display. It would help
keep a consistent look and feel rather than using kdialog --passivepopup.
* Notification to the script when certain UI elements appear and disappear.
For example, it doesn't make sense for a script to fetch lyrics if the user
is typing in new lyrics. Also, a script that shows the current track in a
ticker or other place might not want to show it when the collection window is
open. This is rather general, I know--so this idea may be impractical.
Still, it might give someone an idea.
Other ideas:
* I'm not familiar with dbus, so this may be redundant: It would be great if a
script could start receiving output from amarok on various events (on-screen
if desired). In this way, a totally separate application could connect to
amarok with the same STDIN paradigm as amarok scripts use to gather events
from amarok. Something like "amarok --watchevents" or a similar command
given through dbus?
* Ability to get url lists by supplying a label list.
* Functions to manipulate the queue: Get queue list; get queued track at
index N; append tracks to queue; insert tracks at index N; move a track up in
the queue by +N or -N; remove track(s) by index/name; be notified of
additions to the queue;
* Similar functions to manipulate the playlist in the same way as I suggested
for the queue.
* Notifications for songs being added to the playlist, and where it was added
(including in dynamic mode). Eg, "New track added at index N, or reverse
index -M" (the script could get the name of the song if it's interested, if
it will help efficiency).
* Similar notifications for changes to the queue
* Since scanning the entire collection can take a lot of time, a dbus call to
scan specific directories, tracks, or urls would be great.
* The ability to manipulate part or all of the window title, (same string
format as with OSD display)
* Add %TimeRemaining and %CurrentTime to the OSD display configuration options
(and thus the playlist title options).
* Function calls to skip or stop a track without affecting its score.
(scripts can add menu entries for this functionality if desired, later).
* Ability to register global shortcuts for Amarok, to trigger events in a
script. (Or attempt it, with a boolean return value showing if the shortcut
is was available).
* Ability to interact with smart playlists: Get a random song from a smart
playlist, check to see if a song matches a smart playlist's criteria; Copy
smart playlist criteria, Create/delete smart playlists; check how many
tracks are matched by a smart playlist; (And wouldn't it be nice if smart
playlists could be defined by sql queries, in an "advanced" box?)
I would love to write some concept scripts that use such functions, if only to
advertise the new dbus interface. I wouldn't mind helping to port a couple
unclaimed scripts to the new interface, too; While I prefer writing perl
code, I've been thinking about trying Ruby, and I also need to get to know
dbus anyway.
--
-Kimball Robinson
(bluekb on irc.freenode.net)
More information about the Amarok
mailing list