As shown in another post, in Windows 7 I had a streamlined, highly organized, highly accessible Start menu containing literally hundreds of entries. I knew where things were, and I could find them very quickly. Even better, my customized Start menu was saved on a drive other than drive C. It would stay in place; it could be backed up; and it would be working after as I reinstalled Windows from scratch or restored an image of drive C.
Now, the question was, how can I get something like that in Linux Mint? I was surprised that it was so hard to get a good answer. This post describes the steps I went through in that quest. (Note: readers sharing that reaction may appreciate another post’s suggestion for the future direction of desktop Linux.)
The first question was, how much freedom do I have to organize or replace the Start Menu? It took (1 2 3) searches and some digging around, but eventually I found webpages answering that question to some extent. To my surprise, the general answer seemed to be that Linux was not remotely as flexible as Windows for this purpose. Indeed, sometimes I found surprising hostility to the very idea that Linux would want to add useful features found in Windows.
I looked for potential solutions. Netrunner indicated that Linux menu options included the Cinnamon Mint menu, Mintmenu, Whisker, MATE menu (from Gnome 2), Gnome 3, Unity Dash & Launcher, Xfce menu, Kicker, Openbox, and several KDE menus (Classic, Kickoff, Plasma). Among those, the Openbox menu seemed most similar to my Windows menu. There was also Configurable Menu, StarkMenu, Global Application Menu, TopMenu, and apparently many others. But it seemed that the available Linux menus all had limited options for menu rearrangement and reconfiguration. (See also Xfdesktop to customize the Xfce menu.)
It developed that MATE itself offered a Main Menu option (right-click on taskbar > Add to Panel > Main Menu) that was not terribly different from a classic Windows Start menu. There was also a Menu Bar alternative that achieved the same thing with more taskbar clutter. Both of these were alternatives to MATE’s default mintMenu. It was feasible to have more than one of these menus running on the taskbar at the same time. So before I worried about moving the Main Menu icon all the way to the left end of the taskbar and removing the mintMenu “Menu” icon from that corner position, I tried tinkering with Main Menu while its icon was still out in the middle of the taskbar.
How-To Geek said that I could use a menu editing tool (e.g., MenuLibre, Alacarte, Mozo) to modify the Main Menu. I would eventually find that Mozo was the default menu editor in MATE, though there seemed to be no way to get that information from a Help menu pick as in Windows. I installed Alacarte via Synaptic and ran it via the alacarte command. This opened a window confusingly titled Main Menu — with, again, no indication that I was actually running Alacarte. I was not sure how Alacarte worked. For instance, I saw that the menu had a folder for “Other” items and also a folder for “Sundry” items. It seemed to me that those could be combined into the Other folder. So I tried dragging items from the Sundry folder to the Other folder. I wasn’t allowed to select multiple items; I had to drag them one by one. But, really, that was OK, because it turned out I couldn’t drag anything at all anyway. It seemed the better approach was to forget about Alacarte and just go to the Main Menu icon on the taskbar and select Edit Menus. That opened a window that looked just like the Alacarte window, but this one would let me drag things around. Note: although I was editing the Main menu, the changes that I made were also reflected in the mintMenu, which I had not yet removed.
I decided to try setting up a menu structure similar to the one I had used in Windows. Rather than Applications and System, I wanted top categories for Multimedia, Online, Productivity, Tools, and Miscellany. But no, that wasn’t an option: those five categories would have to go under the Applications heading. Under Multimedia, I created a subfolder for Images, and I began to drag items there from the Graphics folder. (There was no option to just rename the Graphics folder.) I had to drag them precisely: if I wasn’t quite on target, the operation wouldn’t succeed. Each time I would drag an item, the focus would irritatingly shift to the target (Images) folder, so as to make it as difficult as possible for me to finish what I was doing in the source folder. This helped to prolong the amount of time that would pass before I would clearly see that the stupid thing was not moving Start menu entries; it was copying them. (There were no right-click Copy or Move options.) So then I had to take the extra step of manually deleting the icons in the source folder, after making sure that they actually had been copied to the target folder. And then, of course, the Images folder would close each time I deleted an item in the Graphics folder, so I had to reopen it before I could drag another item to it — and sometimes it didn’t want to reopen. Double-clicking on a submenu in the right pane did not open it. In short, a menu reorganization task that would have taken ten minutes in Windows was going to take an hour in Linux. And thus we while away our afternoons . . . I tried a search for a way to run commands that could automate this inordinately tedious process, or at least to save it when it was done, but no joy. I posted a question about this. This appeared to be the nature of the beast: I pretty much had to like it or lump it.
I tried Openbox: following instructions (using Synaptic), I installed openbox, obconf, obmenu, tint2, and nitrogen. That put an icon in Start > Preferences. The instructions said I would have a choice of desktop environments at the login screen. But I didn’t have a login screen. To get one, I went into Start > Administration > Login Window > Auto login > uncheck Enable Automatic Login > reboot. That brought me to a login screen. I pressed F1 to bring up a Login dialog with a little gear icon in the upper right corner. Clicking on that icon gave me the option of choosing Openbox. This gave me a blank screen. I right-clicked and saw a menu. The Debian entry on this menu contained an Applications menu that seemed only partly (and somewhat confusingly) related to the menu I had been rearranging: some programs were missing, and there were others that I had not seen previously.
By now, I was more convinced that there really was no capability for rapidly rearranging menu icons. Manual editing appeared possible but not easy. I was working in a virtual machine (VM), so now I rolled the VM back to the previous snapshot and posted another question. One reply informed me that MenuLibre was the default menu editor for Linux Mint, but that appeared incorrect: I had to install it. Then it was available via Start > Accessories > Menu Editor. But it didn’t seem helpful at all.
Another reply suggested using a “dock” (a/k/a launcher) program (e.g., Synapse, Cairo, Docky as a frontend for GNOME Do) to get something like a glorified taskbar, showing a band of program-launching icons across the bottom of the screen. But I didn’t want that clutter and, anyway, it did not appear that these app launchers would add enough to my existing Windows functionality to justify complicating my system. It also appeared that some of these launchers, notably (1 2 3) Cairo, were not highly functional.
Attempting Menu Reconfiguration
The “launcher” term appeared to be used ambiguously, in Linux, to refer not only to the foregoing dock programs but also to the individual “application launchers” that, in Windows, would be called shortcuts. In this latter sense, a launcher was just a little file that contained bits of information (e.g., the name and location of the program to be executed) that the computer would need in order to know which program it was supposed to run. To avoid confusion, this discussion refers to these application launchers as “shortcuts.”
To view the essential information contained in the Start menu shortcuts in Linux, I did not have the option of right-clicking on them and choosing Properties, as I would do in Windows. Instead, I had to find where they were stored, and use Terminal to view their contents. On the first point, One reply to my question said that I could find editable “desktop” files in these folders:
~/.local/share/applications /usr/local/share/applications /usr/share/applications
I used the file manager to browse to those folders and, especially in /usr/share/applications, saw various folders whose Type was said to be “desktop configuration file.” I would eventually figure out that the file manager was not showing their .desktop extensions. This may explain why, when I right-clicked on the desktop configuration file for the Banshee media player, I did not get an Open With option that would have allowed me to view that file’s contents in a text editor like gedit. Instead, I had to open a Terminal session (go up one level, right-click on the folder, and choose Open in Terminal), use a command like ls banshee* to see its full name, and then use sudo gedit banshee.desktop to view its contents.
The banshee.desktop file contained an Exec line, indicating the full command that would be run when I clicked on the Banshee shortcut in the Start menu. But it did not seem to indicate why the Banshee shortcut would be listed in the Sound & Video submenu, rather than being located somewhere else in the Start menu. For information on that, I revised my question. While I was waiting for feedback on that, I managed to find /etc/menu/README, which said
In this directory, the system administrator can install menufiles to override the menu files provided by Debian in /usr/lib/menu, /usr/share/menu and /usr/share/menu/default.
The filename should be the name of the package that it is overriding, and may contain as many lines and menu entries as necessary.
Please run ‘update-menus’ after changing or adding files.
For more info, please read /usr/share/doc/menu/html.
Presumably the first paragraph of that quote meant that a menu file placed in some other folder might be overwritten during a system update. In Ubuntu, if not also in Linux Mint, it appeared that an entry in ~/.menu would override even the /etc/menu folder. The same point emerged when I typed man menufile (which produced a manual page for Menufile in Linux Mint MATE 18 but not Cinnamon).
Following the cue provided in the last sentence of the foregoing quote, in the Firefox address bar, I went to file:///usr/share/doc/menu/html/index.html. That opened a guide to the Debian menu system, also available online. That guide (Chapter 3.1) said this:
Packages-provided menu files should be in /usr/share/menu/, unless the menu files are actually executable binaries, in which case they go in /usr/lib/menu/. System-local menu files should be in /etc/menu/. User-specific menu files should be in ~/.menu/
In my Linux Mint installation, there was no /usr/lib/menu folder, and also no /usr/share/menu/default file or folder. That left the /usr/share/menu folder, which did contain a number of program name files like “banshee.” One line of the banshee program file said section=”Applications/Sound” \ which seemed to imply that “Sound” was the shorthand name for the “Sound & Video” section of the Start menu’s Applications folder. The README file (above) seemed to say that I could put a revised version of this banshee file into /etc/menu to override this /usr/share/menu/banshee file.
Chapter 6 of the Debian menu guide said, “Users can specify their own menu entries in the ~/.menu directory.” I had no such directory. Presumably this meant I would have to create that folder, if I wanted to use it. But I saw no reason for that; Chapter 3 (above) had just told me that I could also install menu items in /usr/share/menu. The point here was apparently that I would use the Chapter 3 instructions if I wanted the menu entry to be available to everyone on my system, and the Chapter 6 instructions if I wanted a menu entry for a specific user. Since I was the only user of my system, for me it seemed to come to the same thing.
Chapter 2 of the Debian menu guide offered “the authoritative list of Debian’s menu structure.” This list contained dozens of headings and subheadings (e.g., Applications/Video; Games/Action). I wasn’t sure whether it would be possible to use headings or subheadings not included in that official list. I decided to try to find out. I took a snapshot of the VM, in case this went poorly. Then I copied /usr/share/menu/banshee to /etc/menu/banshee. To do that, I had to open an administrator’s session of the Caja file manager: sudo caja. Then I edited /etc/menu/banshee to say section=”Weird/Bogus” \. In Terminal, I ran update-menus. This effort failed, in that there was no Start > Weird section. There was simply a Banshee entry in Start > Other. I deleted that. It occurred to me that it might have been there before, so I ran update-menus again. The Other > Banshee entry was back. My /etc/menu/banshee file seemed to be creating it.
So it appeared that I could not introduce new Start menu folders simply by naming them in an /etc/menu file. But I could introduce a new Weird folder, in the Start menu, by using Mozo (Start > right-click > Edit Menu > New Menu); and then, with that new Weird folder selected, clicking New Menu again would let me create a Bogus subfolder. But those folders stayed italicized (i.e., hidden): when I clicked Applications to put the Weird item in the right-hand pane, in Mozo, I could not get the checkbox to stay clicked; it would uncheck itself. Running sudo mozo did not help. The problem seemed to be limited to new folders: in Mozo, I could right-click on an existing folder, select Properties, and rename it, and the folder would continue to be visible, selected, and not italicized.
The man page provided a long list of primary and secondary menu headings (e.g., Applications / Science / Biology). The man page reiterated, “Please do not put your packages into any other sections.” I was not sure how to reconcile that request with the fact that, as I had just seen, Mozo was willing to create new menu folders and subfolders. Maybe it was just that those unorthodox new folders would not be displayed.
Discussion of my question led to a Desktop Menu Specification. It was not clear how this Specification related to the Debian manual, but the Freedesktop.org website generally appeared to be open to various desktop projects in a variety of Linux distributions. The Registered Categories section of that Specification appeared to propose Main and Additional (possibly meaning “minor”) menu categories. It seemed that Linux Mint had not adopted this same list: for example, the Sound & Video main category in my menu was not included in the list on that webpage. Apparently I was missing something there; The Linux Critic seemed to say that Freedesktop was in fact adopted by most if not all Linux Mint flavors.
That Linux Critic page also said that .desktop files did not have to be related to applications (as in the case of e.g., banshee.desktop); their contents could also specify that they were related to links or directories. The latter possibility raised the question of whether the folders appearing in the Linux Mint menus were there because, somewhere on the system, there were files with names like applications.desktop and graphics.desktop (to name two of the top- or semi-top-level categories appearing in the Start menu in MATE). But searches through the entire filesystem for such filenames led nowhere.
Notes for the Future
At this point, I substantially abandoned this effort: frustration with this project, and competition from other projects, persuaded me not to sink any more time into the apparently futile hope that, somehow, the Linux Mint Start menu could be configured to resemble my Windows Start menu, and that my configuration could be saved for future use in other installations.
To the extent that I did go ahead and rearrange aspects of the Start menu, it appeared that I would be focused especially on Windows programs as distinct from Linux programs. The latter appeared to be appropriately available via Start menu icon and/or command line. But the situation with the Windows programs installed in Wine was more chaotic. It seemed their launching icons might be in the Start menu; they might also (or instead) be on the desktop; they might be found within PlayOnLinux; or they might not exist at all.(The only apparent way to run other programs installed via PlayOnLinux was to start PlayOnLinux and use the program’s icon visible there.) And among the icons that did already exist, some (especially those generated in the Start menu) didn’t work.
Where launching icons didn’t exist, it seemed I would have to create them. The basic method of creating a launcher was evidently to right-click on the desktop and choose Create Launcher. For example, for the Windows portable program Bulk Rename Utility, the Command to be entered in the launcher would be wine “/home/ray/.wine/Portables/Bulk Rename Utility/Bulk Rename Utility.exe” (assuming that’s the folder where I parked that executable file and its .ini or other accompanying files). Alternately, it seemed I could still use wine [program.exe] to run a program after using Wine to install it.