I have a lot of ideas about how the Linux desktop can be improved, perhaps revolutionized, and these ideas all come from running up against walls repeatedly. I’m going to write the best ones down, the ones I will eventually turn into an open-source project (years down the road, mind you) if no one else does.
The Linux tech world has come up with numerous solutions for notifications, and I use as many as possible to satisfy my needs. Chrome has TweetDeck, Linux has libnotify, or notify-osd if you’re using Ubuntu, and all operating systems have an icon “tray.” They all serve similar purposes: they want to give you information about what’s going on right now, and that’s incredibly useful.
However, I dislike the icon tray. It’s messy, hard to notice, and hard to click on.
I dislike the pop-up notifications. They get in the way of something every time and disappear if I don’t give them the attention they crave right at that particular moment.
TweetDeck doesn’t have any of these problems, but it runs as its own app that wants lots of screen space, and is so super-specific that it really can only be used for so many things.
My idea is to take the best of all these worlds and put them together into this new application I’ll call “notifications bar”.
It will sit as a docked panel, on the right side or left side of the screen. Every time there is an event that might be worth the user’s attention, it enters the notifications bar at the top. These notifications should be styled according to source (O/S or human?) and importance (reply soon or just an f.y.i.?). There could be an auto-hiding feature too, but I personally dislike that idea, as it usually means I’ll be accidentally triggering it, or I won’t notice it when I should.
These notifications could be triggered by literally anything. Did the system detect an unusual error that might be worth my attention, such as a failed cron job or authentication attempt? How about upcoming calendar events? What about when a new song starts playing? Perhaps it could track my last.fm friends and let me know what they’re up to. Or perhaps an application will have a notification, say if it’s out-of-date. Let’s not forget all our social networks, either.
Notifications should indicate a life-span. Some notifications (“you’re computer is full!”) need resolution right away and should exist until acknowledged. Others (“John commented: lol”) aren’t worth keeping in view. Still others (“Meeting with VIP”) need to exist for a period of time, say, 15 minutes before plus 5 minutes after the start of the event. Notifications that indicate a life-span will be called “living”, and the ones that don’t are called “temporal”. Living notifications will have a timer icon on the right side. Let’s just use a pie-chart circle indicator as an example for our imaginations. The circle starts filled, but it slowly empties in circular fashion until its life-span is exhausted.
These living notifications are the ones that stick around. As more notifications fill the bar, the ones that have a life-span “stick” at the bottom and refuse to be pushed off until “killed” or “exhausted”. The temporal ones simply fall behind either the living notifications or the bottom of the screen, whichever comes first.
Of course, a history can be kept. This can also be used for when there are more living notifications than there is screen-space. This could use some more thought.
Clicking a notification is notification-dependent, and running this whole notifications bar via plugins means each notification will provide some quick and meaningful functionality when clicked. A hover icon should appear on the left-most edge of the notification that indicates whether an entirely new application will pop open or just a dialog, similar to TweetDeck for Chrome’s little reply box, will appear. Plugins should be as easy to write as /usr/bin/notify-send is to use, perhaps even providing some UI templates for quick-’n-simple scripts written by power users, while also allowing for full-fledged custom UI’s written by developers.
This is my dream. Either I’m going to write it or someone else will, and I don’t care which, as long as it happens.
What do you think?