NAME
fvwm-menu-desktop - builds Gnome and KDE menus and
style commands for FVWM
SYNOPSIS
fvwm-menu-desktop [ --help ] [ --version ] [
--install-prefix DIR ] [ --desktop NAME
] [ --type NAME ] [ --fvwmgtk-alias NAME ] [
--title NAME ] [ --name NAME ] [
--title NAME ] [ --name NAME ] [
--merge-user-menu ] [ --enable-mini-icons ] [
--enable-tran-mini-icons ] [ --mini-icons-path
DIR ] [ --png-icons-path DIR ] [
--tran-mini-icons-path DIR ] [
--check-mini-icons PATH ] [ --icon-toptitle
--check-mini-icons PATH ] [ --icon-toptitle
micon:law:place:side_pic:color ]
[ --icon-title
[ --icon-title
micon:law:place:side_pic:color ]
[ --icon-folder micon:law:place ] [
--icon-app micon:law:place ] [
--wm-icons ] [ --enable-style ] [
--enable-tran-style ] [ --icon-style
micon:icon:law ] [ --icons-path
DIR ] [ --tran-icons-path DIR ] [
--check-icons PATH ] [ --submenu-name-prefix
name ] [ --dir DIR ] [ --destroy-type
FLAG ] [ --xterm CMD ] [ --lang
NAME ] [ --utf8 ] [ --uniconv charset ]
[ --uniconv-exec exec ] [ --menu-style
name ] [ --no-check-app ] [ --time-limit
NUM ]
DESCRIPTION
This is a perl script which parses GNOME or KDE
menus definitions to build corresponding FVWM or FvwmGtk menus. The
script can also build icon and mini-icon style commands for the
applications.
USAGE
If the script is not installed in your path you will
find it in the utils directory of the fvwm distribution.
There are a lot of options. However the defaults are, I hope,
good enough. If you want the KDE system menu in the menu
"Utilities" add the following lines in your .fvwm2rc file:
...
AddToMenu Utilities "KDE System Menu" Popup kde-sys
...
PipeRead 'fvwm-menu-desktop --desktop kde-sys'
For KDE2 you may have to add --utf8 or --uniconv "charset" (see
below). Moreover, with KDE2 you can add --merge-user-menu. If you
use KDE version 1 (see below for KDE2) and you want mini-icons in
the menu and if the KDE mini-icons are in "mini/" relative to your
FVWM ImagePath add the option --enable-mini-icons. (if the KDE
mini-icons are in some other place use the --mini-icons-path
option, e.g., they are in your ImagePath plus --mini-icons-path).
If you want to build Icon and MiniIcon style commands for KDE
applications, add the option --enable-style. If you want to have
the KDE user menu replace "sys" by "user". If you use the KDE menu
editor, you may want to pop this menu up dynamically. Then, put
this into your .fvwm2rc file (note the destroy-type).
AddToMenu Utilities "KDE User Menu" Popup kde-user
...
AddToMenu kde-user
+ DynamicPopupAction PipeRead 'fvwm-menu-desktop --desktop kde-user --enable-mini-icons [--destroy-type dynamic] [other options]'
For GNOME it is natural to use FvwmGtk menus. The following
example builds "all" GNOME menus (with some mini-icons in the
system menu). You need to specify the GNOME installation prefix if
it is not /usr (with the option --install-prefix). Moreover, the
GNOME icons need to be in your ImagePath and the non .png
mini-icons you use for the user-menu need to be in mini/ (if not,
use the --png-icons-path option and the --mini-icons-path option,
respectively).
Module FvwmGtk
*FvwmGtkDestroy gnome-all
*FvwmGtkMenu gnome-all
*FvwmGtkTitle "Gnome Menus"
*FvwmGtkSeparator
*FvwmGtkDestroy gnome-sys
*FvwmGtkSubmenu "System" gnome-sys
*FvwmGtkDestroy gnome-user
*FvwmGtkSubmenu "User" gnome-user
*FvwmGtkDestroy gnome-redhat
*FvwmGtkSubmenu "RedHat" gnome-redhat
PipeRead 'fvwm-menu-desktop --type gtk --enable-mini-icons --icon-folder :re --icon-app :re --icon-title :re --icon-toptitle :re'
PipeRead 'fvwm-menu-desktop --type gtk --enable-mini-icons --icon-folder :re --icon-app :re --icon-title :re --icon-toptitle :re'
PipeRead 'fvwm-menu-desktop --type gtk --desktop gnome-user --enable-mini-icons'
PipeRead 'fvwm-menu-desktop --type gtk --desktop gnome-redhat --enable-mini-icons'
# To obtain the menu above with Alt-button1 on the root window
Mouse 1 R M SendToModule FvwmGtk gnome-all
You can specify FvwmGtk alias: Module FvwmGtk MyGnomeMenu. In
this case you must pass an additional parameter to
fvwm-menu-desktop: --fvwmgtk-alias MyGnomeMenu.
Of course you can build FVWM (i.e., no FvwmGtk) GNOME menus.
GNOME and KDE2 use PNG icons which are not suported by FVWM menu.
However, if you have XPM version of the GNOME or of the KDE2
(mini-)icons you can build FVWM menus and style commands with these
icons using the option --enable-tran-mini-icons and
--enable-tran-style. The FVWM Themes package (http://fvwm-themes.sourceforge.net/)
conatins an utility, fvwm-themes-images, which can convert
automatically (with the help of ImageMagick) all GNOME and KDE2
icons to XPM icons.
You can build sub menus using the --dir options. However, if you
want to use more than one submenu it is better to build the "all"
menu and to use the submenu names. See the option
--submenu-name-prefix for information on submenu names.
Nevertheless, you may put the menu in a tmp file using redirection
to see the submenu names.
If you think that fvwm-menu-desktop slows your startup too much
do not use PipeRead. Instead run fvwm-menu-desktop and redirect the
menu to a file and Read that file in your .fvwm2rc file. Another
possibility is to use DynamicPopupAction (with fvwm menu), the menu
(and the styles) will be built only if you pop up the menu. The
following menu creates a "kde-all" menu which contains the user
menu which is built each time you pop up "kde-all" and contains a
pop up to the system menu which is built only the first time you
pop it up.
AddToMenu kde-all
+ DynamicPopupAction FuncRecreateKdeAll
AddToMenu kde-sys
+ DynamicPopupAction PipeRead 'fvwm-menu-desktop \
--desktop kde-sys [options, but --destroy-type d* or n*]'
AddToFunc FuncRecreateKdeAll \
I PipeRead 'fvwm-menu-desktop \
--desktop kde-user --enable-mini-icons --name kde-all \
--destroy-type dynamic [options you like]'
+ I AddToMenu "kde-all" "" Nop
+ I AddToMenu "kde-all" "Kde System%mini/mini-k.xpm%" Popup kde-sys
fvwm-menu-desktop takes into account your $LANG environement
variable, which may be overwritten using the --lang option.
Hint, if you need a different menu font or item format from the
ones used in the default MenuStyle, you may use the --menus-style
option to assign a non-default MenuStyle name to menus built by
this script. Don't forget to create a new menu style in your
fvwmrc, using CopyMenuStyle and MenuStyle commands.
OPTIONS
- Main Options
- --help
- Show the help and exit.
- --version
- Show the version and exit.
- --install-prefix DIR
- The prefix of GNOME or KDE installation. Default is /usr for
GNOME (other common prefixes: /usr/local, /opt/gnome). For KDE the
default is $KDEDIR and you probably do not need to use this option.
- --desktop NAME
- Use gnome-sys for the GNOME system menu (this is the default),
gnome-user for the GNOME user menu, gnome-redhat for the
AnotherLevel menu of Red Hat, kde-sys for the KDE system menu and
kde-user for the KDE user menu. It may be useful to use KDE or
GNOME as a flag with the --dir option.
- --type NAME
- If NAME is fvwm, a native FVWM menu will be built (this is the
default). If NAME is gtk, a FvwmGtk menu will be built.
- --fvwmgtk-alias NAME
- The name for then FvwmGtk module to use instead of default
FvwmGtk.
- --title NAME
- --title NAME
- Define the menu title of the top menu. Default is "Gnome System
- Define the menu title of the top menu. Default is "Gnome System
Menu" for gnome-sys, "Gnome User Menu" for gnome-user, "Gnome Red
Hat Menu" for gnome-redhat. For KDE the default is given by KDE
itself (or are similar to GNOME title).
itself (or are similar to GNOME title).
- --name NAME
- Define the menu name of the top menu. Default is the --desktop
name if you use one above.
- --merge-user-menu
- with the system menu (gnome-sys or kde-sys, based on the
--desktop option) and takes into account changes to the system menu
that it is now possible to do in the "user directory" (at least
with KDE version 2 menu editor).
- Icons Options
-
By default, fvwm-menu-desktop builds mini-icon free menus. To
enable mini-icons use one of the two following options.
- --enable-mini-icons
- This option enables mini-icons in the menu. The desktop hints
are used if it is possible (fvwm menu can't use .png icons). Use
the --mini-icons-path and the --png-icons-path to specify the good
paths. By using the --icon-* options below you can control
mini-icons in menus.
- --enable-tran-mini-icons
- This option applies only to fvwm menus and is useful to build
GNOME or KDE2 menus with mini-icons (and if you have XPM version of
the GNOME or KDE2 PNG icons). If this option is used any icon hint
foo.png is translated to path/foo.xpm where path is determined by
the --tran-mini-icons-path option (xpm icons are used as with the
previous option).
- --mini-icons-path DIR
- Define the directory of the .xpm mini-icons (relative to your
ImagePath). Default is "mini/".
- --png-icons-path DIR
- Define the directory of .png icons. Default is "" (i.e., in
your ImagePath). Useful only with FvwmGtk menus.
- --tran-mini-icons-path DIR
- Define the directory of the mini-icons for the
--enable-tran-mini-icons option. Default is mini/. It is preferable
to give the complete path so that fvwm-menu-desktop can check if
the translated mini-icons exists (and the "re" law will apply in a
good way).
- --check-mini-icons PATH
- Where PATH is a list of directories with ":" as a separator.
Then, fvwm-menu-desktop checks that the mini icons actually exist
in one of these directories (this check is not done for the
translated mini icons).
- Comments
-
To control mini-icons in menus you can use the 4 following
options which work similarly.
In these options law may be no, dh,
re or ow. no means "do not use mini-icon"
(this does not affect side pic). dh means "use only the
mini-icons GNOME/KDE hints". re means "use mini-icons
GNOME/KDE hints but if it is empty use the specified mini-icon".
ow means "override the mini-icons GNOME/KDE hints by the
specified mini-icon".
The path to the specified icons is given by the options
--mini-icons-path, --png-icons-path or --tran-mini-icons-path
(i.e., you just have to specify the icon, the path is computed).
For the sidepic you need to give the complete relative path from
your ImagePath.
Note that for the FVWM menu (without the
--enable-tran-mini-icons option) a .png icon hint is considered as
an empty hint, so for the system menu use no=dh and re=ow (you may
use .xpm icons in a user menu). If the --tran-mini-icons-path
option is set with a complete path, then if the .xpm icon which
corresponds to a .png icon hint does not exist, the icon hint is
considered as empty.
place, sidepic and color apply only with
fvwm menus. place is either left or up. left means
that the icon will be placed on the left of the label. up
means that the icon will be placed above the label. sidepic
needs to be nothing or an icon (for a picture in the bottom left of
the menu). color applies only if a sidepic icon is given and
it is the color for the region of the menu containing the sidepic
picture.
When you use an option below, if an icon, a law ...etc is not
specified (i.e., empty) the default is used (e.g, if you want, for
an FVWM menu, the icon folder.xpm on the left of the top title and
an FVWM menu, the icon folder.xpm on the left of the top title and
the sidepic fvwm2.xpm on the left of this menu use the following:
--icon-toptitle :ow::fvwm2.xpm).
--icon-toptitle :ow::fvwm2.xpm).
- --icon-toptitle
- --icon-toptitle
micon:law:place:sidepic:color
- Mini-icon for the top title and sidepic for the top menu.
- Mini-icon for the top title and sidepic for the top menu.
Default for fvwm menus: folder.xpm:no:left::. Default for fvwm
menus with --enable-tran-mini-icons:
gnome-logo-icon-transparent.xpm:no:left:. Default for gtk menus:
gnome-logo-icon-transparent.png:no.
- --icon-title
- --icon-title
micon:law:place:sidepic:color
- Use the option below for submenus. Default for fvwm menus:
folder.xpm:dh:left::. Default for fvwm menus with
--enable-tran-mini-icons: gnome-folder.xpm:dh:left::. Default for
gtk menus: gnome-folder.png:dh
- --icon-folder
-
micon:law:place:sidepic:color"
Mini-icons for pop up item. Default for fvwm menus:
folder.xpm:dh:left. Default for fvwm menus with
--enable-tran-mini-icons: gnome-folder.xpm:dh:left. Default for gtk
menus: gnome-folder.png:dh.
- --icon-app micon:law:place
- Mini-icon for applications item. Default for fvwm menus:
mini-x.xpm:dh. Default for fvwm menus with
--enable-tran-mini-icons: gnome-default.xpm:dh. Default for gtk
menus: gnome-default.png:dh
- --wm-icons
- This is a shortcut, which can be used if you plan to use icons
from the wm-icons package. Currently this is equavalent to:
--enable-mini-icons --mini-icons-path '' --icon-toptitle
--enable-mini-icons --mini-icons-path '' --icon-toptitle
menu/folder-open.xpm:ow --icon-title menu/folder-open.xpm:ow
menu/folder-open.xpm:ow --icon-title menu/folder-open.xpm:ow
--icon-folder menu/folder.xpm:ow --icon-app menu/utility.xpm:ow.
- Style Options
- --enable-style
mini-icon:icon:law:addstyle
- Build icons and mini-icons style commands for the applications
in the built menu.
- --style-tran
- Only useful with FvwmGtk GNOME or KDE2 menus. Make translation
as the enable-tran-mini-icon option but only for style (not for
mini-icons menus).
- --icon-style
mini-icon:icon:law:addstyle
- This option is similar to the options --icon-* above. Default
law is "dh" (there is no "no" law). Default mini-icon is mini-x.xpm
and default icon is x.xpm. You can add a style to all applications
with addstyle. If you use the enable-tran-mini-icon options the
translated (mini-)icons will be used (if translation is needed) and
the default icons are gnome-default.xpm. If you use the
--enable-tran-style options above the default icons are
gnome-default.xpm. The paths to mini-icons are the same as those
for the menus. The path to the icons is computed from the
mini-icons path: they are one directory up to the corresponding
mini-icons path (so the "defaults" are "" and this is consistent
with KDE1 and XPM icons builded by fvwm-themes-images).
- --icons-path DIR
- Not useful in a normal situation. Define the directory of the
icons. Default is one directory up from the path given by the
--mini-icons-path option. To set the path to "" you need to use
"inpath".
- --tran-icons-path DIR
- Similar to the above option.
- --check-icons PATH
- Where PATH is a list of directories with ":" as a separator.
Then, fvwm-menu-desktop checks that the icons actually exist in one
of these directories (this chack is not done for the translated
icons, use a full path in --tran-icons-path to do so).
- Other Options
- --submenu-name-prefix NAME
- May be useful in some unfortunate cases. By default the name of
a sub menu is of the form prefix-adirname-level where prefix is the
desktop flag, adirname is the name of the directory of the
description of the sub menus (not a complete path) and where level
is an integer equal to the number of "cd"s you need to do to go
from the root to the directory of the description of the sub menus.
You may change the prefix using the present option.
- --dir DIR
- Set the directory where fvwm-menu-desktop looks for a GNOME/KDE
menu description to DIR. The name of the menu is
'desktop-name' and the title is 'desktop' name where 'desktop' is
'desktop-name' and the title is 'desktop' name where 'desktop' is
either GNOME or KDE (if fvwm-menu-desktop can't find which desktop
is concerned, you can help with the --desktop option) and where
'name' is the name of the right directory of DIR (or a hint
of the desktop for the title). Note that if this option is not set,
of the desktop for the title). Note that if this option is not set,
the description directory is install-prefix/share/gnome/apps if
--desktop is gnome-sys, $HOME/.gnome/apps if --desktop is
gnome-user, $HOME/.gnome/apps-redhat if --desktop is gnome-redhat,
$KDEDIR/share/applink if --desktop is kde-sys and
$HOME/.kde/share/applnk if--desktop is sys-user.
- --destroy-type flag
- flag may be "y(es)", "no", "d(ynamic)". Default is "yes" with
FVWM menus, "no" with FvwmGtk menus and dynamic applies only with
FVWM menus. If "yes" is used the top menu will be destroyed
(DestroyMenu "name"), if "no" is used the top menu will not be
destroyed (useful for FvwmGtk menus called by another menu via
FvwmGtkSubMenu or to give the same name to two or more menus built
by fvwm-menu-desktop). If dynamic is used the menu will be
destroyed/recreated (may be useful with DynamicPopupAction). Note
that all the built sub menus are always destroyed.
- --xterm CMD
- Define complete X terminal command to run applications in it if
needed. Default is 'xterm -e'.
- --lang NAME
- Default is the value of $LANG. Useful if your language is not
GNOME/KDE compliant and you prefer a non-English compliant
language. Also useful if fvwm-menu-desktop gives bad result with
your language.
- --utf8
- Assume that the desktop entries used UTF-8 encoding. This is
the case with KDE version 2 and will be probably the case with
GNOME version 2. At the present time this option work only if you
have perl version 5.6 or better and if your language use latin-1
font. If one of these conditions is not satisfied, then this option
is equivalent to --lang en. For other languages/charsets use the
--uniconv option. The advantage of this option as compared to the
following option is that it is fast.
- --uniconv charset
- Use iconv (default) or uniconv to translate utf8 desktop
entries into an appropriate "charset". You can choose between one
of these tools with the --uniconv-exec option. iconv comes with
glibc >= 2.1.1 and uniconv comes with the utf8 editor yudit.
Type "iconv --list" or "man uniconv" for the list of supported
charsets. Of course you must also use the appropriate font using
the MenuStyle command. Also, $LANG (or --lang xx) must be
compatible with the charset. Note that with this option
fvwm-menu-desktop is very slow: you probably need to use the
--time-limit option and you should redirect the result into a file
and read this file in your FVWM configuration.
- --uniconv-exec exec
- Where exec is either iconv or uniconv. Allows to choose the
program which perform the UTF8 translation in the case of the
--uniconv option.
- --menu-style name
- By default the generated FVWM menus use the default MenuStyle
(i.e., the MenuStyle "*"). You can specify another MenuStyle name
using this option.
- --[no]check-app
- Either check or don't check that applications to execute are in
your path. Default is --check-app.
- --time-limit NUM
- Change the internal limit (15 seconds) for running this script
to NUM seconds, 0 means unlimited running. This limiting may be
useful to cut mistakes with the --dir or --install-path
options.
BUGS
This script needs more testing to see if all options
work well (note that the script does not check for inconsistency of
the given options). If Desktop menu hints are changed the script
may not work as expected. I have tested the script with
gnome-core-1.0.3, kde-1.1, kde-1.2 and kde-2.0.
AUTHORS
Olivier Chapuis <olivier.chapuis@free.fr>
Mikhael Goikhman <migo@homemail.com> - some changes
COPYING
The script is distributed by the same terms as FVWM
itself. See GNU General Public License for details.