\chapter{Personalização do Sistema}
\label{personalizacao}
A personalização do sistema pode abranger vários aspectos, dependendo da intenção de cada um. É possível criar pacotes para alterar praticamente todas as características do sistema ou para alterar apenas um ponto específico. Em casos de alterações em várias características do sistema, é recomendável tomar cuidado para que o processo não crie problemas com possíveis atualizações do sistema, e nem conflitos de instalação e/ou de arquivos. %Assim também é recomendável que cada tipo de alteração pensada em um pacote seja subdividida, para evitar maiores problemas com a ``debugação" do sistema personalizado. -> o q essa frase quer dizer?

Esta personalização não é obrigatória, mas é um passo altamente recomendável.

\section{O Sistema Base}
A personalização do sistema base pode ser feita criando os seguintes pacotes:
% <<<<<<< .mine
	\begin{itemize}
	\item \verb![suadistribuicao]!-base-files: Esse pacote carrega arquivos instalados por padrão no Debian que podem ser alterados. Arquivos como: bash.bashrc, bash.profile, issue, etc.
% =======
% \begin{itemize}
% 	\item $[sua-distribuicao]$-base-files: Esse pacote carrega arquivos padrões instalados por padrão no Debian que podem ser alterados. Arquivos como: bash.bashrc, bash.profile, issue, etc.
% >>>>>>> .r54
%	 \item [suadistribuicao]-configuracoes: Esse pacote é construido para fazer outras configurações no sistema, como alimentar a base de dados debconf e outros. (pode se utilizar o pacote anterior para essa etapa.) %nao foi usado
% 	\item [suadistribuicao]-base-config:
% <<<<<<< .mine
	\item \verb![suadistribuicao]!-grub-tema: pacote ``estético'' para a personalização do grub.
% =======
% 	\item $[sua-distribuicao]$-grub-tema: pacote ``estético'' para a personalização do grub.
% 	 
% >>>>>>> .r54
\end{itemize}

\subsection{Base-files}
O pacote [suadistribuicao]-base-files será responsável por configurar arquivos fundamentais do sistema, dando nome à distribuição e configurando os repositórios. Para isso basta utilizar o arquivo install dentro do diretório Debian, para colocar os arquivos nos locais corretos. Nesse pacote é recomendável que você coloque os seguintes arquivos:
\begin{itemize} %eu vou descobrir como identar os \item automaticamente no emacs! ;)
\item /etc/apt/sources.list - Configuração dos repositórios que o sistema do usuário utilizará para instalar ou atualizar pacotes. É importante que o seu CD esteja listado nesse arquivo, com o nome especificado corretamente. Você verá sobre como especificar o nome do cd no capítulo \ref{geracao}. A sintaxe desse arquivo é:

{\small
\begin{framed}
\begin{verbatim}
deb [endereço do repositório] [árvore] [seções]
\end{verbatim}
\end{framed}
}

Por exemplo, o sources.list do LibertasBR possui o seguinte conteúdo:

{\small
\begin{framed}
\begin{verbatim}
#Tire o símbolo # da segunda linha abaixo caso deseje adicinar
#a fonte da internet contendo o repositório oficial do LibertasBR
#deb http://www.libertasbr.org.br/libertasbr lbr main contrib non-free

#Tire o símbolo # da segunda linha abaixo caso deseje adicinar
#a fonte da internet contendo o repositório oficial da Debian no Brasil
#deb http://ftp.br.debian.org/debian sarge main contrib non-free

#Digite o texto das duas linhas a seguir sem quebra de linhas e sem a '\'
deb cdrom:[LibertasBR GNU/Linux - Baseado em Sarge - (20050711)]/ \
unstable contrib main

#deb http://security.debian.org/ testing/updates main contrib
\end{verbatim}
% <<<<<<< .mine
\end{framed}
}

\item /etc/issue - Exibe uma mensagem, identificando o sistema. Nesse arquivo é uma boa idéia colocar o nome de sua distribuição. Você pode utilizar as seqüências de escape que são suportadas pelo getty, como por exemplo o $\backslash$n para exibir o hostname %tradução para hostname?
ou o $\backslash$l para exibir o nome do terminal. Para mais informações sobre as seqüências de escape, leia \colorbox{claro}{man getty}.
% =======
% \end{framed}
% \item /etc/issue - Exibe uma mensagem, identificando o sistema. Nesse arquivo é uma boa idéia colocar o nome de sua distribuição. Você pode utilizar as seqüencias $\backslash$char, como o $\backslash$n para iniciar uma nova linha ou o $\backslash$l para
% >>>>>>> .r54

O issue do LibertasBR, por exemplo, possui o seguinte conteúdo:

{\small
\begin{framed}
\begin{verbatim}
LibertasBR GNU/Linux \n \l
\end{verbatim}
\end{framed}
}

%\item /etc/issue.net - 
\item /etc/bash.bashrc - Configuração global do Bash, personalizando o console do usuário. Aqui você poderá configurar o prompt para exibir cores, habilitar o completamento automático de comandos à partir do \verb!<Tab>!, etc. %auto-completação??
%verificar como é o bash.bashrc padrão

O bash.bashrc do LibertasBR, por exemplo, possui o seguinte conteúdo:

{\small
\begin{framed}
\begin{verbatim}
# System-wide .bashrc file for interactive bash(1) shells.

# To enable the settings / commands in this file for login shells as well,
# this file has to be sourced in /etc/profile.

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" -a -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color)
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi
\end{verbatim}
% <<<<<<< .mine
\end{framed}
}
%$

\item /etc/motd - Exibe uma mensagem aos usuários sempre que eles entram no sistema. É um bom arquivo para colocar uma apresentação de sua distribuição, quais são seus objetivos, etc. O motd do LibertasBR, por exemplo, possui o seguinte conteúdo:

{\small
\begin{framed}
\begin{verbatim}
LibertasBR GNU/Linux é uma distribuição baseada no sistema Debian.
Ela é bastante personalizável e pode ser configurada para ser voltada a 
ambientes institucionais, governamentais, de escritório, ensino ou 
para uso pessoal. Sinta-se livre para distribuí-la

Caso queira acessar as licensas de cada programa, acesse-as
em /usr/share/doc/NOME_DO_PROGRAMA/copyright
Maiores informações em: http://www.libertasbr.org.br
\end{verbatim}
\end{framed}
}
% =======
% \end{framed}
% >>>>>>> .r54
%dpkg-divert? preinst, postrm?
\end{itemize}

\subsection{Grub}
Um excelente local para colocar o logo de sua distribuição é a imagem que é exibida no fundo do Grub quando o sistema é iniciado. Para personalizar tal imagem, basta gerar uma imagem no formato splash.xpm.gz e colocá-la (utilizando o pacote [suadistribuicao]-grub-tema) em /boot/grub/ .%criar um pacote [sua distribuição]-grub-tema e a imagem será exibida toda vez que o usuário iniciar o sistema.

Para gerar a imagem, siga os passos:

\begin{itemize}
\item Crie uma imagem no Gimp com dimensões 640x480.
\item Para melhorar o resultado final, retire da sua imagem qualquer cor que seja desnecessária.
\item Vá em Imagem $>$ Modo $>$ Indexado...
\item Na tela que abrir, certifique-se de que está selecionada a opção Gerar Paleta Otimizada e escolha a opção 14 em Número Máximo de Cores. Clique em $<$Ok$>$.
\item Clique com o botão direito na imagem e vá em Arquivo $>$ Salvar Como... Salve o arquivo como splash.xpm
\item Abra um terminal e, no diretório onde você salvou a imagem, execute o comando:
% <<<<<<< .mine

\medskip
\noindent \colorbox{claro}{gzip splash.xpm}
\medskip

\item Será criado um arquivo splash.xpm.gz. Copie-o para a fonte do seu pacote. No install, você deverá configurá-lo para ser instalado em /boot/grub
% =======
% >>>>>>> .r54
% 
% \medskip
% \noindent \colorbox{claro}{gzip splash.xpm}
% \medskip
% 
% \item Será criado um arquivo $splash.xpm.gz$. Copie-o para a fonte do seu pacote. No install, você deverá configurá-lo para ser instalado em /boot/grub
\end{itemize}

\section{Ambientes Gráficos}
\subsection{Personalizando o KDE}
Como todo programa do mundo *NIX, o KDE pode ser configurado a partir de diversos arquivos texto. Portanto, para ter um KDE personalizado em sua distribuição, basta fazer com que seu CD adicione esses arquivos de configuração no local correto do sistema. Para isso, vamos usar o pacote [sua-distribuição]-kde-tema.

\subsubsection{Os Arquivos de Configuração}
Existem arquivos em \ \~{}/.kde/share/config \ que são configurações específicas para cada usuário e arquivos em \ [diretório-do-kde]/share/config \ \footnote{você poderá escolher qual será o diretório principal de configuração do kde no desktop-profiles, mais para frente} que são as configurações globais do sistema.

Como você pode ver ao listar os arquivos do diretório, é possível personalizar não só a aparência do kde, como também seus aplicativos. O arquivo konquerorrc, por exemplo, é responsável pelo comportamento do konqueror.

A estrutura dos arquivos de configuração é a seguinte:

{\small
\begin{framed}
\begin{verbatim}
[seção]
variavel=valor
\end{verbatim}
\end{framed}
}

Faremos uma rápida apresentação dos seis arquivos mais importantes para a personalização do kde: 
\begin{itemize}
\item kdeglobals, 
\item kdesktoprc, 
\item kpersonalizerrc, 
\item ksplashrc, 
\item kwin$<$seuestilodejanela$>$rc, 
\item kwinrc.
\end{itemize}

\subsubsection{kpersonalizerrc}
Ao iniciar o KDE pela primeira vez, abre-se o kpersonalizer, um programa que facilita a configuração do desktop. Porém, em muitas situações, é necessário evitar o seu aparecimento, já que suas configurações globais não serão utilizadas em favorecimento das configurações locais escolhidas no wizard.

Para impedir o aparecimento do kpersonalizer, adote o seguinte estado:
% \begin{framed}

{\small
\begin{framed}
\begin{verbatim}
[General]
FirstLogin=false
\end{verbatim}
\end{framed}
}

\subsubsection{kdeglobals}
Nesse arquivo são colocadas as configurações principais do kde, como o idioma, atalhos de teclado, nome dos ambientes virtuais, configuração do painel, etc.

Para que o kde esteja configurado para o português brasileiro:

{\small
\begin{framed}
\begin{verbatim}
[Locale]                                                             
Country=br                                                           
Language=pt_BR
\end{verbatim}
\end{framed}
}

\subsubsection{ksplashrc}
Nesse arquivo você configura o ksplash, a ``tela de entrada" do kde. Na criação de uma distro, é sempre interessante ter um ksplash personalizado.

Para escolher o tema do ksplash:

{\small
\begin{framed}
\begin{verbatim}
[KSplash]
Theme=Debian-kdeebr
\end{verbatim}
\end{framed}
}

\subsubsection{kdesktoprc}
Nesse arquivo você configura a aparência de seu desktop, como fundo de tela,  organização dos ícones, presença ou não do menu superior, comportamento do preview dos ícones, etc. A diferença desse arquivo para o kdeglobals é que o kdeglobals se relaciona mais a configurações ``internas" do sistema, como idioma, atalhos, etc. Porém, isso não é uma regra rígida, já que o kdeglobals configura as fontes do sistema e o estilo das janelas, o que também pode ser considerado configurações de aparência.

Para alterar o fundo de seu desktop:

{\small
\begin{framed}
\begin{verbatim}
[Desktop0]
Wallpaper=/usr/share/wallpapers/seufundo.jpg
\end{verbatim}
\end{framed}
}

Se quiser ter o mesmo fundo em todos os desktops:
% \begin{framed}

{\small
\begin{framed}
\begin{verbatim}
[Background Common]
CommonDesktop=true
\end{verbatim}
\end{framed}
}

\subsubsection{kwinrc}
O kwin é o gerenciador de janelas do KDE. Isso pode parecer estranho, porque muitas pessoas consideram o KDE como um gerenciador de janelas, quando, na verdade, ele é um ambiente desktop, um grande conjunto de programas que incluem um gerenciador de janelas, o kwin. Portanto, é nesse arquivo que você alterará o comportamento das janelas no KDE.

Para retirar a animação que ocorre ao minimizar uma janela:

{\small
\begin{framed}
\begin{verbatim}
[Windows]
AnimateMinimize=false
\end{verbatim}
\end{framed}
}

\subsubsection{kwin[seuestilodejanela]rc}
Nesse arquivo você deverá configurar como o seu estilo de janela se comportará. Se estiver usando o keramik, por exemplo, o arquivo a ser editado será o kwinkeramikrc. As opções disponíveis variarão de acordo com o estilo de janela que está sendo utilizado.

Para retirar a animação dos botões no plastik:

{\small
\begin{framed}
\begin{verbatim}
[General]
AnimateButtons=false
\end{verbatim}
\end{framed}
}

\subsubsection{Personalizando o KDM}
O KDM é o gerenciador de login do KDE, a ``entrada" do ambiente gráfico. Portanto, é uma boa idéia tê-lo personalizado para a sua distribuição. 

O KDM utiliza dois arquivos para sua configuração: kdmrc e backgroundrc. Eles se localizam em /etc/kde3/kdm. A estrutura desses arquivos é idêntica à dos outros arquivos de configuração do KDE. Porém, não é recomendável alterá-los diretamente, já que qualquer erro pode fazer com que o KDM se comporte de forma inesperada. É recomendável abrir o KDE, personalizar o KDM da forma desejada e utilizar os arquivos de configuração gerados.

Apenas se lembre de retirar a opção DefaultUser da seção [X-*-Greeter], já que ela escolhe um usuário para aparecer por padrão, %explicar melhor?
não fazendo sentido no arquivo de configuração padrão de uma distribuição.

\subsubsection{Personalizando o KSplash}
O KSplash é o programa responsável pela tela de abertura do KDE. Praticamente todas as distribuições utilizam um tema do KSplash personalizado.

Faremos aqui apenas uma breve apresentação sobre a criação de temas para o KSplash. Informações mais detalhadas podem ser obtidas em \textit{How to Make Themes for KSplash} (que pode ser acessado pelo endereço: \url{http://docs.kde.org/development/en/kdebase/ksplashml/themes.html}).

Crie um arquivo chamado $Theme.rc$. Esse será o arquivo de configuração de seu tema para o ksplash. A sintaxe desse arquivo é de uma variável por linha, seguida do valor da variável. A primeira linha deve vir entre colchetes e define o nome do tema. Por exemplo, o arquivo de configuração do tema do LibertasBR possui o seguinte conteúdo:

{\small
\begin{framed}
\begin{verbatim}
#
# LibertasBr KSplash Tema
# 
# 
#

[KSplash Theme: LibertasBR]
Name = Tema do KSplash LibertasBR
Description = Carrega Tema do LibertasBR para o KSplash
Version = 0.1
Author = LibertasBr <www.libertasbr.org.br>
Homepage = http://www.libertasbr.org.br

# Configuracao do tema
Engine = Default

Icons Flashing = false

#Configuracao de mensagem

Message1 = Por Favor Espere! Iniciando KDE!...
Message2 = Carregando! ...
\end{verbatim}
\end{framed}
}

Além desse arquivo, você deverá criar as seguintes imagens png:
\begin{itemize}
  \item splash\_top.png - Define como será a parte de cima da tela de abertura. Exemplo:\\
    \includegraphics{imagens/splash_top.png}
  \item splash\_bottom.png - Define como será a parte de baixo da tela de abertura. Exemplo:\\
    \includegraphics{imagens/splash_bottom.png}
  \item splash\_inactive\_bar.png - Define como será a tela de progresso quando nenhum item estiver carregado. Exemplo:\\
    \includegraphics{imagens/splash_inactive_bar.png}
  \item splash\_active\_bar.png - Define como será a tela de progresso quando todos os itens estiverem carregados. Exemplo:\\
    \includegraphics{imagens/splash_active_bar.png}
\end{itemize}

Essas imagens de exemplo resultarão na seguinte tela de abertura:\\
\includegraphics{imagens/Preview.png}

O install de seu pacote deverá instalar os arquivos do tema em\\
$[$diretorio-do-kde$]$/share/apps/ksplash/Themes/[nome-do-tema], onde o [nome-do-tema] é o definido pela primeira linha de seu arquivo $Theme.rc$. Lembre-se também de adicionar esse tema como o padrão no ksplashrc. O [diretório-do-kde] será definido mais tarde, na seção Desktop-Profiles.

\subsubsection{Dicas}
\begin{itemize}
	\item Personalize o kde da forma que desejar e depois execute o seguinte comando, no diretório \~{}/.kde/share/config:
	
	\medskip
	\noindent \colorbox{claro}{ls -lastr} 
	\medskip
	
	Assim, será possível ver quais arquivos foram alterados. Você pode, inclusive, fazer uma cópia dos arquivos de configuração, personalizar o kde, executar o \colorbox{claro}{ls -lastr} e depois executar o \colorbox{claro}{diff} para ver quais são as diferenças entre o arquivo original e o alterado pela personalização.
	\item Os arquivos de configuração não precisam ter todas as variáveis possíveis. Caso alguma variável não esteja presente, será utilizado o valor padrão.
\end{itemize}

\subsubsection{Desktop-Profiles}
O Desktop-Profiles permite organizar diversos conjuntos de arquivos de configuração para a personalização do desktop. %argh, isso está bem escrito?
É uma boa idéia utilizá-lo para a sua personalização do KDE, de forma a facilitar o possível uso de mais de uma CDD numa mesma máquina. Para isso, basta colocar o pacote desktop-profiles como dependência do seu pacote com a personalização do kde e criar um arquivo [sua-distro].listing que deve ser instalado em /etc/desktop-profiles. Mais informações sobre esse programa podem ser obtidas em \colorbox{claro}{man desktop-profiles}.

Um arquivo [sua-distro].listing com a personalização apenas do KDE pode ter o seguinte conteúdo\footnote{A linha destacada não deve ser quebrada e a '$\backslash$' não deve ser inserida.}:

{\small
\begin{framed}
\begin{verbatim}
[sua-distro];KDE;/usr/share/[sua-distro]-desktop/kde;2;; \
Personalizacao do KDE para a [sua-distro]
\end{verbatim}
\end{framed}
}

Onde /usr/share/[sua-distro]-desktop/kde é o diretório raiz da sua personalização do kde.

\subsubsection{Gerando o Pacote}
Seu pacote terá como função colocar os arquivos de configuração nos locais corretos e adicionar alguma imagem que porventura você deseje utilizar na sua personalização do KDE. Para isso, você pode utilizar o install dentro do diretório debian.

Como existe um conflito entre seu pacote de personalização e os arquivos de configuração que vêm por padrão no KDM, seu preinst e o postrm deverão utilizar o dpkg-divert.

Exemplo do preinst:

{\small
\begin{framed}
\begin{verbatim}
#!/bin/sh -e

if [ install = "$1" ]; then
    dpkg-divert --package libertasbr-kde-tema-lbr --add --rename \
		--divert /etc/kde3/kdm/backgroundrc.kde \
			 /etc/kde3/kdm/backgroundrc
    dpkg-divert --package libertasbr-kde-tema-lbr --add --rename \
		--divert /etc/kde3/kdm/kdmrc.kde \
			 /etc/kde3/kdm/kdmrc
fi
\end{verbatim}
\end{framed}
}

Exemplo do postrm:
% <<<<<<< .mine


{\small
\begin{framed}
% =======
% \begin{framed}
% >>>>>>> .r54
\begin{verbatim}
#!/bin/sh -e

if [ remove = "$1" ]; then
    dpkg-divert --package libertasbr-kde-tema-lbr --remove --rename \
                --divert /etc/kde3/kdm/backgroundrc.kde \
                         /etc/kde3/kdm/backgroundrc
    dpkg-divert --package libertasbr-kde-tema-lbr --remove --rename \
                --divert /etc/kde3/kdm/kdmrc.kde \
                         /etc/kde3/kdm/kdmrc
fi
\end{verbatim}
\end{framed}
}
