How-To :: obmenu-generator no Slackware (update)


Aqui veremos como instalar e configurar o obmenu-generator no Slackware.

E já que venho usando mais o Slackware que o Debian, nada melhor que deixá-lo igual a outra distro e para isso além do set básico de pacotes do OpenBox, existem algumas firulas extras como o excelente obmenu-generator.

obmenu-generator

Com o GIT baixe a última versão do obmenu-generator e mova-o para /usr/bin ou /usr/local/bin:

$ git clone https://github.com/trizen/obmenu-generator
$ chmod +x obmenu-generator/obmenu-generator
$ sudo mv obmenu-generator/obmenu-generator /usr/local/bin/

Copie a template do script para a pasta ~/.config/obmenu-generator:

$ mkdir -pv ~/.config/obmenu-generator/
$ cp -av obmenu-generator/schema.pl ~/.config/obmenu-generator/

dependências

Com o sbopkg, instale os pacotes perl-data-dump e o pacote de minha autoria perl-linux-desktop-files

$ sudo sbopkg -i 'perl-data-dump perl-linux-desktop-files'

Este slideshow necessita de JavaScript.

Pronto! agora resta configurar o obmenu-generator.

Configuração

Modifique o aquivo ~/.config/openbox/menu.xml deixando-o assim:

<?xml version="1.0" encoding="utf-8"?>
<openbox_menu xmlns="http://openbox.org/"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://openbox.org/">
    <menu id="root-menu" label="obmenu-generator" execute="/usr/bin/perl /usr/local/bin/obmenu-generator -i" />
</openbox_menu>

* observe o caminho do script que aqui salvei em /usr/local/bin.

A partir desse ponto bastaria isto para ter seu menu com ícones no OpenBox:

$ openbox --reconfigure
$ obmenu-generator

Mas se quiser deixá-lo em pt_BR, usem as minha configs (que deverão ser salvas em ~/.config/obmenu-generator):

config.pl

#!/usr/bin/perl

# obmenu-generator - configuration file
# This file will be updated automatically.
# 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 icon 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 three options.

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


|| KEYS
    | 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"              => "leafpad",
  "Linux::DesktopFiles" => {
                             desktop_files_paths     => ["/usr/share/applications"],
                             gtk_rc_filename         => "/home/edps/.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"            => "terminator",
  "VERSION"             => 0.63,
}

schema.pl

#!/usr/bin/perl

# obmenu-generator - schema file

=for comment

    item:      add an item inside the menu               {item => ["command", "label", "icon"]},
    cat:       add a category inside the menu             {cat => ["name", "label", "icon"]},
    sep:       horizontal line separator                  {sep => undef}, {sep => "label"},
    pipe:      a pipe menu entry                         {pipe => ["command", "label", "icon"]},
    raw:       any valid Openbox XML string               {raw => q(xml string)},
    begin_cat: begin of a category                  {begin_cat => ["name", "icon"]},
    end_cat:   end of a category                      {end_cat => undef},
    obgenmenu: generic menu settings                {obgenmenu => ["label", "icon"]},
    exit:      default "Exit" action                     {exit => ["label", "icon"]},

=cut

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

require "$ENV{HOME}/.config/obmenu-generator/config.pl";

## Text editor
my $editor = $CONFIG->{editor};

our $SCHEMA = [
    #          COMMAND                 LABEL                ICON
    {item => ['leafpad',             'Editor de Texto',          'leafpad']},
    {item => ['thunar',        'Gerenciador de Arquivos',      'file-manager']},
    {item => ['opera',    'Navegador Web',       'web-browser']},
    {item => ['terminator',             'Terminal',          'terminal']},
    {sep => undef},
    {item => ['gmrun',             'Executar comando...',       'system-run']},
    {sep => undef},
    {sep => 'Aplicativos'},

    #          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 => ['network',     'Internet',     'applications-internet']},
    #{cat => ['game',        'Jogos',       'applications-games']},
    {cat => ['audiovideo',  'Multimídia',  'applications-multimedia']},
    #{cat => ['other',       'Outros',       'applications-other']},
    {cat => ['system',      'Sistema',      'applications-system']},

    #            COMMAND     LABEL        ICON
    {sep => undef},
    {pipe => ['obbrowser', 'Pasta Pessoal', 'drive-harddisk']},

    ## Generic advanced settings
    #{sep       => undef},
    #{obgenmenu => ['Openbox Settings', 'applications-engineering']},
    #{sep       => undef},

    ## Custom advanced settings.
    {sep => undef},
    {begin_cat => ['Configurações Avançadas', 'gnome-settings']},

        # obmenu-generator category.
        {begin_cat => ['Obmenu-Generator', 'menu-editor']},
            {item      => ["$editor ~/.config/obmenu-generator/schema.pl", 'Menu Schema', $editor]},
            {item      => ["$editor ~/.config/obmenu-generator/config.pl", 'Menu Config', $editor]},

            {sep  => undef},
            {item => ['obmenu-generator -p',    'Generate a pipe menu',              'menu-editor']},
            {item => ['obmenu-generator -s',    'Generate a static menu',            'menu-editor']},
            {item => ['obmenu-generator -p -i', 'Generate a pipe menu with icons',   'menu-editor']},
            {item => ['obmenu-generator -s -i', 'Generate a static menu with icons', 'menu-editor']},
            {sep  => undef},

            {item    => ['obmenu-generator -d', 'Refresh Icon Set', 'gtk-refresh']},
        {end_cat => undef},

        # Openbox category.
        {begin_cat => ['Openbox', 'openbox']},
            {item      => ["$editor ~/.config/openbox/autostart", 'Editar autostart',    $editor]},
            {item      => ["$editor ~/.config/openbox/menu.xml",  'Editar menu.xml',         $editor]},
            {item      => ["$editor ~/.config/openbox/rc.xml",    'Editar rc.xml',           $editor]},
            {item      => ['openbox --reconfigure',               'Reconfigurar Openbox', 'openbox']},
        {end_cat => undef},

        # Configuration files.
        {item      => ["lxappearance",              'Alterar Aparência',    'preferences-desktop-theme']},
        {item      => ["$editor ~/.conkyrc",              'Editar conkyrc',    $editor]},
        {item      => ["$editor ~/.config/tint2/tint2rc", 'Editar tint2rc', $editor]},
        {item      => ['obconf',               'OpenBox Configuration Manager', 'obconf']},
        {item      => ['nitrogen ~/Imagens',               'Trocar Wallpaper', 'nitrogen']},

    {end_cat => undef},
    {sep => undef},

    ## The xscreensaver lock command.
    {item => ['xscreensaver-command -lock', 'Bloquear tela', 'lock']},

    # Replace the standard Openbox's action "Exit" with "obsession" script.
    #{exit => ['Exit', 'exit']},
    {item => ['sudo cb-exit', 'Sair']},
]

Com isso teremos o obmenu-generator no OpenBox sem qualquer gambiarra!

Para incrementá-lo ainda mais, configure e instale o obbrowser:

HOW-TO :: OBBROWSER NO SLACKWARE

Futuro?

Através de conversas via email com Daniel Șuteu, a.k.a Trizen, criador do obmenu-generator e mantenedor do módulo CPAN Linux::DesktopFiles acerca da minha pergunta sobre a dependência do módulo CPAN Module::Build, o mesmo garantiu (e confirmo pelo empacotamento de meu SlackBuild) que até que a versão 5.22 do Perl seja lançada o Module::Build não precisa entrar como dependência do SlackBuild que criei, porém após o lançamento dessa nova versão do Perl o Module::Build não fará mais parte da biblioteca padrão do Perl, nesse caso modificarei o SlackBuild quando chegar a hora.

Mas me antecipando, já criei um SlackBuild para o Module::Build e todas as suas dependências, os quais deverão ser lançados no dia 26/04:

List of submissions approved for the next update on SlackBuilds

Caso não goste do obmenu-generator você poderá removê-lo facilmente via slackpkg, ficando somente o script e as confs para remover manualmente.

Sobre o Debian, comunico que realizei com sucesso o empacotamento de todas as dependências para fazer com que o obmenu-generator, o obbrowser e o clyrics funcionem sem depender da instalação de módulos via CPAN ou manualmente.

HOW-TO :: CRIAÇÃO DE PACOTES .DEB A PARTIR DE MÓDULOS CPAN

IntÉ!

Anúncios
How-To :: obmenu-generator no Slackware (update)

4 comentários sobre “How-To :: obmenu-generator no Slackware (update)

    1. Conheci o Slackware antes do Kurumin > Debian, assim que passei a usar o Debian não larguei mais, hoje estou de volta ao Slack mas mantenho o(s) Debian(s) aqui, no futuro não sei, porque essa coisa de systemd e a série de exigências para instalar pacotes por causa dele não me agrada, o que pode acontecer no futuro é passar a usar o Devuan, um Debian sem systemd (quando pronto).

      O Jessie que tenho aqui tem alguns traços de systemd, mas o init é o sysvinit, logo assim que o instalei removi o systemd e instalei o pacote de compatibilidade systemd-shim que permite usar o sysvinit em lugar do outro.

      Se for para usar outra distro que não o Debian será o Slackware, não tenho paciência para aturar o “arquivo existe no sistema de arquivos” do Arch Linux, nem tenho máquina potente para usar Gentoo e similares.

      []’s

      Curtir

      1. hiltongil disse:

        Olha eu não sei quanto a cada caso, mas não tive até hoje maiores problemas com o systemd. Leio os artigos sobre ele e a coisa é bem destacada ou o pessoal ama ou odeia. Mas para minhas necessidades eu não senti maiores dificuldades. Depois que passei meu note de testes para o meu pai coloquei o Xubuntu 14.04 até porque não posso dificultar as coisas para ele e não quero ter muitas preocupações com atualizações. Acabei colocando no meu note principal o Ubuntu 14.04 mas depois de tanto tempo usando o Debian Sid ainda tenho uma queda por ele hehhe. O Arch eu sempre tive curiosidade, cheguei a instalar umas vezes brinquei um pouco mas nunca se tornou meu sistema principal. E o Slack eu nunca testei. De repente abro uma exceção para conhecê-lo, sempre é mais estimulante quando há uma série de artigos sobre um SO como tu costuma a fazer.

        Curtir

      2. Hoje em dia é mais fácil, quando comecei a usar Linux foi com a extinta revista PCMaster, logo de cara com o Mandrake detonei meu HD, depois fui me acostumando passei pro Slack, depois Kurumin e Debian, hoje em dia informação é o que não falta, naquela época tudo era escasso a começar pela internet a 56 kbps via softmodem (não sinto falta dessa época não!) kkk

        Pode parecer estranho mas o Slackware é o sistema mais simples que conheço, ele vem pronto pra compilar, não é difícil de manter, mas se uma coisa não funciona cê tem que correr atrás, nesse caso do obmenu-generator eu poderia seguir os modelos anteriores do Debian, ou seja instalar via CPAN, mas como no SlackBuild já tinha uma das dependências resolvi criar a outra.

        Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s