fbmenugen - Menus do Fluxbox com ícones

Publicado por edps em 27/06/2012

[ Hits: 7.592 ]

Blog: https://edpsblog.wordpress.com/

 


fbmenugen - Menus do Fluxbox com ícones



Como o fluxbox-xdg-menu e o MenuMaker não mais funcionam em meu Debian, corri atrás de uma solução para incrementar o menu do meu FluxBox com ícones.

A solução encontrada chama-se fbmenugen, a qual tive conhecimento no AUR, pra variar:

Instalação

No Arch Linux, usem:

wget https://aur.archlinux.org/packages/fb/fbmenugen/fbmenugen.tar.gz
tar -zxf fbmenugen.tar.gz
$ cd fbmenugen
$ makepkg -si


Ou:

packer | yaourt -S fbmenugen

E nas demais distros:

wget -nv http://trizen.googlecode.com/files/fbmenugen-0.7.2.tar.gz
tar -zxf fbmenugen-0.7.2.tar.gz
$ chmod +x fbmenugen
$ sudo mv fbmenugen /usr/local/bin/
$ fbmenugen --help
$ fbmenugen -i
Abaixo, vejam o ".conf" modificado por mim, alterando terminal, editor de textos, navegador e desabilitando o Pidgin:

nano ~/.config/fbmenugen/configuration.pl
Mais abaixo, vemos a linha referente ao "kill -9", no Pidgin! (rsrsrs). Desabilite a linha:

{item => [$items{instant_messaging}, 'Instant messaging', 'system-users']},

Caso queiram opções extras no menu, digo, como sub-menus para as aplicações GTK, do Xfce, do Gnome etc, modifiquem (descomentem) uma das linhas abaixo:

#{cat =>  ['qt',      'QT Applications', 'qtlogo']},
#cat =>  ['gtk',      'GTK Applications',   'gnome-applications']},
#{cat =>  ['x_xfce',      'XFCE Applications',   'applications-other']},
#{cat =>  ['gnome',      'GNOME Applications',  'gnome-applications']},
#{cat =>  ['consoleonly',  'CLI Applications',   'applications-utilities']},

Eu preferi deixá-los desabilitados!

E se desejarem incluir alguma app ao menu, usem o seguinte modelo:

{raw =>  ' [exec] (TÍTULO_NO_MENU) {COMANDO A SER EXECUTADO} <CAMINHO_DO_ÍCONE>'},

Sobre os ícones, usem o locate para encontrá-los, exemplo:

locate nitrogen
/home/h4rd3r/.config/nitrogen
.
..
...
/usr/share/icons/AwOken/clear/128x128/apps/nitrogen.png
/usr/share/icons/AwOken/clear/24x24/apps/nitrogen.png
/usr/share/icons/AwOkenDark/clear/128x128/apps/nitrogen.png
/usr/share/icons/AwOkenDark/clear/24x24/apps/nitrogen.png
/usr/share/icons/AwOkenWhite/clear/128x128/apps/nitrogen.png
/usr/share/icons/AwOkenWhite/clear/24x24/apps/nitrogen.png
/usr/share/icons/hicolor/128x128/apps/nitrogen.png
/usr/share/icons/hicolor/16x16/apps/nitrogen.png
/usr/share/icons/hicolor/22x22/apps/nitrogen.png
/usr/share/icons/hicolor/32x32/apps/nitrogen.png
/usr/share/icons/hicolor/48x48/apps/nitrogen.png
...
..
.


Para o caso do Nitrogen, usei: /usr/share/icons/hicolor/32x32/apps/nitrogen.png

Abaixo, vejam meu arquivo ~/.config/fbmenugen/configuration.pl, já devidamente traduzido para pt_BR, com funções extras (wallpaper, executar etc), ordenação das seções do menu e substituição das apps, inicialmente incluídas como favoritas etc.

#!/usr/bin/perl

# fbmenugen config file
#
# SCHEMA supports the following keys: item, cat, config, exit, fluxbox, regenerate, raw, sep
#
# Posible values for each of this types are:
# For 'item': [COMMAND, NAME, ICON]
# For 'sep': undef - horizontal separator
# For 'cat': Any of the posible categories. 'cat => [CATEGORY, NAME, IMAGE]' - image is optional
# For 'raw': [COMMAND, NAME, ICON]
#   Example: {raw => ' [exec] (Geeqie) {geeqie -r } </usr/share/pixmaps/geeqie.png>'},

# NOTE:
#    * Keys and values are case sensitive. Keep all keys lowercase.
#    * ICON can be a either a direct path to a icon or a valid icon name
#    * Category names are case insensitive. (ex: X-XFCE and x_xfce are equivalent)

# For regular expressions
#    * is better to use qr/REGEX/ instead of 'REGEX'

my %items = (
             terminal          => 'terminator',
             editor            => "leafpad",
             file_manager      => 'thunar',
             web_browser       => 'opera',
             run_command       => 'gmrun',
             lock_command      => 'xscreensaver-command -lock',
            );

our $CONFIG = {

    # Menu title
    title => 'Debian Squeeze @ Fluxbox',

    # Example:   [ "$ENV{'HOME'}/.local/share/applications", '/my/path' ]
    desktop_files_paths => ['/usr/share/applications'],

    # File where to look for icon theme (default: ~/.gtkrc-2.0)
    gtk_rc_file => undef,

    # When 'Terminal=true'
    open_in_terminal => "$items{terminal} -e %s",

    # Editor command
    open_in_editor => "$items{editor}",

    # Ignore desktop files if their filenames match a regex
    ignore_file_name_re => undef,

    # Ignore applications if their names match a regex
    ignore_app_name_re => undef,

    # Ignore applications if their commands match a regex
    ignore_app_command_re => undef,

    # Ignore desktop files if their content match a regex
    ignore_file_content_re => undef,

    # Remove from every command something matched by a regex (/g)
    command_rem_re => undef,

    # Look in this directories first (when generating icons.db)
    dirs_first_to_look => [],

    # Look in this directories as a second icon theme (when generating icons.db)
    dirs_middle_to_look => [],

    # Look in this directories, as a backup plan (when generating icons.db)
    dirs_last_to_look => [],
};

our $SCHEMA = [

    #             COMMAND                    LABEL                ICON
    {item => [$items{editor},            'Editor de Textos',            'text-editor']},
    {item => [$items{file_manager},      'Gerenciador de Arquivos',      'file-manager']},
    {item => [$items{web_browser},       'Navegador Web',       'web-browser']},
    {item => [$items{terminal},          'Terminal',          'terminal']},
    #{item => [$items{instant_messaging}, 'Mensageiro Instantâneo', 'system-users']},
    {raw => ' [exec] (Trocar Wallpaper) {nitrogen /home/h4rd3r/Imagens}
</usr/share/icons/hicolor/32x32/apps/nitrogen.png>'},

    {sep => undef},

    #          NAME            LABEL                ICON
    {cat => ['utility',     'Acessórios', 'applications-utilities']},
    {cat => ['settings',    'Configurações',    'applications-accessories']},
    {cat => ['development', 'Desenvolvimento', 'applications-development']},
    {cat => ['education',   'Educativos',   'applications-science']},
    {cat => ['office',      'Escritório',      'applications-office']},
    {cat => ['graphics',    'Gráficos',    'applications-graphics']},
    {cat => ['game',        'Jogos',       'applications-games']},
    {cat => ['audiovideo',  'Multimídia',  'applications-multimedia']},
    {cat => ['network',     'Rede',     'applications-internet']},
    {cat => ['system',      'Sistema',      'applications-system']},

    #{cat => ['qt',          'QT Applications',    'qtlogo']},
    #{cat => ['gtk',         'GTK Applications',   'gnome-applications']},
    #{cat => ['x_xfce',      'XFCE Applications',  'applications-other']},
    #{cat => ['gnome',       'GNOME Applications', 'gnome-applications']},
    #{cat => ['consoleonly', 'CLI Applications',   'applications-utilities']},

    #                  LABEL               ICON
    {config     => ['Configurar Menu', 'preferences-desktop']},
    {fluxbox    => ['Fluxbox Menu',   'package_settings']},
    {sep        => undef},
    {item => [$items{run_command},       'Executar',       'system-run']},
    {regenerate => ['Recriar Menu',     'gtk-refresh']},
    {item => [$items{lock_command},      'Travar a tela',              'lock']},
    {sep        => undef},
    {exit       => ['Sair',           'exit']},
];

Sempre que fizerem modificações no arquivo ~/.config/fbmenugen/configuration.pl, não se esqueçam de executar:

fbmenugen -i

Ou, no menu FluxBox clicar na opção: Regenerate (Recriar Menu)

Ficou tão bom, que até penso em voltar ao FluxBox como WM padrão, já que todos vocês sabem que meu xodó é o OpenBox.

No link abaixo, vejam uma screenshot do meu FluxBox já devidamente configurado:

Referências

Imagens extras podem ser vistas nas duas dicas que postei em meu blog:
Outras dicas deste autor

Comprimindo arquivos PDF no Nautilus

Turbinando o sidux

Bashish - Personalizador de bash prompt

Nano - com Syntaxe Highlighting

Configuração de Servidor Debian Squeeze

Leitura recomendada

Introdução ao INIT

Dual boot Debian e Windows com Grub2

Como colocar ícone de vidro (glass icon) no Linux [Vídeo]

Compartilhando internet e pastas no Ubuntu 10.4

Compartilhamento Fácil com Linux Mint 20 MATE Edition

  

Comentários
[1] Comentário enviado por Zirou em 18/06/2015 - 20:51h

Fiz o processo todo, e necessário reiniciar ou e preciso executar algum comando.
Desculpa brother, sou novo em linux

[2] Comentário enviado por edps em 18/06/2015 - 21:22h


... Depende da distro, qual é o seu sistema?

Essa dica é antiga, para realmente funcionar você precisa instalar o módulo Perl: Linux::DesktopFiles

Que para as distros Debian-based (Debian, Ubuntu e toda a turma) pode ser visto em:

http://www.vivaolinux.com.br/artigo/Modulos-CPAN-no-Debian-e-distros-GNULinux-em-geral/?pagina=5


Ou manualmente (para QUALQUER DISTRO):

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


Ou via CPAN:

$ su -l
# perl -MCPAN -e shell
cpan[*]> install Bundle::CPAN
cpan[*]> install Bundle::CPANxxl
cpan[*]> reload cpan
cpan[*]> install Linux::DesktopFiles


Para o Slackware:

# sbopkg -i perl-linux-desktop-files


Abaixo segue o link do esquema do menu devidamente traduzido para o pt_BR:

http://pastebin.com/Px9RwgPL

[3] Comentário enviado por Zirou em 18/06/2015 - 23:11h

Entendi minha distribuição e Debian 8.1 Jessie



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts