Copyright
Copyright © José
Luis Lara Carrascal 2015-2023
Sumario
Introducción
Instalación
Opciones de línea de comandos
Configurar los menús de los administradores de ventanas
Paquetes precompilados
Enlaces
Introducción
Xdgmenumaker es
una utilidad de línea de comandos escrita en Python, que escanea los directorios de ubicación de los archivos desktop, establecidos con la variable de entorno XDG_DATA_DIRS, volcando en la salidad estándar un menú de aplicaciones categorizado, acorde a la especificación estándar de freedesktop.org, similar a los que utilizan entornos como XFce 4 o
paneles como LXPanel o Fbpanel.
La idea del programa consiste en proporcionar a los administradores de ventanas, Blackbox, Fluxbox, Fvwm, IceWM, JWM, Pekwm y Window Maker, un
submenú de aplicaciones acorde a dicha especificación
estándar, utilizando el formato nativo de menú
especifíco de cada administrador de ventanas. En este manual, iremos un poco más lejos de la idea inicial del
programa, para que dicho submenú se convierta de facto en un
menú raíz actualizable desde el propio menú del
administrador de ventanas. De momento, no se incluye la configuración para Fvwm, debido a problemas de redimensionado con el tamaño de los iconos.
Instalación
Dependencias
Herramientas de Compilación
Entre paréntesis la
versión con la que se ha instalado Xdgmenumaker
para la elaboración de este documento.
* Make - (4.4.1)
Intérpretes de Lenguaje de Programación
* Python - (3.11.4)
Módulos de Python
* Pillow - (9.5.0) - opcional
* PyGobject - (3.42.2)
* PyXDG - (0.28)
Aplicaciones
* Txt2tags - (2.6) [1]
* GNU ed - (1.19) [2]
[1] Requerido para poder crear la página de manual del programa.
[2] Requerido por los scripts de actualización del menú raíz de aplicaciones, proporcionados en el manual.
Descarga
xdgmenumaker-2.1.tar.gz | xdgmenumaker_error-UTF-8.diff
Extracción y Compilación
$ tar zxvf xdgmenumaker-2.1.tar.gz
$ cd xdgmenumaker-2.1
$ patch -Np1 -i ../xdgmenumaker_error-UTF-8.diff
$ make
|
Explicación de los
comandos
patch -Np1 -i ../xdgmenumaker_error-UTF-8.diff
: Aplicamos este parche del autor del programa, que soluciona un error
de generación del menú, producido por archivos desktop
con codificación de caracteres incorrecta. El mensaje de error
es el siguiente:
UnicodeDecodeError: 'utf8' codec can't decode byte 0xd1 in position 70: invalid continuation byte
|
Más información con la ubicación del parche original en este enlace.
Instalación
como root
$ su -c "make install PREFIX=/usr"
|
Estadísticas de Instalación de Xdgmenumaker
Estadísticas de Instalación de Xdgmenumaker |
Sistema de archivos |
XFS |
Archivos instalados |
14 |
|
Ocupación de espacio en disco |
140 KB |
Desinstalación
como root
1) MODO TRADICIONAL
En el directorio de compilación
ejecutamos el siguiente comando:
# su -c "make uninstall PREFIX=/usr" |
2) MODO MANUALINUX
El principal inconveniente del comando anterior es
que
tenemos que tener el directorio de compilación en nuestro
sistema para poder desinstalar el programa. En algunos casos esto
supone muchos megas de espacio en disco. Con el paquete de scripts que
pongo a continuación logramos evitar
el único inconveniente que tiene la compilación
de
programas, y es el tema de la desinstalación de los mismos
sin
la necesidad de tener obligatoriamente una copia de las fuentes
compiladas.
xdgmenumaker-2.1-scripts.tar.gz
$ su
# tar zxvf xdgmenumaker-2.1-scripts.tar.gz
# cd xdgmenumaker-2.1-scripts
# ./Desinstalar_xdgmenumaker-2.1 |
Copia de Seguridad
como root
Con este otro script creamos una copia de seguridad de los archivos
instalados, recreando la estructura de directorios de los mismos en un
directorio de copias de seguridad (copibin)
que se crea en el directorio /var. Cuando se haya creado el paquete comprimido de
los binarios podemos copiarlo como usuario a nuestro home
y borrar el que ha creado el script de respaldo, teniendo en cuenta que si queremos
volver a restaurar la copia, tendremos que volver a copiarlo al lugar
donde se ha creado.
$ su
# tar zxvf xdgmenumaker-2.1-scripts.tar.gz
# cd xdgmenumaker-2.1-scripts
# ./Respaldar_xdgmenumaker-2.1 |
Restaurar la Copia de Seguridad
como root
Y con este otro script (que se copia de forma automática cuando
creamos la copia de respaldo del programa) restauramos la copia de
seguridad como root cuando resulte necesario.
$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_xdgmenumaker-2.1
|
Opciones de línea de comandos
A
continuación pongo las opciones de línea de comandos del
programa con los comentarios traducidos al español.
[jose@localhost ~]$ xdgmenumaker -h
OPCIONES:
-f,
--format el formato de
salida a usar. Las opciones válidas son amiwm, blackbox, compizboxmenu,
fluxbox, fvwm, twm, icewm, jwm,
windowmaker y
pekwm
-i,
--icons activa el
soporte de iconos en los menús. No funciona con windowmaker o amiwm
--no-svg no
utiliza los iconos en formato SVG en los gestores de ventanas que lo
soporten
-s,
--size
el tamaño preferido de icono en píxeles (predefinido: 16)
-n, --no-submenu no crea un submenú. No funciona con windowmaker o amiwm
--max-icon-size restringe el tamaño de icono a un tamaño expecífico
--pekwm-dynamic genera menús dinámicos para pekwm
--twm-titles muestra los títulos del menú en los menú de twm
-h, --help muestra este mensaje de ayuda
Usted tiene que especificar el formato de salida usando el parámetro -f.
EJEMPLOS:
xdgmenumaker -f windowmaker
xdgmenumaker -i -f fluxbox |
Configurar los menús de los administradores de ventanas
1) Comprobar la variable de entorno XDG_DATA_DIRS
2) Configurar el menú de Fluxbox
3) Configurar el menú de IceWM
4) Configurar el menú de JWM
5) Configurar el menú de Pekwm
6) Configurar el menú de Window Maker
7) Configurar el menú de Blackbox
1) Comprobar la variable de entorno XDG_DATA_DIRS para saber los
directorios que tenemos configurados para crear el menú de
aplicaciones
Abrimos una ventana de terminal y ejecutamos el siguiente comando. Un ejemplo con openSUSE:
jose@linux-2frl:~> echo $XDG_DATA_DIRS
/usr/local/share:/usr/share |
En este caso, tenemos configurados los archivos desktop ubicados en /usr/share/applications y /usr/local/share/applications. Hacer siempre esto desde el administrador de ventanas, nunca desde entornos de escritorio como KDE o GNOME, que utilizan sus propias variables de entorno XDG_DATA_DIRS.
Para evitar problemas y teniendo en cuenta que cada distribución
es un mundo, lo mejor es establecer una variable de entorno XDG_DATA_DIRS personal, que añadiremos al archivo de configuración personal, ~/.bashrc.
Abrimos con un editor de texto, el archivo de configuración personal, ~/.bashrc, si no existe lo creamos, y añadimos lo siguiente:
export XDG_DATA_DIRS=/usr/share:/usr/local/share:$HOME/.local/share:$XDG_DATA_DIRS
|
Lo guardamos, cerramos la ventana de terminal y la volvemos a abrir,
ejecutando el mismo comando de comprobación que hemos realizado
antes.
2) Configurar el menú de Fluxbox
2a) Crear un submenú de aplicaciones con iconos actualizable desde el menú de aplicaciones de Fluxbox
Abrimos una ventana de terminal y ejecutamos lo siguiente:
$ xdgmenumaker -if fluxbox > ~/.fluxbox/menu_xdg |
Sistemas con las locales en ISO-8859-15
$ xdgmenumaker -if fluxbox | iconv -f UTF-8 -t ISO-8859-15 > ~/.fluxbox/menu_xdg
$ sed -i 's:): &:g' ~/.fluxbox/menu_xdg |
Abrimos con un editor de texto el archivo de configuración del menú de Fluxbox y añadimos lo que está en rojo al comienzo del mismo:
~/.fluxbox/menu
[begin] (Fluxbox-1.3.7)
[encoding] {ISO-8859-15}
[exec] (Eterm) {Eterm}
[exec] (firefox) {firefox}
[exec] (Ejecutar) {fbrun}
[include] (~/.fluxbox/menu_xdg)
[submenu] (Terminales)
|
Modificamos la entrada del menú Herramienta >> Regenerar Menú, para que actualice el menú proporcionado por Xdgmenumaker, en lugar del menú raíz que implica el borrado de la entrada añadida anteriormente.
[submenu] (Herramienta)
[exec] (fluxconf) {fluxconf}
[exec] (fluxkeys) {fluxkeys}
[exec] (fluxmenu) {fluxmenu}
[exec] (Fluxbox panel) {fbpanel}
[exec] (Nombre de Ventana) {xprop WM_CLASS|cut -d \" -f 2|xmessage -file - -center}
[exec] (Captura de Pantalla - JPG)
{import screenshot.jpg && display -resize 50% screenshot.jpg}
[exec] (Captura de Pantalla - PNG)
{import screenshot.png && display -resize 50% screenshot.png}
[exec] (Ejecutar) {fbrun}
[exec] (gtk-theme-switch) {switch}
[exec] (gtk2-theme-switch) {switch2}
[exec] (Regenerar Menú) { xdgmenumaker -if fluxbox > ~/.fluxbox/menu_xdg}
|
Aspecto visual del menú
2b) Crear
un menú raíz de aplicaciones con iconos actualizable
desde el menú de aplicaciones de Fluxbox
El submenú que genera de forma automática, lo
insertaremos en el menú raíz de aplicaciones del
administrador de ventanas, sobreescribiendo el comando de
regeneración del menú interno de Fluxbox, por un script personal, que ubicaremos en el directorio de configuración personal de Fluxbox en nuestro home.
Abrimos con un editor de texto el archivo de configuración del menú, y añadimos lo que está en rojo:
Marca de inicio del bloque del menú >> #XDGSTART
# Generated by fluxbox-generate_menu
#
# If you read this it means you want to edit this file manually, so here
# are some useful tips:
#
# - You can add your own menu-entries to ~/.fluxbox/usermenu
#
# - If you miss apps please let me know and I will add them for the next
# release.
#
# - The -r option prevents removing of empty menu entries and lines which
# makes things much more readable.
#
# - To prevent any other app from overwriting your menu
# you can change the menu name in ~/.fluxbox/init to:
# session.menuFile: ~/.fluxbox/my-menu
[begin] (Fluxbox-1.3.7)
[encoding] {ISO-8859-15}
[exec] (Eterm) {Eterm}
[exec] (firefox) {firefox}
[exec] (Ejecutar) {fbrun}
#XDGSTART
[submenu] (Terminales)
|
Marca de final del bloque del menú >> #XDGEND
[exec] (firestarter) {firestarter}
[exec] (top) {Eterm -e top}
[exec] (htop) {Eterm -e htop}
[end]
#XDGEND
[submenu] (Menú fluxbox)
[config] (Configurar)
[submenu] (Estilos del Sistema) {Escoge un Estilo...}
[stylesdir] (/usr/X11R7/share/fluxbox/styles)
[end]
[submenu] (Estilos del Usuario) {Escoge un Estilo...}
[stylesdir] (~/.fluxbox/styles)
[end]
[workspaces] (Lista de Escritorios)
[submenu] (Herramienta)
[exec] (fluxconf) {fluxconf}
[exec] (fluxkeys) {fluxkeys}
[exec] (fluxmenu) {fluxmenu}
[exec] (Fluxbox panel) {fbpanel}
[exec] (Nombre de Ventana) {xprop WM_CLASS|cut -d \" -f 2|xmessage -file - -center}
[exec] (Captura de Pantalla - JPG)
{import screenshot.jpg && display -resize 50% screenshot.jpg}
[exec] (Captura de Pantalla - PNG)
{import screenshot.png && display -resize 50% screenshot.png}
[exec] (Ejecutar) {fbrun}
[exec] (gtk-theme-switch) {switch}
[exec] (gtk2-theme-switch) {switch2}
[exec] (Regenerar Menú) {~/.fluxbox/xdgmenu.sh}
[end]
|
Abrimos un editor de texto y añadimos lo siguiente:
#!/bin/sh
xdgmenumaker -nif fluxbox > /tmp/menuxdg.txt
ed -s ~/.fluxbox/menu <<EOF
/#XDGSTART/+,/#XDGEND/-d
/#XDGSTART/ r /tmp/menuxdg.txt
w
q
EOF |
Sistemas con las locales en ISO-8859-15
#!/bin/sh
xdgmenumaker -nif fluxbox | iconv -f UTF-8 -t ISO-8859-15 > /tmp/menuxdg.txt
ed -s ~/.fluxbox/menu <<EOF
/#XDGSTART/+,/#XDGEND/-d
/#XDGSTART/ r /tmp/menuxdg.txt
w
q
EOF
sed -i 's:): &:g' ~/.fluxbox/menu |
Lo guardamos con el nombre xdgmenu.sh, le damos permisos de ejecución y lo copiamos al directorio de configuración personal de Fluxbox en nuestro home.
$ chmod +x xdgmenu.sh
$ cp xdgmenu.sh ~/.fluxbox/xdgmenu.sh |
Cuando seleccionemos en el menú de Fluxbox, Herramienta >> Regenerar Menú, las categorías proporcionadas por el menú predefinido de Fluxbox, serán sustituidas por las proporcionadas por Xdgmenumaker.
El uso de este método impide la edición gráfica
del menú con utilidades como Fluxmenu o Fluxbox Menu Editor,
ya que éstas borran las marcas de comienzo y final del bloque
que constituye el menú insertado. Tener en cuenta que Fluxbox tiene su propio script de generación automática del menú, por lo que el uso de Xdgmenumaker no resulta estrictamente necesario.
Aspecto visual del menú
3) Configurar el menú de IceWM
3a) Crear un submenú de aplicaciones con iconos actualizable desde el menú de aplicaciones de IceWM
Abrimos una ventana de terminal y ejecutamos lo siguiente:
$ xdgmenumaker -if icewm > ~/.icewm/menu_xdg |
Sistemas con las locales en ISO-8859-15
$ xdgmenumaker -if icewm | iconv -f UTF-8 -t ISO-8859-15 > ~/.icewm/menu_xdg |
Abrimos con un editor de texto el archivo de configuración del menú de IceWM y añadimos lo que está en rojo al comienzo del mismo:
~/.icewm/menu
include menu_xdg
menu Desarrollo folder {
prog Fluid - fluid
prog "Glade Interface Designer" - glade-2
prog IDLE - idle
prog Poedit - poedit
prog "Qt Linguist" - linguist
prog "Qt3 Designer" - designer-qt3
prog "SciTE Text Editor" - SciTE
}
# End of Desarrollo menu
menu Editores folder {
prog Avidemux - icerrun.py avidemux2
prog "Bloc de Notas" - notepad
|
Creamos otra entrada en el menú para actualizar dicho menú, cuando instalemos o borremos
aplicaciones de nuestro sistema, que soporten archivos desktop. Los
usuarios que no tengan las locales en UTF-8, utilizar el comando de ejemplo de arriba, para añadir al menú.
menu Recientes folder {
include /home/jose/.icewm/recent.menu
}
# End of Recientes menu
prog "Regenerar Menú XDG" - xdgmenumaker -if icewm > ~/.icewm/menu_xdg
separator
prog "IceWM Control Center" icerrun.py icecc
|
El menú de ejemplo ha sido creado con MenuMaker, tal como se explica en la sección Editar el Menú de IceWM, del manual ubicado en la web.
Aspecto visual del menú
3b) Crear
un menú raíz de aplicaciones con iconos actualizable
desde el menú de aplicaciones de IceWM
El submenú que genera de forma automática,
lo
insertaremos en el menú raíz de aplicaciones del
administrador de ventanas, sobreescribiendo el comando de
regeneración del menú XDG anterior, por un script
personal, que ubicaremos en el directorio de configuración
personal de IceWM en nuestro home.
Abrimos con un editor de texto el archivo de configuración del menú, y añadimos lo que está en rojo:
Marca de inicio del bloque del menú >> #XDGSTART
#XDGSTART
menu Desarrollo folder {
prog Fluid - fluid
prog "Glade Interface Designer" - glade-2
prog IDLE - idle
prog Poedit - poedit
prog "Qt Linguist" - linguist
prog "Qt3 Designer" - designer-qt3
prog "SciTE Text Editor" - SciTE
}
# End of Desarrollo menu
|
Marca de final del bloque del menú >> #XDGEND
menu Utilidades folder {
prog AllTray - alltray
prog "Archive Manager" - file-roller
prog "Bluetooth Analyzer" - bluetooth-analyzer
prog Dictionary - gnome-dictionary
prog "Figaro's Password Manager 2" - fpm2
prog gMUTOO - gmutoo
prog Graveman - graveman
prog KDocker - kdocker
prog "Nao File Manager" - nao
prog "Removable media catalog managment" - gwhere
prog "Take Screenshot" - gnome-screenshot
prog WbarConf - wbarconf
prog Xarchiver - xarchiver
prog "Xfce 4 Appfinder" - xfce4-appfinder
prog "Xfce 4 Print Dialog" - xfprint4
prog "Xfce 4 Print Manager" - xfprint4-manager
prog Xmag - xmag
}
# End of Utilidades menu
#XDGEND
menu Recientes folder {
include /home/jose/.icewm/recent.menu
}
# End of Recientes menu
separator
prog "Regenerar Menú" - /home/jose/.icewm/xdgmenu.sh
separator
prog "IceWM Control Center" icerrun.py icecc
|
Abrimos un editor de texto y añadimos lo siguiente:
#!/bin/sh
xdgmenumaker -nif icewm > /tmp/menuxdg.txt
ed -s ~/.icewm/menu <<EOF
/#XDGSTART/+,/#XDGEND/-d
/#XDGSTART/ r /tmp/menuxdg.txt
w
q
EOF
|
Sistemas con las locales en ISO-8859-15
#!/bin/sh
xdgmenumaker -nif icewm | iconv -f UTF-8 -t ISO-8859-15 > ~/tmp/menuxdg.txt
ed -s ~/.icewm/menu <<EOF
/#XDGSTART/+,/#XDGEND/-d
/#XDGSTART/ r /tmp/menuxdg.txt
w
q
EOF
|
Lo guardamos con el nombre xdgmenu.sh, le damos permisos de ejecución y lo copiamos al directorio de configuración personal de IceWM en nuestro home.
$ chmod +x xdgmenu.sh
$ cp xdgmenu.sh ~/.icewm/xdgmenu.sh |
Cuando seleccionemos en el menú de IceWM, Regenerar Menú, las categorías proporcionadas por el menú generado por MenuMaker, serán sustituidas por las proporcionadas por Xdgmenumaker.
Aspecto visual del menú
4) Configurar el menú de JWM
4a) Crear un submenú de aplicaciones con iconos actualizable desde el menú de aplicaciones de JWM
Abrimos una ventana de terminal y ejecutamos lo siguiente:
$ xdgmenumaker -s24 -if jwm > ~/.jwm/menu_xdg.xml |
Abrimos con un editor de texto el archivo de configuración del menú de JWM y añadimos lo que está en rojo al comienzo del mismo:
~/.jwm/menu.xml
<?xml version="1.0"?>
<JWM>
<!-- The root menu, if this is undefined you will not get a menu. -->
<!-- Additional RootMenu attributes: onroot, labeled, label -->
<RootMenu height="22">
<Program icon="mrxvt.png" label="Mrxvt">mrxvt</Program>
<Program icon="firefox.png" label="Firefox">firefox</Program>
<Include>$HOME/.jwm/menu_xdg.xml</Include>
|
Modificamos la entrada del menú de JWM que lo actualiza, para que incluya el comando correspondiente de creación del submenú. Cuando seleccionemos Recargar el menú, se ejecutará el script correspondiente y se volverá a cargar el menú de aplicaciones actualizado.
<Program icon="gtk-refresh.png" label="Recargar
el menú"> xdgmenumaker -s24 -if jwm > ~/.jwm/menu_xdg.xml ; jwm -reload</Program>
<Restart label="Reiniciar JWM" icon="gtk-refresh.png"/>
<Exit label="Salir de JWM" confirm="true" icon="gnome-logout.png"/>
<Separator/>
<Program
icon="gnome-shutdown.png" label="Apagar el Sistema">sudo
halt</Program>
<Program icon="gnome-shutdown.png" label="Reiniciar el
Sistema">sudo reboot</Program>
</Menu>
</RootMenu>
</JWM>
|
Aspecto visual del menú
4b) Crear
un menú raíz de aplicaciones con iconos actualizable
desde el menú de aplicaciones de JWM
El submenú que genera de forma automática,
lo
insertaremos en el menú raíz de aplicaciones del
administrador de ventanas, sobreescribiendo el comando de
regeneración del menú XDG anterior, por un script
personal, que ubicaremos en el directorio de configuración
personal de JWM en nuestro home.
Abrimos con un editor de texto el archivo de configuración del menú, y añadimos lo que está en rojo:
Marca de inicio del bloque del menú >> <!--XDGSTART-->
<?xml version="1.0"?>
<JWM>
<!-- The root menu, if this is undefined you will not get a menu. -->
<!-- Additional RootMenu attributes: onroot, labeled, label -->
<RootMenu height="22">
<Program icon="mrxvt.png" label="Mrxvt">mrxvt</Program>
<Program icon="firefox.png" label="Firefox">firefox</Program>
<!--XDGSTART-->
<!-- Addititional Menu attributes: height, labeled -->
<Menu icon="gnome-terminal.png" label="Terminales">
|
Marca de final del bloque del menú >> <!--XDGEND-->
</Menu>
<Menu icon="applications-office.png" label="Oficina">
<Program icon="epdfview.png"
label="ePDFView">epdfview</Program>
</Menu>
<!--XDGEND-->
<!--
<Desktops label="Escritorios"
icon="preferences-desktop-screensaver.png"/> -->
<Separator/>
<Program icon="gnome-run.png" label="Ejecutar">gmrun</Program>
<Separator/>
<Menu icon="preferences-system.png" label="Menú JWM">
<Menu icon="gnome-window-manager.png" label="Gestores de
ventanas">
<Exit
icon="gnome-window-manager.png" label="Iniciar
AfterStep">afterstep</Exit>
<Exit
icon="gnome-window-manager.png" label="Iniciar
Awesome">awesome</Exit>
<Exit
icon="gnome-window-manager.png" label="Iniciar
Fluxbox">startfluxbox</Exit>
<Exit
icon="gnome-window-manager.png" label="Iniciar
Fvwm">fvwm</Exit>
<Exit
icon="gnome-window-manager.png" label="Iniciar
Fvwm-Crystal">fvwm-crystal</Exit>
<Exit
icon="gnome-window-manager.png" label="Iniciar
E16">starte16</Exit>
<Exit
icon="gnome-window-manager.png" label="Iniciar
E17">enlightenment_start</Exit>
<Exit
icon="gnome-window-manager.png" label="Iniciar
IceWM">icewm-session</Exit>
<Exit
icon="gnome-window-manager.png" label="Iniciar
Openbox">openbox-session</Exit>
<Exit
icon="gnome-window-manager.png" label="Iniciar
Pekwm">pekwm</Exit>
<Exit
icon="gnome-window-manager.png" label="Iniciar Window
Maker">wmaker</Exit>
</Menu>
<Menu icon="preferences-desktop-theme.png" label="Temas">
<Program
icon="preferences-desktop-theme.png"
label="Azul">$HOME/.jwm/temas/azul.sh</Program>
<Program
icon="preferences-desktop-theme.png"
label="Fucsia">$HOME/.jwm/temas/fucsia.sh</Program>
<Program
icon="preferences-desktop-theme.png"
label="Original">$HOME/.jwm/temas/original.sh</Program>
<Program
icon="preferences-desktop-theme.png"
label="Oro">$HOME/.jwm/temas/oro.sh</Program>
<Program
icon="preferences-desktop-theme.png"
label="Verde">$HOME/.jwm/temas/verde.sh</Program>
</Menu>
<Program
icon="gtk-refresh.png" label="Recargar el menú">jwm
-reload</Program>
<Restart label="Reiniciar JWM" icon="gtk-refresh.png"/>
<Exit label="Salir de JWM" confirm="true" icon="gnome-logout.png"/>
<Separator/>
<Program
icon="gnome-shutdown.png" label="Apagar el Sistema">sudo
halt</Program>
<Program icon="gnome-shutdown.png" label="Reiniciar el
Sistema">sudo reboot</Program>
</Menu>
</RootMenu>
</JWM>
|
Abrimos un editor de texto y añadimos lo siguiente:
#!/bin/sh
xdgmenumaker -s24 -nif jwm > /tmp/menuxdg.xml
ed -s ~/.jwm/menu.xml <<EOF
/XDGSTART/+,/XDGEND/-d
/XDGSTART/ r /tmp/menuxdg.xml
w
q
EOF
sed -e '/<!--XDGSTART-->/{n;N;d}' \
-e '/<\/JWM>/{x;/Y/!{s/^/Y/;h;d;};x;}' -i ~/.jwm/menu.xml
|
Lo guardamos con el nombre xdgmenu.sh, le damos permisos de ejecución y lo copiamos al directorio de configuración personal de JWM en nuestro home.
$ chmod +x xdgmenu.sh
$ cp xdgmenu.sh ~/.jwm/xdgmenu.sh |
Modificamos la entrada del menú de JWM que lo actualiza, para que incluya el script que hemos creado. Cuando seleccionemos Recargar el menú, se ejecutará el script correspondiente y se volverá a cargar el menú de aplicaciones actualizado.
<Program
icon="preferences-desktop-theme.png"
label="Oro">$HOME/.jwm/temas/oro.sh</Program>
<Program
icon="preferences-desktop-theme.png"
label="Verde">$HOME/.jwm/temas/verde.sh</Program>
</Menu>
<Program
icon="gtk-refresh.png" label="Recargar el menú">$HOME/.jwm/xdgmenu.sh; jwm
-reload</Program>
<Restart label="Reiniciar JWM" icon="gtk-refresh.png"/>
<Exit label="Salir de JWM" confirm="true" icon="gnome-logout.png"/>
<Separator/>
<Program
icon="gnome-shutdown.png" label="Apagar el Sistema">sudo
halt</Program>
<Program icon="gnome-shutdown.png" label="Reiniciar el
Sistema">sudo reboot</Program>
</Menu>
</RootMenu>
</JWM>
|
Aspecto visual del menú
5) Configurar el menú de Pekwm
5a) Crear un submenú de aplicaciones con iconos actualizable desde el menú de aplicaciones de Pekwm
Abrimos una ventana de terminal y ejecutamos lo siguiente:
$ xdgmenumaker -if pekwm > ~/.pekwm/menu_xdg |
Sistemas con las locales en ISO-8859-15
$ xdgmenumaker -if pekwm | iconv -f UTF-8 -t ISO-8859-15 > ~/.pekwm/menu_xdg |
Abrimos con un editor de texto el archivo de configuración del menú de Pekwm y añadimos lo que está en rojo al comienzo del mismo, sustituir jose por el nombre de usuario de cada uno:
~/.pekwm/menu
# Menu config for pekwm
# Variables
INCLUDE = "vars"
RootMenu = "Pekwm" {
Entry = "Terminal" { Actions = "Exec $TERM &" }
Entry = "Ejecutar.." { Actions = "ShowCmdDialog" }
INCLUDE = "/home/jose/.pekwm/menu_xdg"
Separator {}
Submenu = "Editores" {
Entry = "vi" { Actions = "Exec $TERM -title vi -e vi &" }
Entry = "vim" { Actions = "Exec $TERM -title vim -e vim &" }
|
Creamos otra entrada en el menú para actualizar dicho menú, cuando instalemos o borremos
aplicaciones de nuestro sistema, que soporten archivos desktop. Haciendo clic en la entrada Pekwm >> Regenerar menú XDG y posteriormente en Recargar, se actualizarán las entradas del submenú de aplicaciones.
Submenu = "Pekwm" {
Submenu = "Temas" {
Entry {
Actions = "Dynamic /usr/local/share/pekwm/scripts/pekwm_themeset.sh
/usr/local/share/pekwm/themes" }
Entry {
Actions = "Dynamic /usr/local/share/pekwm/scripts/pekwm_themeset.sh
~/.pekwm/themes" }
}
Entry = "Regenerar menú XDG" { Actions = "Exec xdgmenumaker -if pekwm > ~/.pekwm/menu_xdg & " }
Entry = "Recargar" { Actions = "Reload" }
Entry = "Reiniciar" { Actions = "Restart" }
Entry = "Salir" { Actions = "Exit" }
Submenu = "Salir a" {
Entry = "Xterm" { Actions = "RestartOther xterm" }
Entry = "TWM" { Actions = "RestartOther twm" }
}
}
}
|
Aspecto visual del menú
5b) Crear
un menú raíz de aplicaciones con iconos actualizable
desde el menú de aplicaciones de Pekwm
El submenú que genera de forma automática,
lo
insertaremos en el menú raíz de aplicaciones del
administrador de ventanas, sobreescribiendo el comando de
regeneración del menú XDG anterior, por un script
personal, que ubicaremos en el directorio de configuración
personal de Pekwm en nuestro home.
Abrimos con un editor de texto el archivo de configuración del menú, y añadimos lo que está en rojo:
Marca de inicio del bloque del menú >> #XDGSTART
# Menu config for pekwm
# Variables
INCLUDE = "vars"
RootMenu = "Pekwm" {
Entry = "Terminal" { Actions = "Exec $TERM &" }
Entry = "Ejecutar.." { Actions = "ShowCmdDialog" }
Separator {}
#XDGSTART
Submenu = "Editores" {
Entry = "vi" { Actions = "Exec $TERM -title vi -e vi &" }
Entry = "vim" { Actions = "Exec $TERM -title vim -e vim &" }
Entry = "gvim" { Actions = "Exec gvim &" }
Entry = "Emacs" { Actions = "Exec emacs &" }
Entry = "Emacs Terminal" { Actions = "Exec $TERM -title emacs -e emacs -nw &" }
Entry = "Kate" { Actions = "Exec kate &" }
|
Marca de final del bloque del menú >> #XDGEND
Submenu = "Desarrollo" {
Entry = "Anjuta" { Actions = "Exec anjuta &" }
Entry = "Eclipse" { Actions = "Exec eclipse &" }
Entry = "KDevelop" { Actions = "Exec kdevelop &" }
}
#XDGEND
Separator {}
Submenu = "Ir a" {
SubMenu = "Escritorio" {
# Create goto menu once per pekwm config reload. The fast way that
# will work for most if not all users.
|
Abrimos un editor de texto y añadimos lo siguiente:
#!/bin/sh
xdgmenumaker -nif pekwm > /tmp/menuxdg.txt
ed -s ~/.pekwm/menu <<EOF
/#XDGSTART/+,/#XDGEND/-d
/#XDGSTART/ r /tmp/menuxdg.txt
w
q
EOF
|
Sistemas con las locales en ISO-8859-15
#!/bin/sh
xdgmenumaker -nif pekwm | iconv -f UTF-8 -t ISO-8859-15 > /tmp/menuxdg.txt
ed -s ~/.pekwm/menu <<EOF
/#XDGSTART/+,/#XDGEND/-d
/#XDGSTART/ r /tmp/menuxdg.txt
w
q
EOF
|
Lo guardamos con el nombre xdgmenu.sh, le damos permisos de ejecución y lo copiamos al directorio de configuración personal de Pekwm en nuestro home.
$ chmod +x xdgmenu.sh
$ cp xdgmenu.sh ~/.pekwm/xdgmenu.sh |
Creamos otra entrada en el menú para actualizar el menú, cuando instalemos o borremos
aplicaciones de nuestro sistema, que soporten archivos desktop. Sustituir jose por el nombre de usuario de cada uno.
Submenu = "Pekwm" {
Submenu = "Temas" {
Entry {
Actions = "Dynamic /usr/local/share/pekwm/scripts/pekwm_themeset.sh
/usr/local/share/pekwm/themes" }
Entry {
Actions = "Dynamic /usr/local/share/pekwm/scripts/pekwm_themeset.sh
~/.pekwm/themes" }
}
Entry = "Regenerar menú" { Actions = "Exec /home/jose/.pekwm/xdgmenu.sh & " }
Entry = "Recargar" { Actions = "Reload" }
Entry = "Reiniciar" { Actions = "Restart" }
Entry = "Salir" { Actions = "Exit" }
Submenu = "Salir a" {
Entry = "Xterm" { Actions = "RestartOther xterm" }
Entry = "TWM" { Actions = "RestartOther twm" }
}
}
}
|
Haciendo clic en la entrada Pekwm >> Regenerar menú y posteriormente en Recargar, se actualizarán las entradas del menú de aplicaciones insertado.
Aspecto visual del menú
6) Configurar el menú de Window Maker
6a) Crear un submenú de aplicaciones actualizable desde el menú de aplicaciones de Window Maker
Abrimos una ventana de terminal y ejecutamos lo siguiente:
$ xdgmenumaker -f windowmaker > ~/GNUstep/Defaults/menu_xdg |
Abrimos con un editor de texto el archivo de configuración del menú de Window Maker y sustituimos el submenú de aplicaciones original de Window Maker por el proporcionado por Xdgmenumaker.
~/GNUstep/Defaults/WMRootMenu
(
"Window Maker",
(
("Aplicaciones", OPEN_MENU, "~/GNUstep/Defaults/menu_xdg"),
(Ejecutar..., EXEC, "%A(Ejecutar, Introduzca un comando:)"),
(
Apariencia,
(
Temas,
OPEN_MENU,
"-noext
/usr/local/share/WindowMaker/Themes
$HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle"
),
|
Creamos otra entrada en el menú para actualizar dicho menú, cuando instalemos o borremos
aplicaciones de nuestro sistema, que soporten archivos desktop.
),
("Configurar Window Maker", EXEC, WPrefs),
("Panel de información", INFO_PANEL),
("Regenerar el menú", EXEC, xdgmenumaker -f windowmaker > ~/GNUstep/Defaults/menu_xdg ),
("Reiniciar Window Maker", RESTART),
(
|
Aspecto visual del menú
6b) Crear
un menú raíz de aplicaciones actualizable
desde el menú de aplicaciones de Window Maker
Al utilizar Xdgmenumaker, el formato de menú antiguo de Window Maker, no podemos insertar el submenú en el menú raíz de aplicaciones de Window Maker.
7) Configurar el menú de Blackbox
7a) Crear un submenú de aplicaciones actualizable desde el menú de aplicaciones de Blackbox
Abrimos una ventana de terminal y ejecutamos lo siguiente:
$ mkdir -p ~/.blackbox
$ xdgmenumaker -f blackbox > ~/.blackbox/menu_xdg |
Sistemas con las locales en ISO-8859-15
$ mkdir -p ~/.blackbox
$ xdgmenumaker -f blackbox | iconv -f UTF-8 -t ISO-8859-15 > ~/.blackbox/menu_xdg |
Abrimos con un editor de texto el archivo de configuración del menú de Blackbox y añadimos lo que está en rojo al comienzo del mismo:
[begin] (Blackbox)
[exec] (xterm) {xterm -ls}
[exec] (rxvt) {rxvt}
[include] (~/.blackbox/menu_xdg)
[exec] (StarOffice) {soffice}
[exec] (XEmacs) {xemacs}
[exec] (Acroread) {acroread}
|
Creamos otra entrada en el menú para actualizar dicho menú, cuando instalemos o borremos
aplicaciones de nuestro sistema, que soporten archivos desktop. Los
usuarios que no tengan las locales en UTF-8, utilizar el comando de ejemplo de arriba, para añadir al menú.
[workspaces] (Workspace List)
[config] (Configuration)
[reconfig] (Reconfigure)
[exec] (Regenerar Menú XDG) {~/.blackbox/xdgmenu.sh}
[restart] (Restart)
[submenu] (Others) {Other Window Managers}
|
Aspecto visual del menú
7b) Crear
un menú raíz de aplicaciones actualizable
desde el menú de aplicaciones de Blackbox
El submenú que genera de forma
automática, lo
insertaremos en el menú raíz de aplicaciones del
administrador de ventanas, sobreescribiendo el comando de
regeneración del menú XDG anterior, por un script
personal, que ubicaremos en el directorio de configuración
personal de Blackbox en nuestro home.
Abrimos con un editor de texto el archivo de configuración del menú, y añadimos lo que está en rojo:
Marca de inicio del bloque del menú >> #XDGSTART
[begin] (Blackbox)
[exec] (xterm) {xterm -ls}
[exec] (rxvt) {rxvt}
#XDGSTART
[exec] (StarOffice) {soffice}
[exec] (XEmacs) {xemacs}
[exec] (Acroread) {acroread}
|
Marca de final del bloque del menú >> #XDGEND
[submenu] (X Utilities)
[exec] (Xfontsel) {xfontsel}
[exec] (Xman) {xman}
[exec] (Xcalc) {xcalc}
[exec] (Xload) {xload}
[end]
#XDGEND
[submenu] (Styles) {Choose a style...}
[stylesdir] (/usr/X11R7/share/blackbox/styles)
[end]
[workspaces] (Workspace List)
[config] (Configuration)
|
Abrimos un editor de texto y añadimos lo siguiente:
#!/bin/sh
xdgmenumaker -nf blackbox > /tmp/menuxdg.txt
ed -s ~/.blackbox/menu <<EOF
/#XDGSTART/+,/#XDGEND/-d
/#XDGSTART/ r /tmp/menuxdg.txt
w
q
EOF
|
Sistemas con las locales en ISO-8859-15
#!/bin/sh
xdgmenumaker -nf blackbox | iconv -f UTF-8 -t ISO-8859-15 > /tmp/menuxdg.txt
ed -s ~/.blackbox/menu <<EOF
/#XDGSTART/+,/#XDGEND/-d
/#XDGSTART/ r /tmp/menuxdg.txt
w
q
EOF
|
Lo guardamos con el nombre xdgmenu.sh, le damos permisos de ejecución y lo copiamos al directorio de configuración personal de Blackbox en nuestro home.
$ chmod +x xdgmenu.sh
$ cp xdgmenu.sh ~/.blackbox/xdgmenu.sh |
Creamos otra entrada en el menú para actualizar dicho menú, cuando instalemos o borremos
aplicaciones de nuestro sistema, que soporten archivos desktop. Los
usuarios que no tengan las locales en UTF-8, utilizar el comando de ejemplo de arriba, para añadir al menú.
[workspaces] (Workspace List)
[config] (Configuration)
[reconfig] (Reconfigure)
[exec] (Regenerar Menú) {~/.blackbox/xdgmenu.sh}
[restart] (Restart)
[submenu] (Others) {Other Window Managers}
|
Aspecto visual del menú
Enlaces
https://github.com/gapan/xdgmenumaker >> Enlace al proyecto del programa en GitHub.
|