Breeze: Por que não vem por padrão no KDE 5?

Como já sabemos, o KDE Next (ou KDE 5 como você preferir) foi lançado como estável há poucos dias e entre as novidades que traz, um dos mais comentados é o novo Artwork chamado Breeze.

Brisa

Quem já experimentou esta nova versão ou viu o vídeo, deve ter notado que no caso do decorador de janelas, o que vem por defeito é o Oxygen e não o Breeze. Pois bem Martin Grasslin nos explica em seu blog qual é a razão desta decisão.

Como o artigo é em inglês, tentarei trazer a vocês a ideia fundamental disso.

Por que o Breeze não vem por padrão?

Começo com a explicação de como as decorações das janelas funcionam no KWin 4. O KWin é o chamado re-parenting dos gerenciadores de janelas. Isso significa que a janela gerenciada pelo X11 é colocada em outra janela do X11 que fornece a moldura da janela. No KWin, usamos QWidget para a moldura da janela. Portanto, também estamos restritos ao que QWidget nos fornece ... Nossa solução é interceptar todos os eventos de pintura de decoração em QWidget e suprimi-los, acionar uma repintura do compositor e na etapa de renderização garantir a decoração de uma imagem temporária que então é copiada em uma textura.


A decoração da janela do tema Breeze é baseada no mecanismo de tema Aurorae. Como sou o autor principal de Aurorae, posso dar uma olhada neste post sem me sentir mal por isso 🙂 Aurora foi projetada para ser muito fácil de criar uma decoração e usar os novos recursos de translucidez. Sendo uma solução que poderia ser usada como decoração padrão, mas nunca foi o seu objetivo. A ideia era permitir aos usuários que desejam customizar esse recurso, enquanto a maioria dos usuários pode usar temas nativos mais rápidos. Aurora nunca foi rápida e não será rápida.


Já no KWin 5, o uso de QML é o principal problema que torna o Aurorae difícil de usar. QtQuick usa o Scenegraph e usa QWindows em vez de QWidget. Isso é uma chatice para nossa API baseada em QWidget. Ajustamos o uso interno para suportar decorações baseadas em QWindows, mas esse foi um caminho bastante difícil, pois há diferenças no comportamento das janelas. Como não é mais baseado em QWidget, nosso trapping de evento de pintura está quebrado e precisamos de uma nova solução para ele. E esta solução é ainda mais feia do que a anterior porque o QtQuick está trabalhando atualmente com OpenGL. Devido a limitações no aplicativo OpenGL Qt (pode ser corrigido no Qt 5.4) que não podemos compartilhar com o contexto OpenGL usado pelo QtQuick ... Isso não é apenas uma grande sobrecarga ao copiar o conteúdo da GPU para a RAM e de volta para a GPU, você também está perdendo muita memória. No caso de uma janela maximizada, não é apenas a barra de título, mas a janela inteira. E existe essa sobrecarga para cada janela.


Só isso pode tornar Aurorae totalmente inutilizável. No momento, estou usando o tema Breeze e o KWin precisa de mais de 200 MB de RAM - o que não é realmente aceitável. Mas a situação é ainda pior. Com o QWindows não podemos saber quais áreas foram atualizadas. Assim, quando, por exemplo, um botão é atualizado, temos que redesenhar toda a janela, incluindo a cópia completa do conteúdo da decoração. Isso, especialmente em situações de animação, é um grande problema.


Então, qual é o caminho a seguir? Comecei a implementar uma nova decoração para a API removendo a restrição da decoração baseada em bem-estar do QWidget e ao mesmo tempo comecei a implementar a decoração Breeze com esta nova API. Espero que possamos introduzir isso no KWin 5.1.


E é assim que as coisas são, senhores. Espero que você entenda mais ou menos qual é o problema. Vou perguntar ao Martin se não é mais prático e rápido fazer o tema nativo do Breeze como Oxygen, embora no momento eu não esteja preocupado, Oxygen embora não seja a coisa mais fofa do mundo, tem muitas opções ..


11 comentários, deixe o seu

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   Ivanbarram dito

    Li tudo, mas não entendi nada, estou lento hoje. De qualquer forma, ainda não consigo testar o KDE 5 no meu OpenSUSE 13.1. Isso me quebra por causa de algumas dependências "antigas" que tenho.
    Talvez eu lhe dê outra chance com outro sistema operacional virtual.

    Saudações e obrigado pela contribuição.

    1.    nano dito

      Não é fácil, basicamente tenta explicar que a forma de fazer as implementações é complexa, principalmente para os plugins e que, em essência aurorae é LENTA, muito mais que Oxigênio.

      Não sei, nesse sentido, na parte do decorador de vitrines e tudo o que me parece que

    2.    nano dito

      Não é fácil, basicamente tenta explicar que a forma de fazer as implementações é complexa, principalmente para os plugins e que, em essência aurorae é LENTA, muito mais que Oxigênio.

      Não sei, nesse sentido, na parte do decorador de janelas e tudo o que me parece que o KDE está um passo atrás do GNOME, e cuidado, eu sou um fã do KDE na melhor das hipóteses, só que não é difícil para mim admitir algo quando é verdade.

    3.    Txarran dito

      Sem saber nada sobre isso, o que basicamente entendi é que aurorae (o motor que Breeze usa) agora dá problemas porque o Kwin5 não usa mais qwidget como no kwin4 e as janelas não se comportam da mesma forma. Em vez disso, ele usa QML e QTquick que funcionam diretamente com opengl e, portanto, parece que algumas limitações existentes no qt 5.3 impedem que o mecanismo antigo e seus temas não funcionem bem no novo Kwin.

  2.   mat1986 dito

    Seria viável criar (ou adaptar) o Breeze ao estilo ou forma de trabalho do Oxygen?

  3.   Ñandekuera dito

    Alguém tem ideia do que vai acontecer com qtcurve?

    1.    Txarran dito

      Qtcurve-qt5 tem funcionado perfeitamente há algum tempo. A nova versão do KDE seguirá como sempre.

      1.    aiolia dito

        Já era estranho para mim que em Kaos, que está sempre na vanguarda do presente, testando Kf5 por isso é conhecido no Kaos linux plasma next ou kde 5 oxigênio viria por padrão. Uau, você não sabia que era o criador de Aurorae ...

        1.    Txarran dito

          Eu sou o criador das auroras? O_o;

  4.   Sergio E. Duran dito

    Eu estava criando um substituto para o wind também em aurorae chamado next fresh que mais tarde seria wind fresh mas não posso com a adaptação dos SVGs para o tema, então seu desenvolvimento é inativo, elav se você tiver a oportunidade, eu adoraria que mostre a ele o criador do tema da brisa para ver se eles conseguem transportar a ideia da minha decoração aurora para as decorações nativas do KDE como uma alternativa à decoração da brisa

    https://drive.google.com/file/d/0B6VUkpZzqL7hbk1QbWN6eVcycU0/edit?usp=sharing

  5.   eliotime3000 dito

    Acho que o KDE 5 estará no Fedora, Debian, Slackware e Arch quando eu tiver família e filhos, e tiver cerca de 30 anos.

    Em suma, para continuar aproveitando os pequenos jovens que me restaram.