Yes I know, if there was an alternative I would use something with open codecs but there isn’t and for better or worse my office uses Apple TV and AirPlay mirroring to do demos and when I have to run the scrum meetings. Having been the only holdout not to get a Mac and finding out that the iPad does not work as an effective VNC to AirPlay middle man, it would be nice to be able to connect natively from my Fedora laptop. To wit I found unofficial documentation on the airplay protocols and it seems to be fairly easy to support but I have no clue of where to start in the gstreamer code.
Basically it is a bunch of HTTP calls to establish the stream and then it is simply a number of packets airplay headers consisting of either H.264 video stream (of the desktop), H.264 extra data or a heartbeat. It also uses a separate port to do NTP time synchronization every 3 seconds. Seems pretty straight forward and fun project for someone to get their hands dirty with.
Note, that I am also willing to help with this if someone can tell me what pads need to be created and how I would go about hooking them up to get the correct stream. E.g. how do I do the http setup, hook in an NTP service and provide headers for h.264 streams and sync the whole thing up. I also plan on writing the UI bits as a GNOME 3 plugin complete with avahi auto-discovery if we can get this working.
[read this post in:
ar de es fr it ja ko pt ru zh-CN ]
Comments Off
I don’t do much GNOME work these days but since I was just at GUADEC and Thomas Bechtold started porting D-Feet to PyGI, I decided to do a quick design on how D-Feet could be made to integrate better with GNOME 3 and also become more useful. I’m also out of the loop on the whole Maemo project forks so excuse me if I should have been using a different project name in the mockups to show the concept of external embedded D-Bus monitoring. I don’t have time to do the actual work but perhaps this can be a starting point for those who want to bring D-Feet up to date with the current state of GNOME.
Bus Selection

The bus selection screen lists out the standard buses and allows you to add an arbitrary address. Notice we are taking UI cues from Documents, Boxes and all the other GNOME 3 application designs. The idea behind the statistics and status icons is to give a quick overview of the data going over the buses. This becomes more important as we drill down as it should allow quick identification of any battery draining services that are waking up too much. The idea is to show which services and buses are currently and historically (since d-feet was started) are active or idle.
Notice the bookmark side bar. I haven’t quite fleshed this out but the basic idea is a place where buses, services, interfaces and methods, etc. can be dragged and grouped for quick access per project. Even more interesting is being able to group services so that they become the only ones that get monitored which we will get to later on in the post.
Service Selection

Services are selected much in the same way buses are except you can’t create new services. Here we see the statistics and status which are the similar to the bus selection screen except they are restricted to the particular service. I like the placement of the status icon much better here in the upper left instead of on the icon itself. Status should also indicate if a service is not activated and give the option of activating it, perhaps with a play icon in the upper right. Notice that the user should be able to drag and drop a service into the bookmark panel and they should be able to coexist with buses there. Services without bus names should be excluded by default but be able to be turned on via a context menu option. Hovering over a service should perhaps bring up a quick details box for better identification of services with only unique names.
Service Browsing

Getting rid of the treeview means we can operate on a wider variety of devices. The pane view allows us to restrict to one pane at a time for smaller devices and multiple pane for large screen devices. Much more useful information can be displayed in this way. Like the services without a bus name common interfaces such as Introspectable and Properties are hidden by default. Instead we opt to use those interfaces to display more useful information such as the actual properties. Any items in the pane except for the details pane should be draggable to the bookmarks panel. The bookmark panel itself should have better visual separation than shown here.
Bustle Monitoring

Ok so this is pretty much stolen from my friends at the Bustle project. However there is no reason there needs to be two tools for debugging D-Bus. I just never had an idea of how to seamlessly integrate both tools. To start with I see this as simply monitoring on the bus and individual service level but with the named bookmark panel we can perceivably use that to group together the services and interfaces that we are interested in monitoring and kick off a monitoring session from there. Ideally the output of the monitoring session can be used to further drill down to set up the next session, e.g. remove messages that are just cluttering the output.
Conclusion
This is all pie in the sky and requires someone to pick it up and run with it, further fleshing out the design and implementing the bits. D-Feet was originally a one-off I wrote designed to show D-Bus Python’s access to even the low level bits of D-Bus. It was also an exact visual representation of the message structure hierarchy/pseudo object model which some people had trouble conceptualizing in the early days of D-Bus. Having served its purpose well it is time to rethink D-Feet as a complete D-Bus debugging and monitoring tool with a modern interface that can run on multiple devices or as a remote debugger. I myself do not use D-Bus these days or have any time to work on such an ambitious project but hopefully this post will kickstart a couple of people who have been looking for a something to work on.
[read this post in:
ar de es fr it ja ko pt ru zh-CN ]
After being pinged in Bugzilla I finally set some time out to do a new release of D-Feet – The D-Bus Debugger. This release was aimed at getting some of the bug fixes that have been sitting in git out into an official tarball. The only big change is I took some time out this morning to hack up a new hi-res icon for better integration into gnome-shell. It is based off of the system-search icon in gnome-icon-themes and I now provide a source SVG so those with better art skills than myself can fix it up a bit.
Seriously though, please do feel free to commit fixes and ping me to do releases. I originally wrote it as a one-off tutorial because many similar projects failed to grasp the correct semantics of dealing with D-Bus messages at such a low level. I hear D-Feet is used quite a bit but my own time is limited for such a project as I no longer use it every day. In that respect, if someone wanted to take over upstream maintainership I am sure there is a community of D-Bus developer who would be grateful for faster release cycles and more attentive bug fixes.
Latest release: http://download.gnome.org/sources/d-feet/0.1/d-feet-0.1.14.tar.xz (sha256)
Project page: https://live.gnome.org/DFeet
[read this post in:
ar de es fr it ja ko pt ru zh-CN ]
Comments Off
Since GNOME’s move to using git and the fact that upstream is where all the cool kids hack I have decided to move D-Feet to the GNOME servers to make it easier for contributors to contribute and users to file bugs. That doesn’t mean I’m going to fix every feature request but it does mean others can help make D-Feet more useful.
I was sort of blown away that my humble little project was being used by more people than I had realized. I was even more amazed that it was mentioned in the literature for the GNOME Developer Training Days at this year’s GUADEC.
That is not to say I think D-Feet is a particularly shining example of how a D-Bus debugging app should be written. It kind of sucks but it does fill a niche, which is why I am starting a new design process for potentially developing a better D-Bus debugger. Here is the hitch, I don’t want feature requests, I don’t want your bug reports (those can go into bugzilla), what I want is your workflow. How do you debug your D-Bus apps? What are the pitfalls, the annoyances, the most repetitive tasks that you encounter? Please head to the Workflow Design page and add your own voice.
D-Feet is a D-Bus debugger written in PyGtk+ by John (J5) Palmieri
[read this post in:
ar de es fr it ja ko pt ru zh-CN ]

Thanks to Carlos Garnacho’s recent work with the evdev driver and Gtk+ along with Peter Hutterer’s work on getting the multitouch situation sorted out inside of X, not to mention everybody else who has contributed to the effort, I was able to get Multitouch working on my Fedora 13 powered Lenovo T410s.
All the following instructions relate to those who have N-Trig multitouch devices. Mileage may vary with other devices. To start playing around with multitouch in Fedora today you will need
- my evdev multitouch RPM packages built from Carlos’ branch
- Warning: this package obsolete xorg-x11-drv-evdev so you will no longer get updates from the Fedora repo
- Note: I’ll provide a yum repo for my packages once Koji is up and running again, for now if you don’t have an X86_64 machine you will need to rebuild the source rpm.
- If you have a N-Trig device you will also need to get the kernel Kyle built which has a fixed N-Trig driver (hopefully this will show up in an update soon).
- You will also need Carlos’ xorg.conf snippet. This is again for the
N-Trig driver but should be easily modifiable for other devices
- To play with multitouch you will need the latest Gtk+ from the xi2-playground branch
I recommend building Gtk in a jhbuild environment or at least don’t install it since it is the unstable 3.0 branch. Once the multitouch stuff has been backported to 2-20 branch I will start providing packages. I take no responsibility for the breakage of anyone’s machine due to replacing such a major system package. Thankfully, if you run inside of jhbuild you can play around all you want without fear of breaking your system. Another option might be to run inside an virtual machine but I am not sure if multitouch events will propagate correctly yet.
If you want to play with some demos you will find them inside the tests/multitouch directory of Gtk. Have fun and ping me with any issues you have. It might be nice if we got this working for Fedora 14. The pieces are certainly falling into place.
[read this post in:
ar de es fr it ja ko pt ru zh-CN ]
Well, I’ve gone and done it. Thanks to David Malcolm’s excellent 2to3c tool and some hand wrangling with PyUnicode objects I was able to get D-Bus Python compiling and working on Python 3. Grab the patch and start testing it out.
I’ve also tested this under Python 2.6 but it would be nice to see if it also works under Python versions < 2.6 since 2.6 has a couple of compatibility layers built in.
[read this post in:
ar de es fr it ja ko pt ru zh-CN ]
It is nice and balmy out here in Gran Canaria so I decided to release another version of d-feet out into the wild. This is a release of a couple of fixes which have been hanging around in git but never found their way into a tarball.
D-feet is a basic D-Bus debugger used for visualizing the API of running D-Bus applications.
What’s Changed?
- pretty print output added (Will Thompson)
- quit item added to file menu (Will Thompson)
- UI improvements (J5)
- fix for d-bus methods that return 0 (J5)
- all basic types now supported correctly (Marcel Holtmann)
Latest Tarball: http://johnp.fedorapeople.org/downloads/d-feet/d-feet-0.1.10.tar.bz2 (sha1)
Project Page: https://fedorahosted.org/d-feet/
Fedora Community Page: https://admin.fedoraproject.org/community/package_maintenance?package=d-feet
[read this post in:
ar de es fr it ja ko pt ru zh-CN ]
They have the details up on their web site. Apparently it is a way of creating local applications using either Gecko or WebKit. The remote part of the equation isn’t there and it isn’t clear if they will be perusing this angle. Right now the code only supports clients but by the look of their documentation, they are planning on creating the ability for JavaScript services which would be cool.
[read this post in:
ar de es fr it ja ko pt ru zh-CN ]
I just found this out after reading and article about the GNOME Mobile release. Apparently Movial joined LiMo sometime in August and have pledged to release their Browser D-Bus Bridge as open source. Perhaps this went over the D-Bus mailing list and I missed it but I am eager to look at the code and documentation to make sure remote sandboxed code doesn’t now have a way of breaking out of its jail. In other words I hope they have added a permissions based system much like we have for the system bus. If they have a sane system this could really be a powerful tool.
In a local world where all your applications are installed by the user, security on the session bus doesn’t have to be tight as the application will already have all the capabilities that they might gain from using the session bus. They even have more such as rm -rf ~. However, if web pages are now able to access the bus without a failsafe security model for access rights you would be allowing remote applications access to whatever the session bus exposes. They would be first class citizens in a very bad way. Depending on what services are running on the bus, information could be stolen, files added and deleted as well as other exploits. Already gVFS runs over D-Bus and hopefully in the future we will be moving from a corba based accessibility layer to a D-Bus one which means every UI element would be exposed via the bus.
That is not to say it is all doom and gloom. Having a browser/D-Bus bridge is very important towards moving the desktop experience forward, so much so that I was considering writing one until I saw this. Of course there is no open code or documentation yet, at least what I could find. I do trust them to do the right thing but it would have been nice if the development was done in the open from the start. Can someone working with LiMo point me to the source or information of when it will be released?
[read this post in:
ar de es fr it ja ko pt ru zh-CN ]