NautilusSidebarExtensions

Summary

This specification proposes an improved sidebar panel in Nautilus that uses different engines (so as to avoid adding dependencies to Nautilus) to display metadata, relevant information about files, and actions that can be performed on them. It could list related docuements (using Tracker or Beagle), allow editing of metadata, show detailed previews of files or add links to relevant web searches or pages in the history - semantically linking all of a user's data together.

Rationale

With more sophisticated sidebar tools we can present less on screen, but give users more useful informaton, reducing clutter and improving ease of use.

Some of the very useful features of Nautilus are hidden from the users or difficult to get to, and we have a lot more useful information relating to a particular file than we display to the user.

Now that we have more data about the files on our disks (from services like Tracker and Beagle) we are able to suggest information that may potentially be of use to users and bring them closer to files and folders they may want to access at any particular time, speeding their navigation and allowing them to forget about the filebrowser and organisation of the file system and just use their applications

Critique of the current system

The Side Bar

The sidebar has the potential to be an enormously useful tool for users.

  • Because it is always visible it can unobtrusively and quitly expose features and options that new users may not realise exist.
  • It provides a quicker way to navigate the file system, and can help to disguise its complexities to new users (through using 'Places' as opposed to 'Tree', for example)
  • It's size compared to a status bar or right click menu makes it far superior to providing users with more detailed information about their files and folders.
  • It is easy to hide, or change the currently viewed pane (such as changing from 'Information' to 'Tree', so that users who feel it is clutter need not worry about it.
  • It provides a space to show and edit meta-data about a file or folder, to tag it and display tags [2], and also display dynamic information like 'Similarly named files' that a context menu is less suited to and becomes much less useful when hidden in a tab on the properties dialogue.

However, in Nautilus at the moment I feel we are not fulfulling this potential

I see several problems with the current system

  • We currently have the ability to show only one of the items (History, Notes, Emblems, Tree, Places, Information) at a time
  • The 'Information' bar shows information about the current folder or file, not the file that is selected.I remember using much older version of Nautilus where this made more sense because images and text documents opened withtin the Nautilus browser window. Now this no longer happens, the Information sidebar is much less usefull than it could be. This behaviour is also inconsistent with other operating systems from which we hope users will be migrating. Some consider it a bug[7]
  • The system does not extend beyond Nautilus - It doesn't pull in information from Tracker[3] (or Beagle, if you prefer), LeafTag, The Internet (or not since the News panel disappeared) or other documents on the system

I'm sure there are very good reasons for these limitations, but I also think the potential advantages of a well designed sidebar make it worth further investigation.

Use cases

The aim of this is not to put huge numbers of options in front of people, it is to more accurately guess what information they might want so we can present less of it and make it more accessible

Some examples of things it would be nice to present users with:

  • Photos taken at around the same time
  • Files containing this file's name
  • A textbox used to add 'tags' to a file
  • Relevant places...
  • Relevant actions (perhaps using Nautilus Actions)..
  • Websites relating to the frequently occuring words in this document
  • "Look up this media file" (links to artist, album, song on Wikipedia or search in Google (which Firefox actually gets revenue from))
  • A search box
  • Files created in the same application
  • Files of the same name (useful for find all the gtkrcs, for example)
  • A list of people that were mentioned in a file (their contact information)
  • Advanced file previews
  • Other files with similar metadata (treeview perhaps)

Scope

This specification relates to the Nautilus File Manager, specifically it's sidebar

Design

Caveat: I am an inexperienced programmer, I have not written any code for Gnome (though I am eager to start when I get some time) and I don't know the details of how Nautilus functions. My plans for this are based on the way I have understood the themes in Gnome to be implemented. If these ideas are ill-conceived, I apologise, please tell me politely! I have searched (and searched) for a post I read when I began researching this about possible ways to extend the sidebar and how to go about them, to no avail, thus I cannot link to any more influential opinions

I am not trying to claim this is an original idea. If we look at the sidebar for Explorer (Windows) and Konqueror (KDE) (metabar) then you can get a pretty good idea of the type of thing I am imagining.

http://mailforwho.googlepages.com/KDEMetabar.png http://mailforwho.googlepages.com/ExplorerSideBar.png

I think that Nautilus should implement a 'Sidebar Applet Container' that has no dependencies except those of Nautilus, but that can use mulitple 'Sidebar Applet Engines', which in turn can take mulitple 'Sidebar Config Files'. While mulling over this idea I read CoreyBurger's ideas on keeping everything together and not using plugins [5] to implement funcinoality. However, I a project like this needs to be modular so that teams with expertise in any particular area (eg, beagle) can write the plugin to communcate with their tool. I would also hope that, like GTK+ has a 'default' engine there could be a simple 'default' setup implemented without a plugin that displayed the information already there - specifically making use of nautilus scripts, which can provide a lot of functinoality without adding any dependencies [6].

  • This would take care feeding information to the engines (plugins) (the currently selected item - perhaps the properties so that every plugin doesn't have to impliment it's own way of getting the file date, mime type etc) and recieving information to display in various forms, be it an image, a list of links, a list of programmes... I think it would control the actual display of items in the list so we keep unified looks and UI compliant. It should also be able to do basic lists itself.

If possible there should be some way to handle user input into the space for an engine on the sidebar, allowing searching or tagging directly

  • These would interface with various tools on the desktop - such as Beagle/Tracker, gnome-vfs, leaftag, Dashboard (if that doesn't just merge into Beagle) some kind of internet tool, nautilus-scripts, an EXIF reader, the contact book, image previews, media file metadata.... They would then allow Sidebar Config Files to query them in different ways. The Engine then feeds the results of the queries back to the sidebar container.

  • These should be easy to write and wil be specific to any engine. They will specify the name of a sidebar field, and which queries to use to compile it (I think multiple queries should be supported - eg 'of same file type', with 'date last edited +-5' days to give a list of files the user may want. Perhaps even queries with multiple engines, but that somewhat breaks the structure up as the container would have to handle it, unless engines could talk to each other - I don't know enough!

Here is a design of the layout I am suggestin

Design.png

  • So now we have a system that allows us to put relevant information about any selected file in to the sidebar.

Implementation

If the applet container could be completed and the idea publicised than I believe there would be a large number of people interested in coding engines, and a huge number of users interested in creating, swapping and comparing config files.

Because of this the bulk of the work is involved in making the applet container and a few good example engines - the rest would follow from there

Code

Sorry :S

Alternatives

If this is too much for you, see this spec

https://launchpad.net/distros/ubuntu/+spec/nautilus-actions-panel

Which is similar but not as far reaching

Footnotes

1. Redhat support for RH7:

http://www.europe.redhat.com/documentation/rhl7.2/rhl-gsg-en-7.2/nautilus-intro.php3

  • "News — shows current news headlines. Click on Select Sites for a list of news websites from which you want headlines displayed. Click on Edit to add or remove sites to or from this list. Done displays the main news tab."

See 'Shelf' idea at http://mail.gnome.org/archives/nautilus-list/2002-June/msg00226.html

Image Properties tab: http://www.advogato.org/person/snorp/diary.html?start=13

2. Leaf Tag

http://www.chipx86.com/wiki/Leaftag

3. Tracker:

http://freedesktop.org/wiki/Software/Tracker

4. KDE Metabar from

http://www.kde-apps.org/content/show.php?content=21010

5.

http://www.advogato.org/person/Burgundavia/diary.html?start=77

6 - usse of Nautilus Extensions on the sidepane is mentioned here

http://primates.ximian.com/~dave/NautilusExtensions.html

7. Sidebar doesn't update to current icon

https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=122365


CategorySpec

NautilusSidebarExtensions (last edited 2008-08-06 16:20:42 by localhost)