Breeze: Waarom komt het niet standaard in KDE 5?

Zoals we al weten, is KDE Next (of KDE 5 zoals je wilt) een paar dagen geleden uitgebracht als stabiel en onder de nieuwe functies die het met zich meebrengt, is een van de meest besproken het nieuwe Artwork genaamd Breeze.

Breeze

Degenen die deze nieuwe versie al hebben geprobeerd of de video hebben gezien, hebben misschien gemerkt dat in het geval van de raamdecorateur standaard Oxygen is en niet Breeze. Nou dan Martin Gräßlin legt ons uit op zijn blog Wat is de reden van deze beslissing?

Aangezien het artikel in het Engels is, zal ik proberen u het basisidee hiervan te geven.

Waarom komt Breeze niet standaard?

Ik begin met uit te leggen hoe raamdecoratie werkt in KWin 4. KWin is het zogenaamde re-ouderschap van raambeheerders. Dit betekent dat het door X11 beheerde raam in een ander X11-raam wordt geplaatst dat het raamkozijn levert. In KWin gebruiken we QWidget voor het raamkozijn. We zijn dus ook beperkt tot wat QWidget ons biedt... Onze oplossing is om alle decoratie-verfgebeurtenissen in QWidget te onderscheppen en te onderdrukken, een herschildering van de compositor te activeren en in de weergavestap decoraties te garanderen naar een tijdelijke afbeelding die vervolgens wordt gekopieerd naar een textuur.


De Breeze thema raamdecoratie is gebaseerd op de Aurorae thema engine. Aangezien ik de hoofdauteur ben van Aurorae, kan ik het op deze blogpost plaatsen zonder me er slecht over te voelen 🙂 Aurorae is ontworpen om het heel gemakkelijk te maken om een ​​decoratie te maken en gebruik te maken van de nieuwe doorschijnendheidsfuncties. Een oplossing zijn die standaard als decoratie zou kunnen worden gebruikt, maar het was nooit het doel. Het idee was om gebruikers die deze functie willen aanpassen toe te staan, terwijl de meeste gebruikers de snellere native thema's kunnen gebruiken. Aurorae was nooit snel en zal ook niet snel zijn.


Nu in KWin 5 is het gebruik van QML het grootste probleem dat het moeilijk maakt om Aurorae te gebruiken. QtQuick gebruikt de Scenegraph en gebruikt QWindows in plaats van QWidget. Dat is jammer voor onze op QWidget gebaseerde API. We hebben het interne gebruik aangepast om op QWindows gebaseerde versieringen te ondersteunen, maar dat was nogal een lastige weg, omdat er verschillen zijn in het gedrag van vensters. Omdat het niet langer gebaseerd is op QWidget, breekt onze paint event trapping en hadden we een nieuwe oplossing nodig. En deze oplossing is nog lelijker dan de vorige omdat QtQuick momenteel via OpenGL werkt. Vanwege beperkingen in de OpenGL Qt-implementatie (mogelijk behandeld in Qt 5.4) die we niet kunnen delen met de OpenGL-context die wordt gebruikt door QtQuick... Dit is niet alleen een enorme overhead bij het kopiëren van inhoud van de GPU naar RAM en terug naar de GPU, het verspilt ook veel geheugen. In het geval van een gemaximaliseerd venster is het niet alleen de titelbalk, maar het hele venster. En er is die overhead voor elk raam.


Dat alleen al kan Aurorae totaal onbruikbaar maken. Ik gebruik momenteel het Breeze-thema en KWin heeft meer dan 200 MB RAM nodig - niet echt acceptabel. Maar de situatie is nog erger. Met QWindows komen we niet te weten welke gebieden zijn bijgewerkt. Dus wanneer bijvoorbeeld een knop wordt bijgewerkt, moeten we het hele venster opnieuw schilderen, inclusief de volledige kopie van de decoratie-inhoud. Dat is vooral in animatiesituaties een groot probleem.


Dus wat is de weg te gaan? Ik ben begonnen met het implementeren van een nieuwe decoratie voor de API, waardoor QWidget's beperking van decoratie op basis van welzijn werd opgeheven en tegelijkertijd begon ik Breeze-decoratie te implementeren met deze nieuwe API. Ik hoop dat we dit kunnen introduceren in KWin 5.1.


En zo is het heren. Ik hoop dat je min of meer begrijpt wat het probleem is. Ik ga Martin vragen of het niet praktischer en sneller is om het Breeze-thema native te maken zoals Oxygen, hoewel ik me op dit moment geen zorgen maak, Oxygen hoewel het niet het mooiste ter wereld is, het heeft veel opties..


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   Ivanbarram zei

    Ik heb alles gelezen, maar ik begreep er niets van, ik ben traag vandaag. Ik kan KDE 5 echter nog niet testen op mijn OpenSUSE 13.1. Het breekt me vanwege een aantal "oude" afhankelijkheden die ik heb.
    Misschien geef ik het nog een kans met een ander besturingssysteem in een virtueel besturingssysteem.

    Groetjes en bedankt voor de input.

    1.    nano zei

      Het is gewoon dat het niet gemakkelijk is, het probeert in feite uit te leggen dat de manier om de implementaties uit te voeren complex is, vooral vanwege de plug-ins en dat aurorae in wezen LANGZAAM is, veel meer dan Oxygen.

      Ik weet het in die zin niet in de rol van de raamdecorateur en zo lijkt mij dat

    2.    nano zei

      Het is gewoon dat het niet gemakkelijk is, het probeert in feite uit te leggen dat de manier om de implementaties uit te voeren complex is, vooral vanwege de plug-ins en dat aurorae in wezen LANGZAAM is, veel meer dan Oxygen.

      Ik weet het niet, in die zin, in het deel van de raamdecorateur en zo, het lijkt me dat KDE een stap achterloopt op GNOME, en pas op, ik ben ongelooflijk fan van KDE, het is gewoon dat het niet moeilijk voor mij is om iets toe te geven als het waar is.

    3.    Txarran zei

      Zonder iets over het onderwerp te weten, heb ik in wezen begrepen dat aurorae (de engine die Breeze gebruikt) nu problemen geeft omdat Kwin5 geen qwidget meer gebruikt zoals in kwin4 en de vensters zich niet hetzelfde gedragen. In plaats daarvan gebruikt het QML en QTquick, die direct werken met opengl en dus lijkt het erop dat een aantal bestaande beperkingen in qt 5.3 verhinderen dat de oude engine en thema's ervan niet goed presteren op de nieuwe Kwin.

  2.   mat1986 zei

    Zou het haalbaar zijn om Breeze te creëren (of aan te passen) aan de stijl of manier van werken die Oxygen heeft?

  3.   andekuera zei

    Heeft iemand enig idee wat er gaat gebeuren met qtcurve?

    1.    Txarran zei

      Qtcurve-qt5 werkt al geruime tijd perfect. De nieuwe versie van KDE volgt zoals altijd.

      1.    aiolia zei

        Het leek me al vreemd dat in Kaos, dat altijd in de voorhoede staat van wat actueel is, bij het testen van Kf5 zoals het bekend is in Kaos linux plasma next of kde 5, zuurstof standaard kwam. Wauw, je wist niet dat je de schepper van aurorae was...

        1.    Txarran zei

          Ik ben de maker van aurorae? O_o;

  4.   Sergio E. Duran zei

    Ik was een vervanging voor Breeze aan het maken, ook in aurorae genaamd Next Fresh, wat later Breeze Fresh zou worden, maar ik kan de SVG's niet aanpassen aan het thema, dus de ontwikkeling ervan is inactief, elav als je de kans hebt, zou ik het leuk vinden als je het aan de maker van het Breeze-thema laat zien om te zien of ze het idee van mijn aurorae-decoratie kunnen overbrengen naar de oorspronkelijke decoraties van KDE als alternatief voor de Breeze-decoratie

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

  5.   eliotime3000 zei

    Ik denk dat KDE 5 op Fedora, Debian, Slackware en Arch zal zijn als ik een gezin en kinderen heb, en ik begin dertig ben.

    Kortom, om te blijven profiteren van de kleine jeugd die ik nog heb.