Someone should write a script in redhat-config-* style that does all the
stuff described in this thread, like fedora-config-menus :)
Kurt Sabathy wrote:
Hey,
I 've recorded my mini-howto in managing panel menus/submenus manually:
How-To Add a Submenu To The Default Folder Structure
====================================================
This sample assume that we want to add two sub-menus 'StarOffice 7' and
'Docu & Admin' to the 'Office' menu in the default Main Menu on the panel.
These enhancements should be for a local user only.
The OpSystem is Fedora Cora 1, custom installation with all pkg's.
Tree of the 'Main Menu' in the default Panel with nodes / submenu's
only (no launcher-obj):
Tree: Application # root/main menu-icon on the panel
snip:
| ..... # tip-text = Main Menu
|-- Internet
|
|-- Office # 1st submenu
| |__ More Office Applications # sub-submenu
| |
| |__ StarOffice 7 < < NEW sub-submenu
| ^^^^^^^|^^^^
| |__ Docu & Admin < < NEW sub-sub-submenu
|-- Other ^^^^^^^^^^^^
| ......
(1) Edit File "applications.menu"
----------------------------
Add the new sub-folder/sub-menu to the applications.menu file i.e.
the the definition file of the whole Menu Structure:
° make a backup copy of the file to edit.
° as ROOT edit file '/etc/X11/desktop-menus/applications.menu'
- if deciding a local enhancement only, you must set the path
to the *.desktop files at the begining of this menu file add:
<!-- Local for User=xyz -->
<MergeDir>/home/ksa/.gnome/apps/StarOffice-7</MergeDir>
- carefully search the folder 'Office';
Note: the folder's <Name> is a script-variable and may be something
different.
<Folder> # begin folder 'Office'
| <Name>myOffice</Name>
- . . .
| <Query>
- .....
| </Query>
- # folder 'More Office ...
| <Folder>
v | <Name>MoreMyOffice</Name
| + ...
- | <DontShowIfEmpty/>
| </Folder>
-
| ^^^^ - <Folder> - begin 'StarOffice 7'
- ^^^^ | <Name>StarOffice7</Name>
| <Desktop>StarOffice7.directory</Desktop>
- | <Query>
| <Keyword>Application</Keyword>
- | <Keyword>sOffice-7</Keyword>
| </Query>
- > insert here: < - <Folder>
| | <Name>DocAdmin</Name>
- | * <Desktop>StarOffice7-DocuAdmin</Desktop>
| | <Query>
- | * <Keyword>sOffice7-Doc</Keyword>
| | </Query>
- | * <DontShowIfEmpty/>
| - </Folder>
- | <DontShowIfEmpty/>
| vvvv - </Folder> - end 'StarOffice 7'
- vvvv
| <DontShowIfEmpty/>
</Folder> # end folder 'Office'
e.g. for 'Docu & Admin' folder we define:
<Folder> # begin 'StarOffice 7'
. . . . .
<!-- More StarOffice 7 --> # comment
<Folder> # start submenu item
<Name>DocAdmin</Name> # folder script variable
<Desktop>StarOffice7-DocuAdmin</Desktop> # *.directory file
<Query> ^^^^^^^^^^^^^^^^^^^^
<Keyword>sOffice7-Doc</Keyword> # Categories in *.desktop
</Query> ^^^^^^^^^^^^
<DontShowIfEmpty/>
</Folder> # end submenu
<DontShowIfEmpty/>
</Folder> # end 'StarOffice 7'
° save file
(2) Edit The *.directory Files
----------------------------
Edit for every sub-menu a file [name].directory, where [name] is
the defined name in tag <Desktop>StarOffice7-DocuAdmin</Desktop> of
the previous changed 'applications.menu' file.
For locally use save it to a user dir and create a symLink in the pre-
defined global subdirectory '/usr/share/desktop-menu-files/'.
° as <USER> create local directory e.g.
$ mkdir ~/.gnome/apps/menu-files
$ cd ~/.gnome/apps/menu-files
° create a NEW file [name].directory:
$ [edit] ./StarOffice7-DocuAdmin.directory # any meaningful name
[Desktop Entry]
Type=Directory
Name=Docu & Admin # you see THIS name in the
Name[de]=Doku + Admin # panel sub-sub-menu
Name[fr]=.....
Icon=/home/<user>/.gnome/apps/StarOffice-7/icons/folder.png
Terminal=0
° as ROOT create symbolic Link in global *.directory dir to local dir:
$ su
$ cd /usr/share/desktop-menu-files
$ ln -s /home/<user>/.gnome/apps/ \
menu-files/StarOffice7-DocuAdmin.directory \
./StarOffice7-DocuAdmin.directory
(3) Edit The *.desktop Files
----------------------------
Edit for every launcher-object you want in this sub-submenu a file
[name].desktop, where the file-name is free.
For locally use save they also to an user dir [searchpath] as defined
in the applications-menu file:
<MergeDir>/home/ksa/.gnome/apps/StarOffice-7</MergeDir>
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
° as <USER> create local directory e.g.
$ mkdir ~/.gnome/apps/StarOffice-7
$ cd ~/.gnome/apps/StarOffice-7
° If NO Launcher Object exist:
create a NEW file [name].directory; name can be any meaningful token
because system search is done only by inspcting 'Categories'.
$ [edit] ./StarOffice7-DocuAdmin.directory # any meaningful name
Name=Docu & Admin # you see THIS name in the
Name[de]=Doku + Admin # panel sub-sub-menu
Name[fr]=..... # in French
Comment=Applications # tip-text
Comment[da]=Programmer # in french -> locale
Comment[de]=Anwendungen # in german
Terminal=false # run not in a terminal
Icon=/home/<user>/.gnome/apps/StarOffice-7/icons/draw.png
Exec=/home/<user>/opt/appl/staroffice7/program/sdraw
Type=Application
Categories=Application;sOffice-7;
^-- see file applications.menu
<Keyword>sOffice7-Doc</Keyword>
° If a launcher-obj / *.desktop file exist:
If you have a *.desktop of your application, or if you created a
launcher-obj with your GUI (creates also a *.desktop file)
you have to check and edit:
- path of 'Icon' + 'Exec' attributes
- 'Categories' is your Keyword token (file applications.menu)
included
I hope that help others a bit.
Kurt