Tint2 com menu do Openbox


Olá mundo GNU!

Como prometido, neste tutorial apresento uma maneira de adicionar um menu para o levíssimo painel Tint2.

O Tint2 é um painel bem leve e totalmente customizável. Mas um de seus maiores problemas, é a falta de um menu compatível. Simplesmente ainda não foi implementado um menu próprio para ele. Assim, perde-se boa parte de sua utilidade, uma vez que um menu no painel é algo essencial para muitos usuários, acostumados com outros DEs com painéis, como o LXDE, GNOME, KDE, etc.

Neste tutorial, iremos adicionar o menu do Openbox (aquele acessível ao clicar com o botão direito do mouse no desktop), no Tint2, tornando-o um legítimo menu de painel:

Obs.: lembrando que esta é apenas uma solução alternativa (leia-se “gambiarra”).

Primeiro, instale o pacote xdotool na sua distribuição. Para quem usa o Debian (e distribuições derivadas), basta executar:

$ sudo apt-get install xdotool

Já para quem usa o Slackware, instale através do SlackBuilds: http://slackbuilds.org/repository/14.0/accessibility/xdotool/

Com este utilitário, podemos disparar ações do mouse/teclado, através de comandos via terminal.

Um exemplo:

Para ativar o clique com o botão direito do mouse (botão número 3), via comando, digite:

$ xdotool click 3

O ponto principal da dica é: usar o xdotool para “chamar” o menu do Openbox. Normalmente, a combinação de teclas para exibir o menu do Openbox é Alt + Space, mas você pode checar/modificar isso no arquivo ~/.config/openbox/rc.xml.

Para descobrir qual é a combinação atual, digite:

$ grep "root-menu" -B 2 ~/.config/openbox/rc.xml

Deve aparecer:

<keybind key="A-space">
<action name="ShowMenu">
<menu>root-menu</menu>
--
<mousebind action="Press" button="Right">
<action name="ShowMenu">
<menu>root-menu</menu>

Logo, concluímos que, no meu caso, o menu aparece com a combinação Alt + space ou quando clicamos com o botão direito do mouse na área de trabalho (linha <mousebind action=”Press” button=”Right”>).

Obs.: se aparecer somente a ação do botão do mouse, você pode acrescentar o atalho manualmente. Basta acrescentar no arquivo ~/.config/openbox/rc.xml:

<keybind key="A-space">
<action name="ShowMenu">
<menu>root-menu</menu>
</action>
</keybind>

Na sessão de “keybinds” do arquivo de configuração. Você pode conferir um rc.xml completo aqui: http://dl.dropboxusercontent.com/u/67723624/Downloads/rc.xml

Realizada as mudanças, atualize o Openbox:

$ openbox --reconfigure

Para testar o xdotool com o menu, digite:

$ xdotool key alt+space

Obs.: altere de acordo com a combinação que você usa.

Criando um lançador.

Agora só nos resta criar um lançador e inserir no Tint2 (desde que este ofereça suporte à lançadores de aplicativos).

Crie um arquivo com um nome qualquer e com a extensão .desktop (aqui chamo de “openbox_menu.desktop”), com o seguinte conteúdo:

[Desktop Entry]
Encoding=UTF-8
Name=Openbox Menu
Comment=Openbox Menu
X-GNOME-FullName=Openbox Menu
Exec=xdotool key [comando para chamar o menu]
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=[ícone de menu]
Categories=Menu;
MimeType=
StartupNotify=true
NoDisplay=true

Importante: configure a linha Exec com o comando que execute o menu do Openbox, e a linha Icon com um ícone de sua preferência.

No meu Slackware fiz o download de um ícone lá da página “Slackware Banners, Logos, Propaganda“, deixei as bordas transparentes com o GIMP e salvei em /usr/share/pixmaps com o nome de “start-here-slackware.png”. Já no Debian, fiz o download do logotipo na página oficial (formato GIMP), alterei o tamanho e salvei com o nome de “start-here-debian.png”.

Sendo assim, o meu arquivo .desktop ficou assim (no Slackware):

[Desktop Entry]
Encoding=UTF-8
Name=Openbox Menu
Comment=Openbox Menu
X-GNOME-FullName=Openbox Menu
Exec=xdotool key alt+space
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=start-here-slackware
Categories=Menu;
MimeType=
StartupNotify=false
NoDisplay=true

Obs.: o ícone chama-se “start-here-slackware.png” pois, caso eu utilize um tema que possua um ícone próprio para esta distribuição (como o Faenza), ele será automaticamente modificado.

Dê permissão de execução ao arquivo:

$ chmod +x openbox_menu.desktop

E para testar basta dar dois cliques no arquivo criado. Se tudo der certo, aparecerá o menu do Openbox onde o seu mouse estiver.

Agora basta mover o arquivo para /usr/share/applications (opcional, apenas para fins de organização):

# mv openbox_menu.desktop /usr/share/applications

Tint2.

Esta parte não vou entrar em maiores detalhes, uma vez que há uma dica a respeito no VOL (escrita pelo próprio edps): http://www.vivaolinux.com.br/dica/Painel-Tint2-com-lancadores-de-aplicativos

Mas, aqui vai uma dica:

Slackware – o pacote tint2-r652 já possui o recursos de lançadores. Baixe-o daqui:

32 bits: tint2-r652-i486-1sl.txz
64 bits: tint2-r652-x86_64-1sl.txz

Debian – o pacote disponível no repositório main do Debian Wheezy (tint2_0.11+svn20121014-1) já possui o recurso de lançadores. Se você ainda usa o Squeeze (como eu), pode adquirir os pacotes Deb aqui:

32 bits: tint2_0.11+svn20121014-1_i386.deb
64 bits: tint2_0.11+svn20121014-1_amd64.deb

Para habilitar os lançadores, utilize esta configuração do Tint2 como base (salve-a em ~/.confi/tint2/tint2rc):

# Tint2 config file
# Autor: Leandro Nkz <http://www.vivaolinux.com.br/~leandro>

##Layouts

# ID 1
##Painel principal
rounded = 0
border_width = 1
background_color = #000000 70
border_color = #FFFFFF 20

# ID 2
##Janela ativa
rounded = 0
border_width = 2
background_color = #FFFFFF 20
border_color = #FFFFFF 48

# ID 3
##Janela inativa
rounded = 0
border_width = 0
background_color = #FFFFFF 10
border_color = #FFFFFF 68

# ID 4
##Tray
rounded = 0
border_width = 0
background_color = #FFFFFF 0
border_color = #FFFFFF 16

##Panel
#Itens:
#L = Launcher - Lançadores
#T = Task bar - Menu de janelas
#S = System tray - Área de notificação
#B = Battery - Bateria
#C = Clock - Relógio
panel_items = LTSBC
panel_monitor = all
panel_position = bottom center horizontal
panel_size = 100% 30
panel_margin = 0 -1
panel_padding = 2 0 2
panel_dock = 0
wm_menu = 0
panel_layer = top
panel_background_id = 1

##Lançador de aplicativos
#Configure de acordo com a sua preferência
#Estou utilizando os ícones fs-icons-ubuntu-sky-mono-light-2
launcher_padding = 0 3 5
launcher_tooltip = 1
launcher_icon_theme = fs-icons-ubuntu-sky-mono-light-2
launcher_icon_size = 21
launcher_item_app = /usr/share/applications/openbox_menu.desktop
launcher_item_app = /usr/share/applications/firefox.desktop
launcher_item_app = /usr/share/applications/thunar.desktop
launcher_item_app = /usr/share/applications/lxterminal.desktop
launcher_item_app = /usr/share/applications/gvim.desktop

##Taskbar
taskbar_mode = single_desktop
taskbar_padding = 2 1 2
taskbar_background_id = 1
taskbar_active_background_id = 0

##Tasks
urgent_nb_of_blink = 8
task_icon = 1
task_text = 1
task_centered = 0
task_maximum_size = 150 35
task_padding = 6 2
task_background_id = 3
task_active_background_id = 2
task_urgent_background_id = 2
task_iconified_background_id = 3
task_tooltip = 0

##Task Icons
task_icon_asb = 70 0 0
task_active_icon_asb = 100 0 0
task_urgent_icon_asb = 100 0 0
task_iconified_icon_asb = 70 0 0

##Task Fonts
task_font = sans 7
task_font_color = #FFFFFF 68
task_active_font_color = #FFFFFF 90
task_urgent_font_color = #FFFFFF 83
task_iconified_font_color = #FFFFFF 68
font_shadow = 0

##System Tray
systray = 1
systray_padding = 4 4 4
systray_sort = ascending
systray_background_id = 4
systray_icon_size = 21
systray_icon_asb = 100 0 0

##Relógio
##Necessário ter o pacote "gsimplecal" instalado
time1_format = %H:%M:%S
time1_font = sans 8
time2_format = %a, %d %B %Y
time2_font = sans 6
clock_font_color = #FFFFFF 74
clock_padding = 1 0
clock_background_id = 0
clock_rclick_command = gsimplecal
clock_lclick_command = gsimplecal

##Tooltips
tooltip_padding = 2 2
tooltip_show_timeout = 0.7
tooltip_hide_timeout = 0.3
tooltip_background_id = 1
tooltip_font = sans 10
tooltip_font_color = #FFFFFF 100

##Ações do mouse na taskbar
mouse_middle = close
mouse_right = none
mouse_scroll_up = toggle
mouse_scroll_down = iconify

##Bateria
battery = 1
battery_low_status = 40
battery_low_cmd = notify-send "battery low"
battery_hide = never
bat1_font = sans 8
bat2_font = sans 6
battery_font_color = #FFFFFF 74
battery_padding = 0 0
battery_background_id = 4

Por fim, inicie o seu painel Tint2 e voilá:

$ tint2 &

Incrementando o menu do Openbox.
Por padrão, o Openbox possui um menu um tanto quanto sem sal. Para incrementá-lo, vamos instalar o obmenu-generator:
https://edpsblog.wordpress.com/2013/05/21/obmenu-generator-openbox-menu-generator/

Mas como o obmenu-generator original apresenta a interface em inglês, e possui alguns programas padrão (editor Geany, terminal xterm e navegador Google Chrome), eu tomei a liberdade de traduzir o menu para o português a acrescentar uma forma mais simples de alterar estes programas padrões.

Instalação.
Instale as dependências do Perl: Data::Dump e Linux::Desktop::Files.
Você pode fazer isso através do utilitário cpan:

# perl -MCPAN -e shell
install Data::Dump
install Linux::DesktopFiles

Obs.: lembrando que, na dica original há uma outra forma de instalação destas dependências. Assim, se você não conseguir instalar com o cpan, você pode tentar a instalação através deste outro método.

Agora, baixe o obmenu-generator modificado de: http://dl.dropboxusercontent.com/u/67723624/Downloads/obmenu-generator

Agora abra-o com um editor de textos e altere o campo (a partir da linha 58):

##### Configurações personalizadas #####
#Obs.: é recomendável deixar, ao menos 2 temas de ícones ativos
#Assim, se não houver um determinado ícone em uma categoria, ele usará do próximo tema
my $ICONS = "$home_dir/.icons/fs-icons-ubuntu-sky";
my $ICONS2 = "$home_dir/.icons/Faenza";
my $ICONS3 = "";

#Título do menu (deixe vazio para desabilitar)
my $TITLE = "Slackware 14.0";

my $FILEMANAGER = "thunar";
my $TERMINAL = "lxterminal --geometry=100x30";
my $EDITOR = "gvim";
my $NAVEGADOR = "firefox";

##Adicione novas entradas no topo do menu:
# USO: "{item => ['comando',     'Nome',  'ícone']},";
my $CUSTOM_ITEM = <<"CUSTOM_ITEM";
{item => ['thunar',                         'Gerenciador de arquivos',  'file-manager']},
{item => ['lxterminal --geometry=100x30',   'Terminal',                 'terminal']},
{item => ['gvim',                           'Editor de textos',         'text-editor']},
{item => ['firefox',                         'Navegador',                'web-browser']},
{item => ['gmail --gui',                    'Gmail', 'gmail']},

CUSTOM_ITEM

Está bem comentado, de modo que pode ser facilmente compreendido. Nos campos $FILEMANAGER, $TERMINAL, $EDITOR e $NAVEGADOR você configura, respectivamente: o seu gerenciador de arquivos, emulador de terminal, editor de textos e navegador de internet. Já no campo $TITLE, você personaliza o “título” que aparecerá no menu.

Já no campo $CUSTOM_ITEM, você pode acrescentar novas entradas para atalhos rápidos de aplicativos. Neste caso, eu adicionei o Thunar, LXTerminal, Gvim, Firefox, e um script de checagem de e-mails: http://pastebin.com/GB5v3wnX.

Após isso, dê permissão de execução e mova o arquivo obmenu-generator para /usr/local/bin:

$ chmod +x obmenu-generator
# mv obmenu-generator /usr/local/bin

Por fim, configure (se não houver, crie) o arquivo ~/.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/
file:///usr/share/openbox/menu.xsd">

<menu id="root-menu" label="Openbox 3" execute="/usr/local/bin/obmenu-generator -i">
</menu>

</openbox_menu>

E atualize o Openbox:

$ openbox --reconfigure

Adicionando novos menus/itens.

Você também pode adicionar novas entradas no menu. É só copiar o conteúdo do menu (no formato XML) e salvá-lo no diretório de configuração (localizado em ~/.config/obmenu-generator), com o nome de “menu1.xml” ou “menu2.xml”. Lembrando que, o “menu1.xml” ficará localizado após os atalhos, e o “menu2.xml”, após o campo “Configurações do Openbox” (imagens no slideshow ao final do post).

Exemplo:

Esta configuração adiciona um pipe menu com alguns atalhos do Audacious:

<menu id="1" label="Audacious" icon="/home/leandro/.icons/Faenza/apps/16/audacious.png">
<item label="Play/Pause">
<action name="Execute">
<execute>audacious -t</execute>
</action>
</item>
<separator />
<item label="Stop">
<action name="Execute">
<execute>audacious -s</execute>
</action>
</item>
<separator />
<item label="Previous">
<action name="Execute">
<execute>audacious -r</execute>
</action>
</item>
<separator />
<item label="Next">
<action name="Execute">
<execute>audacious -f</execute>
</action>
</item>
<separator />
<item label="GUI">
<action name="Execute">
<execute>audtool mainwin-show on</execute>
</action>
</item>
</menu>

Dica: todo pipe menu começa com a tag “<menu id…” e fecha com “</menu>”.

Já esta configuração, cria dois itens (atalhos para dois scripts):

<item label="Script de backup" icon="/home/leandro/.icons/Faenza/mimetypes/16/shellscript.png">
<action name="Execute">
<execute>lxterminal -e /home/leandro2/.backup.sh</execute>
</action>
</item>
<item label="Script de atualização" icon="/home/leandro/.icons/Faenza/mimetypes/16/shellscript.png">
<action name="Execute">
<execute>lxtermina -e /usr/local/bin/atualiza.sh</execute>
</action>
</item>
<separator />

A primeira eu salvei em ~/.config/obmenu-generator/menu1.xml, já a segunda eu salvei em ~/.config/obmenu-generator/menu2.xml.

Vejam o resultado:

Este slideshow necessita de JavaScript.

Screenshot no VOL:
http://www.vivaolinux.com.br/screenshot/Openbox-obmenu-generator-modificado/

Referências:
https://edpsblog.wordpress.com/2013/05/21/obmenu-generator-openbox-menu-generator/
http://crunchbang.org/forums/viewtopic.php?id=19277
http://www.vivaolinux.com.br/dica/Menu-do-Openbox-com-icones
http://www.vivaolinux.com.br/dica/Painel-Tint2-com-lancadores-de-aplicativos

Tint2 com menu do Openbox

22 comentários sobre “Tint2 com menu do Openbox

  1. edps disse:

    Ou melhor, agora ja dá para me livrar do LxPanel o qual só utilizo por causa do povo aqui de casa, muito bom mesmo!

    Outro painel que oferece funcionalidade parecida com o Tint2 é o PyPanel.

    Curtir

    1. Leandro Nkz disse:

      Infelizmente não tem como manter as configurações antigas. Este menu sobrescreve todas as configurações anteriores no arquivo menu.xml.

      Um meio de personalizá-lo é editando manualmente o script (assim como eu fiz), inserindo as entradas diretamente no código.

      Embora eu não tenha quase nenhum conhecimento em Perl, assim que tiver um tempo maior para pesquisar (provavelmente nas minhas férias que começam semana que vem XD), vou dar um upgrade no script, inserindo mais opções de customização. Acho que dá para criar um campo (ou arquivo de configuração) para ler pipes menus customizados.

      Abraço e obrigado.

      Curtir

  2. Leandro Nkz disse:

    Script atualizado. Eu modifiquei algumas coisas nele:

    – Alteração mais fácil dos atalhos que ficam no topo do menu – Agora pode-se até remover qualquer um, deixando apenas o menu.
    – Pode-se adicionar um título para o menu.
    – Possibilidade de inserir menus/itens extras.

    Abraços.

    Curtir

    1. edps disse:

      Toma aí meu filho:

      # wget -nv http://repository.slacky.eu/slackware-13.37/multimedia/xvidcap/1.1.7/xvidcap-1.1.7-i486-1sl.txz
      # installpkg xvidcap-1.1.7-i486-1sl.txz

      Se faltar alguma lib, recorra ao slackpkg:

      # slackpkg file-search nome-da-lib

      Ache o pacote que a contém e o instale.

      Uma observação:

      aqui não é um fórum, você fez uma pergunta num post que não tem nada a ver com sua necessidade, para isso existe o VOL, eu só respondi por estar com tempo disponível para tal.

      Espero que resolva seu problema.

      Curtir

  3. Davidson disse:

    Acabo de instalar o openbox e me deparo com tutorial desse, simplesmente incrível. Só que infelizmente o menu do openbox não carrega os ícones, nem com um simples xml desse: http://pastebin.com/2G4efnha o ícone é exibido. Tem que instalar algo a mais para o suporte aos ícones, ou alguma versão específica do openbox?

    Curtir

    1. edps disse:

      Instale o openbox-menu de acordo com essa dica:

      http://gnutwoall.wordpress.com/2013/04/27/openbox-menu-novo-metodo-de-instalacao/

      E se quiser use este meu arquivo ~/.config/openbox/menu.xml:

      * observe que o executável “openbox-menu” está definido para /usr/local/bin/openbox-menu, após substituir o arquivo ~/.config/openbox/menu.xml execute num terminal: openbox –reconfigure.

      &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
       &lt;openbox_menu xmlns=&quot;http://openbox.org/3.5/menu&quot;&gt;
           &lt;menu execute=&quot;/usr/local/bin/openbox-menu lxde-applications.menu&quot; id=&quot;desktop-app-menu&quot; label=&quot;Aplicativos&quot;/&gt;
           &lt;menu id=&quot;root-menu&quot; label=&quot;Openbox 3&quot;&gt;
               &lt;separator label=&quot;Menu&quot;/&gt;
               &lt;menu id=&quot;desktop-app-menu&quot;/&gt;
      		&lt;separator/&gt;
      		&lt;item label=&quot;Editor de Textos&quot;&gt;
      			&lt;action name=&quot;Execute&quot;&gt;
      				&lt;execute&gt;gnome-text-editor&lt;/execute&gt;
      			&lt;/action&gt;
      		&lt;/item&gt;
      		&lt;item label=&quot;Gerenciador de Arquivos&quot;&gt;
      			&lt;action name=&quot;Execute&quot;&gt;
      				&lt;execute&gt;thunar&lt;/execute&gt;
      			&lt;/action&gt;
      		&lt;/item&gt;
      		&lt;item label=&quot;Navegador Web&quot;&gt;
      			&lt;action name=&quot;Execute&quot;&gt;
      				&lt;execute&gt;x-www-browser&lt;/execute&gt;
      			&lt;/action&gt;
      		&lt;/item&gt;
      		&lt;item label=&quot;Terminal&quot;&gt;
      			&lt;action name=&quot;Execute&quot;&gt;
      				&lt;execute&gt;x-terminal-emulator&lt;/execute&gt;
      			&lt;/action&gt;
      		&lt;/item&gt;
      		&lt;separator/&gt;
      		&lt;menu id=&quot;settings&quot; label=&quot;Configurações&quot;&gt;
      			&lt;item label=&quot;Alterar a Aparência&quot;&gt;
      				&lt;action name=&quot;Execute&quot;&gt;
      					&lt;execute&gt;lxappearance&lt;/execute&gt;
      				&lt;/action&gt;
      			&lt;/item&gt;
      			&lt;item label=&quot;Editar autostart&quot;&gt;
      				&lt;action name=&quot;Execute&quot;&gt;
      					&lt;execute&gt;gnome-text-editor ~/.config/openbox/autostart&lt;/execute&gt;
      				&lt;/action&gt;
      			&lt;/item&gt;
      			&lt;item label=&quot;Editar menu.xml&quot;&gt;
      				&lt;action name=&quot;Execute&quot;&gt;
      					&lt;execute&gt;gnome-text-editor ~/.config/openbox/menu.xml&lt;/execute&gt;
      				&lt;/action&gt;
      			&lt;/item&gt;
      			&lt;item label=&quot;Editar rc.xml&quot;&gt;
      				&lt;action name=&quot;Execute&quot;&gt;
      					&lt;execute&gt;gnome-text-editor ~/.config/openbox/rc.xml&lt;/execute&gt;
      				&lt;/action&gt;
      			&lt;/item&gt;
      			&lt;item label=&quot;Editar xinitrc&quot;&gt;
      				&lt;action name=&quot;Execute&quot;&gt;
      					&lt;execute&gt;gnome-text-editor ~/.xinitrc&lt;/execute&gt;
      				&lt;/action&gt;
      			&lt;/item&gt;
      			&lt;item label=&quot;Editor do Menu OpenBox&quot;&gt;
      				&lt;action name=&quot;Execute&quot;&gt;
      					&lt;execute&gt;obmenu&lt;/execute&gt;
      				&lt;/action&gt;
      			&lt;/item&gt;
      			&lt;item label=&quot;OpenBox Config Tool&quot;&gt;
      				&lt;action name=&quot;Execute&quot;&gt;
      					&lt;execute&gt;obconf&lt;/execute&gt;
      				&lt;/action&gt;
      			&lt;/item&gt;
      			&lt;item label=&quot;Reconfigurar OpenBox&quot;&gt;
      				&lt;action name=&quot;Reconfigure&quot;/&gt;
      			&lt;/item&gt;
      			&lt;item label=&quot;Reiniciar OpenBox&quot;&gt;
      				&lt;action name=&quot;Restart&quot;/&gt;
      			&lt;/item&gt;
      			&lt;item label=&quot;Trocar Wallpaper&quot;&gt;
      				&lt;action name=&quot;Execute&quot;&gt;
      					&lt;execute&gt;nitrogen --sort=alpha /home/edps/Imagens/&lt;/execute&gt;
      				&lt;/action&gt;
      			&lt;/item&gt;
      		&lt;/menu&gt;
      		&lt;separator/&gt;
      		&lt;item label=&quot;Executar&quot;&gt;
      			&lt;action name=&quot;Execute&quot;&gt;
      				&lt;execute&gt;gmrun&lt;/execute&gt;
      			&lt;/action&gt;
      		&lt;/item&gt;
      		&lt;separator/&gt;
      		&lt;item label=&quot;Sair&quot;&gt;
      			&lt;action name=&quot;Execute&quot;&gt;
      				&lt;execute&gt;cb-exit&lt;/execute&gt;
      			&lt;/action&gt;
      		&lt;/item&gt;
      	&lt;/menu&gt;
      &lt;/openbox_menu&gt;
      

      Curtir

      1. Davidson disse:

        Ainda persiste, segui esta primeira dica e utilizei este xml, também executei “/usr/local/bin/openbox-menu lxde-applications.menu” a aparentemente o caminho dos ícones está ok. Bem, utilizo o 3.5 e Slack 14.1.

        Curtir

      2. Davidson disse:

        Sim, utilizei este artigo para o Openbox, só deixei de lado o lxterminal. Tentei algumas opções da wiki para ‘ativar’ os ícones mas também sem sucesso. Enfim, valeu a ajuda, mas vai ficar assim mesmo, estou desde ontem quebrando cabeça com isso.

        Curtir

Deixe um comentário