UbuntuCommonHooker aims to provide an interface for unknown file types and to automatically install required packages when needed.


New users find it difficult to find programs that open particular file types when there are no installed default viewers for it.

Use cases

Eduard is a schizophrenic, however his only obession and a way to calm him down is listening to "Veronika Plays Piano, volume 1" which is encoded in MP3. Veronika is his friend who recently got a copy of Ubuntu, and tried it on Eduard's computer. However, Eduard just found out that he can't play his MP3's.

Dr. Igor uses ".rar" extension to compress his research, however, Villete decides to migrate to Ubuntu. But when Dr. Igor tries to open "Vitriol.rar, and Zedka.rar", it says "Error cannot open file!"

Okonkwo tried Ubuntu for the first time, however, when he tried to open "Wrestling with Amalinze.mpg", he is prompted that "there are no codecs available to view this file", However, Okonkwo's father Onuka had no problems opening .mpg files, but Okonkwo doesn't like using Windows like his father did.


The software will support the following file types:

File Type


Open With


Compressed Files



Audio Codecs

Rhythmbox (gstreamer)


Real Media Codecs

Totem (gstreamer)


Video Files

Totem (gstreamer)


Comics Files



Compiled Help Document


It will automatically install the necessary applications to view those particular files.


The software will be linked to those particular file extensions, (e.g. Open With), and will have a gnome-settings-default-applications icon.




ubuntu-common-install-hooker-rar-0.1.png ubuntu-common-install-hooker-arj-0.1.png

Music Audio Files

ubuntu-common-install-hooker-mp3-0.1.png ubuntu-common-install-hooker-aac-0.1.png

Video and Movie Files

ubuntu-common-install-hooker-mov-0.1.png ubuntu-common-install-hooker-mpg-0.1.png

Document Files

ubuntu-common-install-hooker-cbr-0.1.png ubuntu-common-install-hooker-chm-0.1.png


The software will determine a particular file by it's file extension, expected input is not case-sensitive, that means, .ZiP, .ZIP .zIP will be automatically identified as well as .zip.

(Comment: Wouldn't it be easier and maybe less error-prone to use the magic number instead of the extension, like GNU file does?)


The Code is written in Gtk+ 2.0, C, and sh as a backend script.





Data preservation and migration

The original file will not be over written.

Outstanding issues

It will prompt the user to enable universe/multiverse repository, that will install non-free and commercial applications, a user will manually enable those repository, via software-properties.

== BoF agenda and discussion ==

  • Is this related to DesktopTeam/CommonInstallHook ? Is this intended to work from within applications? Eg If i try to play an mp3 in rhythmbox or watch flash in firefox. -- SamTygier

  • Don't forget the documentation and the '? Help...' button in the dialog! It's quite important that we don't leave users wondering if "enabling repositories" is a dangerous thing or not. In some ways it actually is -- users leave the sphere of supported packages. UlrikSverdrup

  • It is based on the DesktopTeam/CommonInstallHook idea, but more centralized way to handle the install hooks, so it's easy to add new file extensions, and to impliment new features. I think with the DesktopTeam/CommonInstallHook, each applications, namely rhythmbox, totem, gimp, file-roller will need to be patched for the idea of installing a package when needed to work, it's not impossible, and there might be a good and positive way for this. A concern will raise when a user choose to remove a currently installed package that is linking to those apps I said earlier, they must impliment a way to revert back to previous actions linking to those application. joelbryan

  • Comment: Wouldn't it be easier to just install the applications to open these files by default? There are not many of them, I estimate just 10-15Mb of more diskspace. In the case of non-free apps which cannot be installed by default we could just provide an easy way to install them all. OTOH patching a lot of applications to default to our UbuntuCommonHooker whenever they don't know what to do with a file is a very hard work (and hard to maintain), and I fail to see the benefits would outcome the effort. Also, the user trying to open the file will not always be a sudoer, so the CommonHooker will not always be able to automatically install the software. grimborg

    • Sure, it would probably be easier to just install the few utilities needed for the limited set of file-formats listed above, however, this solution could easily be expanded to include many other formats that Ubuntu might not be able to handle by default (surely there are plenty). That is a good point, though, about having to maintain patches for many apps. At very least, this could be used to patch Nautilus. I would guess that, most of the time users will probably attempt to open a file through the file browser. ChrisWagner

    • You can't install these applications by default, sometimes due to the Ubuntu "free" philosophy and sometimes due to legal problems (for example in the case of MP3 or DVD file formats). This is cleanest/only way to give people the option of playing these formats without previous knowledge of how to install the necessary packages by hand. Scaine

  • Another suggestion: Things like autopackage files, that instead need the execute bit set and then run could also be detected.
  • Is it neccessary to determine file types by extension? Why not by type (and if that fails, fall back to extension) Pandisv

    • I completely agree, determining the type of data in a file based on it's filename should only be used on the Internet (where it would be insecure and a waste of bandwidth to download the content or header of every file merely to determine it's type). I also think that the explanations and descriptions should say what the file actually is, for example AAC is, if I remember correctly, the Advanced Audio Codec (which I think is the audio part of MPEG2), not an "iTunes Audio file", and initialisms like MPG don't make any sense (who is the Motion Picture Group?). Filenames (I hate the term "extension" which seems to justify their existance as a good thing) should not create unintelligible nonsense just to fit into the lazyness of some ancient operating system designer. The slang term MP3 seems to have become accepted into the language, so I will let that pass, but the likes of "MP4" should not be encouraged as they offer absolutely no clarification for computer users. How about just using "There is no application installed for Quicktime Movie files", etc.? It's actually LESS than what currently appears! -- Warbo
  • If this is proceeded with, please do complete i18n right from the beginning, so that everything necessary can be translated (including desktop items / open with... item). -- TimoJyrinki

  • Couldn't this be implemented by a MIME type search in gnome-app-install? Trying to add a patch for that with Nautilus right now instead of the ugly and useless error message it throws when files can't be opened. As a proof of concept it is running "gnome-app-install --mime-type=MIME_TYPE" and reopening the file later. Looks like we have the same aim, though achieved in distinctly different places. I take it that Ubuntu Common Hooker would do its thing via file type associations instead of changes to libnautilus? -- DylanMccall 2008-06-02 20:09:54

CategorySpec CategoryDesktopTeam

Back to DesktopTeam.

UbuntuCommonHooker (last edited 2008-08-06 16:31:08 by localhost)