You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tde-i18n/tde-i18n-pt_BR/docs/tdebase/khelpcenter/userguide/under-the-hood.docbook

301 lines
21 KiB

<chapter id="tinkering-under-the-hood">
<!-- Uncomment the <*info> below and add your name to be -->
<!-- credited for writing this section. -->
<!--
<chapterinfo>
<authorgroup>
<author>
<firstname>Your First Name here</firstname>
<surname>Your Surname here </surname>
</author>
</authorgroup>
</chapterinfo>
-->
<title>Trabalhando nos Bastidores do &kde;</title>
<sect1 id="hand-editing-config-files">
<sect1info>
<author><personname> <firstname>Nicolas</firstname> <surname>Goutte</surname> </personname> <email>goutte@kde.org</email> </author>
</sect1info>
<title>Editando Manualmente os Arquivos de Configuração</title>
<sect2 id="hand-editing-intro">
<title>Introdução</title>
<para>No &kde;, os arquivos de configuração são fáceis de alterar com um editor de texto simples como o &kate;, uma vez que que os arquivos de configuração são arquivos de texto.</para>
<para>Um exemplo de um arquivo de texto:</para>
<programlisting>[Geral]
AutoSalvar=1
UltimoArquivo=/var/tmp/teste.txt</programlisting>
<para>Os arquivos de configuração de um usuário estão em <filename class="directory">.kde/share/config</filename> (substitua o <filename>.kde</filename> pela sua variável de ambiente $<envar>TDEHOME</envar>) e os globais estão na sub-pasta <filename class="directory">share/config</filename> do local onde o KDE foi instalado. (Você poderá encontrar esta localização executando o comando <command>tde-config --prefix</command>.) Os seus nomes terminam normalmente em 'rc' (sem um ponto inicial), como por exemplo <filename>kopeterc</filename>.</para>
<warning><para>Contudo, os arquivos de configuração editados manualmente, podem comprometer a estabilidade do seu &kde;. A maioria dos aplicativos não verificam o que lêem dos seus arquivos de configuração e poderão ser prejudicados pelo que obtêm da sua configuração, fazendo com que o aplicativo inclusive estoure.</para></warning>
</sect2>
<sect2 id="hand-editing-backups">
<title>Cópias de Segurança</title>
<para>Por isso, a primeira regra é fazer uma cópia de segurança do seu arquivo antes de modificá-los. A cópia de segurança deverá ser guardada fora de qualquer sub-pasta da <filename class="directory">.kde</filename> (ou da pasta correspondente a $<envar>TDEHOME</envar>). As cópias de segurança são sempre uma boa idéia no caso de uma falha geral do &kde; que destrua os arquivos de configuração importantes (como por exemplo as suas opções do &kmail;, que se encontram no arquivo <filename>kmailrc</filename>). (Uma falha grande dessas não deveria acontecer, mas ainda assim pode ocorrer.)</para>
</sect2>
<sect2 id="hand-editing">
<title>Editando</title>
<para>Assim, por que você mexeria nos arquivos de configuração? Bem, primeiro, é necessário se quiser obrigar o uso do modo KIOSK. Talvez um programador tenha lhe pedido para adicionar um item que o ajude a depurar um erro. Talvez queira recuperar de um problema sem ter que remover toda a pasta <filename class="directory">.kde</filename>. Talvez queira aprender mais sobre os detalhes do &kde;.</para>
<para>De qualquer forma, seja qual for a razão, você poderá desejar modificar manualmente um arquivo de configuração.</para>
<para>Ao planejar editar um arquivo desses, certifique-se que o aplicativo que o usa não está rodando. Se for um dos arquivos de configuração básica, considere editar o arquivo enquanto o todo o &kde; não está rodando.</para>
<para>Está pronto? Faça então uma cópia de segurança (já foi dito alguma vez?), inicie o seu editor favorito (assumiremos que neste caso é o &kate;), abra o arquivo (tenha o cuidado de carregá-lo como UTF-8, uma vez que que o &kate; exibe-o como <quote>utf8</quote>).</para>
<para>Agora você terá um arquivo do tipo:</para>
<programlisting>[Grupo]
Chave1=Valor1
Chave2=Valor2
Chave3=Valor3</programlisting>
<para>Você poderá agora modificá-lo (com cuidado!) e depois salvá-lo (certificando-se novamente que é <acronym>UTF-8</acronym>).</para>
<para>Agora, você poderá testar o aplicativo e, se ele não se executar mais corretamente, feche-o e restaure a cópia de segurança.</para>
<itemizedlist>
<title>Informações Relacionadas</title>
<listitem><para><xref linkend="kde-for-administrators"/> existem mais informações sobre a estrutura de pastas do &kde;, de modo a ajudá-lo a encontrar o arquivo que precisa de editar.</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="scripting-the-desktop">
<title>Programando o Ambiente de Trabalho</title>
<para>O &kde; oferece um sistema de comunicação entre processos poderoso chamado &DCOP;, o Desktop COmmunication Protocol. Usando o &DCOP;, você pode controlar uma grande quantidade de funções do &kde; a partir da linha de comando ou a partir de um programa feito na sua linguagem de programação favorita. Você poderá também obter informações a partir das aplicações do &kde;: por exemplo, vários leitores multimídia do &kde; oferecem métodos para pesquisar por determinada informação no leitor sobre a faixa que está sendo tocada no momento.</para>
<para>Falando de um modo abrangente, cada aplicação do &kde; oferece uma ou mais <firstterm>interfaces</firstterm> de &DCOP; que, por sua vez, oferecem métodos (ou, se preferir, funções) que outra aplicação poderá então invocar. Assim, o primeiro passo ao usar o &DCOP; é descobrir o método apropriado para a tarefa. A forma mais simples de fazer isto é com a interface <application>kdcop</application> para os métodos de &DCOP; disponíveis.</para>
<para>Execute o <application>kdcop</application> a partir de um &konsole; ou da mini-linha de comando (a janela que aparece com o <keycombo action="simul">&Alt;<keycap>F2</keycap> </keycombo>). A janela do <application>kdcop</application> mostra as aplicações que estão rodando no momento e que oferecem interfaces de &DCOP;, usando uma árvore para isso. De um modo geral, a escolha do método correto obriga a alguma pesquisa pela árvore, mas uma sugestão útil é que a interface marcada como <quote>(padrão)</quote>, contém normalmente as funções usadas com mais frequência.</para>
<para>Para testar se a função faz o que desejamos, faça um duplo-clique por exemplo no ítem <guilabel>setColor</guilabel>. Para escolher a cor <varname>c</varname>, clique no botão de seleção de cores e escolha uma. Indique se a cor deverá ser a cor A com a opção para assinalar. Clique <guilabel>OK</guilabel> para ver a cor de fundo modificada.</para>
<para>Para acessar ao método de &DCOP; a partir da sua linguagem de programação favorita, você poderá tanto usar as interfaces de &DCOP; existentes, se estiverem disponíveis no módulo 'tdebindings', ou então invocar a aplicação da linha de comando <command>dcop</command>. Para uma utilização simples, a invocação da aplicação da linha de comando <command>dcop</command> é suficiente. Para invocar um método de &DCOP; desta forma, é necessário indicar a aplicação e a interface que possui o método, o método em si e os argumentos, num formato adequado para a linha de comando.</para>
<para>Nós especificamos a aplicação, a interface e o método exatamente nessa ordem, seguido dos argumentos pela mesma ordem que são apresentados no <application>kdcop</application>. O <command>dcop</command> possui muitas outras opções: dê uma olhada no resultado do <userinput><command>dcop</command> <option>--help</option></userinput>.</para>
<para>Já chega de teoria: está na hora de um exemplo:</para>
<example>
<title>Um Programa de Mudança da Cor de Fundo com o &DCOP;</title>
<para>Com a aplicação da linha de comando <command>dcop</command> e um pouco de Perl, vamos fazer então um pequeno programa que mude lentamente o fundo da tela, percorrendo o espectro de cores.</para>
<para>Em primeiro lugar, nós procuraremos pelo método apropriado com o <application>kdcop</application>. Para este exemplo, encurtaremos a busca e iremos ao método diretamente: o método que desejamos é o <menuchoice><guimenu>kdesktop</guimenu><guisubmenu>KBackgroundIface</guisubmenu><guimenuitem>setColor</guimenuitem> </menuchoice>. Os argumentos e o tipo do valor devolvido da função são mostrados com o estilo da linguagem C++. Para o caso do <methodname>setColor</methodname>, os argumentos são uma cor <varname>c</varname> que define a nova cor de fundo e um valor booleano ('true' ou 'false'), <varname>isColorA</varname>, que define se a cor é a primeira ou a segunda (isto é útil para definir gradientes, por exemplo).</para>
<para>Para usar o método <methodname>setColor</methodname> na linha de comando, usaremos o seguinte: <screen><prompt>%</prompt> <userinput><command>dcop</command> kdesktop KBackgroundIface setColor '#ffffff' false</userinput>
</screen>
</para>
<para>Para indicar a cor, é usado o valor RGB em hexadecimal, como é usado no &HTML;. Repare que ele está delimitado por aspas simples, para proteger o <token>#</token> da linha de comando.</para>
<para>Para descobrir o valor RGB em hexadecimal de uma cor, abra qualquer janela de seleção de cores numa aplicação do &kde; (como, por exemplo, o &kcontrolcenter;, em <menuchoice><guimenu>Aparência &amp; Temas</guimenu><guimenuitem>Cores</guimenuitem> </menuchoice>), selecione a cor que deseja e use o valor indicado no campo de texto <guilabel>HTML</guilabel>.</para>
<para>Assim, isto é tudo que precisamos do &DCOP;; agora, é apenas necessário criar um programa em torno dele. Aqui está uma implementação (muito!) rudimentar: <programlisting><![CDATA[
$min=49; # Valor mínimo da cor R, G ou B
$max=174; # Valor máximo da cor R, G ou B
$passo=5; # Quantidade a incrementar em cada passo e cor
$espera=15; # Intervalo em segundos entre cada iteração
@inicio = ($max, $min, $min);
@cor = @inicio;
while (1) {
foreach (0..5) {
my $qual = $_ % 3; # Qual a cor (R, G ou B) a alterar
my $cima_baixo = $_ % 2; # Se deseja aumentar ou diminuir o valor
do {
if ($cima_baixo == 0) { $cor[$qual]+=$passo; }
if ($cima_baixo == 1) { $cor[$qual]-=$passo; }
my $chamada=sprintf "dcop kdesktop KBackgroundIface setColor '#%x%x%x' true\n", @cor;
system($chamada);
sleep $espera;
} while (($cor[$qual] >= $min) and ($cor[$qual] <= $max));
}
}
]]>
</programlisting>
</para>
<para>Basta executar o programa sem argumentos, para que ele alterne a cor de fundo em um espectro bem definido, até que seja morto. <foreignphrase>Voil&agrave;</foreignphrase>!</para>
</example>
<para>Claro que o Perl não é a única linguagem que você poderá usar para fazer programas com o &DCOP;&mdash;se preferir o 'shell scripting', ele também está disponível:</para>
<example>
<title>Aplicando um fundo da Internet</title>
<para>O seguinte programa obtém a imagem principal da tira de quadrinhos <quote>User Friendly</quote> e coloca-a como papel de parede da área de trabalho, usando as ferramentas normais disponíveis e um pouco de &DCOP;:</para>
<programlisting><![CDATA[
#!/bin/sh
COMICURL=`wget -qO - http://www.userfriendly.org/static/index.html | \
grep Latest | sed -e "s,.*SRC=\",," -e "s,\">.*,,"`
TMPFILE=`mktemp /tmp/$0.XXXXXX` || exit 1
wget -q -O $TMPFILE $COMICURL
dcop kdesktop KBackgroundIface setWallpaper $TMPFILE 1
]]>
</programlisting>
<para>A primeira linha após o '#!/bin/sh' usa o <command>wget</command> e uma mágica das expressões regulares para extrair a localização da imagem do código em &HTML; da página principal. A segunda e terceira linhas irão obter a imagem e, finalmente, o <command>dcop</command> aplica a imagem transferida como papel de parede.</para>
</example>
<!-- <itemizedlist>
<title>Related Information</title>
<listitem><para>to be written</para>
</listitem>
</itemizedlist> -->
</sect1>
<sect1 id="adding-extra-keys">
<title>Adicionando Atalhos de Teclado Extra para o &kde;</title>
<para>Muitos teclados modernos contém teclas adicionais que não estão atribuídas por padrão a nenhuma ação.</para>
<para>As teclas <quote>Multimídia</quote> geram normalmente um sinal e podem simplesmente ser escolhidas como uma combinação de teclas dentro de um aplicativo, como quem escolhe uma tecla qualquer. Algumas das teclas, todavia, não são detectadas e, pressionando-as no <guilabel>Configurar Atalhos</guilabel>, não acontecerá nada.</para>
<para>Alguns portáteis da IBM, por exemplo, possuem teclas adicionais em torno dos cursores esquerdo e direito, e que parecem um <guiicon>Page Left</guiicon> e um <guiicon>Page Right</guiicon>.</para>
<procedure>
<step><para>Use o <command>xev</command> para descobrir o código das teclas. Neste caso, são o 233 e o 234, respectivamente </para></step>
<step><para>Escolha os símbolos das teclas. Existe alguns intervalos que não são usados por padrão, por isso muitos estão livres. Você poderá encontrar a lista em <filename>/usr/X11R6/include/X11/keysymdef.h</filename> (ou o equivalente no seu sistema).</para></step>
<step><para>Crie um arquivo na sua pasta pessoal chamado <filename>.Xmodmap</filename> e adicione o seguinte a ele:</para>
<screen>keycode 233 = Next_Virtual_Screen
keycode 234 = Prev_Virtual_Screen</screen>
</step>
<step><para>Execute o comando <userinput><command>xmodmap</command> <filename>~/.Xmodmap</filename></userinput></para></step>
</procedure>
<para>Neste momento, você deverá ser capaz de executar o <command>xev</command> novamente e ver que as teclas geram agora o símbolo da tecla que atribuiu. Você poderá agora atribuir esses símbolos a qualquer ação, como de costume.</para>
<itemizedlist>
<title>Informações Relacionadas</title>
<listitem><para>A página de manual do <command>xev</command>. Você poderá vê-la digitando <userinput>man:/xev</userinput> numa janela do &konqueror; ou digitando <userinput><command>man</command> xev</userinput> num terminal.</para></listitem>
</itemizedlist>
</sect1>
<sect1 id="keys-for-scripts">
<title>Adicionando Combinações de Teclas às Ações Novas</title>
<para>A maioria das ações do ambiente de trabalho ou dos aplicativos estão imediatamente disponíveis para poder associar-se uma combinação de teclas. Se a ação a que deseja atribuir um atalho foi criada por você ou ainda não esteja disponível, você poderá ainda assim atribuir um atalho.</para>
<para>Para reunir as duas seções anteriores, talvez você queira atribuir uma tecla não usada do seu teclado a um programa ou comando de DCOP. O exemplo aqui será então atribuir as duas teclas que foram adicionadas em <xref linkend="adding-extra-keys"/> para ir para a área de trabalho virtual anterior ou a seguinte, ou seja, duas funções para as quais irá precisar do DCOP (tal como foi descrito em <xref linkend="scripting-the-desktop"/>.</para>
<para>Isto pode ser conseguido facilmente com o seguinte método:</para>
<procedure>
<step>
<para>Abra o &kcontrol; na seção <guilabel>Regional &amp; Acessibilidade</guilabel>, e selecione <guilabel>Ações de Entrada</guilabel></para>
</step>
<step>
<para>Escolha <guibutton>Nova Ação</guibutton></para>
</step>
<step>
<para>Dê um nome à ação nova, &eg; <userinput>Próxima Área de Trabalho Virtual</userinput></para>
</step>
<step>
<para>Selecione o <guilabel>Atalho de teclado -> Comando/URL(simples)</guilabel> para o <guilabel>Tipo de ação:</guilabel></para>
</step>
<step>
<para>Na página do <guilabel>Atalho do Teclado</guilabel>, clique no botão que deseja usar para disparar o comando. Para este exemplo, você iria pressionar a tecla com a imagem do <guiicon>Próxima Página</guiicon> nele. O <keysym>Next_Virtual_Screen</keysym> aparecerá na imagem da tecla.</para>
</step>
<step>
<para>Na página do <guilabel>Configuração do Comando/URL</guilabel>, insira o comando a executar no campo: <userinput><command>dcop twin default nextDesktop</command></userinput></para>
</step>
</procedure>
<para>Repita os passos anteriores com a tecla <keysym>Prev_Virtual_Screen</keysym> key e a ação <userinput><command>dcop twin default previousDesktop</command></userinput>.</para>
<para>Agora, pressionando as teclas <keysym>Prev_Virtual_Screen</keysym> ou <keysym>Next_Virtual_Screen</keysym>, mudará para a área de trabalho virtual anterior ou a próxima, respectivamente.</para>
<para>Obviamente, você poderá atribuir qualquer tecla livre a qualquer ação.</para>
<itemizedlist>
<title>Informações Relacionadas</title>
<listitem><para>Veja a documentação do <application>KHotKeys</application> no &khelpcenter;, ou digitando <userinput>help:/khotkeys</userinput> numa janela do &konqueror;.</para></listitem>
<listitem><para><xref linkend="adding-extra-keys"/></para></listitem>
<listitem><para><xref linkend="scripting-the-desktop"/></para></listitem>
</itemizedlist>
</sect1>
<sect1 id="tdedebugdialog">
<sect1info>
<authorgroup>
<author><personname> <firstname>Adriaan</firstname> <surname>de Groot</surname> </personname> <email>groot@kde.org</email> </author>
</authorgroup>
</sect1info>
<title>&tdedebugdialog; - Controlando o Resultado da Depuração do &kde;</title>
<sect2 id="tdedebugdialog-basic-usage">
<title>Utilização Básica</title>
<para>O &tdedebugdialog; não está no &kmenu; por padrão. Você terá que executá-lo na linha de comando ou na mini-janela de execução de comandos com <userinput><command>tdedebugdialog</command></userinput>. O &tdedebugdialog; mostra uma janela com uma lista grande de áreas de depuração. Cada área tem uma opção que você poderá ligar ou desligar para ativar ou desativar o resultado de depuração dessa parte do &kde;.</para>
<para>A lista de áreas de depuração vem ordenada numericamente, não alfabeticamente, assim o tdeio (127) vem antes do artskde (400). Os números vão até perto de 200 000, mas normalmente só existem 400 áreas. Você não terá que percorrer a lista completa para encontrar a área que precisa. Existe um campo de texto no topo da janela, onde poderá inserir uma parte do nome da área que deseja. A lista de itens que é apresentada é filtrada de modo a incluir apenas as áreas de depuração que contém o texto que introduziu, &eg; se inserir <userinput>k</userinput> não irá filtrar muito mas, se indicar <userinput>kont</userinput>, deverá aparecer apenas as áreas de depuração do &kontact;. Como uma forma mais rápida de ativar ou desativar o resultado de depuração, existe também os botões para <guibutton>selecionar tudo</guibutton> e <guibutton>deselecionar tudo</guibutton>, que fará com que o &kde; produza muitos dados de depuração, ou quase nenhum.</para>
</sect2>
<sect2 id="tdedebugdialog-fullmode">
<title>O TDEDebugDialog no modo completo</title>
<!-- this text partly taken from the tdedebugdialog handbook -->
<para>No modo completo, que é o que irá obter ao executar o TDEDebugDialog como <userinput><command>tdedebugdialog</command> <option>--fullmode</option></userinput>, fica disponível a mesma lista de áreas de depuração, podendo selecionar apenas uma de cada vez numa lista. Você poderá então definir o resultado para os vários tipos de mensagens: Informação, Aviso, Erro e Erro Fatal. Para cada um destes tipos, você poderá escolher para onde são enviadas as mensagens. As opções são:</para>
<para>Arquivo, onde terá que inserir o nome de um arquivo. Ele será escrito na sua pasta $<envar>HOME</envar>.</para>
<para>Caixa de Mensagem. Cada mensagem de depuração é mostrada num diálogo de informação, que você terá que pressionar <guibutton>OK</guibutton> para continuar com o aplicativo.</para>
<para>Linha de Comando, a entrada padrão. As mensagens são impressas no 'stderr' e irão aparecer tanto na janela da linha de comado em que a aplicativo foi iniciado, como no <filename>.xsession-errors</filename>.</para>
<para>Syslog. Isto envia cada mensagem de depuração para a funcionalidade de registro do systema ('syslog'), que poderá efetuar um processamento prévio da mensagem.</para>
<para>Nenhum. Isto elimina o resultado deste tipo de mensagem.</para>
<para>Para as mensagens geradas pelos erros fatais, é normalmente uma má idéia escolher o Nenhum ou o Syslog, uma vez que em ambos os casos poderá não ver a mensagem e o aplicativo que obtenha o erro fatal irá desaparecer sem deixar uma razão do seu desaparecimento. Se o aplicativo desaparecerá ou não no caso de um erro fatal, poderá ser definido na opção <guilabel>Abortar nos erros fatais</guilabel>, que está assinalada por padrão &mdash; mas você poderá esperar ainda que um aplicativo estoure (de forma confusa) se for encontrado ainda um erro.</para>
<!-- Add links to "further reading" here -->
<!-- <itemizedlist>
<title>Related Information</title>
<listitem><para>to be written</para>
</listitem>
</itemizedlist>-->
</sect2>
</sect1>
</chapter>