R2 Deskbar Practical Application

I’ve got the mockup here, most of the bugs have been hashed out… Glass Elevator!
https://www.haiku-os.org/community/forum/new_r2_deskbar_mockup

This will be a complete rewrite of the deskbar code. so I’m going to name it Deskbar 6.0 (GlassElevator Development Prototyple 1)

Now for the code:
I have listed the files that are in the deskbar tree below… it’s not the same as the sourceforge repository as I originally thought

Great!–> by jscipione - 2013-01-17 22:39
"When I first started looking at the Deskbar code I was daunted by the many files and the lack of documentation and it took me a while to get my head around it. The main app is in BarApp.cpp. Deskbar consists of a single main window in BarWindow.cpp which hosts the main view BarView.cpp. Many of the remaining cpp files are child views of BarView.cpp and it’s descendants. BarMenuBar.cpp contains the leaf menu, StatusView.cpp is the replicant tray, TimeView.cpp is the clock, ExpandoMenuBar.cpp is the application menu which contains the apps in TeamMenu.cpp and the individual application menu items in TeamMenuItem.cpp as well as the application windows in WindowMenu.cpp and WindowMenuItem.cpp."

The following files in the code: I’ll update what they do when I have time to update them… not much documentation in there, so I’m going to curl up around my BeDG

BarApp.cpp as far as I’m concerned this is where main() is for starting up
BarApp.h
BarMenuBar.cpp
BarMenuBar.h
BarMenuTitle.cpp
BarMenuTitle.h
BarView.cpp
BarView.h
BarWindow.cpp
BarWindow.h
CalendarMenuItem.cpp submenu under the clock
CalendarMenuItem.h
Deskbar.rdef
DeskbarMenu.cpp
DeskbarMenu.h
DeskbarUtils.cpp
DeskbarUtils.h
ExpandoMenuBar.cpp
ExpandoMenuBar.h
icons.h
icons.rdef
InlineScrollView.cpp
InlineScrollView.h
Jamfile
LICENSE
LocalizedFolders.h
PreferencesWindow.cpp
PreferencesWindow.h
ResourceSet.cpp
ResourceSet.h
ShowHideMenuItem.cpp
ShowHideMenuItem.h
StatusView.cpp
StatusView.h
StatusViewShelf.cpp
StatusViewShelf.h
Switcher.cpp
Switcher.h
TeamMenu.cpp
TeamMenu.h
TeamMenuItem.cpp
TeamMenuItem.h
TimeView.cpp
TimeView.h
WindowMenu.cpp
WindowMenu.h
WindowMenuItem.cpp
WindowMenuItem.h

Hi Brian,

do I read this correctly that you use the original 13 year old Deskbar code as basis for your new Deskbar? Why not extend the current Haiku Deskbar?

Regards,
Humdinger

OpenTracker has the deskbar code, and it’s relatively up to date AFAICT to Haiku’s repositories.

That just isn’t true, the Deskbar code in the git repository has many improvements over the OpenTracker version so if you are going to create an improved version of Deskbar you should start from the one in the Haiku git repository.

When I first started looking at the Deskbar code I was daunted by the many files and the lack of documentation and it took me a while to get my head around it. The main app is in BarApp.cpp. Deskbar consists of a single main window in BarWindow.cpp which hosts the main view BarView.cpp. Many of the remaining cpp files are child views of BarView.cpp and it’s descendants. BarMenuBar.cpp contains the leaf menu, StatusView.cpp is the replicant tray, TimeView.cpp is the clock, ExpandoMenuBar.cpp is the application menu which contains the apps in TeamMenu.cpp and the individual application menu items in TeamMenuItem.cpp as well as the application windows in WindowMenu.cpp and WindowMenuItem.cpp.

Good luck!

I like the design pretty well except that the menus could be a bit larger/adjustable it looks as if it would work well on a touchscreen. It reminds be a bit of Hildeon on Maemo 5 (I have an n800)

Do you intend o retain a classic mode or allow the interface to be configurable enough to look like this or more classic deskbar? Worst case I guess you could swap out the Deskbar completely for different versions.

Yes it will be switchable with the current design,

After looking at the haiku version there are a few additional updates versus the sourceforge site, I’ll update the versioning of those above, I’m going to make a post with my discoveries and try to get this show on the road ASAP.

I’ve worked on a tiny mockup version that is all hyroglyphics starting in the upper right corner and expands left. It allows us to use the space where the sliding bars are as UI. There is a grey area (all the way to the right) to bring to front the bar without using a hotcorner, just click on it. Dragginng this hotcorner down will turn it into the classic mode. Dragging it to the bottom will make it dock mode. The other changes will be implemented, even with the classic mode, so you can dock with the classic mode, it will just have a different color if the program is not open.

Thanks for the comments!

I quite like your design, but what I’d like to see is some setting to be halfway between the old and new - i.e. the option to be in the top right corner, with application list growing downwards with full program names not just icons, and the normal system tray (or whatever it’s called in haiku). I like the idea of things being permanently in the list and indicator colours to show whether they are running or crashed (can these be customisable colours please) but I really need the whole names of the programs there. I’m not too bothered about a disks with zsnake menu, as you can do almost this on the desktop already.

I find the current deskbar very functional - especially as I can put the workspace switcher in there and it only takes up the effective space of a single application entry. (See a screenshot of my desktop here: http://www.cpcwiki.eu/forum/emulators/hello-arnold-on-haiku/?action=dlattach;attach=5912;image). I then use auto-raise to switch desktops/applications.

The only other thing I find annoying with the current deskbar is that it takes 2 clicks to raise a window - once on the entry and then on the window. I’d like to see a single click bring up the most recently used window, with the context menu available as a right click.

So basically what I’d like is what we have now, but with the colour coding you proposed (and with customisable colours), single-click to raise, and permanent entries. And everything configurable. I don’t mind either way about the disk browser. While I’m asking for stuff, a show desktop button would be nice too. Good luck.

Just a quick & dirty Mini View… this would be “justified right” and would grow to the left. This will allow most (if not all) of the applications to show up on the list aligned where the existing leaf menu (old be menu) is, wondering if it would take much to put a hover tag on the cursor so you can read what icon is what, or just bring it to focus

Buttons from right to left
handle for changing views (can also be clicked once for opening haiku menu
Haiku menu (currently the old leaf design (Caution! Bikesheds…))
Tracker
Netpositive
Terminal
Pe
Wonderbrush (blurred icon… sorry, first time using the program)
Tray
Clock
Network
Process Controller
Volume

See how that works in the current world.

So you should be able to just hover over tracker (or any other icon, and it will “zoom” to this:

and if you click on tracker, it goes to this:

Please note that it should work fine moving from each running program to the next, unzooming the old and zooming the new

Got deskbar to compile under jam, now on to playing with code!

I’ll be working on it again this weekend (memorial day!) Probably just get the latest pull, then compile with a few changes.

Last time I was in deskbar, it was a complete mess…

anyone have an updated version that isn’t in the main branch they want me to look at?

The assumption I’m using here is the number of vertical pixels is less than horizontal pixels (landscape) therefore vertical pixels should be treated with more care than with horizontal pixels.

The R2 Deskbar should have the height of the menu the same as the tabs of the windows (this should also be a DPI/user preference setting), if you have a window at the top of the screen the Deskbar will still be visible as it goes horizontally instead of vertically, until it reaches the end of the visible area of the screen, at that point the Deskbar programs and tray icons should be scrollable

To save horizontal space, only the menu items icon will be visible by default, however when you hover the mouse over that icon, it will expand to show the item’s label. once you click on the icon/label boundaries it will show the “normal” haiku windows available in that application

The Haiku blue leaf in my humble opinion needs to go, so that’s why I like the small haiku leaf, we can even put a label on it if we want (heaven forbid Start, why not do, or open, or by your command)
The Haiku menu will remain the same as it is functionally

Programs will be along a single line (consistency, ease of use reasons) horizontally.
Programs that are open should be stacked from right to left, with the first program open being closest to the haiku menu
Programs should be able to be dragged from one side of the menu to the other, bound by the clock/tray on the left and the haiku menu on the right.
Programs should be able to be pinned into the Deskbar, so that when they are no longer running their icons will remain.
Programs should be able to be dragged and dropped onto the Deskbar, where they will be assumed to be pinned to the deskbar
Pinned programs should be able to be moved from one end of the list to the other like running applications via drag and drop

Deskbar tray items should be able to be reorganized between the clock on the left and the programs on the right
Deskbar tray items will be scrollable first before programs, this should be a customizable value.
The minimum number of tray items/or programs visible will be an adjustable value, after the Deskbar fills the screen, whichever was selected will be the first item to be converted to a scrollable list.

When in scrollable mode, the items will be have a transparency gradient from the boundary to the middle of the icon with an arrow at the edge of the gradient denoting there are more items in the list, scroll wheel should work as should clicking on the arrow to make the other icons visible.

I’ll add more to this list later.

Bonus Items:
Notifications should have a Deskbar tray item with a list of non dismissed notifications, should also be able to use the above blue or green flashing to get your attention. the current notification method is not obvious enough unless you are always starting at your screen.

We should also look into making live icons (a calendar would be able to show the date, and month for an example) this should be fairly easy to do with different vector icons, or modifiers on existing vector icons

Background of crashed or misbehaving applications should have a different background color (say red) and should be able to flash at you

Applications that are wanting attention (dialog boxen) should have a different color background (say blue or green) and should be able to flash at you

Screenshots, please?