Migrando para o kmail2

Ok, eu sei, migrar para o kmail2 já é notícia velha, mas somente hoje eu resolvi migrar de vez para o kmail2. Final de contas o Gentoo irá remover os ebuilds do kmail1 em poucos meses então eu não tive muita escolha.

Minha configuração do kmail1 incluía uma conta pop3, uma conta do gmail e alguns diretórios locais. O processo de migração terminou e o aí o nepomuk começou a indexar meus e-mails (a ventoinha do meu notebook gritou por algumas horas hehe). Durante a indexação o kmail2 fechou com a mensagem de erro “Faild to fetch resource collection”. Depois de algums pesquisas no google eu achei esse blog que explica como resolver o problema (é realmente fácil). Depois eu tive um problema de enviar e-mails falhando. A mensagem de erro mencionava o mailfilteragent, que é instalado pelo kmail2 mas iniciado pelo akonadi. Reiniciar o servidor akanodi fez com que ele reconhecesse o novo agent e o problema foi resolvido.

Depois de importar meus diretórios locais manualmente (o processo de migração não faz isso) eu configurei os filtros de e-mail e esperei até que o nepomuk terminasse de indexar os e-mails.

Até agora o kmail2 tem funcionado bem, nenhum crash e tudo funciona praticamente igual ao kmail1. A única exceção é a opção “vá para a próxima mensagem não lida ao entrar em um diretório” que é desabilitada por padrão no kmail2. O Alex Fiestas me ajudou com essa configuração e agora eu consigo fazer com o kmail2 tudo que fazia com o kmail1 :-)

Estou de volta

Depois de um tempo sem postar nada estou aqui de volta. Finalmente arranjei um tempo pra falar um pouco do que ando fazendo. Umas das coisas que fiz para o KDE nesses últimos meses foi trabalhar em uma nova implementação do Ark (o compactador de arquivos do KDE). Esse foi um trabalho pago pela basysKom, que é a empresa para qual trabalho. Mas modificações no Ark já estão no repositório do KDE (branch basyskom). Foram muitas as modificações feitas no Ark e por isso está sendo lento portá-las para a versão “oficial” do ark, para quem quiser testá-las basta fazer:

  • git clone git://anongit.kde.org/ark
  • cd ark
  • git checkout basyskom
  • mkdir build
  • cd build
  • cmake -CMAKE_INSTALL_PREFIX=/usr ../
  • make
  • make install

Essa nova versão precisa do programa p7zip para manipular arquivos .zip e .7z. Mais tarde eu devo fazer outro post mostrando as novas telas do Ark.

Outra coisa que venho trabalhando nos últimos meses é o webkit, corrigindo alguns bugs e fazendo novas implementações, principalmente na área de CSS3 e renderização. Por fim eu tenho corrigido bugs no Plasma NM e no final do ano passado eu fiz push da nova versão do plasmoid usando QML. Essa última notícia também merece outro post separado :-)

Plasma NM: releases

Nestes últimos meses eu lancei algumas versões do Plasma NM (0.9.0, 0.9.0.1, 0.9.0.2 e 0.9.0.3), muitos bugs foram corrigidos e ele tem funcionando bem para a maioria das pessoas (ou isso ou muita gente parou de usá-lo já que o número de bugs reportados diminuiu bastante :-) ). A única exceção é o famigerado bug #283105 (crash enquanto o kwallet pede senha para ativar redes sem fio), que já foi corrigido há meses mas até é reportado, provavelmente porque os usuários não atualizaram suas instalações do Plasma NM. De qualquer forma fica aí a dica para sempre atualizar o Plasma NM antes de reportar um bug.

Plasma NM: nova funcionalidade

Uma funcionalidade a mais implementada no Plasma NM (e um bug a menos). Eu adicionei o botão “Configurar Detalhes a serem Mostrados…” (“Configure Details to Show…” no screenshot abaixo) no módulo de configuração do branch master:

 

clicando nele o editor de detalhes é mostrado (ele ainda está em inglês porque ninguém o traduziou ainda).
O editor é simples de usar, é só clicar em um ítem de qualquer lista e usar as setas “esquerda” e “direita”para movê-lo para outra lista. A lista da esquerda mostrar os detalhes disponíveis mas não selecionados. A lista da direita mostra os detalhes selecionados. Você também  pode mudar a ordem em que os detalhes serão mostrado usando as setas “para cima” e “para baixo”. As modificações são salvas ao se clicar no botão “Ok”. Os detalhes padrões são os mesmos já usado no plasmoid do branch master e nm09, então você não deverá notar nenhuma diferença a menos que use o editor para modificá-lo (na verdade existe algumas pequenas mudanças nos textos da tela de detalhes da interface).
Agora que o editor está implementação eu posso implementar mais detalhes sobre as conexões. Por exemplo, os detalhes na lista “Available” (disponíveis) no screenshot acima são novos no Plasma NM e já funcionam. Se você sentia falta de algum desses detalhes você já pode ativá-los quando instalar a versão master do Plasma NM :-)

QML’izando o Plasma NM

Para quem ainda não sabe uma das minhas idéias de trabalho para o GSoC deste ano foi aceita há algum tempo atrás. O aluno trabalhando no plasmoid QML é o Arthur. Durante o 1o LaKademy em Porto Alegre nós nos encontramos e discutimos detalhes da implementação. Atualmente o plasmoid já implementa boa parte das funcionalidades do plasmoid em C++ que se encontra no branch master do Plasma NM. Quem estiver interessado em ver como ele está pode compilar e instalar o branch chamado “arthur”. É assim que ele se parece:

Bem, eu espero que tudo esteja funcionando ao final do GSoC :-) Um detalhe sobre a implementação é que ela exige kde-runtime 4.9.0 para funcionar. Os componentes QML do 4.8.x não implementam algumas funcionalidades que precisamos. Creio que isso não deva ser um grande problema já que o 4.9.0 está programado para ser lançado daqui menos de duas semanas.

Ok, voltando a postar depois de um tempo. Como já tinha falado antes estou bem ocupado essas últimas semanas e por isso o Plasma NM está meio parado. Uma boa notícia é que a nova tela de shutdown em QML que implementei para o KDE estará na versão 4.9.0 :-D

No início do mês eu fiz o push da implementação que fiz para a basysKom:
A aparência é praticamente a mesma da versão antiga, mas se você programa em QML você pode mudar o tema padrão ou mesmo criar o seu próprio tema. Acho que é possível fazer isso com o Qt Creator também.
O tema padrão está em $(kde4-config –path data –locate ksmserver/themes/default/). Existem quatro arquivos .qml no diretório, um .js e um .desktop também. O main.qml é o mais importante deles. Basicamente o main.qml é a caixa de diálogo de desligamento (shutdown) e a única exigência para ela é emitir os signais abaixo, que são os que realmente acionam as ações:
    signal logoutRequested()
    signal haltRequested()
    signal suspendRequested(int spdMethod)
    signal rebootRequested()
    signal rebootRequested2(int opt)
    signal cancelRequested()
    signal lockScreenRequested()
spdMethod contem um dos valores do enum Solid::PowerManagement::SleepState (StandbyState, SuspendState or HibernateState). StandbyState é raramente usado hoje em dia, mas ainda suportado.
O parâmetro opt em rebootRequested2 contem o índice da opção de boot escolhida no menu de reboot (mais sobre isso adiante). O rebootRequested() reinicia o sistema sem alterar as configurações do grub. Os outros sinais são auto-explicativos.
Algumas informações importantes são passadas como propriedades QML da parte C++ do ksmserver para a caixa de diálogo:
  • bootManager: string identificando o gerenciador de boot instalado no computador (“Grub”, “Grub2″, “Burg”, etc).
  • choose, sdtype, maysd: esses são os mesmos parâmetros (e na mesma ordem) usados em “qdbus org.kde.ksmserver /KSMServer logout x y z” e KWorkSpace::requestShutDown(ShutdownConfirm, ShutdownType, ShutdownMode). Leia /usr/include/kworkspace/kworkspace.h para uma explicação mais longa sobre eles.
  • rebootOptions é um hash (vetor associativo, dicionário). rebootOptions["options"] é um “string list” (lista de strings) contendo os sistemas operacionais configurados no grub. Ele é usado para criar o menu de boot que aparece no screenshot no início deste post. rebootRequested2 passa o índice (começa de zero) deste string list como parâmetro. rebootOptions["default"] é o índice da opção atual selecionada em rebootOptions["options"].
  • ShutdownType e spdMethods são as versões em Javascript dos enums KWorkSpace::ShutdownType (/usr/include/kworkspace/kworkspace.h) e Solid::PowerManagement::SleepState (/usr/include/solid/powermanagement.h). Eles foram adicionados por conveniência para que não seja necessário utilizar valores “hardcoded” nos arquivos .qml.
OBS: Acho que QML não suporta passar variáveis como valores padrão de propriedades entre  { } como na linha abaixo:
contextMenu.append({itemIndex: spdMethods.HibernateState, itemText: i18n(“Suspend to &Disk”)})
spdMethods.HibernateState é igual 4 mas itemIndex retorna o valor 1 quando eu a leio. Tive que utilizar valores hardcoded no menu de shutdown para contornar este problema.

Conexões DSL no Plasma NM

Pra quem precisa configurar conexões DSL no Plasma NM este tutorial é bem explicativo:

http://ubuntuforum-br.org/index.php/topic,90528.msg498098.html#msg498098

Pouco tempo muito trabalho…

Essas últimas semanas as coisas estão bem corridas no trabalho, pouco tempo para outras coisas, inclusive blogar. Como vocês já sabem meu trabalho tem muito a ver com o Plasma Active (site em inglês), a versão 2 dele foi lançada mês passado e estamos trabalhando em novas funcionalidades para a versão 3. Várias propostas de funcionalidades a implementar ou aperfeiçoar estão circulando na lista de discussões do Plasma Active. Na verdade há mais coisas para fazer do que desenvolvedores para implementá-las, então se você é desenvolvedor e está interessado em desenvolver algo para tablets e para o Plasma Active escolha um ítem para implementar.

O Plasma NM está bem parado essas semanas, eu tenho só resolvido alguns poucos bugs, aplicando alguns patches que chegaram até mim (eu fico muito feliz quando isso acontece então continuem enviando patches) e mudando o Plasma NM para usar a API assíncrona do DBus o máximo possível para evitar que as chamadas atrapalhem a fluidez do plasma desktop ou até paralisar o desktop inteiro por alguns segundos,algo relacionado como bug #287002. Esta última parte está pela metade e não sei quando vou poder terminá-la. De qualquer forma essa mudança irá só para o master, ela é bem grande e invasiva, algo que não deve ir para uma versão considerada estável como a do branch nm09.

As mudanças de usabilidade estão paradas também por falta de tempo. Realmente eu estou precisando de ajuda para tocar o Plasma NM pra frente, então se você tem interesse em melhorar o Plasma NM me contate que eu ajudo nos primeiros passos.

Aqueles que usam o branch master do Plasma NM já notaram que comecei enviar as mudanças de usabilidade na interface. Por enquanto as mudanças são bem parecidas com as que anunciei no meu primeiro post sobre elas:

O vídeo pode ser visto no Youtube.

Ainda há mais mudanças para fazer, por exexmplo: 1. Aumentar a altura de cada ítem na lista de conexões (talvez duas linhas por ítem) para deixá-los fáceis de serem pressionados em telas sensíveis ao toque; 2. Adicionar um ítem “Conectar a outra rede” para permitir criar novas conexões ao invés de usar o kcm; 3. Mover o ítem “<hidden network>” para o ítem “Conectar a outra rede”; Encontrar um novo lugar para o checkbox “Habilitar Rede”; 5. Encontrar uma forma de alinhar corretamente os elementos gráficos do plasmoid, QML parece tão mais fácil neste ponto :-/

Eu salvei todos os comentários que recebi sobre a interface do plasmoid. Eu só não tive tempo de avaliar todas elas, então sejam pacientes.

Feliz Natal

Esses dias eu tenho trabalhado mais com o Plasma Active (PA) do que com o Plasma NM. O trabalho no PA está indo bem, essa semana foi mais tranquila já que muita gente está de férias, inclusive boa parte da equipe do PA. Resolvi corrigir o máximo possível de bugs e a semana foi proveitosa, vários bugs corrigidos ou quase totalmente corrigidos.

No Plasma NM as coisas andam meio paradas, o que tem o seu lado bom, o número de bugs reportados está bem parado também. Ou eu estou fazendo um bom trabalho em corrigir os bugs ou o pessoal está desistindo de usá-lo, espero que seja a primeira alternativa hehe. As correções dos problemas reportados pelo Krazy2 terminaram, tem uma lista grande de problemas ainda mas que não tem solução simples e como não consigo fazer o Krazy2 ignorá-los eles vão ficar por lá mesmo.

Semana que vem todo mundo da basysKom está de férias (inclusive eu :-) ), então eu devo me dedicar mais ao Plasma NM antes de voltar ao trabalho no início de janeiro.

Amanhã é noite de Natal então Feliz Natal a todos.