Thursday, 19 August 2010

Fingerprint readers: new substitute maintainer

Another week, another hardware enablement project. I'm now the official substitute maintainer for libfprint, the fingerprint reader library, and we just had a new release!

If you have a newer Thinkpad, with the UPEK Eikon II reader, grab the latest version, and don't forget to apply this patch to the control-center, or the enrolling UI will look bizarre.

All those bug fixes and new versions coming to a Fedora update shortly.

Monday, 16 August 2010

Geek hardware, for a change

Wireless router

Urgh. After having been fighting with my ISP about connectivity problems, they announced that the problem I was plagued with (a bug in a Motorola UBR on their network) was fixed. I was still getting dropped connections though. Turns out the software on the provided D-Link DIR-615 is DIRe (see what I did there).

Here comes DD-WRT. I followed the instructions from this forum post (just the “How do I install DD-WRT?” part), with a firmware grabbed from the DD-WRT website itself.

After the initial setup, I also switched off 802.11B support, as the last device I have to require this is a Nintendo DS that doesn't even do WPA.

New phone

I got a new phone on Friday, and managed to steer clear of iTunes for now. First off, I exported all the contacts from my old Sony Ericsson phone using obexftp:
obexftp -v -b 00:11:22:33:44:55 -U synch -S -g telecom/pb.vcf
This will give you a pb.vcf file with all your contacts.

With the new device still missing a micro-SIM, I fixed a bunch of nautilus-ideviceinfo bugs. With the micro-SIM inserted, I activated the phone with Free Software. After setting up a minimal network, I sent my pb.vcf file to the new phone via e-mail, and reinserted all the contacts.

Still plenty more integration to be done, though a visit to jailbreakme.com will make this easier.

Wednesday, 11 August 2010

Old skool GNOME

Some of us were discussing olden UIs during this year's GUADEC, including the original Totem UI. Searching through my old files, I found some interesting screenshots.

That includes an early version of Soundbox, the predecessor to Rhythmbox (it was later renamed to Rhythmbox as the name Soundbox was already used by some piece of software).

CDDB-enabled, incredible

Also of interest, abc, the audio-CD burner equivalent of sound-juicer, a bonobo-ised version of Rhythmbox, early versions of Vanity (my Cheese-before-Cheese webcam tool), and instructions on how to flash my netBook (click the link, you'll be surprised).

And a screenshot of Totem circa June 2002 (the first public release was in July 2002).

Totem with the original interface designed by task-pooper man

Tuesday, 3 August 2010

Bad Bastien

I forgot to mention in all my previous blog entries that my accommodation at GUADEC was sponsored by the GNOME Foundation. Thanks guys!


Monday, 2 August 2010

GUADEC slides

Got back from GUADEC on Saturday, and spent most of the week-end recovering. Probably a good thing, as I have loads of things on my TODO list, for either the Board, GNOME or Fedora.

Geoclue talk

As per usual when I make slides, I end up going through them quickly, but the Q&A session was long enough for me to go into more details.



Bluetooth talk

No slides, for a change. I hope the videos will be available online soon.


Monday, 26 July 2010

10th GUADEC

Made it to the venue today, and am currently enjoying my 10th GUADEC. I'm still behind jrb :)

Friday, 23 July 2010

Travel preparations

I got myself a little Huawei E585 device, so that I can put in a data SIM card when travelling. My attempts at getting a 3G data subscription in the UK that wouldn't cost an arm and a leg when abroad completely failed, and I didn't fancy carrying a phone just to use as a modem when travelling (I use my usual handset through Bluetooth when in the UK).



Once in the Netherlands, I'll get a Pay-as-you-go 3G SIM card, top it up and subscribe to the cheapest data deal, and be done with it. Note that I needed to unlock the device for use with other carriers, using this dodgy looking website. But it worked as expected.

My attempts at finding the Linux code on the device failed (and this code doesn't seem to be it), so I also dropped a mail to Huawei's FOSS office.

See you online at GUADEC!

Monday, 28 June 2010

My first GNOME Foundation board meeting

A couple of weeks ago, I took part in my first GNOME Foundation Board meeting. As you'll soon see (when the meeting minutes are published), I might have opened my mouth a bit too often as I ended up with 5 separate action items :)

With my holidays behind me, I've been able to knock a couple of those items from my list, and I'll try and use this last day to catch up on the rest of them.

I'll be flying in to GUADEC tomorrow morning, probably spending the day doing some tourism, as Sunday is our first face-to-face Board meeting of the new crew.

I'm attending GUADEC

Saturday, 19 June 2010

iDevice tablet hints

As some of you know, I purchased an iPad some time ago, and I've been using it to read articles and papers away from the computer (which definitely makes for a nice change on week-ends).

It's also started to find its place as an online encyclopedia (thanks Wikipanion) next to the sofa, and a YouTube client when friends are around (along with jeers from my N900 wielding housemate).

Getting Books

Plenty of locations to get those. I've been using Project Gutenberg, because it allowed me to get some classics in French. EPubBooks.com has a similar collection, but better formatted, if you only want the English versions.

For comics, I recommend Tintin Revolution (in English and French), with a definitely left-leaning Tintin, out of a job and on the dole. You'll also find some very old school comics on Golden Age Comics.

Reading books

I use Stanza for PDFs and ePubs and ARCReader for comics. Note that ARCReader is supposed to handle PDFs, but it failed to import any of the files I put on there.

Getting the books on the iPad

The version of the iPhone OS on the iPad is different from the one on the other devices (for now), and doesn't allow easy access to the application documents. All the documents live in the application's directory, and a new protocol is used to get and put documents within each app. This isn't working just yet within Linux, so if you don't want to use iTunes, here are a couple of work-arounds.

One way is using ideviceinstaller. It's painful, especially for large files, but it would at least allow you to get your documents back, or on the iPad, even on a non-jailbroken device.

You would need to list the apps:
$ ideviceinstaller -l | grep -i arcreader
org.fieldman.arcreader - ARCreader 1.1
Get an archive of the application onto your computer:
$ ideviceinstaller -a org.fieldman.arcreader -o copy=./
Unpack the IPA file (it's a zip file), add your documents to the Documents subdirectory, repack as a zip file, and push the IPA file back onto the device.

YMMV, I was having some problems with archiving myself.

The second option is using the afc2 jailbroken filesystem. Once jailbroken, and with the afc2add package installed, you can mount the complete filesystem using nautilus-ideviceinfo (right-click on the device, select Properties, then Details, and select "Browse jailbroken filesystem"). The URI is afc://UUID:2/ if you want to mount it by hand using gvfs-mount or nautilus.

Then you can browse to /var/mobile/Applications/Application UUID/Documents add add documents there. Note that free space stat()'ing is broken (I saw 300 megs free when I have nearly 30GB of free space), and you might break your device using the jailbroken filesystem.

The final option would only work with Stanza, we'll come back to this in a second.

Offline reading

I wanted a way to mark articles as "to read later" in my desktop web browser, and be able to read them when more at ease later on. The bare minimum, which I was using until a couple of days ago is the Offline Pages application, a web browser that'll allow you to download full pages for later reading.

Much better for my usage was the Readitlater application, along with its high-quality javascript bookmarklets. The service has nice APIs, so it would be nice to see more integration in feed readers and web browsers (brownie points for the person who makes an Epiphany extension for it).

Getting the books on the iPad, part #2, Stanza

When launching Stanza, you might see a "Computers sharing books" section in the Get Books/Shared section. This will look for computers on the local network exporting a Stanza service via Zeroconf.

Calibre has an implementation, but it's a bit too heavy duty for me. I tried implementing a proof-of-concept version, and it turns out it's not too complicated, though would need more integration into the desktop.

The protocol used is HTTP, with ODPS data. Implementing things like search and categories was not my prime concern either.

First, I launched a web browser, using the little script I use in Totem for my web-based streams tests:
./launch-web-server.sh --remote start
Then publish it via Avahi:
avahi-publish-service "Stanza export" _stanza._tcp 12345

Right, it shows up in Stanza, and the access_log shows me it's trying to get '/'.

It copied a PDF inside the root directory of my web server, and created cover and thumbnail images for it:
evince-thumbnailer -s 512 'foo.pdf' cover.png
evince-thumbnailer -s 512 'foo.pdf' thumb.png

Finally, I create the smallest possible Atom/ODPS file to advertise my PDF file (saved as index.atom):



<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"
xmlns:dc="http://purl.org/dc/terms/"
xmlns:opds="http://opds-spec.org/2010/catalog">
<entry>
<title>My PDF</title>
<link type="image/png" rel="http://opds-spec.org/cover" href="cover.png"/>
<link type="image/png" rel="http://opds-spec.org/thumbnail" href="thumb.png"/>

<link type="application/pdf"
rel="http://opds-spec.org/acquisition"
href="foo.pdf"/>
</entry>
</feed>


And redirected the index file to index.atom:
$ cat .htaccess
DirectoryIndex index.atom

Retry access from Stanza, and voila.


This should be fairly straight forward to implement in gnome-user-share, the only hard part being the metadata extraction for the PDFs, and other file types. If somebody fancies taking this on, drop me a mail, and I'll point you in the right direction.

PS: Found out about vim's TOhtml function. Neat.

Wednesday, 16 June 2010

Python code obfuscation

A couple of days ago, I looked at code to access tvcatchup.com from Totem, and started looking at the XBMC plugin source code.

Then you see things like that:
Oo = ii [ 0 ] . urlopen ( I11i [ list ] )
I1ii11iIi11i = Oo . read ( )
I1IiI = ii [ 1 ] . getcwd ( ) + I11i [ list + 1 ] . replace ( "/" , ii [ 1 ] . sep )
o0OOO = I1IiI . split ( ii [ 1 ] . sep )
Probably a good thing there's readable alternatives available. Note that I'd still be interested in seeing somebody decypher that, as an excercise :)

Tuesday, 1 June 2010

iDevice changes

If like me you jumped the queue of soccer moms, divorced middle-age business men and fanbois on Friday morning, you might have had a new toy to play with this week-end.

The good news

If you use Fedora 13, we fixed up some bugs and you can now mount your iPaid (private joke) on the desktop, and have it show up with a spiffy icon. All the updates are in updates-testing.

upower got the ability to tell you your battery status when plugging in an iDevice, though you'll need gnome-power-manager from master to see it, and even then, it won't show up on a desktop system without a UPS. Still some UI problems to iron out there.

gvfs will now warn you about the device being locked. Again, this change is only on master as it adds new strings.

nautilus-ideviceinfo is nearly ripe for consumption after my wad of bug fixes. I expect the code to move into the GNOME repos soon after the first release.

The bad news

Still no video, music or e-books syncing on the tablet iDevice.

No support yet for the per-app documents syncing. If you have a jailbroken device, you can use iFile to move your documents to the Documents sub-directory of /var/mobile/Applications/application-UUID (make sure to turn on "Application names" in the preferences).

Tuesday, 25 May 2010

Fedora 13 is out!


As the subject mentions, Fedora 13 is out!


Funny tidbit, The Register called it Linux for Applephobes, but failed to mention the enhanced iDevice support, and the features we added for Apple Macs as a Fedora machine.

Friday, 21 May 2010

More on remotes and receivers

After receiving a load of new remotes last week, it was only fair I hacked on gnome-lirc-properties and fixed a number of the long-standing bugs, and release gnome-lirc-properties 0.5.0.



So, what happened

Before the 0.5.0 release, we had a very small number of remotes and receivers combination declared, and unless you owned a receiver and remote that the developers did, you had to select your receiver/remote combination by hand.

Johannes Schmid fixed half of that problem by creating a script that'll go through the lirc sources to add all those remotes to our remotes list. I fixed up a number of bugs, added quirks, and support for parsing user-space drivers.

With that, we went from around 10 remotes/receivers combinations to just short of a hundred.

What's next

ir-core work is ongoing in the kernel, and will provide drivers for a number of receivers with a default keymap. That means that things will work as soon as you plug them in.

A number of receivers also already have input drivers, one level down from ir-core, and work out of the box, such as the ati_remote and appleir drivers.

As we can receive events from the remotes, we just need to funnel them to the desktop. That'll be the work of lircd in the short-term, until XKB2 shows up.

Can I help?

Sure you can. Plug in your receiver, launch gnome-lirc-properties and report whether the receiver is not auto-detected, or whether no remote is selected by default. You can also get me one of the listed remotes on this Amazon wishlist :)

Monday, 10 May 2010

My new toys



Thanks to Openismus and Fluendo for sending me 7 new remotes. I guess it means I need to start helping Jarod make all those remotes work using the input layer now :)

And dark themes for apps are in GTK+

Another week, another GTK+ feature. This week's feature is probably easier to implement for applications that would require it, but the uses are also more far-reaching.


Before

After

What does it mean for me, application developer?

If your application matches the type of applications that would benefit from having a dark theme, please try it out. The 3 lines patch is easy to add to existing applications.

You'll most likely want to switch to using symbolic icons as well, for most of your UI, so that the icons show in the expected colour when a dark theme is not available.

What does it mean for me, GTK+ theme designer?

Either you keep your theme as-is. Then all applications will use that theme. This is most likely what should happen for Accessibility-related themes.

Or you create a "gtkrc-dark" file in your theme, at the same level as your gtkrc, and make it dark (not a bit darker like the bad example above, but real dark). Test it out with gtk-demo's “Application Window” demo.

By the way, you might want to update your theme for GTK+ 3.0 at the same time.

Tuesday, 4 May 2010

Client-Side Window Decorations and misconceptions

This morning, my RSS reader was full of news with links to Mark Shuttleworth's blog about Canonical's idea for windicators.

The problem now is people conflating Canonical's own design decisions (most of which I don't agree with, except for the case of netbook UIs, but that's not the point here) and Client-Side Window Decorations support.

Martin Gräßlin's blog lists a few things that you would lose if we were to use client-side window decorations. Most of them are just wrong:
  • Consistent behavior between all applications no matter if it is a Qt or a GTK or $Toolkit application: How can you say that when there's no agreements on the implementation yet? Of course Athena widget apps will look different, they already do. As long as the theming and behaviour is known and agreed upon, there's no reasons why it should happen. It's just a bit more complicated because you would have cases where the Window Manager would behave differently from the toolkit. All those are solvable, and old, unmaintained toolkits will not integrate.
  • Window Tabbing (KWin specific): Why would that be impossible to implement? You'd just need help from the toolkit to do that.
  • Window rules like always show a close button even if the window is not closeable: Working around broken apps? Fix your apps...
  • Accessibility features like big border and button sizes for all windows: Certainly not. It would even mean that you wouldn't get a disconnect between application and window manager implementing accessibility features.
  • Easily changeable window themes: Why wouldn't they be easily changeable? That's highly dependent on how the theming is implemented in toolkits. I guess it would be the case if you had a half-hearted implementation.
  • Shadows which are part of the theme (KWin would not paint shadows for a client-side window-decorated window): Why not? If KWin knows that the application is drawing its own decorations, it could draw the shadows, or you could make the application's toolkit be aware that it needs to draw the shadows. Either way, it's not impossible to implement.
There also doesn't seem to be a list of thing you'd end up winning:
  • Tear-free window resizing (when the client is doing the resizing, with a proper resize grip for example)
  • Better integration of resizing within applications (say "zooming" when going to fullscreen
  • Proper way to do tabs in titlebar, a-la Google Chrome
  • Window-as-a-document/object (see the tab interaction part of this Empathy UI review, which would enhance the integration between applications and file managers)
And that's just the things I see myself as winning. There's more technical details on the GNOME Wiki.

Update: Got my knickers in a twist over Client-Side Windows vs. Client-Side Window Decorations, fixed up links and text.

Friday, 30 April 2010

Deinterlacing, now in Totem

Totem, in git master for GNOME 2.32, has support for deinterlacing video streams, thanks to the work by Sebastian Dröge. You'll need gst-plugins-base from git master to test it out for now.

Free of charge, you'll get Philip Withnall's work on not blocking the interface when parsing playlists. This should make Totem feel more responsive overall.

Tuesday, 27 April 2010

Symbolic icons support in GTK+

The design

Discussed as part of the GNOME-Shell design plans, and at the Usability hackfest we had in London earlier this year, we wanted to have icons that would only draw attention to themselves when needed. Unlike what Mark proposed, we wanted to use the theme colours and sizes so as to avoid problems, for users either with or without a visual impairment.

The tricks

To load and theme the icons, we use a CSS style-sheet, with the "!important" keyword, overriding every colour in the SVG file itself. Here's an example of what it might look like.

The second trick is using the tray's colours for GtkStatusIcons. Matthias has more X-fu than me, so using X11 atoms, we export the colours we care about for the icon from the tray, to the out-of-process status icon. Seeing that the shell might not end up using status icons, and that the panel would have the same GTK+ theme as the rest of the desktop, it might not be quite as important for the long term.

Building the icon theme

Jakub updated the instructions on what it took to create the symbolic icon theme, along with some explanations of what's necessary to allow the recolouring.

To test out your created icons, you can also use the SVG snippet above, modify the colours, change the file path for the xi:include, and open the SVG file created with eog, or another gdk-pixbuf powered image viewer.

What does it mean for me, GTK+ theme designer

We chose to only export 3 colours for use by the icons, one warning ("orange"), one error ("red"), and a positive feedback one ("green"). Those are named colours in the GTK+ theme, and you can use Jakub's commit as an example on how to add support for those in your GTK theme.

The main part of the icon (the usually white, or gray-ish bit) will use the text foreground colour for drawing. This means that dark-on-bright and bright-on-dark themes should work out of the box without having two separate icon themes (as was done for Ubuntu's latest release).

What does it mean for me, application writer

Many of the GNOME desktop components already had bugs filed against them, to start using symbolic icons when available. First, review your icons, and see whether they match the use cases mentioned in the design documents. Check whether an icon exists for your application in the gnome-icon-theme-symbolic git repository. Make a patch against your application (example patch), and file it in a bug.

Then, drop by the #usability channel on GIMPNet IRC, or drop a mail to the usability list and ask for your patch to be reviewed.

Testing it out

Just like the famous quatre-quarts, 4 equal quantities of:
  • libcroco from git master
  • librsvg from git master
  • GTK+ from git master
  • gnome-icon-theme-symbolic from git master
Sprinkle with your favourite application for testing, or use gtk-demo.

Thanks

Hiroyuki Ikezoe for his librsvg and libcroco fixes, Jakub, Hylke and Lapo for their work on the symbolic icon theme, and Matthias for his original GTK+ patch.

And my icon turned itself into a symbol, *shting*

A few bugs to kill off before symbolic icons support is in GTK+. But we have some screenshot action for it!

Friday, 23 April 2010

Hardware enablement

Patches flying, and the results are nearly there.

Driver for the Apple Infra-red Receiver should soon be upstream (and a patch not to break LIRC setups), along with support for the Intuos 4 wireless tablet.

Ross merged patches in Gypsy which should allow for crappy serial GPSes to work, as well as the one on the Nokia N810 (and N900?), and the (even) crappy(er) ones that require a closed-source daemon and write to a FIFO.