TODO: Put on KDE Store.
The last few months I’ve been wanting to reskin the KDE “Start” menu. Plasma ships with 3 default menues. The Application Menu is category based with favourites along the side. You can’t pin files to the favourites list, and the menu gets really tall with more than ~10 favourites. So I wanted to try cloning the Win10 menu to start, then customize it to my hearts content.
I initially mocked up the layout in QML View, and started deciphering how the kicker and kickoff plasmoids worked. I found out apps are loaded into a nested model that also contains the recent apps and documents.
- app (May contain invalid entries)
- Seperator (optional)
Power / Session=>
You can’t use each list individually very easily since recent apps/docs/contacts are optional. As is All Apps, it’s only possible to use it if your categories are flat, where the folders under the categories are squished to a depth of 1 “folder”. This is because “All Apps” is only used in the dashboard menu, where it’s designed to have a “depth” of 1-2 folders max. The 1st depth being the sidebar category, and the 2nd depth being the sections “A”/”B”/… in the list.
After I managed to list the apps, I started on implementing the search, and soon found that it was fairly easy to add the calculator to the menu’s results, as well as all the other services.
Finally, I implemented the favourites view. I’d managed to mockup the “Large”/”Wide”/”Small” sizes with albeit a few bugs still, but realized it would be way too dificult to implement at the same time I’m trying to bind it with the FavouritesModel, so I dropped it for a simple grid.
One thing that makes the “Start menu” is the ability to resize the menu to make more space for more favourites. Unfortunately, Plasma doesn’t expose the dialog window when expanding the menu in any way, so I can’t change the window flags to readd the resizeable flag. I got around this however by using the Alt+RightClick to drag “shortcut”. I added a tooltip when hovering the corner and called it done.