464 lines
14 KiB
Groff
464 lines
14 KiB
Groff
.TH "xdgmenumaker" 1 "09/16/2018" "George Vlahavas"
|
|
|
|
.SH NAME
|
|
.P
|
|
xdgmenumaker \- generate XDG menus
|
|
.SH SYNOPSIS
|
|
.P
|
|
\fBxdgmenumaker\fR [\fIOPTIONS\fR]
|
|
.SH DESCRIPTION
|
|
.P
|
|
\fBxdgmenumaker\fR is a command line tool, written in python, that
|
|
generates application menus using XDG information, by scanning
|
|
*.desktop files in all \fI$XDG_DATA_DIRS/applications\fR directories. All
|
|
applications are sorted according to the main categories as specified
|
|
by
|
|
freedesktop.org (http://standards.freedesktop.org/menu\-spec/latest/apa.html)
|
|
.P
|
|
The menu entries that are generated by \fBxdgmenumaker\fR are localised
|
|
according to the running user locale settings.
|
|
.P
|
|
\fBxdgmenumaker\fR currently supports generating menus for:
|
|
|
|
.RS
|
|
.IP \(bu 3
|
|
amiwm
|
|
.IP \(bu 3
|
|
blackbox
|
|
.IP \(bu 3
|
|
compizboxmenu
|
|
.IP \(bu 3
|
|
fluxbox
|
|
.IP \(bu 3
|
|
fvwm
|
|
.IP \(bu 3
|
|
icewm
|
|
.IP \(bu 3
|
|
jwm
|
|
.IP \(bu 3
|
|
pekwm
|
|
.IP \(bu 3
|
|
twm and compatible derivatives such as ctwm and vtwm
|
|
.IP \(bu 3
|
|
windowmaker
|
|
.RE
|
|
.IP
|
|
|
|
.P
|
|
\fBxdgmenumaker\fR requires \fIPython 2.7\fR or \fI3.x\fR, \fIpygtk\fR
|
|
(for Python 2.7) or \fIpygobject\fR and \fIgobject\-instrospection\fR
|
|
(for Python 3.x), as well as \fIpyxdg\fR. \fIPillow\fR is an optional
|
|
dependency (used by the \fB\-\-max\-icon\-size\fR option).
|
|
.SH OPTIONS
|
|
|
|
.TP
|
|
\fB\-f, \-\-format\fR
|
|
specify the output format to use. Valid options are \fIamiwm\fR, \fIblackbox\fR,
|
|
\fIcompizboxmenu\fR, \fIfluxbox\fR, \fIfvwm\fR, \fIicewm\fR, \fIjwm\fR, \fIpekwm\fR,
|
|
\fItwm\fR and \fIwindowmaker\fR.
|
|
Specifying the output format is mandatory.
|
|
|
|
.TP
|
|
\fB\-i, \-\-icons\fR
|
|
enable support for icons in the menus. This option does not have any
|
|
effect for \fIamiwm\fR, \fIblackbox\fR or \fIwindowmaker\fR menus.
|
|
|
|
.TP
|
|
\fB\-s, \-\-size\fR
|
|
set the preferred icon size in pixels. The default size is 16. You can
|
|
set this to any number, but it generally makes sense to use standard
|
|
icons sizes, like 16, 22, 24, 32 etc. Obviously this has an effect only
|
|
if the \fI\-\-icons\fR option is used. You have to be careful with the sizes
|
|
you use; some window managers don't support large icons in the menu.
|
|
|
|
.TP
|
|
\fB\-n, \-\-no\-submenu\fR
|
|
do not create a submenu. Instead, place the application categories menus
|
|
in the window manager's main menu. This option does not have any effect
|
|
for \fIwindowmaker\fR menus.
|
|
|
|
.TP
|
|
\fB\-\-max\-icon\-size\fR
|
|
restrict the maximum size for icons to the one specified with the
|
|
\fI\-\-size\fR option. Any icons that are larger than the specified size
|
|
will get discarded and will not be used.
|
|
|
|
.TP
|
|
\fB\-\-no\-svg\fR
|
|
do not use SVG icons even for the WMs that support it. Right now that
|
|
is only JWM.
|
|
|
|
.TP
|
|
\fB\-\-pekwm\-dynamic\fR
|
|
create dynamic menus for pekwm. If you want to have dynamically
|
|
generated menus for pekwm you have to use this option. Do not use it if
|
|
you want to generate static menus for pekwm. Only works with \fIpekwm\fR
|
|
of course.
|
|
|
|
.TP
|
|
\fB\-\-twm\-titles\fR
|
|
display menu titles in TWM menus. Naturally, only has an effect when
|
|
used with \fItwm\fR.
|
|
|
|
.SH GENERAL OPTIONS
|
|
|
|
.TP
|
|
\fB\-h\fR
|
|
Prints a usage message briefly summarizing all command\-line options
|
|
and exits.
|
|
|
|
.SH CONFIGURATION
|
|
.P
|
|
The terminal emulator to be used for menu entries that state that an
|
|
application must be launched inside a terminal, can be specified in a
|
|
\fI~/.config/xdgmenumaker.cfg\fR configuration file. Here's an example
|
|
specifying \fBrxvt\fR as the default terminal emulator:
|
|
|
|
.nf
|
|
[Terminal]
|
|
terminal = rxvt
|
|
.fi
|
|
|
|
|
|
.P
|
|
If no such file is present, or if no terminal is set within the file,
|
|
xdgmenumaker will default to the one specified in the debian
|
|
alternatives system on debian and debian\-like systems and to xterm in
|
|
any other case.
|
|
.P
|
|
Setting the path to a terminal emulator in an \fIXDGMENUMAKERTERM\fR
|
|
environment variable will override any other setting.
|
|
.SH USAGE
|
|
|
|
.TP
|
|
\fBAmiWM\fR
|
|
|
|
You can generate a menu for AmiWM, running xdgmenumaker like this:
|
|
|
|
$ xdgmenumaker \-f amiwm > ~/.amiwm\-xdgmenu
|
|
|
|
As AmiWM does not support including other files in its settings file,
|
|
you'll have to copy the contents of the created file in your
|
|
\fI~/.amiwmrc\fR. It should be possible to create a script that would
|
|
generate the main \fI~/.amiwmrc\fR file from different "source" files, but
|
|
I'll leave that as an exercise to the user.
|
|
|
|
.TP
|
|
\fBBlackbox\fR
|
|
|
|
To generate an application menu for Blackbox, you can run
|
|
\fBxdgmenumaker\fR like this:
|
|
|
|
$ xdgmenumaker \-f blackbox > ~/.blackbox/xdg_menu
|
|
|
|
and then change your main Blackbox menu to include this file as a
|
|
submenu. For example, add this somewhere in your \fI~/.blackbox/menu\fR file:
|
|
|
|
[include] (~/.blackbox/xdg_menu)
|
|
|
|
You can add the \fBxdgmenumaker\fR command as another item in your menu,
|
|
if you want to update it, without having to run the command manually
|
|
again:
|
|
|
|
[exec] (Update Blackbox Menu) {xdgmenumaker \-f blackbox > ~/.blackbox/xdg_menu}
|
|
|
|
.TP
|
|
\fBCompiz Boxmenu\fR
|
|
|
|
There are two ways to have an xdg menu in compiz\-boxmenu. The first one,
|
|
auto\-updates the menu, every time the menu is called. The second one,
|
|
updates the menu only when the user wants to.
|
|
|
|
\fBDynamic Menus\fR
|
|
|
|
Edit your \fI~/.config/compiz/boxmenu/menu.xml\fR file with your favorite text
|
|
editor and add a block of code like this inside the root \fI<menu>\fR element:
|
|
|
|
.nf
|
|
<item type="launcher">
|
|
<command mode2="pipe">xdgmenumaker -nif compizboxmenu</command>
|
|
<icon>applications-other</icon>
|
|
<name>Applications</name>
|
|
</item>
|
|
.fi
|
|
|
|
|
|
|
|
Alternatively, you can also run \fBcompiz\-boxmenu\-editor\fR and click the
|
|
dropdown for new menu files or menu items. Select launcher to create a
|
|
new launcher. Set the name of the launcher to whatever you want. This will
|
|
be the display name for the pipe menu. Then enter in:
|
|
|
|
xdgmenumaker \-nif compizboxmenu
|
|
|
|
for the command entry. Click the combobox
|
|
next to the command text box and switch that to "Pipe".
|
|
|
|
\fBStatic Menus\fR
|
|
|
|
Edit your \fI~/.config/compiz/boxmenu/menu.xml\fR file with your favorite text
|
|
editor and paste the output of:
|
|
|
|
$ xdgmenumaker \-if compizboxmenu
|
|
|
|
into \fI~/.config/compiz/boxmenu/menu.xml\fR.
|
|
|
|
Alternatively, you can also run \fBcompiz\-boxmenu\-editor\fR and click the
|
|
button that says \fIGenerate menu entries from a pipemenu script\fR. In the dialog
|
|
box that pops up, type in:
|
|
|
|
xdgmenumaker \-if compizboxmenu
|
|
|
|
to append the statically generated menu to any menu file you want.
|
|
|
|
.TP
|
|
\fBFluxbox\fR
|
|
|
|
To generate an application menu for Fluxbox, you can run
|
|
\fBxdgmenumaker\fR like this:
|
|
|
|
$ xdgmenumaker \-f fluxbox > ~/.fluxbox/xdg_menu
|
|
|
|
and then change your main Fluxbox menu to include this file as a
|
|
submenu. For example, add this somewhere in your \fI~/.fluxbox/menu\fR file:
|
|
|
|
[include] (~/.fluxbox/xdg_menu)
|
|
|
|
You can add the \fBxdgmenumaker\fR command as another item in your menu,
|
|
if you want to update it, without having to run the command manually
|
|
again:
|
|
|
|
[exec] (Update Fluxbox Menu) {xdgmenumaker \-f fluxbox > ~/.fluxbox/xdg_menu}
|
|
|
|
.TP
|
|
\fBFvwm\fR
|
|
|
|
To generate an application menu for Fvwm, you can run \fBxdgmenumaker\fR
|
|
like this:
|
|
|
|
$ xdgmenumaker \-f fvwm > ~/.fvwm/xdgmenu
|
|
|
|
and then edit your main Fvwm configuration file and add a line to read
|
|
that file:
|
|
|
|
read xdgmenu
|
|
|
|
and also include it somewhere in your main menu, for example:
|
|
|
|
.nf
|
|
AddToMenu MenuFvwmRoot "Root Menu" Title
|
|
+ "Applications" Popup xdgmenu
|
|
.fi
|
|
|
|
|
|
You could also put the menus for individual categories in your main menu
|
|
if you want. Just look in the ~/.fvwm/xdgmenu file for the category
|
|
names.
|
|
|
|
You can add the \fBxdgmenumaker\fR command as another item in your menu,
|
|
if you want to update it:
|
|
|
|
+ "Update Fvwm Menu" Exec xdgmenumaker \-f fvwm > ~/.fvwm/xdgmenu
|
|
|
|
and restart Fvwm to apply the changes.
|
|
|
|
\fINOTE:\fR If you're going to use the \fI\-\-icons\fR option to include icons
|
|
in your menus, you might consider using the \fI\-\-max\-icon\-size\fR
|
|
option too. Fvwm does not resize icons in its menu and having entries
|
|
with icons that are too big makes for funny looking menus.
|
|
|
|
.TP
|
|
\fBIceWM\fR
|
|
|
|
To generate an application menu for IceWM, run \fBxdgmenumaker\fR like this:
|
|
|
|
$ xdgmenumaker \-f icewm > ~/.icewm/appmenu
|
|
|
|
or if you want icons in your menu:
|
|
|
|
$ xdgmenumaker \-i \-f icewm > ~/.icewm/appmenu
|
|
|
|
and you can then edit your \fI~/.icewm/menu\fR file and add this line
|
|
somewhere:
|
|
|
|
include appmenu
|
|
|
|
You can add the \fBxdgmenumaker\fR command as another item in your menu, if
|
|
you want to update it, without having to run the command manually again:
|
|
|
|
prog "Update Menu" _none_ xdgmenumaker \-i \-f icewm > ~/.icewm/appmenu
|
|
|
|
\fINOTE:\fR If you don't request icons in the menu, or if an icon is not found
|
|
for a certain app, the icon name in the menu for that app is set to
|
|
"_none_". This doesn't actually set the icon for that app to none.
|
|
IceWM menu entries should always include an icon . So, by pointing it
|
|
to a non existing icon, you essentially set it to use no icon. If you
|
|
actually have an icewm icon named "_none_", that one will be used instead.
|
|
|
|
.TP
|
|
\fBJWM\fR
|
|
|
|
You can edit your \fI~/.jwmrc\fR file and add a line that generates the
|
|
applications menu, like this:
|
|
|
|
<Include>exec: xdgmenumaker \-n \-i \-f jwm</Include>
|
|
|
|
You need to put that line somewhere in the \fIRootMenu\fR section of the
|
|
\fI~/.jwmrc\fR file.
|
|
|
|
You can update the menu with:
|
|
|
|
$ jwm \-reload
|
|
|
|
Or you can restart JWM and the updated menu should appear. The menu will be
|
|
recreated every time JWM is started, restarted, or when the menu is
|
|
reloaded with the above command. You can even add a menu item that will
|
|
refresh the menu, like this:
|
|
|
|
<Program label="Refresh Menu">jwm \-reload</Program>
|
|
|
|
.TP
|
|
\fBpekwm\fR
|
|
|
|
There are two ways to have an XDG menu in pekwm. The first one,
|
|
auto\-updates the menu, every time the menu is called. The second one,
|
|
updates the menu only when the user wants to.
|
|
|
|
\fBDynamic Menus\fR
|
|
|
|
Edit your \fI~/.pekwm/menu\fR file with your favourite text editor and add
|
|
a line like the following one in the location that you want the
|
|
dynamically generated menu to appear:
|
|
|
|
.nf
|
|
Entry = "" { Actions = "Dynamic /usr/bin/xdgmenumaker -n -i -f pekwm --pekwm-dynamic" }
|
|
.fi
|
|
|
|
|
|
|
|
Restart pekwm and the generated menu should appear. The menu will be
|
|
automatically generated every time you access it, so it will always be
|
|
up to date. But since xdgmenumaker will run every time you access the
|
|
menu, the menu might not appear instantly, especially if you are using
|
|
an older PC.
|
|
|
|
\fBStatic Menus\fR
|
|
|
|
Run:
|
|
|
|
$ xdgmenumaker \-n \-i \-f pekwm > ~/.pekwm/appsmenu
|
|
|
|
to create a file with the menu contents. Then edit your
|
|
\fI~/.pekwm/menu\fR file to include that menu, by adding a line like the
|
|
following, in the location that you want the menu to appear:
|
|
|
|
INCLUDE = "/home/your_user_name/.pekwm/appsmenu"
|
|
|
|
Restart pekwm and the generated menu should appear. The menu is static
|
|
and if you add/remove any applications, you will have to run the
|
|
xdgmenumaker command and restart pekwm all over again to update it. The
|
|
advantage is that there will be no delay in displaying the menu.
|
|
|
|
.TP
|
|
\fBTWM and Derivatives\fR
|
|
|
|
You can create a menu for TWM running \fBxdgmenumaker\fR like this:
|
|
|
|
$ xdgmenumaker \-f twm > ~/.twm\-xdgmenu
|
|
|
|
If you're using the standard TWM, then unfortunately you'll have to
|
|
manually copy/paste the contents of the generated \fI~/.twm\-xdgmenu\fR file
|
|
into your \fI~/.twmrc\fR manually. You could then add something like this
|
|
to your main menu definition:
|
|
|
|
.nf
|
|
"Applications" f.menu "xdgmenu"
|
|
.fi
|
|
|
|
|
|
|
|
It could be possible to create a script that updates the menus inside
|
|
the main \fI~/.twmrc\fR settings file, but I'll leave that as an exercise
|
|
for the user.
|
|
|
|
If you're using CTWM or VTWM, instead of manually copy/pasting the menu
|
|
contents into your settings file, you could just add an include line
|
|
like this:
|
|
|
|
.nf
|
|
sinclude(`/home/george/.twm-xdgmenu')
|
|
.fi
|
|
|
|
|
|
|
|
\fINote:\fR In order for this to work with VTWM, \fBvtwm\fR has to be called
|
|
with the \fI\-m\fR switch.
|
|
|
|
.TP
|
|
\fBWindowMaker\fR
|
|
|
|
There are two ways to have an XDG menu in WindowMaker. The first one,
|
|
auto\-updates the menu, every time the menu is called. The second one,
|
|
updates the menu only when the user wants to.
|
|
|
|
\fBxdgmenumaker\fR uses utf8 encoding and localised strings by default
|
|
and has been tested only with wmaker\-crm>=0.95.1. No idea if utf8 works
|
|
properly with older WindowMaker versions.
|
|
|
|
\fBDynamic Menus\fR
|
|
|
|
Open the WindowMaker preferences tool. In the \fIApplication Menu Definition\fR
|
|
section, add a \fIGenerated Submenu\fR in your menu, by dragging it
|
|
in. Click on the menu item you just dragged in and in the preferences
|
|
window, in \fICommand\fR, add:
|
|
|
|
xdgmenumaker \-f windowmaker
|
|
|
|
Save and close the preferences window.
|
|
|
|
That command will be run every time you access that submenu, so the
|
|
application list in there will be always up to date. The downside is
|
|
that with running this command every time, especially if
|
|
you are on a very old PC, it might slow things down a bit. Even then it
|
|
is probably not anything considerable.
|
|
|
|
\fBStatic Menus\fR
|
|
|
|
Run:
|
|
|
|
$ xdgmenumaker \-f windowmaker > ~/GNUstep/Defaults/xdg_menu
|
|
|
|
Then open the WindowMaker preferences tool and in the
|
|
\fIApplication Menu Definition\fR section, add an
|
|
\fIExternal Submenu\fR by dragging it in your menu.
|
|
Click on the menu item you just dragged in and in the preferences
|
|
window, in \fIPath for Menu\fR, add the location of the menu file you just
|
|
created:
|
|
|
|
~/GNUstep/Defaults/xdg_menu
|
|
|
|
You can add the above mentioned \fBxdgmenumaker\fR command as another
|
|
item in your menu, if you want to update it, without having to run the
|
|
command manually again.
|
|
In the \fIApplication Menu Definition\fR section in the WindowMaker
|
|
preferences window, add a \fIRun Program\fR item in your menu by dragging it
|
|
your menu. Click on the menu item you just dragged in and in the
|
|
preferences window, in \fIProgram to Run\fR, add the \fBxdgmenumaker\fR command as
|
|
mentioned above.
|
|
|
|
The downside of this method, is that the menu contents will not be
|
|
updated when you install a new application or remove one. You will need
|
|
to run the xdgmenumaker command every time you want the menu to be
|
|
updated. The upside is that the menu will not be generated every time
|
|
you access the menu. This might be a better choice for (really) older
|
|
hardware.
|
|
|
|
.SH WEBSITE
|
|
.P
|
|
https://github.com/gapan/xdgmenumaker
|
|
.SH AUTHORS
|
|
.P
|
|
\fBxdgmenumaker\fR was written by George Vlahavas <vlahavas~at~gmail~dot~com>
|
|
|
|
.\" man code generated by txt2tags 2.6. (http://txt2tags.org)
|