Better Deskbar menu organization

I propose to improve the Deskbar menu Application section – create a standard subdirectories in it:

Audio (Tools)*
Development
(Emulators)?
Games
Graphics (Tools)
Internet & Network
Productivity (with text tools)
Science & Education
(System (Tools))?
Utilities
– (Emulators)?
– (System Tools)?
Video (Tools)

– and sort applications in subdirectories.

*in brackets some available options and additional info.

It is clear that the same standard must go to the software repositories.
…and HPKGs.

I think it can easily be achieved by manually modifying the menu as you wish.
This functionality is well described in the docs (check the Menu section):
https://www.haiku-os.org/docs/userguide/en/deskbar.html#deskbar-menu

Automatically categorizing apps can have its own drawbacks in the future.
Some people might want to have a bunch of apps in the same folder (like me).
Plus, it creates an additional “pain in the ass” for 3rd-party repo maintainers.

Out-of-the-box functionality can be an advantage, but sometimes it is better to just provide users with an ability to tailor the system in accordance with their own tastes (which are different).

I believe that menu is good the way it is now. Especially when we have such an awesome documentation.

Looks like all that experience sorting out the BeOS archive could come in useful here. Though would those categories be as useful if people only have a few dozen items in a menu rather than hundreds or thousands?

Like you said, having the same categories (tags or whatever you call them) also show up in HaikuDepot for the packages would be good.

For bonus points, tag the thing (application executable, documentation file, etc) that should be in a menu with an attribute that lists the categories it is in (more than one would be a nice feature) and automatically generate the menu from the attributes.

1 Like

i have creaded a little app to sort the menu a lurtle bit easly:

http://besly.de/menu/search/archiv/sys/menusorter.html

This is absolutely necessary. I have a partition for testing purposes with every available end-user HPKG on it that doesn’t conflict with something else.

For the last year, I have been using the existing categories on HaikuDepot for all apps on my repo.
Audio
Business
Development
Education
Games
Graphics
Internet and Network
Productivity
Science and Mathematics
System and Utilities
Video

(I added Emulators to this scheme)

Since that classification is part of HaikuDepot and the Web app, that system must have been officially decided upon at some stage, but if it is officially changed I will update my packages (might take a while, but I will) I think Games can be subdivided further. It still scrolls off the screen. As you can see in the screenshot there are some unofficial additions to the deskbar from apps like Quassel and Exult - Hey, those aren’t my ports. And when you look at the non-classified apps, you only get to B before you start scrolling. And scrolling. And scrolling

A menu system that works perfectly with 10-20 apps just does not scale when you have hundreds of them.

One problem here is that Deskbar seems to pick up its sorting prefs from Tracker. These standard subdirs work great if you have set sorting in Tracker to set directories before files, as in the screenshot. If not, not so good. But at least you don’t have to scroll the deskbar for five minutes to find your app.

There is a weird workaround where you delete a directory and make a symlink that will let you rearrange your Deskbar manually. I suppose Lelldorin’s app makes use of that - sorry, I haven’t had a chance to look at it yet. It is not clear to me if that would survive a system upgrade.

I like agmsmiths’ idea - it is the haiku way of doing things and would probably work better with internationalization.

In BeOS there always was a problem with not structured data going to chaos. To resolve this we need force some structure on it.
In menu and software categories, I think, that it must work in this way:
in the web there are tags and subtags, and in Haiku FS attributes and subattributes.
Every software has its place in attributes and subattributes tree (in web is tags and subtags), like this:

audio_tools
|–codecs
|–conversion
|–editing
| |–vst_plugins
|–encoders
|–miscellaneous
|–mixing
|–playback
| |–cd_players
| |–midi
|–recording
|–samples
|–sequencing
|–synthesizers
|–text-to-speech
|–utilities
wallpapers
publishing
|–magazines
|–videos
development
|–app_installation
|–class_libraries
|–debugging
|–docs
| |–bebook
|–example_code
| |–be-sample-code
|–games
|–gui_creation
|–ides
|–languages
|–miscellaneous
|–resource_editors
|–utilities
|–web_development
games
|–2d_action
|–3d_action
|–adventure
|–board
|–card
|–classics
|–emulation
|–miscellaneous
|–puzzle
|–role_playing
|–strategy
|–text_based
|–utilities
graphics_tools
|–3D_tools
|–color_pickers
|–flash_tools
|–font_tools
|–fractal
|–icon_tools
|–image_converters
|–image_editors
|–image_mapers
|–image_organizers
|–image_viewers
|–internet
|–miscellaneous
|–screen_capture
|–utilities
internet_network
|–chat_im_irc
|–e-mail
|–entertainment
|–file_sharing
| |–download_managers
| |–ftp_clients
| |–miscellaneous
| |–peer-to-peer
|–miscellaneous
|–newsreaders
|–remote_access
|–servers
| |–email
| |–ftp
| |–misc
| |–nfs
| |–web
|–telephony
|–time_synchronization
|–utilities
|–web_browsers
productivity
|–calculators
|–contacts_people
|–databases
|–diaries_journals
|–finance
|–inventory
|–miscellaneous
|–office_suites
|–organizers_planners
|–presentation
|–reminders
|–scheduling_tools
|–spell_checkers
|–spreadsheets
|–statistics
|–timers_alarms
|–unit_converters
|–utilities
|–word_processors
science
|–astronomy
|–chemistry
|–electronics
|–geek_toys
|–mathematics
|–miscellaneous
|–physics
|–reference
| |–dictionaries
|–religious
|–simulation
|–tests
system_files
|–datatype_translators
|–documentation
|–drivers
| |–audio
| |–input_device
| |–miscellaneous
| |–network
| |–printer
| |–storage
| |–video
|–file_system_addons
|–fonts
|–icons
|–input_methods
|–keymaps
|–locale
|–screen_savers
|–shared_libraries
|–themes
|–tracker
|–updates
|–experimental_updates

text_tools
|–code_editors
|–converters
|–djvu_tools
|–filters
|–hex_editors
|–html_editors
|–miscellaneous
|–notepads
|–osr
|–pdf_tools
|–processing
|–search
|–tex
|–viewers
|–xml_editors
utilities
|–command_line_shell
| |–editors
| |–fm
|–demos
|–desktop
| |–calendars
| |–clipboard
| |–clocks
| |–deskbar
| |–info_bars
| |–launchers
| |–miscellaneous
| |–notes
| |–run_command
| |–sounds
| |–wallpaper_tools
| |–workspace
|–emulators
| |–acorn
| | |–bbc_micro_emulator
| |–apple
| | |–II_series
| | |–macintosh
| | |–basiliskII
| | |–sheepshaver
| |–arcade
| | |–multiple_system
| | |–single_system
| |–atari
| | |–2600
| | |–5200_supersystem
| | |–8_bit
| | |–st
| |–commodore
| | |–64
| | |–amiga
| | |–c16-c116-plus4
| |–dosbox
| |–magnavox
| |–microsoft
| |–misc
| |–nec
| |–nimrod
| |–nintendo
| | |–64
| | |–gameboy_advance
| | |–nes
| | |–snes
| |–pc_computer
| |–roms
| |–scumm_vm
| |–sega
| | |–genesis-segacd-32x
| | |–mastersystem-gamegear
| |–sharp
| | |–x68000
| |–sinclair
| | |–bezx
| | |–zx-spectrum-ql
| |–snk
| | |–neo_geo
| | |–neo_geo_pocket
| |–sony
| | |–playstation
| |–tools
| |–x-beos
|–entertainment
| |–mascots
| |–miscellaneous
| |–toys
| |–tricks_jokes
|–file_management
| |–archiving_compression
| |–attributes
| |–backup
| |–comparison
| |–converting
| |–copying
| |–croping
| |–disk_images
| |–encryption
| |–execution
| |–exploring
| |–links
| |–managers
| |–miscellaneous
| |–moving
| |–organization
| |–recovery
| |–renaming
| |–search
| |–shredders
| |–split_join
| |–synchronizing
|–hardware
| |–audio
| |–barcode
| |–cd-dvd_recording
| |–digital_camera
| |–display
| |–floppy
| |–keyboard
| |–memory
| |–microcontrollers
| |–miscellaneous
| |–mobile_phone
| |–mouse
| |–pda
| |–print
| |–scanners
| |–sensors
| |–serial_communications
| |–ups
| |–usb
| |–video
|–miscellaneous
|–system
|–antivirus
|–boot
|–disk_utils
|–fs_tools
|–info_monitor
|–install_uninstall
|–kernel_utils
|–maintenance
|–media
|–miscellaneous
|–passwords
|–patches
|–preferences
|–resource_meters
|–shutdown
|–startup
|–task_managers
|–update_utils
|–user_authentication
video_tools
|–codecs
|–conversion
|–editing
|–miscellaneous
|–playback
|–recording
|–subtitles
|–tv

Haiku menu, or Tracker, must be able to recognize this and sort data accordingly, and sort data in level
as the user points.

I hope intelligibly expressed the idea.

…I think idea should work to any files. In this way, the Tracker can navigate Haiku FS attributes virtual tree (folders with blue icons?).

…The file can have different attributes of one level, so it can also be (seen) in the development section and in the utilities or internet section.

Taking the hint from MIME type attributes combined with damoklas’s list of categories, the category attribute (call it “META:category”) would look like a path name: “system_files/drivers/audio” for one category example.

To make it work with multiple categories, I’d have them stored as comma separated values in the attribute string. For example, an audio driver that talks could be “system_files/drivers/audio, audio_tools/text-to-speech”. However, this would slow down BFS queries to find all things of a particular category since the indices don’t handle multiple values (except in the experimental AGMSRAMFileSystem) and it would have to search through them all to find items in a particular category.

An alternative would be to have an attribute named for each category, like “META:tag:system_files/drivers/audio” with a dummy value of a boolean (set to true for consistency). Then if there was an attribute index set up for each category, you could find all audio drivers using a query. The downside is that there would be dozens if not hundreds of indices on the hard drive (created if necessary when you install the related app), and it would be hard to enumerate all category values (listing indices would work).

A third alternative for having multiple categories is to have a symbolic link pointing to the executable with attributes on it for the alternate category.

Or just not have multiple categories.

By the way, does the package file system support BFS queries? All this won’t work if it does not have queries (and be slow if it doesn’t have indices).

Can we create a virtual category tree of attributes in the file system?
Can we browse that tree?

I don’t know if the virtual directory system would support that.

But maybe use a real directory tree of categories, like the MIME database in /boot/system/data/mime_db (have a look, see if you can find text/plain for example). Then have symbolic links in that directory tree to the actual executables or whatever file the menu item is about.

Either way, you’d need to change the deskbar menu code to use it as its source of data. Though if it is a real directory, that would be easier (just move the symbolic link it uses to find the current menu directory tree).

I does not think it is the right way to use attributes here, because if you copy the file on a other filesystem the attribute data will lost.

Yes my little example app to show how it will goning uses the simlink way.

The attributes would be set by the author of the package, and thus inside the .hpkg file, so they won’t get wiped out when using other systems to transfer the .hpkg.

So, if we don’t like the standard Deskbar folders, we should agree on an alternative directory tree root location and use Damoklas’s categories for the structure. Package builders should identify their category as a symbolic link in the alternative tree when they build the package. Then just change the Deskbar symbolic link to point to that alternative root, and presto, it’s using the new categories.

Or have both. Beside the Applications menu item, add the Category tree root folder. I suggest naming it /boot/system/data/deskbar/menu/Categories

I think better put sorted apps in Applications, categorization can be optional (a corresponding entry in Deskbar settings). New “Categories” entry in menu feels like overdose.
…After all, I think to be good, that package builders as standard must include optional symbolic links of app also in Deskbar Applications (not sorted), in main Deskbar menu and on the Desktop.

I suggest these categories in Applications (Deskbar menu):

Audio
Development
(Education?)
Games (with optional subcategories)
Graphics
Internet & Network
Productivity
Sciense & Education (or, maybe, Education just subcategory inside?)
System (Tools)
Utilities
Video

“Games” subcategories (optional):
2d action
3d action
Adventure
Board
Cards
Classics
Miscellaneous
Puzzle
Role playing
Strategy

Also, maybe, is worth to have optional subcategories in other categories to.
… and more links to make for hpkg makers… or system can do that by self?

Deskbar menu Applications Categories with Subcategories

Audio:
Conversion
Editing
Miscellaneous (or simply Misc)
Mixing
Playback
Recording
Sequencing
Synthesizers
Text to speech

Development:
Application installation
Code editors
Debugging
Documentation
IDEs
Miscellaneous
Resource editors
Web

Games:
2d action
3d action
Adventure
Board
Cards
Classics
Miscellaneous
Puzzle
Role playing
Strategy

Graphics:
3D tools
Color pickers
Converters
Editors
Font tools
Fractal tools
Icon tools
Miscellaneous
Viewers

Internet & Network:
E-mail
Entertainment
File sharing
Miscellaneous
Newsreaders
Remote access
Servers
Telephony
Web browsers

Productivity:
CAD
Calculators
Contacts
Databases
Diaries & Journals
Finance
Inventory
Miscellaneous
Office suites
Organizers & Planers
Presentation
Reminders
Scheduling tools
Spell Checkers
Spreadsheets
Statistics
Text tools
Timers & Alarms
Unit converters
Word processors

Science:
Astronomy
Chemistry
Education
Electronics
Geek toys
Mathematics
Miscellaneous
Physics
Reference
Dictionaries
Religious
Simulation
Tests

Utilities:
Antivirus
Calendars
Clipboard
Clocks
Emulators
Info monitor
File management
Hardware
Launchers
Media
Miscellaneous
Notes
Passwords
Resource meters
System
Task managers

Video:
Conversion
Editing
Miscellaneous
Playback
Recording
Subtitles
Tv

This is a great idea that has needed done for a long time! It’d definitely help clean things up in the Leaf menu to do this.

As an extra suggestion to this one, maybe to prevent it from looking like how the unwieldy list of folders and programs used to get in Mac OS 7-9 (or Windows 95/98), Haiku might consider adding in a category or tag manager like the Menu Editor frontends in several desktop environments? It’d just be a suggestion that could help users and packagers wouldn’t have to deal with so many tags, since people could just make or define their own.

In Deskbar settings must/can be added “Software Categorization” section, with options:

[ ] Show Software Categories in Applications Menu
… [ ] Hide not categorized applications links
… [ ] Show subcategories
… … [ ] Hide not categorized applications links

… More settings:
[ ] Show ‘Audio’
… [ ] Hide not categorized links
… [ ] Show subcategories
… … [ ] Hide not categorized links
[ ] Show ‘Development’
… [ ] Hide not categorized links
… [ ] Show subcategories
… … [ ] Hide not categorized links
[ ] Show ‘Games’
… [ ] Hide not categorized links
… [ ] Show subcategories
… … [ ] Hide not categorized links
[ ] Show ‘Graphics’
… [ ] Hide not categorized links
… [ ] Show subcategories
… … [ ] Hide not categorized links
[ ] Show ‘Internet & Network’
… [ ] Hide not categorized links
… [ ] Show subcategories
… … [ ] Hide not categorized links
[ ] Show ‘Productivity’
… [ ] Hide not categorized links
… [ ] Show subcategories
… … [ ] Hide not categorized links
[ ] Show ‘Science’
… [ ] Hide not categorized links
… [ ] Show subcategories
… … [ ] Hide not categorized links
[ ] Show ‘Utilities’
… [ ] Hide not categorized links
… [ ] Show subcategories
… … [ ] Hide not categorized links
[ ] Show ‘Video’
… [ ] Hide not categorized links
… [ ] Show subcategories
… … [ ] Hide not categorized links