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'
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É!
Fala Edps.
Então já vinha notando os artigos sobre Slack. Daí minha curiosidade: O intuito é troca de sistema ou apenas ampliação de conhecimentos?
Abraço.
CurtirCurtir
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
CurtirCurtir
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.
CurtirCurtir
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.
CurtirCurtir