My Rhythmbox PPA March 10th, 2010

Ubuntu has been changing some things around with it’s notification icons and GNOME applets. Specifically the volume, power, e-mail and Rhythmbox applets. I could stand for most of that, but don’t mess with my music. My main complaint is that being part of the indicator-applet has broke some things I like, such as quickly showing/hiding or muting, since everything must be done via a menu.

Pidgin had this same problem, and they solved it by offering both indicator applet support and notification area support. After talking with the GNOME folks, and reading this bug report, it’s probably not going to get done. Because of the way Rhythmbox is developed, you must install a new package to get the old behavior back. I just made a PPA with the --enable-appindicator=no flag.

Easiest way to install is just sudo add-apt-repository lp:kris-santiance/oldrb and then grab the “update” from the update manager.

Twitter and Link Protocols March 9th, 2010

Believe it or not, links aren’t just to HTTP(s) websites – they are for anything. You can link to FTP sites and file sharing services in the past have supported linking to content on their clouds, such as Magnet.

With Ubuntu you can link to a package or application for a user to install from their trusted repository. Give it a shot and install the awesome Droid font, Pidgin, nautilus-open-terminal, or all at the same time.

Twitter doesn’t support links from theses protocols, but almost all links on Twitter use URL shortening services like bit.ly or TinyURL. Right now you can use TinyURL to link to unsupported protocols on Twitter. Like I did here.

I can see that Twitter might want to protect users from these unfamiliar links. I don’t think this is making the service any more secure though, since anyone trying an exploit can easily use a redirect as I did.

Adding Twitter to Pidgin February 7th, 2010

My friend Steven was raving about a plugin that adds support for the Twitter protocol to the Pidgin instant messenger. I’ve used a lot of other Twitter clients, but this is neat because it fits in with all my other instant messaging protocols.

It would be nice if there was a PPA on Launchpad that offered this, but I don’t have the time to do that, so I just grabbed the source from SVN and did a checkinstall on it for my 64-bit system. Heres the package:

libpurple-twitter-protocol_0.20-1_amd64.deb (70 kB)

Easy Compiz Tricks February 3rd, 2010

A while ago I tweaked Sam’s simple animations plug-in for Compiz, mainly so windows I minimized would slide away to match some of my other settings. This was to strike a balance between usability and performance, since none of these effects use alpha blending. During this time I made some jokes about a Spinner Rims plug-in to illustrate how people rev the Compiz engine when they first hop behind the wheel. Oddly enough, I’ve actually had others ask me for this plug-in and had Google Alerts on random forums about it – as if it was real, which perplexes me.

Sometimes applications don’t always (or can’t) describe a window correctly, which can make Compiz use a different animation. For example, when I drag a tab out of Google Chrome it uses my open animation for the window, which really disrupts the feel of drag and drop tabs that otherwise is very elegant. Another example is with generic frameworks like Adobe AIR or Java Swing, where all the widgets are treated the same. How do we work around this?

Luckily, Compiz is well equipped to handle this. You’ll need the Compiz Configuration Settings Manager (CCSM), which I think almost everyone has installed, and it should exist out-of-the-box so users can see how powerful the software really is. In the case of Google Chrome:

  1. Open CCSM (ALT+F2 ccsm or Preferences/Compiz Configuration Settings Manager)
  2. Click the Animations plugin
  3. Press the New button underneath the list
  4. Select None for the animation with the lowest possible duration
  5. Click the Add icon near the Window Match field
  6. Click the Grab button and target Chrome (it should give you class=Chromium-browser)

Make sure this is moved up the list so it overrides any other settings, since it’s specific to Chrome. You can later go back and click the Grab button again and add more windows to the blacklist. Now when you drag tabs in Chrome they won’t be so awkward. After getting used to no opening animation with one application, I ended up disabling them for all. I still use the other animations, but I’ve enjoyed not having any opening animations for non-decoration windows.

Chromium vs Google Chrome January 24th, 2010

Chrome hit the scene about 8 months ago (in July, 2009) and has shown quick adoption and fast usage growth. For the most part, those where windows users. In Google fashion, a beta has been released. What’s the difference between Google Chrome and Chromium?

Chromium is what you’ll find in your repositories and for the most part looks like a normal open-source package, and indeed it is FOSS. It was started by Google, and they release a version called Google Chrome. So, you can see them as two sides of the same coin. Google will continue to bring the awesome changes from the Chromium project, and you can expect Google to share their code back.

Like many Ubuntu users I started using Chromium via the chromium-daily PPA (Personal Package Archive – Usually a cutting-edge place for packages provided by a user or developer, used to get the latest features of some package) This repository contains a daily build of the Chromium project. This repository, and the project, is a lot more stable, and I use the repository now.

Google’s Chrome (beta) on Ubuntu runs well and is a simple package download, but it completely lacks updates of any kind. I removed it because I wanted a slightly newer feature – Bookmark Synchronization. It worked across Windows and Ubuntu, might I add. Future builds will probably include some system of updates, but the way it looks right now you’ll have to install a package of a later version (update) or remove the beta and install the newer version manually.

The bottom line: Go with the chromium-daily PPA until Google Chrome has some kind of update system and has bookmark sync working.

Compiz, Patents, and Ubuntu January 22nd, 2010

No, this isn’t about the stupid max_waves conflict with Apple’s patent that everyone has been ranting (and working around) for the last few years. From what I hear the future 0.9.0 release won’t be hampered by it, but how does Compiz fair with patents? Who made Compiz, and who’s working on it today?

From my understand the original Compiz, before all the forks and subsequent merges, was developed by Novell via David Reveman with help from others. Now, in the aftermath of whatever happened, most (if not all) of the core developers aren’t around – and Novell has moved on too. While the developers are gone they did take a little something with them.

SYSTEM AND METHOD FOR EVENT-BASED RENDERING OF VISUAL EFFECTS is patent application #20080313540 by Anna Dirks, David Reveman, Stephen Carter, and Scott Isaacson filed back in 2007. This patent would go to someone who deserves it, but can it ever be used against the project in the future? Now Apple is filing for a patent on head tracking, which is something we’ve seen Compiz devs and plug-in writers have been doing for a while now. We want developers to get attributed for their hard work in Open Source, but nobody should have control over the ideas that power these projects.

Ubuntu is using the old 0.8.x branch written in C, while the team has moved on to the 0.9.0 release written in C++. With Ubuntu 10.4 (Lucid Lynx) being an LTS, it’s obviously not going to be in that release. Even once the package is more mature, there is still a big dependency issue lingering. While it’s obvious that the refactoring of the code yielded performance and maintainability benefits, it’s using libboost and favoring C++. With GIMP kicked off the CD to make space, what’s going to happen to Compiz?

Update 1: There is a thread going on UbuntuForums.org related to this, although some of it’s just anti-Apple rhetoric. I wish people would stop hi-jacking real discussion with this crap.

Update 2: I asked Novell if they could shine any light on the situation on January 26, 2010. Hopefully they are willing to at least take a look and get back with something besides a dear-john letter.

Bugs with GDK_NATIVE_WINDOWS January 18th, 2010

There are two bugs that I encounter a lot in Ubuntu 9.10 (Karmic) that irritate me a lot. Both bugs involve mouse clicks not being registered. I’ve got some workarounds and fixes, but first some background on these bugs.

Flash Bug (#410407)

This bug has been misidentified as a bug in Compiz, when in fact it’s a bug in Adobe’s Flash Player plug-in. It causes mouse clicks to not be handled by the Flash application. The bug is inconsistent – it’s an all or nothing thing. You’ll either get the bug on a video, or you won’t, and sometimes it can be coaxed into working by spamming clicks.

Eclipse Bug (#443004)

This bug has caused a lot of wasted time. Similar to the bug with Flash, clicking on a button with some dialogs will not register. It’s also inconsistent, which can be a real pain. Some dialogs in Eclipse can span many pages, such as the Export to JAR dialog.

Both of these bugs are related to a change that happened regarding GDK, the underlying method GTK-style applications use to draw things instead of calling X directly. I think the core problem is:

A small gotcha is that the GDK_WINDOW_XID() call is no longer a trivial accessor for the XID of the window, and thus must not be called from another thread without taking locking precautions.

This matches the inconsistency of the problems, since it’s a related to concurrency.

To combat the bug in Eclipse I’ve started using the repository version, since the SWT-related bug was fixed and they added support for user plugins.

The workaround for the Flash bug isn’t as nice, since Adobe is the master of making horrible “fixes.” For example, they pulled the rug out from underneath a lot of websites using Flash player to do the heavy lifting of uploading multiple files by requiring the file selection dialog to be initiated by a user interface interaction. Essentially you have to tell Flash not to enjoy the benefits of client-side windows by modifying /usr/lib/nspluginwrapper/i386/linux/npviewer to look something like this:

#!/bin/sh
TARGET_OS=linux
TARGET_ARCH=i386
GDK_NATIVE_WINDOWS=1
. /usr/lib/nspluginwrapper/noarch/npviewer

So that’s two features Adobe has nerfed in one configuration file (64-bit and client-side windows)

OpenGL Man Pages for Ubuntu October 28th, 2009

Looking for an OpenGL documentation for package in Ubuntu? To begin, what would the package be named? My instincts told me to try gl-doc, libgl-doc, and eventually moved into the territory of libmesa or xorg. Obviously none of these worked. Out of despiration I tried dpkg -l | grep gl | grep doc, and there was nothing.

In the past I’ve used the online GL documentation without any real problem, but I knew I was going to be sitting in a room without internet access for a while. Besides, I want to just type man glBegin, or use yelp. Luckily a nice guy repackage the GL man pages back in 2006, and it appears has been keeping up with them all along.

Pirate Bay Court Ordered to Delete Torrents October 22nd, 2009

BitTorrentTorrent Freak is running a story about the always controversial The Pirate Bay. This time it’s BREIN and the outcome is that the previous owners are ordered to restrict access for dutch users, as well as delete a listing of torrents provided by the anti-piracy organization. Bay supporters and the torrent community, as usual, are concerned about the court decision, and the defendants are considering another appeal. You’re probably thinking, “Torrent Freak already covered this really well, what’s he on about?”

Silence (from Warcraft III)Blocking access to a large amount of people for a popular site may be a good way to raise public support. It doesn’t justify censorship, and sadly I imagine that most users will just go somewhere else instead of seeking retribution. In the past most of the time a site was either “up” or “down”, but now we’re seeing more regulatory action by different areas of the world. Now-a-days it’s not clear if you’re seeing something that is even possible to see in another country, such as China’s Golden Shield.

Compiz Documentation Tag Style Vote October 22nd, 2009

I’m getting mixed opinions about what kind of doc tags to use in the Compiz project. Overall there are two choices that everyone seems to be okay with. In no particular order the two most popular methods are:

///
/// This does that
///

Or

/**
 *  This does that
 */

The latter is nice because it matches how javadoc works, which I think has made Java (and it’s APIs) one of the best documented languages around. The former I found nice because it’s easy to align in all text editors quickly (always type three forward slashes), but is more verbose. In source the former also seems to make it easier for me to quickly scan for doc tags, since most multi-line comments in C++ are done with /* notation.

Erkin pointed out that we can easily nest /// style of comments inside of /* comment blocks, which makes it easier to comment out portions of code that are documented, such as this:

/*

... code ..

///
/// Method we don't want
///
int foo();

... code ...
*/ 

Feel free to make your arguments known here. If you see me on IRC feel free to bring it up, but please use the poll below or make a comment so we can get a real idea of what to commit to before we start merging all the doc’d code. This is a good way to avoid many git quilting sessions later.

[poll id="2"]