sexta-feira, 4 de setembro de 2020

Turbinando o Openbox nativo do Debian 10 LXDE

O Debian LXDE vem com o Openbox instalado nativamente, mas o uso puro da interface do window managem Openbox não apresenta muitas facilidades de uso em comparação ao LXDE e o seu menu de programas é bem tosco, onde ao escolher utilizar o Openbox pelo gestor de login, será apresentado um desktop completamente limpo sem painel, ícones e para exibi o menu de programas tem que clicar com botão direito do mouse sobre o desktop conforme o shot abaixo.

Screenshot do Openbox com menu tradicional


O Openbox traz muita leveza ao iniciar pois consome pouca RAM, mas como o seu sistema vem nativamente com o Desktop LXDE,  e se não for desabilitado todos ou pelo menos a maioria dos apps que iniciam junto com o seu desktop LXDE, o ganho de mais memória livre ao iniciar será muito pouco, pois mesmo iniciando diretamente no Openbox, todos os apps que tiver arquivos .desktop em ~/.config/autostart serão iniciados automaticamente no Openbox.

Na minha instalação sem desabilitar a maioria dos apps que iniciam automaticamente por um arquivo .desktop que estão localizado em ~/.config/autostart o ganho foi de apenas 40 MB a mais livre, mas desabilitado todos o ganho foi de 100 MB livres.

Procure soluções mais leves de apps para substituir os padrão da instalação para algumas funcionalidades, como proteção de tela, travar a tela, nível e popup da bateria, clipboard, botão do volume de som e outros.

Os arquivos .desktop padrão do LXDE que ficam em ~/.config/autostart podem ser desabilitados tranquilamente ou excluídos sem perder as configurações já realizadas anteriormente e de qualquer forma caso precise você pode chamar os apps destes arquivos  pelo menu de programa ou através do terminal.

Arquivos como light-locker.desktop, geoclue-demo-agent.desktop, pulseaudio.desktop, xdg-user-dirs.desktop, at-spi-dbus-bus.desktop, notify-osd.desktop, wicd-tray.desktop, xfce4-power-manager.desktop, im-launch.desktop, lxrandr-autostart.desktop podem ser desabilitados tranquilamente sem precisar excluir (estes são apenas os arquivos  padrões da instalação, se você instalou manualmente muito outros apps, você pode ter muitos outros arquivos em ~/.config/autostart).

Para desativar os apps dos arquivos .desktop que estão em ~/.config/autostart de iniciar automaticamente na inicialização do Openbox, basta incluir ou editar a linha NotShowIn= no arquivo seguindo pelo nome do desktop, acrescentando depois do ; o nome do desktop desejado para não ser executado.

Exemplos:

NotShowIn=GNOME;Unity;OPENBOX;    (linha já existente com outros desktop configurados, para não ser iniciados neles)

NotShowIn=OPENBOX;  (incluindo a linha, caso ela não exista; para funcionar OPENBOX, deve ser escrito em maiúsculo)


Começando a personalização

No repositório do Debian buster não existe o pacote obmenu-generator que servirá para da uma turbinada no menu de programas do Debian, mas antes de baixar e instalar o obmenu-generator, precisaremos instalar as dependências necessárias para poder executar o mesmo.

Preferencialmente numa janela de terminal, torna-se root usando o comando su e digite sua senha de root.

Execute este comando no prompt root:

# perl -MCPAN -e shell

CPAN.pm requires configuration, but most of it can be done automatically.
If you answer 'no' below, you will enter an interactive dialog for each
configuration option instead.
Would you like to configure as much as possible automatically? [yes] yes
Autoconfiguration complete.
commit: wrote '/root/.cpan/CPAN/MyConfig.pm'
You can re-run configuration any time with 'o conf init' in the CPAN shell
Terminal does not support AddHistory.
cpan shell -- CPAN exploration and modules installation (v2.20)
Enter 'h' for help.
cpan[1]> 

No prompt do CPAN: cpan[nº]>

Digite os dois comandos abaixo nesta ordem, aguarde o término de cada um deles.

install Data::Dump
install Linux::DesktopFiles

Digite quit para encerrar o cpan.
# exit (digite para sair do modo root)


Fazendo download do obmenu-generator

Para baixar o obmenu-generator do repositório github é necessário ter o pacote git instalado em seu sistema.

$ git clone git://github.com/trizen/obmenu-generator

$ cd obmenu-generator/

$ ./obmenu-generator 

./obmenu-generator: schema file `/home/nando/.config/obmenu-generator/schema.pl' does not exists!


Solução:

$ cp -v schema.pl ~/.config/obmenu-generator/

$ ls -l ~/.config/obmenu-generator/
total 12
-rw-r--r-- 1 nando nando 3530 ago 15 20:05 config.pl
-rw-r--r-- 1 nando nando 4986 ago 15 20:09 schema.pl

$ ./obmenu-generator  (com isto foi criado o cache.db em ~/.config/obmenu-generator/)


Copiando o comando obmenu-generator para /usr/bin.

$ sudo cp -v obmenu-generator /usr/bin

Agora vamos gerar o menu de programas de melhor qualidade.

$ obmenu-generator -p -i

:: A dynamic menu has been successfully generated!


Instalando alguns apps

Instalando o painel tint2 e outros apps leve para turbinar o Openbox

$ sudo apt install tint2 gsimplecal volumeicon-alsa wmctrl numlockx feh gmrun


Onde:

tint2 = painel com lançador, apps abertos, system tray e relógio.
gsimplecal = calendário pra o relógio do painel tint2.
volumeicon-alsa = botão de volume de som, permite uso das teclas multimídia de volume do teclado.
wmctrl = para configurar a exibição de botão do Menu e botão Exibi desktop no painel.
numlockx = ligar o teclado numérico na inicialização.
feh = para usar papel de parede no arquivo autostart do openbox.
gmrun = caixa executar podendo ser adicionada ao menu do Openbox, no painel e ser acionada por tecla de atalho.


Iniciando apps automaticamente ao iniciar o Openbox

Crie o arquivo  ~/.config/openbox/autostart com permissão x para inicialização automática de apps ao iniciar o Openbox com o conteúdo abaixo seguindo com o caractere & no final

tint2 &
volumeicon-alsa &
numlockx on

Notas:

Todo app que utiliza uma janela gráfica ou uma interface gráfica é obrigatório utilizar o caractere & no final do mesmo para enviar para o segundo plano e liberando assim o sistema. Já apps de linha de comando para o modo gráfico que saem sozinhos automaticamente como numlockx, xset, setxkbmap e outros não é necessário ter o caractere & no final.

Alternativamente pode-se criar ou copiar arquivos .desktop para o diretório ~/.config/autostart que eles serão executados automaticamente na inicialização do Openbox.


Fazendo ajustes no Openbox

Mudando o editor padrão

Mudar o editor de texto padrão que edita as configurações do openbox como tint2rc, rc.xml, config.pl, schema.pl e .conkyrc ao utilizar pelo menu de programas para isto.

No arquivo ~/.config/obmenu-generator/config.pl edite o mesmo com seu editor de texto favorito e basta trocar geany por leafpad ou outro de sua preferência e se você tiver utilizando menu dinâmico não precisa reiniciar o openbox ou usar o comando openbox --reconfigure que será aplicada no mesmo instante.

Na sessão our $CONFIG = {  e na linha "editor" troque geany por leafpad.


Configurando atalhos de teclados manualmente

Para configurar atalhos de teclado manualmente, você tem que editar o arquivo ~/.config/openbox/rc.xml

Procedimento para criar atalho:

Antes de copiar e colar as linhas aqui dos exemplos, examine como é separado cada atalho diferente do arquivo rc.xml entre si, pois se houver códigos duplicados no atalho colado ou faltado algum código o atalho criado não funcionará.

Atenção para que não exista duas linhas iguais seguidas da </keybind> tanto da parte de cima como da parte de baixo do atalho tem que ser apenas uma vez a linha </keybind> entre cada atalho diferente, senão não funcionará o atalho é será exibido uma mensagem de erro ao atualizar a configuração feita ao usar o comando openbox --reconfigure.


Atalho para o pcmanfm via teclado

Por padrão vem o konqueror configurado para usar o atalho tecla Windows + tecla e, onde provavelmente o mesmo não deve esta instalado no seu sistema se você não tem as aplicações do KDE instalado no pc, troque o nome Konqueror por Pcmanfm reaproveitado estas linhas e na parte de comando troque kfmclient openProfile por pcmanfm.

Linhas originais para o Konqueror que vem por padrão

<!-- Keybindings for running applications -->    (esta linha é um comentário, deve ficar sempre acima do atalho de tecla)

    <keybind key="W-e">
      <action name="Execute">      (comando interno do Openbox"
        <startupnotify>
          <enabled>true</enabled>
          <name>Konqueror</name>          (descrição)
        </startupnotify>
        <command>kfmclient openProfile filemanagement</command>   (o executável do linux que fica entre </command>)
      </action>

Com a alteração para o pcmanfm como fica então:

<!-- Keybindings for running applications -->

    <keybind key="W-e">
      <action name="Execute">
        <startupnotify>
          <enabled>true</enabled>
          <name>Pcmanfm</name>
        </startupnotify>
        <command>pcmanfm</command>
      </action>


Criando atalho para caixa tipo Executar 

<!-- Keybindings para caixa tipo Executar -->  
    <keybind key="W-g">
      <action name="Execute">
        <command>gmrun</command>
        </action>

        

O atalho para chamar a caixa executar é a tecla Windows + tecla g  


Criando atalho para janela de terminal

<!-- Keybindings para janela de terminal -->
    <keybind key="W-t">
      <action name="Execute">
        <command>lxterminal</command>
      </action>

O atalho para chamar o lxterminal é a tecla Windows + tecla t      

Criando atalho para o menu de programa

</keybind>
<keybind key="W-m">
<action name="ShowMenu">
<menu>root-menu</menu>
</action>

A opção root-menu é a parte do menu de programas, também conhecido como menu iniciar.
O atalho para chamar o menu de programa é a tecla Windows + tecla m 


Criando atalho para maximizar e minimizar somente a janela ativa

</keybind>
<!-- Atalho para maximizar somente a janela ativa -->
<keybind key="W-Up">        # Maximize
  <action name="ToggleMaximize"/>
</keybind>
<!-- Atalho para minimizar somente a janela ativa -->
<keybind key="W-Down">      # Minimize
  <action name="Iconify"/>
    </keybind>


O W-Up maximiza a janela atual utilizando  a tecla Windows + tecla de seta acima, e o segundo atalho W-Down minimiza a janela atual usando o atalho tecla Windows + tecla de seta abaixo.

Terminado a criação dos atalhos no terminal use o comando openbox --reconfigure para atualizar a configuração.


PS:
O recomendável é que você use o comando openbox --reconfigure sempre após cada atalho adicionando, pois se você criar várias atalhos de uma vez só e rodar o openbox --reconfigure somente no final, caso tenha algum erro de código como linha duplicada ou faltando ficará mais difícil de descobrir onde está o erro. 

Gui gráfica para criar atalhos de teclado facilmente no Openbox

Existe 2 aplicações gráficas para criar atalho de teclado das ações internas do openbox e comandos externos que são o obkey (exclusivo para openbox) e o lxhotkey (este é feito para o LXDE, mas pode ser usado no openbox se for instalado o pacote lxhotkey-plugin-openbox e mesmo tendo o LXDE instalado, a configuração feita no Openbox não interfere na configuração feita no LXDE, podendo usar a mesma combinação de teclas com ação diferente nos dois ambientes gráficos).

Das duas aplicações o lxhotkey é a melhor, mais fácil, intuitiva e funcional do que o obkey, além de se encontrado facilmente no repositório de muitas distros Linux.

Downloads:
https://github.com/luffah/obkey

Você pode baixar o source para compilação ou um arquivo binário genérico em formato .deb.

Já o lxhotkey pode ser baixado através do repositório da sua distro.

Traduzir o menu do Openbox

Para tradução do menu editar o arquivo ~/.config/obmenu-generator/schema.pl

- Procurar a linha onde contém:


our $SCHEMA = [

    #          COMMAND             LABEL                ICON 


Na coluna LABEL tem os nomes das categorias do menu em inglês, substitui-a pela nomenclatura correta em português.


Como ficou depois das alterações:

#          NAME            LABEL                ICON

    {cat => ['utility',             'Accessórios', 'applications-utilities']},
    {cat => ['development', 'Desenvolvimento', 'applications-development']},
    {cat => ['education',      'Educação',   'applications-science']},
    {cat => ['game',            'Jogos',       'applications-games']},
    {cat => ['graphics',       'Gráficos',    'applications-graphics']},
    {cat => ['audiovideo',   'Multimedia',  'applications-multimedia']},
    {cat => ['network',        'Internet',     'applications-internet']},
    {cat => ['office',            'Office',      'applications-office']},
    {cat => ['other',            'Outros',       'applications-other']},
    {cat => ['settings',        'Configurações',    'applications-accessories']},
    {cat => ['system',         'Sistema',      'applications-system']},


Não é necessário reiniciar o Openbox, ao salvar o arquivo os grupos de menu já estarão em português automaticamente.

Mesmo que você volte a executar o comando  obmenu-generator -p -i para gerar um novo menu de programa, a tradução feita no arquivo ~/.config/obmenu-generator/schema.pl não será pedida, permanecendo intacta.


Alterando os nomes das opções Lock e Exit do menu Iniciar

No final do arquivo ~/.config/obmenu-generator/schema.pl tem as linhas responsáveis por estas duas opções do menu criado pelo obmenu-generator

{sep => undef},

    ## The xscreensaver lock command

    {item => ['xscreensaver-command -lock', 'Lock', 'system-lock-screen']},


    ## This option uses the default Openbox's "Exit" action

    {exit => ['Exit', 'application-exit']},


    ## This uses the 'oblogout' menu

    # {item => ['oblogout', 'Exit', 'application-exit']},

]


Para trocar o nome de Lock por Travar, edite a linha {item => ['xscreensaver-command -lock', 'Lock', 'system-lock-screen']}, e troque Lock por Travar ficando assim:

{item => ['xscreensaver-command -lock', 'Travar', 'system-lock-screen']},


Trocando o nome Exit do menu

Para trocar o nome de Exit por Sair, edite a linha {exit => ['Exit', 'application-exit']},

e troque o Exit por Sair ficando assim:

{exit => ['Sair', 'application-exit']},


Pronto, a alteração no menu é na hora assim que o arquivo for salvo.

Fazendo ajustes no painel do tint2

Criando o botão Mostrar Desktop

Crie o script showdesktop salva em /usr/local/bin com permissão x.

Conteúdo:

#!/bin/sh  
 if wmctrl -m | grep "mode: ON"; then  
 exec wmctrl -k off  
 else  
 exec wmctrl -k on  
 fi  
# chmod a+x showdesktop


Agora criamos o arquivo .desktop em /usr/share/applications

$ sudo mousepad showdesktop.desktop

Conteúdo:
[Desktop Entry]
Version=1.0
Name[pt_BR]=Mostrar o desktop       
Exec=/usr/local/bin/showdesktop
Icon=/caminho/desktop.png
Terminal=false
Type=Application

Editamos o arquivo ~/.config/tint2/tint2rc manualmente com um editor de texto ou pelo app gráfico tint2conf na sessão LAUNCHER incluímos uma linha com o caminho do arquivo .desktop caso seja feito via editor de texto.


#------------------------------------------

#LAUNCHER

#------------------------------------------

launcher_icon_theme = areao43
launcher_padding = 4 4
launcher_background_id = 1
launcher_icon_size = 40 
launcher_item_app = /usr/share/applications/showdesktop.desktop

Pronto, é necessário reiniciar o tint2 para aparecer o botão caso foi feito utilizando um editor de texto.

Para reiniciar o tint2 em uma janela de terminal
execute os comandos abaixo:
$ killall tint2
$ tint2 &


Criando o botão para exibi o menu de programa

Para isto você precisa ter o pacote xdotool instalado no seu sistema.

Em /usr/share/applications crie o arquivo menuopenbox.desktop com o conteúdo abaixo:

[Desktop Entry]
Encoding=UTF-8
Name=Openbox Menu
Comment=Openbox Menu
Exec=xdotool key Super+m
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=/caminho/box.png
Categories=Menu;
StartupNotify=false
NoDisplay=true 


Onde Super+m são as teclas de atalho configuradas no arquivo ~/.config/openbox/rc.xml que corresponde a tecla "Windows" + a tecla "m"

Agora edite o arquivo ~/.config/tint2/tint2rc e na sessão # Launcher   adicione a linha abaixo:

launcher_item_app = /usr/share/applications/menuopenbox.desktop

Salve o arquivo, depois é necessário reiniciar o tint2 para exibir o botão no painel.

Agora quando você clicar com o botão direito do mouse sobre o botão do menu de programas no painel, o menu será exibido.


Adicionando o gsimplecal ao relógio do painel tint2

Clique no ícone "Gerenciador do Painel" ou execute manualmente o comando tint2conf, na guia Clock no item "Right click command" digite gsimplecal depois clique em Aplicar.

Agora quando você clicar com o botão direito do mouse sobre o relógio o calendário será exibido, basta clicar novamente com o botão direito do mouse para desaparecer o calendário.


Utilizando o clique do botão esquerdo do mouse sobre o relógio para mostrar o desktop


Você pode atribuir uma segunda ação com o mouse sobre o clique no relógio; como foi usando o clique com botão direito sobre o relógio para exibir o calendário, você pode atribuir outra ação para o clique com o botão esquerdo como exemplo Mostrar o desktop (minimizar todas as janelas).

Colocando esta linha "xdotool key --clearmodifiers Super+d" sem as aspas na guia Clock no item "Left click command" quando você clicar com o botão esquerdo do mouse sobre o relógio todas as janelas serão minimizadas de uma vez exibindo o seu desktop.

xdotool key --clearmodifiers Super+d

Onde Super+d é combinação de  teclas configurada no openbox (arquivo ~/.config/openbox/rc.xml) para mostrar o desktop.

A tecla Super é a tecla Windows (logotipo).


Notas:

Você pode fazer o mesmo procedimento editando manualmente o arquivo ~/.config/tint2/tint2rc indo na sessão Clock.

No xdotool a sintaxe das teclas é diferente da utilizada nos atalhos do Openbox, por exemplo para mostrar o desktop no Openbox o formato do código das teclas  de atalho é W-d e no xdotool é Super+d mas ambos corresponde a mesma combinação da tecla Windows (logotipo) + a tecla d.

Sobre atalhos padrões já existente na sessão # Launcher (default da instalação)

A sessão Launcher do painel tem vários atalhos que já vem configurados, mas os botões dos mesmos não são exibidos no painel, devido que o nome do arquivo desktop declarado não existe, mesmo que você tenha a aplicação do mesmo instalado no sistema, no qual darei o exemplo do firefox.desktop abaixo.

launcher_item_app = /usr/share/applications/firefox.desktop  (atalho que veio configurado por padrão) mas não existe este arquivo em /usr/share/applications e sim o firefox-esr.desktop por isto você não tem o atalho do firefox no painel, então basta remover o atalho firefox.desktop e colocar firefox-esr.desktop escolhendo pela aplicação gráfica Firefox ESR (na guia Launcher) que o mesmo aparecerá no painel, ou editando manualmente o arquivo ~/.config/tint2/tint2rc.


Meu arquivo ~/.config/openbox/autostart

# *** feh opções para usar imagem como papel de parede ***
# feh --bg-fill    = preserva proporção, ampliando a imagem até caber na tela.
# feh --bg-scale   = não mantêm a proporção, a imagem saira cortada ser for maior a resolução da tela do monitor.
# feh --bg-tile    = Mosaico, repete a imagem varias na tela.
# feh --bg-center  = Centraliza a imagem.
#
feh --bg-scale /home/nando/Imagens/openbox-wallpaper1.jpg &
tint2 &
clipit &
volumeicon &
conky -c /home/nando/.conkyrc-openbox1 -x 85 -y 40 &
compton -cCfF 
numlockx on 
xscreensaver -no-splash &


Nota:
O conky em modo desktop com fundo transparente, deve ser iniciado antes do compton, senão ele não aparecerá na inicialização pelo arquivo autostart.

O consumo de RAM com toda minha personalização ao ligar o computador, fazer o login gráfico e entrar no Openbox é de 278 MB no monitor conky.

PS:
Foi desabilitando a inicialização automática de todos os apps que utilizam um arquivo .desktop para isto em ~/.config/autostart.

Também foi desabilitado o serviço winbindd pelo systemctl, onde este serviço não é necessário se você tem compartilhamento simples de pastas com senha na sua rede local, utilizando a linha valid users = na configuração do compartilhamento, pois a mesma será solicitada igualmente sem este serviço.

Screenshot da minha personalização


No screenshot abaixo temos agora o menu do Openbox mais elegante e prático do que o tradicional, um painel tint2 personalizado com o botão para o menu de programas e o botão mostrar desktop sendo os 2 primeiros da esquerda e os botões, gmrun, terminal, pcmanfm e firefox todos na parte do lançador do painel e efeitos de transparências com o compton.







Nenhum comentário:

Postar um comentário