Easy Channel
O Easy Channel é o instalador de pacotes especiais (complexos, restritos, fontes) do Epidemic GNU/Linux.

Projetado para ser graficamente bem estruturado e
ao mesmo tempo flexível, ele foi desenvolvido em C++, sob a forma de um módulo do KControl (Centro de Controle do KDE) e utiliza os
conceitos de um Script Runner,
para permitir que novas tarefas sejam acrescentadas à sua interface, por meio de um simples script bash.
Embora tenha sido desenvolvido para ser um instalador
de pacotes especiais, o Easy Channel pode ser usado para as mais
diversas tarefas, como, por exemplo a configuração ou a manutenção do sistema.
Na verdade, tudo que pode ser
feito por um script bash pode ser feito por uma tarefa
do Easy Channel e é exatamente aí que reside todo o seu
poder.
Desenvolvimento comunitário
Objetivando incentivar, ainda mais, o processo de desenvolvimento comunitário do Epidemic foi adicionada à nova versão do Easy Channel uma via de integração com o Ecommunity.
Ao clicar no nome do autor de uma das tarefas do Easy Channel (item 4 no screenshot acima), é aberta uma janela do Ecommunity com os dados pessoais do autor e uma listagem de tdoas as suas contribuições para o Epidemic, dando-lhe, dessa forma, os devidos créditos.

Criando uma tarefa para o Easy Channel
Criar novas tarefas para o Easy Channel é realmente algo muito simples e pode ser feito por qualquer pessoa que possua algum conhecimento de bash script.
Cada tarefa do Easy Channel é composta por três arquivos:
| Arquivo | Função |
| nome-do-arquivo.eec | Armazena informações sobre a tarefa a ser realiada |
| nome-do-arquivo.html | Descreve de forma detalhada o que é realizado pela tarefa |
| nome-do-arquivo.sh | É o responsável pela realização da tarefa |
Vejamos, por exemplo, a tarefa do Easy Channel responsável pela instalaçao do Skype, uma conhecida aplicação VoIP.
Ela é composta dos arquivos skype.eec, skype.html e skype.sh.
O arquivo skype.eec
Este arquivo é, na verdade, um simples arquivo texto, que possui a seguinte estrutura:
| Autor=james Task=Install Skype Task[pt_BR]=Instala o Skype TaskIcon=skype Section=Network Section[pt_BR]=Internet SectionIcon=network Installed=no |
Cada um dos campos do arquivo skype.eec, esta relacionado com um item da interface gráfica do Easy Channel mostrada no screenshot acima e possui uma finalidade específica:
| Campo | Item | Função |
| Autor | 4 | A função principal deste campo é levar para a interface gráfica do Easy Channel o nome do autor da tarefa, permitindo, desta forma, sua integração com o Ecommunity. |
| Task | 2 | É uma breve descrição da tarefa (por padrão em inglês) |
| Task[pt_BR] | 2 | Utilizado para fins de
internacionalização, é a breve
descrição da tarefa no idioma para o qual a tarefa foi
traduzida. (no caso, para português do Brasil). O Easy channel seleciona automaticamente o idioma do campo Task que será mostrado em sua interface gráfica, de acordo com a linguagem definida no KControl, o Centro de Controle do KDE (e do Epidemic). |
| TaskIcon | 1 | Serve para selecionar o ícone que representará a tarefa na interface do Easy Channel. |
| Section | 6 | Descreve a seção a que pertence a tarefa (por padrão em inglês). |
| Section[pt_BR] | 6 | Utilizado para fins de internacionalização, é a breve descrição da
tarefa no idioma para o qual a tarefa foi traduzida. (no caso, para
português do Brasil). O Easy channel seleciona automaticamente o idioma do campo Task que será mostrado em sua interface gráfica, de acordo com a linguagem definida no KControl. |
| SectionIcon | 5 | Serve para selecionar o ícone que representará, na interface do Easy Channel, a seção a que pertence a tarefa. |
| Installed | 3 | Informa se uma determinada tarefa encontra-se instalada ou não. |
O arquivo skype-en_US.html
O
arquivo skype-en_US corresponde ao item 5na interface gráfica
do Easy Channel. Sua função é exibir uma informação detalhada do
que efetivamente é feito por uma determinada tarefa.
Na
verade, para tornar possível a internacionalização do Easy Channel,
deve existir um arquivo .html para cada idioma em que a tarefa for
traduzida, como, por exemplo o arquivo skype-pt_BR.html.
O Easy Channel se encarrega de selecionar o arquivo .html que será exibido na sua área de informação, de acordo com o idioma selecionado para o sistema, no KControl.
| <a name="top"> <h2><img style="float: left;" alt="icon" src="pics/skype.png" />Skype</h2> <hr> <img alt="screenshot" src="shots/skype-shot.png"> <p> <font face="Verdana, Arial, Helvetica, sans-serif" size="3"> Skype is an VoIP application that allows hold free calls of voice between users and, for a small cost, held Skype links to fixed or mobile phones. <p> Although gratuitous, Skype is not a free software, which has not been previously installed on the Epidemic CD. <p> <b>WARNING:</b> The license for use of Skype is available at the site below and the installation of the Skype by Easy Channel implies in his acceptance. <p> <img style="float: left;" alt="link" src="pics/link.png" /> <a href="http://www.skype.com">www.skype.com</a> </font> |
Embora possa parecer um pouco complicado, à primeira vista, a a
edição deste arquivo é, na verdade, bem simples e pode ser
feita com um editor de texto qualquer, como, por exemplo, o Kwrite.
Apenas os campos em negrito precisam ser modificados para uma nova tarefa.
| Campo | Item | Função |
| skype.png | 7 | Utilizado para escolha do ícone que representará a tarefa na área de informação do Easy Channel. |
| Skype | 8 | Corresponde ao título que irá ser exibido na área de informação do Easy Channel. |
| skype-shot.png | 9 | É opicional e serve para exibir, na área de informação, um pequeno screenshot da aplicação que será instalada pela tarefa. |
| Campo entre as tags <font face> e <img style> | 10 | Corresponde
à descrição propriamente dita da tarefa. |
| http://www.skype.com | 11 | Link para uma página na qual o usuário poderá encontrar mais informações sobre a aplicação instalada pela tarefa. |
O arquivo skype.sh
Este é o rquivo que contém o código que efetivamente realiza a tarefa.
Ele é
composto por apenas duas funções script_install(), onde deve ser
inserido o código bash de instalação da tarefa e script_remove(),
responsável pela remoção da tarefa.
A princípio, toda tarefa
do Easy Channel deve conter um código de remoção que permita ao usuário
voltar á situação anterior caso algo aconteça de errado durante o processo de instalação.
Ressalte-se que apenas o código em negrito no interior das funções script_install() e script_remove() é
que precisa realmente ser alterado para a criação de uma nova
tarefa.
| #!/bin/bash . lib/libeec # Check if a package manager is running eecpmcheck # Check if network is avaliable eecnetcheck # Fixes broken packages apt-get -f install dpkg --configure -a script_install() { # Insert your install code where eecstate "install:`gettext \"Installing Skype...\"`:5" eecprogress 100 eecstate "progress:`gettext \"Enabling unofficial repository...\"`:10" eecaptaddsrc deb http://download.skype.com/linux/repos/debian/ stable non-free eecprogress 100 eecstate "progress:`gettext \"Updating database...\"`:20" eecaptupdate eecprogress 100 eecstate "progress:`gettext \"Installing skype .deb package...\"`:75" eecaptinstall skype eecprogress 100 eecstate "progress:`gettext \"Disabling unofficial repository...\"`:80" eecaptrmsrc eecprogress 100 eecstate "progress:`gettext \"Updating database...\"`:90" eecaptupdate eecprogress 100 eecstate "installed:`gettext \"Installed\"`:100" eecprogress 100 } script_remove() { # Insert your remove code where eecstate "remove:`gettext \"Removing Skype...\"`:20" eecprogress 100 eecstate "progress:`gettext \"Removing skype .deb package...\"`:70" eecaptremove skype eecprogress 100 eecstate "progress:`gettext \"Removing unnecessary .deb packages...\"`:90" eecapautoremove eecprogress 100 eecstate "removed:`gettext \"Removed\"`:100" eecprogress 100 } case "$1" in install) script_install ;; remove) script_remove ;; *) ;; esac |
A
rigor, qualquer comando ou estrutura aceita pelo bash poderia ser usada
no arquivo frostwire.sh, mas como mencionado nos comentários deste
arquivo, existem alguns poucos comandos específiocos do Easy Channel
que devem sempre ser utilizados em substituição aos seus congêneris com
o intuito de permitir uma comunicação efetiva entre o script que está
sendo executado e a interface gráfica do Easy Channel.
| Coamando tradicional | Coamdo do Easy Channel |
| wget | eecdownload |
| apt-get update | eecaptupdate |
| apt-get source | eecaptsource |
| apt-get install | eecaptinstall |
| apt-get remove --purge | eecaptremove |
| apt-get autoremove | eecapautoremove |
| apt-get clean | eecaptclean |
| module-assistant update | eecmaupdate |
| module-assistant prepare | eecmaprepare |
| module-assistant get | eecmaget |
| module-assistant build | eecmabuild |
| module-assistant install | eecmainstall |
Comandos específicos do Easy Channel
| eecpmcheck | Verifica seexiste algum gerenciador de pacotes sendo utilizado |
| eecnetcheck | Verifica se existe uma conexão ativa com a internet |
| eecprogress "icon:`gettext \"message\"`:maxprogress" | |
| Exibe uma mensagem na janela de progresso do Easy Channel | |
| icon | ícone da mensagem (install, installed, remove, removed ou progress) |
| message | Mensagem que será exibida |
| maxprogress | Progresso máximo para uma fase de execução do script |
| eecstate progress | |
| Atualiza o progresso parcial de uma fase de execução do script | |
| progress | progresso parcial (1 a 100) |
| eecinfo info | |
| Exibe uma informação em uma caixa de diálogo | |
| info | Informação a ser exibida |
| eecerror error | |
| Exibe uma mensagem de erro em uma caixa de diálogo | |
| error | Mensagem de erro a ser exibida |
| eecquestion question | |
| Exibe uma pergunta em uma caixa de diálogo | |
| question | Pergunta a ser exibida |
| eecdownload url | |
| Baixa um arquivo da internet | |
| url | url do arquivo a ser baixado |
| eecaptaddsrc src | |
| Insere uma fonte de pacotes no arquivo sources.list | |
| src | Fonte a ser adicionada ao arquivo sources.list |
| eecaptrmsrc |
| Remove todas as fontes de pacotes adicionadas pelo Easy Channel |
| eecaptupdate |
| atualiza as listas de pacotes debian |
| eecaptsource src | |
| Instala um pacote debian | |
| src | Pacote fonte a ser instalado |
| eecaptinstall package | |
| package | Pacote debian aser instado |
| eecaptremove package | |
| Remove um pacote debian | |
| package | Pacote debian a ser removido |
| eecapautoremove |
| Remove pacotes debian desnecessários |
| eecaptclean |
| Limpa o cache de pacotes debian |
| eecmaupdate |
| Atualiza as listas de pacotes disponíveis do Module-Assistant |
| eecmaprepare |
| Prepara o Module-Assistant para a compilação de módulos |
| eecmaget package | |
| Faz o download de um pacote a ser compilado com o Module-Assistant | |
| package | Pacote a ser baixado |
| eecmabuild package | |
| Compila um pacote com o Module-Assistant | |
| package | Pacote a ser compilado |
| eecmainstall package | |
| Instala um pacote com o Module-Assistant | |
| package | Pacote a ser instalado |
| eeckdeusers |
| Lista todos os usuários KDE do sistema |
Testando uma nova tarefa
Para testar uma nova tarefa, copie os arquivos criados para as seguintes diretórios:
| Arquivo | Diretório |
| nome-do-arquivo.eec | /usr/share/apps/easychannel/tasks |
| nome-do-arquivo.sh | usr/share/apps/easychannel/scripts |
| nome-do-arquivo.html | usr/share/apps/easychannel/info |
Abra o Easy Channel e clique em atualizar, para que a nova tarefa seja carregada e tente instalá-la e removê-la.
Se tudo correr bem, mande os arquivos para eectasks@epidemiclinux.org, para que, se aprovada, seja a tarefa acrescentada ao repositório oficial do Easy Channel, podendo assim ser utilizada por todos os demais usuários.
Código fonte
O Easy Channel, assim como todos os demias programas desenvolvidos pela equipe do Epidemic, são livres, disponibilizados sob os termos da GPL.
O código fonte do Easy Channel pode ser obtido no link abaixo:
| Easy Channel 0.2 |
| http://codigolivre.org.br/frs/download.php/6166/easychannel-0.2.tar.gz |



