Personalização de ambientes Linux

Bem vindo à pagina do REA dos alunos de Engenharia de Computação da UEPG sobre personalização de ambientes.

Personalização do Shell

Introdução

Para facilitar e adiantar o trabalho de administradores de sistemas a personalização de ambientes pode ser usada. Ao logar-se no terminal local pode-se utilizar essa ferramenta para adiantar tarefas do dia-a-dia, mas geralmente poucas alterações são feitas, mesmo em distribuições Linux diferentes (Ubuntu, Red Hat, Debian, entre outros).

Para configurar um ambiente shell é preciso destacar:

  • Variáveis de Ambientes
  • Idioma do Sistema
  • Comando alias
  • Arquivos e Diretórios de Configuração.

A configuração do ambiente shell é necessária em algumas situações, como:

  • Falta de caminhos adicionados a variável PATH: impossibilita a execução de comandos específicos somente pelo nome do comando, sendo necessário digitar todo o caminho para a execução do mesmo.
  • Editor de texto padrão: é importante definir um editor de texto padrão, pois os diferentes editores possuem comandos específicos e, geralmente, o administrador utilizará do seu preferido.
  • Aliases de comandos: a falta de aliases causa desconforto para um administrador de sistema que utiliza linhas de comando frequentemente.

Variáveis de ambientes

É um método simples e prático que permite a especificação de opções de configuração de programas sem precisar mexer com arquivos no disco ou opções. Algumas variáveis do GNU/Linux afetam o comportamento de todo o Sistema Operacional, como o idioma utilizado e o path (caminho de procura dos arquivos/comandos executáveis). Variáveis de ambientes são nomes que contém algum valor e tem a forma NOME=VALOR. As variáveis de ambiente são individuais para cada usuário do sistema ou consoles virtuais e permanecem residentes na memória RAM até que o usuário saia do sistema (logo-off) ou até que o sistema seja desligado.

As variáveis de ambiente são visualizadas/criadas através do comando set ou echo $NOME (apenas visualiza) e exportadas para o sistema com o comando export NOME=VALOR.

Nos sistemas Debian, o local usado para especificar variáveis de ambiente é o /etc/environment. Todas as variáveis especificadas neste arquivo serão inicializadas e automaticamente exportadas na inicialização do sistema.

Exemplo: Para criar uma variável chamada TESTE que contenha o valor 123456 digite: export TESTE=123456. Agora para ver o resultado digite: echo $TESTE ou set|grep TESTE. Note que o $ que antecede o nome TESTE serve para identificar que se trata de uma variável e não de um arquivo comum.

Idioma do Sistema

O idioma usado em seu sistema pode ser modificado facilmente através das variáveis de ambiente. Atualmente a maioria dos programas estão sendo localizados. A localização é um recurso que especifica arquivos que contém as mensagens dos programas em outros idiomas. Você pode usar o comando locale para listar as variáveis de localização do sistema e seus respectivos valores. As principais variáveis usadas para determinar qual idioma os programas localizados utilizarão são:

  • LANG - Especifica o idioma_PAIS local. Podem ser especificados mais de um idioma na mesma variável separando-os com :, desta forma caso o primeiro não esteja disponível para o programa o segundo será verificado e assim por diante. A língua Inglesa é identificada pelo código C e usada como padrão caso nenhum local seja especificado.
  • Por exemplo: export LANG=pt_BR, export LANG=pt_BR:pt_PT:C

  • LC_MESSAGES - Especifica o idioma que serão mostradas as mensagens dos programas. Seu formato é o mesmo de LANG.
  • LC_ALL - Configura todas as variáveis de localização de uma só vez. Seu formato é o mesmo de LANG.

As mensagens de localização estão localizadas em arquivos individuais de cada programa em /usr/share/locale/[Idioma]/LC_MESSAGES . Elas são geradas através de arquivos potfiles (arquivos com a extensão .po ou .pot) e são gerados catálogos de mensagens .mo. As variáveis de ambiente podem ser especificadas no arquivo /etc/environment desta forma as variáveis serão carregadas toda a vez que seu sistema for iniciado. Você também pode especificar as variáveis de localização em seu arquivos de inicialização .bash_profile, .bashrc ou .profile assim toda a vez que entrar no sistema, as variáveis de localização personalizadas serão carregadas.

DEBIAN

Siga as instruções a seguir de acordo com a versão de sua distribuição Debian:

Debian 4.0

Acrescente a linha pt_BR ISO-8859-1 no arquivo /etc/locale.gen, rode o utilitário locale-gen para gerar os locales. Agora acrescente as variáveis de localização no arquivo /etc/locale.def seguindo a forma:

export LANG=pt_BR
export LC_ALL=pt_BR
export LC_MESSAGES=pt_BR

Note que o arquivo /etc/environment também pode ser usado para tal tarefa, mas o locales.def foi criado especialmente para lidar com variáveis de localização na Debian 4.0.

Para as mensagens e programas do X-Window usarem em seu idioma local, é preciso colocar as variáveis no arquivo ~/.xserverrc do diretório home de cada usuário e dar a permissão de execução neste arquivo (chmod 755 .xserverrc). Lembre-se de incluir o caminho completo do arquivo executável do seu gerenciador de janelas na última linha deste arquivo (sem o & no final), caso contrário o Xserver será finalizado logo após ler este arquivo.

Abaixo exemplos de localização com as explicações:

  • export LANG=pt_BR - Usa o idioma pt_BR como língua padrão do sistema. Caso o idioma Portugues do Brasil não esteja disponível, C é usado (Inglês).
  • export LANG=C - Usa o idioma Inglês como padrão (é a mesma coisa de não especificar LANG, pois o idioma Inglês é usado como padrão).
  • export LANG=pt_BR:pt_PT:es_ES:C - Usa o idioma Português do Brasil como padrão, caso não esteja disponível usa o Português de Portugal, se não estiver disponível usa o Espanhol e por fim o Inglês.
  • LANG=es_ES ls --help - Executa apenas o comando ls --help usando o idioma es_ES (sem alterar o locale do sistema).

Comando alias

É recomendável usar a variável LC_ALL para especificar o idioma, desta forma todas as outras variáveis (LANG, MESSAGES, LC_MONETARY, LC_NUMERIC, LC_COLLATE, LC_CTYPE e LC_TIME) serão configuradas automaticamente.

A falta de aliases causa desconforto para o adiministrador de sistema, pois são fundamentais. O comando aliases permite criar um atalho ou um apelido a um comando que você usa constantemente, essa ferramenta é muito útil para quem utiliza linhas de comandos frequentemente.

Por exemplo, quem usa muito o comando ls--color=auto para ver a listagem de comandos coloridas e diferenciados pode usar aliases para facilitar digitando: - $ alias ls='ls --color=auto'.

Agora quando você digitar ls, a listagem será mostrada em cores. Para outros comandos tudo é do mesmo modo, apenas é necessário mudar a linha entre as aspas simples e pronto, outro apelido será criado para o comando solicitado. Essa personalizações são feitas de formas muito rápida e simples, tornando necessário somente para a ativação dos comandos um logoff.

Arquivos e Diretórios de Configuração

Arquivo /etc/profile

Este arquivo contém comandos que são executados para todos os usuários do sistema no momento do login. Somente o usuário root pode ter permissão para modificar este arquivo. Este arquivo é lido antes do arquivo de configuração pessoal de cada usuário (.profile(root) e .bash_profile).

Quando é carregado através de um shell que requer login (nome e senha), o bash procura estes arquivos em sequência e executa os comandos contidos, caso existam:

  • /etc/profile
  • ~/.bash_profile
  • ~/.bash_login
  • ~/.profile

Ele interrompe a pesquisa assim que localiza o primeiro arquivo no diretório do usuário (usando a sequência acima). Por exemplo, se você tem o arquivo ~/.bash_login e ~/.bash_profile em seu diretório de usuário, ele processará o /etc/profile e após isto o ~/.bash_profile, mas nunca processará o ~/.bash_login (a menos que o ~/.bash_profile seja apagado ou renomeado).

Caso o bash seja carregado através de um shell que não requer login (um terminal no X, por exemplo), o seguinte arquivo é executado: ~/.bashrc.

Observação: Nos sistemas Debian, o profile do usuário root está configurado no arquivo /root/.profile. A razão disto é porque se o bash for carregado através do comando sh, ele fará a inicialização clássica deste shell lendo primeiro o arquivo /etc/profile e após o ~/.profile e ignorando o .bash_profile e .bashrc que são arquivos de configuração usados somente pelo Bash. Exemplo, inserindo a linha mesg y no arquivo /etc/profile permite que todos os usuários do sistema recebam pedidos de talk de outros usuários. Caso um usuário não quiser receber pedidos de talk, basta somente adicionar a linha mesg n no arquivo pessoal .bash_profile.

Arquivo .bash_profile

Este arquivo reside no diretório pessoal de cada usuário. É executado por shells que usam autenticação (nome e senha). .bash_profile contém comandos que são executados para o usuário no momento do login no sistema após o /etc/profile. Note que este é um arquivo oculto pois tem um "." no inicio do nome.

Por exemplo colocando a linha: alias ls='ls --colors=auto' no .bash_profile, cria um apelido para o comando ls --colors=auto usando ls, assim toda vez que você digitar ls será mostrada a listagem colorida.

Arquivo .bashrc

Possui as mesmas características do .bash_profile mas é executado por shells que não requerem autenticação (como uma seção de terminal no X).

Os comandos deste arquivo são executados no momento que o usuário inicia um shell com as características acima. Note que este é um arquivo oculto pois tem um "." no início do nome.

Arquivo .hushlogin

Deve ser colocado no diretório pessoal do usuário. Este arquivo faz o bash pular as mensagens do /etc/motd, número de e-mails, etc. Exibindo imediatamente o aviso de comando após a digitação da senha.

Arquivo /etc/environment

Armazena as variáveis de ambiente que são exportadas para todo o sistema. Uma variável de ambiente controla o comportamento de um programa, registram detalhes úteis durante a seção do usuário no sistema, especificam o idioma das mensagens do sistema, etc.

Exemplo do conteúdo de um arquivo /etc/environment:

  • LANG=pt_BR
  • LC_ALL=pt_BR
  • LC_MESSAGES=pt_BR

Diretório /etc/skel

Este diretório contém os modelos de arquivos .bash_profile e .bashrc que serão copiados para o diretório pessoal dos usuários no momento que for criada uma conta no sistema. Desta forma você não precisará configurar estes arquivos separadamente para cada usuário.

Criando um desktop linux totalmente personalizado

Introdução

Personalização do sistema é uma tarefa comum de um usuário que deseja alterar aparências dos elementos gráficos para melhor satisfazer suas necessidades. O KDE, Gnome e o Xfce parecem que são complicados inicialmente, mas na verdade são diversos programas que são iniciados em série, podemos substituir esses programas individualmente, ou usar combinações próprias de gerencia de janelas, painéis e áreas de trabalho.

Escolhendo um gerenciador de janelas

É de longe o componente mais importante, ele fornece barras de título para que você possa mover as janelas ao redor da tela junto com botões para executar ações na janela (maximizar, fechar etc).

O gerenciador de janelas também é responsável por identificar as bordas de janelas. Um SO pode trabalhar sem um gerenciador de janelas, mas todas suas funções seriam perdidas.

Aqui, vamos descrever algumas das melhores escolhas e explicar como usá-los . Se você instalá-los através do gestor de pacotes da sua distribuição, você deve ser capaz de fazer logout da sua sessão atual e escolhê-los em sua tela de login. Se você não vê uma entrada para o WM de escolha , tente selecionar uma opção de recurso / terminais na tela de login; algumas distribuições fornecem este.

Você verá uma janela de terminal vazio e você pode digitar o comando apropriado para iniciar o WM , conforme descrito abaixo. Se você não puder obter o WM para começar em tudo, não se preocupe: vamos mostrar-lhe como criar uma nova sessão de tela de login mais tarde.

  • Nome: JWM
  • Web site: joewing.net/projects/jwm/
  • Comando para iniciar : jwm

JMW é muito rápido, por padrão, o menu do programa (também disponível clicando com botão esquerdo na área de trabalho), contém apenas entradas para iniciar um terminal, bloquear a tela e log out. Podemos personalizar tudo isso editando o arquivo /etc/jwm/system.jwmrc.

Escolhendo um painel

Painéis serão responsáveis pelo lançamento de programas, alterações entre janelas e espaço de trabalho, mostrar um relógio, entre outros.

  • Painel usado : Docky
  • web site: www.go-docky.com
  • Comando para iniciar : docky.

Docky deve ser facilmente encontrado em repositórios de pacotes, na maioria das distribuições, usando apenas um Sudo apt-get install Docky. Quando iniciá-lo veremos apenas um painel preto na parte inferior da tela, existe apenas um ícone de uma âncora, é lá que conseguimos configurá-lo.

O painel docky tem a limitação de que quando fechamos um programa o ícone some do nosso painel, porem podemos fixá-lo, assim tornando permanente este programa no painel, existem uma infinidade de painéis para seu ambiente com designer diferentes e uma ou outra função diferente.

Open box

Este arquivo de configuração baseado em XML é de fácil entendimento, e você também pode personalizar fontes de combinações de teclas do seu gerenciador de janelas.

  • Nome: Openbox
  • Web site: www.openbox.org
  • Comando para iniciar : openbox

Openbox é parte da família 'box' de gerenciadores de janelas , que inclui Fluxbox e Blackbox (o original, a partir do qual os outros são derivados).

Escolhendo alguns extras

A maioria dos gerenciadores de janelas leves não incluem nenhuma maneira de definir a imagem de fundo do desktop, então você vai precisar de uma outra ferramenta para isso. O hsetroot é um programa pequeno e simples que está disponível na maioria das distribuições como um pacote autônomo. Para usá-lo fazemos da seguinte forma: hsetroot -full /path/to/imagem.jpg.

Isso coloca a imagem completa na tela, sem quaisquer alterações. Outras opções incluem -Center , -tile e -Preenchimento ( para esticá-la ) . Você também pode usar imagens PNG e outros formatos.

Podemos também incluir um virtual workspace switcher, para isso você precisará obter um autônomo. Não há uma enorme variedade de opções nesta área, mas o que nós recomendamos (porque as suas dependências são mínimas e que funciona quase todos os lugares ) é NetWMPager.

Deveremos ir para o site do projeto de NetWMPager e pegar o código fonte mais recente (2.04 no momento da escrita) e construí-lo como este:

tar xfv netwmpager - 2.04.tar.bz2
cd netwmpager - 2.04 /
./configure
make
sudo make install

Unindo os componentes

Agora podemos colocar os componentes juntos, e fazer um ambiente desktop. Você pode usar qualquer combinação dos programas que desejar, no nosso caso , vamos usar Openbox, Docky , hsetroot , NetWMPager. A primeira coisa a fazer é criar um script que inicia os programas necessários.

Para o nosso desktop personalizado , estamos colocando isso em /bin/usuário-start/usr/local:

#!/bin/bash
docky &
hsetroot -fill /usr/share/backgrounds/space-02.jpg &
netwmpager &
openbox

Os '&' após os comandos aqui significam, executá-los em segundo plano, isto é, por isso, todos eles podem ser executados ao mesmo tempo. É importante que o seu gerenciador de janelas vai para a última linha, sem o '&' , caso contrário, a sessão será fechada imediatamente. Salve tudo e torne o arquivo executável O próximo passo é criar uma sessão de tela de login, então fazer um novo arquivo e chama-lo de: /usr/share/xsessions/usuario.session

Com o seguinte conteúdo, personalizado para a sua configuração:

[Desktop Entry]
Name=Usuário
Comment=Usuário Desktop Environment
Type=XSession
Exec=/usr/local/bin/usuário-start
TryExec=Usuário-start

Salve tudo e saia de sua sessão atual, você deverá ver seu novo gerenciador de login, escolha ele e desfrute do seu novo desktop personalizado.

Referências

  • CREATE a totally custom linux desktop. Disponível em: http://apcmag.com/create-totally-custom-linux-desktop.htm/. Acesso em 26.jul.2016.
  • SILVA, Gleydson Mazioli da. Guia foca. Disponível em: http://www.guiafoca.org/?page_id=326. Acesso em 26.jul.2016