Reimagining Deskbar

Body: 

Following Deskbar redesign proposal is based on discussion in the 3D-Accelerated Haiku Desktop RFC comment thread. One problem that came up was that current menu designs do not support good organization.

Only ways to organize a cascading menu (or variant like Deskbar and Windows start menu) is to use subcategories and separator lines. One good thing about subcategories is that you have a short description (i.e., folder name) attached to the group of items in the category, but those items are hidden most of the time and inefficient to use. Using separator lines for grouping does not affect efficiency, but does very little to aid usability. They have no describing properties and they do not visually connect items between them.

Many Ideas

Body: 

First of all, apologize me for my English, I know it not quite good but Im improving. I have posted before but they have been deleted (I dont know why).

Quality / Stability, Kernel

I wish that Haiku before have been or sooner if possible BeOS clone. Have some security and quality features, i propose that this OS have a memory execution protection, just to make the life easier and secure, just to enforce to make best programming practices. The thing is like this:

One Desktop to Rule Them All: A Proposal for Revisions to Tracker

Body: 
One Desktop to Rule Them All

For the purposes of the novice user, Tracker is Haiku. Many people don't even know -- or care -- what an operating system is. As I have said many times before, the average person just wants to get his work done. This makes Tracker's interface crucial to user productivity because it is the main way for someone to use the computer. Many different kinds of people use Tracker. Some want to choose where each file goes. Many more don't care. Some (like me) fit into either category, depending on the moment. Everyone wants fast access to the programs he uses most. Tracker needs to have the ability to automate as much file management work as possible and still make it just as easy for the user to do things manually when he wishes.

Thank you for your donation!

Thank you for your donation!Thank you very much for showing your support for Haiku. A receipt for your donation has been sent to your mailbox.

Being a project comprised of volunteers that work on Haiku in their spare time, contributions like yours make a great difference in advancing our cause of creating a free operating system for all to use. Your donation will be put to good use.

Documentation Team: Membership and Organisational Structure

This document outlines the team structure of the Documentation Team. It will describe how the privileges and duties are distributed between the three main entities: Contributors, Members and the Coordinator. It will also describe how the advancement system works.

Haiku Documentation Team How-To

This how-to describes getting started with contributing to the Haiku documentation and the software you will need. The documentation team has a mailing list that can be found here:

3D-Accelerated Haiku Desktop

Body: 
Using the 3D accelerated power of modern video cards to do basic 2D desktop tasks is a novel concept. OS X pioneered it. Vista and Linux copied it. Haiku should improve it. This will involve significant -- major, in some cases -- changes to the Deskbar,Tracker, the app_server, and possibly other system components, but the changes will be well worth it. Visual effects detailed here are not merely "eye candy", as some would call it, but have the dual purpose of giving the user a better idea of what his computer is doing while making the interface more visually appealing.

Services Provided:

The windowing system and desktop are intended to provide a number of services
  • Up-to-date status information (time/date, new mail, reminders, etc)
  • Program-launching facilities (desktop icons, quick launcher, etc)
  • Functionality to work with multiple open programs  (Twitcher, workspaces, etc)
  • Window management tools (resize, minimize, move, move to front/back)
There are two basic reasons for these services: the user needs to know what the system is doing at any given point in time and the user is doing multiple tasks simultaneously, whether he realizes it or not.

No More Deskbar

What?! Am I crazy? Nah. It's just that the Deskbar's time has come. There are four current uses for it: launcher, up-to-date system information, system settings, and a loose collection of system-level functions, such as About BeOS and Find. They will all be replaced with better solutions.


Launcher Replacement: Tab-Based Task Organization

Instead of a single point of access to collect everything together (the Be menu), there will be a small group of tabs to provide better organization similar to the OS X product DragThing (screenshot below) and OS 9's Tab Menus. The user clicks on a tab and it expands to display a grid menu which contains the name and icon for each folder/symlink. Subfolders spawn a submenu in the direction moving away from the screen border where the tab originated, i.e. upward when at the bottom, downward when at the top, etc., and the parent menu places a light-colored overlay over all items except for the selected item to make the submenu stand out while still allowing the user to easily see other items in the parent menu. The images below (click for a larger version) show the steps.


The regular desktop

After clicking on the Programs tab

After selecting the Utilities item


This method will provide more width-depth balance -- the current organizational structure is shallow and wide: the top menu has 10 items; the Applications and Preferences submenus -- which are at only the second level of nesting -- have many more choices. Two clicks and significant mouse navigation are required. This method takes advantage of Fitts' Law in at least one direction. The large menu items also increase speed and have a bevelled edge to convey the large size of each item.


System Information: Enhanced System Tray

It seems like the current trend in user interfaces (OS X's Dashboard, Vista's Sidebar, and Google's Gadgets) is to provide some method for the user to download add-ons which look really cool and provide more than what is provided in the system tray. This is because the system tray's small size limits the amount of information that can be provided. The Sidebar's Widgets and Google's Gadgets simply add a window which consumes more desktop space. Worse yet, the add-ons themselves tend to be not fit with the rest of the UI's look and are larger than necessary, wasting the precious space taken up by the new window and adding insult to injury.

The new system tray is similar to the Sidebar in Windows Vista, but is less intrusive. As an option, it can always remain on top, but by default it can be covered up by other windows. Add-ons are required to be simple and uncluttered -- a few words and perhaps a picture. Instead of using miniature controls, each entry is clickable. The default action (such as starting the mail program for the e-mail add-on) is invoked on left click and configuration is done by way of a pop-up menu on right-click.


System-Level Settings and Functions: the Computer Tab

In a way quite similar to the Programs tab, the Computer tab houses access to global functions and settings. The Preferences apps find themselves placed here in submenu. The Find, About Haiku, Restart, and Shutdown items are also placed here.


Window Management Improvements


Minimize in Place

Minimizing a window can actually be a source of confusion for some users. Merely by double-clicking on a window tab, the window disappears and there is no apparent reason why or where it has disappeared to. In fact, unless the user specifically looks at the Deskbar's running program list or there are multiple windows open, the program appears to have closed. In latter case, the document seems to have been closed. The solution is to minimize the window to a miniature version of itself, add the program's icon to its corner to further aid in identification, and place it on the desktop. When a window is minimized this way, the scaling-down process is animated to show its placement on the desktop.



Before

After



Right-click Desktop Menu (Window management functions)

Window management functions until now have been largely ignored and have been limited to Hiding or Showing one or more windows in a program. While these functions can still be used in the Running Programs addon for the system tray, these functions will also be placed in a submenu of the Desktop, so the user can right-click on the Desktop and choose an item like "Hide Program Foo."


Show Desktop

Minimize in Place increases the need for being able to see the Desktop because suddenly it is no longer just a kind of computer junk drawer. Because of this new need, it is more important than before to be able to quickly see it. Invoking this function from the Desktop context menu (see above) or by hitting F11, all windows slide almost completely off-screen. Hitting F11 again returns all windows to their original positions.


Minimize All

Does a Minimize in Place for all open windows in the current workspace.


Workspaces View

Workspaces are feature of  BeOS which set it apart from other OSes (except the *NIXes) back in the day. Mainstream OSes today still don't do justice to utilizing them because for them, workspaces are just a bolted-on feature not originally intended in the design of the interface. More so than before, workspaces will be a major part of the user experience -- they allow the user to do much more at once and still remain organized. The workspaces control will be similar to a Replicant, but will be an integrated part of the Desktop, defaulting to the center of the bottom edge of the screen. By having a 3D-accelerated desktop, it will be possible to see live updates of all programs.


The control up close

The control in context of the screen

While all of this may be nothing particularly special so far -- integration and visual enhancement of a current feature -- there is one more tool in the window management toolbox: a zoomed workspace view. By hitting F12 or choosing the appropriate option from the Desktop window management menu, the Workspaces control expands to full-screen size (with a corresponding zoom animation). At this point, the user can double-click on a particular workspace to switch to it, move windows around, or just watch multiple apps working at once. Switching from this full-screen view to a workspace results in yet another appropriate zooming animation into the requested workspace to give context to the user.

Enhanced Twitcher

Some users will not necessarily want to work with multiple workspaces and prefer to keep everything in the same workspace, piled on top of each other. For these users, there will be some small enhancements to the current Twitcher. It will show a live preview of the window along with the program name and the title of the window switched to when released. A semi-transparent black overlay is placed in between the screen and the Twitcher previews (in the Z order) In order to increase the visual contrast from the actual desktop. The selected app's preview has a "glow" selection rectangle placed around it and the title header is shown in a slightly larger font size. The previews themselves are as large as possible -- up to the full size of the window -- and are scaled down only enough to fit all windows within the width of the window. They are also placed close enough together that the selection indicator slightly overlaps the others to visually "push" the selected preview in front of the others.




Window Movement Constraints

Sometimes the user gets himself into a bit of a mess when a window is somehow off the screen and he can't get it back on the screen. Small changes in window dragging will help prevent these situations.

  • Top / Bottom Tab Constraints - window tabs cannot be dragged below the bottom edge or above the top edge of the screen.
  • Left / Right Screen Alignment - Using the Snap-and-Go techniques pioneered by Patrick Baudisch, allow the user to easily align a window to the side of the screen without preventing him from moving it further.


Hardware Considerations

One problem with depending on a 3D graphics card to do certain tasks in the main part of the interface is figuring out what to do when there *isn't* a 3D card or how to handle the differences in the capabilities of each card. The solution is three-fold: implement certain functions in software, turn certain enhancements off, and provide lower-overhead alternatives to enhancements.

An example of using these methods to provide a good user experience with less-capable hardware can be found in the new Twitcher. Live previews would be processor-intensive, so instead of providing live ones, the user is given a snapshot of each app's state when the Twitcher was invoked -- a non-live preview. The soft-glow of the selection could be replaced simply with one generated with a simple solid-color rounded rectangle. Live updates to the goings-on under the overlay would be handled in the same way as the live previews - take a snapshot of the desktop, apply the overlay, and show the Twitcher. While the enhancements will not run nearly as fast as the hardware-accelerated versions, they should still be quite usable and responsive.

Another low-power handling example can be found in the new Workspaces control. Visually speaking, the control would look like the current version -- small representations of the windows with text labels. The zooming effect when switching between to full-screen mode and a workspace could be eliminated or an outline rectangle could be used.


Final Thoughts

These changes are by no means small, but they have the potential to make Haiku an operating system that makes the user's experience much more enjoyable and productive for users of all levels of experience.
AttachmentSize
ExpandedSysTray.png7.35 KB
NewTwitcher.png45.31 KB
NewTwitcherThumb.png23.06 KB
rightarrow.png412 bytes
SVminimized.png6.23 KB
SVnormal.png18.11 KB
TabDrawer.png5.74 KB
TabDrawer2.png9.3 KB
TabDrawer2Thumb.png2.92 KB
TabDrawer3.png12.64 KB
TabDrawer3Thumb.png3.39 KB
TabDrawerThumb.png1.92 KB
Workspaces.png4.33 KB
WorkspacesMockup.png61.99 KB
WorkspacesMockupThumb.png13.84 KB

Application Level API Incompatibilities with BeOS

Body

Haiku R1 (x86) was designed and is being implemented to be binary and source compatible with applications written for BeOS R5 (x86) to a large extent, but not the other way around. In some cases we deliberately broke source compatibility while at the same time maintaining binary compatibility. Here are some specific examples:

  • The "be" header path is gone - it's called "os" in Haiku; since it is always part of the default header search path anyway, you can always just remove it to let your software compile on both platforms, ie. replace:
    #include <be/interface/View.h>
    with:
    #include <interface/View.h>
    or rather use the preferred method of omitting the first part and use:
    #include <View.h>
  • BeOS contains a deprecated add-ons/TrackerAddons.h header, and a header called add-ons/TrackerAddOns.h - Haiku only contains the latter.
  • If you have subclassed BString and if you are using its _privateData member, you might notice that it has been renamed to fPrivateData. However, it's use is deprecated, and it might even be made private in the future.
  • The undocumented functions defined in are not implemented.
  • The private Device Map API (used by OpenTracker) has been replaced by a different API (Disk Device API).
  • The application debugging interface () is conceptually similar, but nevertheless source and binary incompatible.
  • The file system API has changed; file systems that worked on BeOS will no longer work on Haiku.

In several places we also dropped compatibility support for older BeOS versions (PR2, R3, R4), which BeOS R5 still featured.

Developing IME Aware Applications

To support Haiku and do something useful for it, I am pleased to show you how to communicate with the input server in BeOS.

In BeOS, almost everything uses the UTF-8 character encoding for the processing of characters. Thus, if you want to write or display the characters of other languages than English, all you need to do is to find a font able to display the characters properly and an input method add-on to help you at outputting characters to the running application. The input method handling of BeOS was originally found in the Japanese support. It works this way: The input server loads the add-ons located at B_SYSTEM_ADDONS_DIRECTORY /input_server/methods or B_USER_ADDONS_DIRECTORY/input_server/methods, then filter all events generated by the keyboard or mouse with the Filter() method of BInputServerFilter to change them. There are only a few input methods written since the time BeOS R4 was released. Maybe it's because only ERGOSOFT Crop. and just a few developers know how to have method working. In my memory, existing methods are BeCJK, HanBe, Canna, ChineseTool and more recently "Anthy for Zeta".

Haiku boot screen

This is the Haiku boot screen. Pressing the spacebar while Haiku boots displays a screen with various boot options.