Check the new version here

Popular channels

Debian Sid. Recuperar íconos menú Openbox.

Varios compañeros se mostraron interesados en tener íconos en el menú de Openbox.
Al respecto publiqué un post donde la distro utilizada era Debian Wheezy que traía a perl 5.14 de manera prederminada.

Link al post: http://www.taringa.net/posts/linux/16926764/Debian-7-Openbox-Pipe-menu-con-iconos.html

En las versiones Sid, Testing o en CrunchBang en las que la versión de perl cambia, yo tengo instalada en Sid la 5.20.0, se producen algunos problemas que impiden que se muestre el pipe menú de Openbox o que si se lo puede ver no suceda lo mismo con los íconos.

Pasemos a la manera en que propongo resolver la dificultad:


Procedimiento:

Estos son los pasos que hay que hay que seguir:

1) Dependencias: perl-linux-desktopfiles y perl-data-dump

Cómo descargar, compilar e instalar perl-linux-desktopfiles:

$ wget http://cpan.metacpan.org/authors/id/T/TR/TRIZEN/Linux-DesktopFiles-0.08.tar.gz
$ tar -zxvf Linux-DesktopFiles-0.08.tar.gz
$ cd Linux-DesktopFiles-0.08/
$ perl Build.PL
$ ./Build
$ ./Build test
$ sudo ./Build install

Cómo descargar e instalar perl-data-dump:

$ wget http://mirror.us.leaseweb.net/archlinux/community/os/i686/perl-data-dump-1.22-1-any.pkg.tar.xz
$ sudo tar -Jxvf perl-data-dump-1.22-1-any.pkg.tar.xz -C / --exclude=.PKGINFO --exclude=.MTREE

Como ven excluimos los paquetes ocultos que son útiles para Arch pero no para Debian y descomprimimos en / .
Luego es necesario ejecutar la siguiente orden para que obmenu-generator encuentre a Data:

$ perl -v (Para averiguar que versión de perl tienen instalada y usarla en la siguiente línea)
$ sudo cp -av /usr/share/perl5/vendor_perl/Data /usr/local/share/perl/5.20.0/ ( Reemplacen 5.20.0 por la versión obtenida en la orden anterior)

Si la orden falla repítanla luego de instalar obmenu-generator.


2) obmenu-generator

Cómo descargar, crear el deb e instalar obmenu-generator:

a) Aclaración necesaria: Al llegar en la lista de órdenes a la orden editor_de_texto DEBIAN/control y ejecutarla van a crear un archivo de texto vacío y dentro deben poner el siguiente contenido:

Package: obmenu-generator
Version: 1.0
Section: custom
Priority: optional
Architecture: all
Essential: no
Installed-Size: 1375
Maintainer: su_nombre
Description: Generador de Menus para OpenBox

Guardan el archivo en el mismo directorio donde fue creado y continúan con las órdenes que siguen en la lista

b) Lista de órdenes:

$ mkdir obmenu-generator
$ cd obmenu-generator/
$ mkdir DEBIAN
$ editor_de_texto DEBIAN/control
$ mkdir -p usr/bin/
$ wget -nv http://trizen.googlecode.com/files/obmenu-generator
$ chmod +x obmenu-generator
$ mv obmenu-generator usr/bin/
$ cd ..
$ dpkg-deb -b obmenu-generator
$ sudo dpkg -i obmenu-generator.deb
$ dpkg -l obmenu-generator

3) Editar el menú de OpenBox:

a) Crear una copia de seguridad del archivo /home/usario/.config/openbox/menu.xml

b) Abren menu.xml con un editor de texto, borran todo el contenido y ponen lo siguiente:







Dejen una línea en blanco al final del menu.xml, es por el EOF.
Fíjense cual es la ruta para execute , obmenu-generator puede haber sido instalado en /usr/bin o en /usr/local/bin.

3) En el terminal ejecuten la orden openbox --reconfigure y se fijan si el menú que aparece con click derecho sobre el desktop cambió.
También pueden ejecutar directamente la orden obmenu-generator o reiniciar la sesión.
Si algo sale mal basta con que reemplacen /home/usuario/.config/openbox/menu.xml con su copia de seguridad y reinicien la sesión.


Correccion de los problemas ocasionados por actualización y/o la versión de perl utilizada :

1) Primer problema. El menú directamente no se muestra o aparece un mensaje de error:

Cuando editamos el archivo menu.xml hemos puesto que se use el archivo /usr/share/openbox/menu.xsd como molde, pues bien este archivo simplemente puede desaparecer, si eso sucede:

Soluciones:

a) En /usr/share/doc/openbox existe el archivo comprimido menu.xsd.gz por tanto el procedimiento sería:

sudo cp /usr/share/doc/openbox/menu.xsd.gz /usr/share/openbox/
sudo gzip -d /usr/share/openbox/menu.xsd.gz
sudo rm /usr/share/openbox/menu.xsd.gz

Asegúrense de tener instalado gzip.

b) Protejan contra escritura al archivo ~/.config/openbox/menu.xml . Puede ser reescrito en actualizaciones

c) Si no consiguen el archivo menu.xsd me lo piden.


2) Segundo problema. Aunque se muestra el menú no hay íconos.

Ésto a mi me aconteció por una falta de correspondencia entre los argumentos declarados en el archivo /usr/local/share/perl/5.20.0/Linux/DesktopFiles.pm y la configuración determinada en el archivo(script) ~/.config/obmenu-generator/config.pl.

Aquí va una captura de la sección que importa de cada uno de estos archivos.

Captura de /usr/local/share/perl/5.20.0/Linux/DesktopFiles.pm


Captura de ~/.config/obmenu-generator/config.pl


El código de mi archivo ~/.config/obmenu-generator/config.pl:


#!/usr/bin/perl

# obmenu-generator - configuration file
# This file will be updated automatically every time when is needed.
# Any additional comment and/or indentation will be lost.

=for comment

|| FILTERING
    | skip_filename_re    : Skip a .desktop file if its name matches the regex.
                            Name is from the last slash to the end. (filename.desktop)
                            Example: qr/^(?:gimp|xterm)b/,    # skips 'gimp' and 'xterm'

    | skip_entry          : Skip a destkop file if the value from a given key matches the regex.
                            Example: [
                                {key => 'Name', re => qr/(?:about|terminal)/i},
                                {key => 'Exec', re => qr/^xterm/},
                            ],

    | substitutions       : Substitute, by using a regex, in the values of the desktop files.
                            Example: [
                                {key => 'Exec', re => qr/xterm/, value => 'sakura'},
                                {key => 'Exec', re => qr/\\/,  value => '\', global => 1},    # for wine apps
                            ],


|| ICON SETTINGS
    | icon_dirs_first     : When looking for icons, look in this directories first,
                            before looking in the directories of the current icon theme.
                            Example: [
                                "$ENV{HOME}/My icons",
                            ],

    | icon_dirs_second    : Look in this directories after looked in the directories of the
                            current icons theme. (Before /usr/share/pixmaps)
                            Example: [
                                "/usr/share/icons/gnome",
                            ],

    | icon_dirs_last      : Look in this directories at the very last, after looked in
                            /usr/share/pixmaps, /usr/share/icons/hicolor and some other
                            directories.
                            Example: [
                                "/usr/share/icons/Tango",
                            ],

    | strict_icon_dirs    : A true value will make the module to look only inside the directories
                            specified by you in either one of the above tree options.

    | gtk_rc_filename     : Absolute path to the GTK configuration file.
    | missing_image       : Use this icon for missing icons (default: gtk-missing-image)


|| KEYS
    | tooltip_keys        : Valid keys for the tooltip text.
                            Example: ['Comment[es]', 'Comment'],

    | name_keys           : Valid keys for the item names.
                            Example: ['Name[fr]', 'GenericName[fr]', 'Name'],   # french menu


|| PATHS
    | desktop_files_paths   : Absolute paths which contains .desktop files.
                              Example: [
                                '/usr/share/applications',
                                "$ENV{HOME}/.local/share/applications",
                                glob("$ENV{HOME}/.local/share/applications/wine/Programs/*"),
                              ],


|| NOTES
    | Regular expressions:
        * use qr/RE/ instead of 'RE'
        * use qr/RE/i for case insenstive mode

=cut

our $CONFIG = {
  "editor"              => "geany",
  "Linux::DesktopFiles" => {
                             desktop_files_paths     => ["/usr/share/applications"],
                             gtk_rc_filename         => "/home/cesarzeta/.gtkrc-2.0",
                             icon_dirs_first         => undef,
                             icon_dirs_last          => undef,
                             icon_dirs_second        => undef,
                             keep_unknown_categories => 1,
                             skip_entry              => undef,
                             skip_filename_re        => undef,
                             skip_svg_icons          => 1,
                             strict_icon_dirs        => undef,
                             substitutions           => undef,
                             terminalization_format  => "%s -e '%s'",
                             terminalize             => 1,
                             unknown_category_key    => "other",
                           },
  "missing_icon"        => "gtk-missing-image",
  "name_keys"           => ["Name"],
  "terminal"            => "lxterminal",
  "VERSION"             => 0.58,
}



Si tienen problemas y previa copia de seguridad del original reemplacen su config.pl con el que he subido modificando cuestiones lógicas como la ruta del usuario o el tipo de terminal utilizado. Si sigue sin mostrar los íconos es probable que falte agregar algo al config.pl, estoy a su disposición si quieren consultar algo.

Una captura de como se ve el menú en mi Debian Sid:


Creo que eso es todo. Como siempre se aceptan las sugerencias y correcciones pertinentes.
Muchas gracias por su atención.
0
0
0
4
0No comments yet