Breeze: Dlaczego w KDE 5 nie jest to opcja domyślna?

Jak już wiemy, KDE Next (lub KDE 5, jak wolisz) zostało wydane jako stabilne kilka dni temu, a wśród nowych funkcji, które przynosi, jedną z najczęściej omawianych jest nowa grafika o nazwie Breeze.

Wietrzyk

Ci, którzy już wypróbowali tę nową wersję lub widzieli wideo, mogli zauważyć, że w przypadku dekoratora okien domyślnie pojawia się Oxygen, a nie Breeze. No więc Martin Gräßlin wyjaśnia nam na swoim blogu Jaki jest powód tej decyzji?

Ponieważ artykuł jest w języku angielskim, postaram się przedstawić podstawową ideę tego.

Dlaczego Breeze nie pojawia się domyślnie?

Zacznę od wyjaśnienia, jak działają dekoracje okien w KWin 4. KWin to tak zwane ponowne rodzicielstwo menedżerów okien. Oznacza to, że okno zarządzane przez X11 jest umieszczane w innym oknie X11, które zapewnia ramkę okna. W KWin używamy QWidget dla ramki okna. Dlatego jesteśmy również ograniczeni do tego, co zapewnia nam QWidget... Naszym rozwiązaniem jest przechwycenie wszystkich zdarzeń malowania dekoracji w QWidget i stłumienie ich, wywołanie przemalowania kompozytora i na etapie renderowania zagwarantowanie dekoracji tymczasowemu obrazowi, który następnie jest kopiowany do tekstury.


Dekoracja okna motywu Breeze jest oparta na silniku motywu Aurorae. Ponieważ jestem głównym autorem Aurorae, mogę umieścić go w tym poście na blogu, nie czując się z tego powodu źle 🙂 Aurorae została zaprojektowana tak, aby bardzo ułatwić tworzenie dekoracji i korzystanie z nowych funkcji przezroczystości. Bycie rozwiązaniem, które domyślnie mogłoby służyć jako dekoracja, ale nigdy nie było to jego celem. Pomysł polegał na umożliwieniu użytkownikom, którzy chcą dostosować tę funkcję, podczas gdy większość użytkowników może korzystać z szybszych motywów natywnych. Aurorae nigdy nie była szybka i szybko nie będzie.


Obecnie w KWin 5 używanie QML jest głównym problemem utrudniającym korzystanie z Aurorae. QtQuick używa Scenegraph i używa QWindows zamiast QWidget. To kłopot dla naszego API opartego na QWidget. Dostosowaliśmy użycie wewnętrzne do obsługi dekoracji opartych na QWindows, ale była to dość trudna droga, ponieważ istnieją różnice w zachowaniu okien. Ponieważ nie jest już oparty na QWidget, nasze zalewkowanie zdarzeń malowania się psuje i potrzebowaliśmy nowej poprawki. A to rozwiązanie jest jeszcze brzydsze niż poprzednie, ponieważ QtQuick działa obecnie przez OpenGL. Ze względu na ograniczenia w implementacji OpenGL Qt (które mogą zostać rozwiązane w Qt 5.4) nie możemy udostępniać kontekstu OpenGL używanego przez QtQuick... To nie tylko ogromny narzut podczas kopiowania zawartości z GPU do RAM iz powrotem do GPU, tracisz też dużo pamięci. W przypadku zmaksymalizowanego okna to nie tylko pasek tytułu, ale całe okno. I jest to narzut dla każdego okna.


Samo to może sprawić, że Aurorae będzie całkowicie bezużyteczna. Obecnie używam motywu Breeze, a KWin potrzebuje więcej niż 200 MB pamięci RAM - nie do przyjęcia. Ale sytuacja jest jeszcze gorsza. W QWindows nie wiemy, które obszary zostały zaktualizowane. Kiedy więc np. aktualizowany jest przycisk, musimy przemalować całe okno, łącznie z pełną kopią zawartości dekoracji. To, zwłaszcza w sytuacjach związanych z animacją, stanowi duży problem.


Więc jaka jest droga? Zacząłem wdrażać nową dekorację dla API, usuwając ograniczenia QWidget dotyczące dekoracji w oparciu o dobre samopoczucie i jednocześnie zacząłem wdrażać dekorację Breeze z tym nowym API. Mam nadzieję, że uda nam się to wprowadzić w KWin 5.1.


I tak to jest panowie. Mam nadzieję, że mniej więcej rozumiesz, na czym polega problem. Zamierzam zapytać Martina, czy nie jest to bardziej praktyczne i szybsze, aby motyw Breeze był natywny jak Oxygen, chociaż w tej chwili się nie martwię, Tlen, chociaż nie jest najpiękniejszą rzeczą na świecie, ma wiele opcje ..


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   iwanbarram powiedział

    Przeczytałem wszystko, ale nic nie zrozumiałem, jestem dzisiaj powolny. Jednak nie mogę jeszcze przetestować KDE 5 na moim OpenSUSE 13.1. Łamie mnie to z powodu niektórych „starych” zależności, które mam.
    Może dam mu jeszcze jedną szansę z innym systemem operacyjnym w wirtualnym.

    Pozdrawiam i dziękuję za wpis.

    1.    nano powiedział

      Po prostu nie jest to łatwe, w zasadzie próbuje wyjaśnić, że sposób wykonania implementacji jest złożony, zwłaszcza z powodu wtyczek i że w istocie aurorae jest WOLNY, znacznie bardziej niż Oxygen.

      Nie wiem, w tym sensie, w roli dekoratora okien i wszystko, co wydaje mi się, że

    2.    nano powiedział

      Po prostu nie jest to łatwe, w zasadzie próbuje wyjaśnić, że sposób wykonania implementacji jest złożony, zwłaszcza z powodu wtyczek i że w istocie aurorae jest WOLNY, znacznie bardziej niż Oxygen.

      Nie wiem, w tym sensie, w części dekoratora okien i tak dalej, wydaje mi się, że KDE jest o krok za GNOME, a uwaga, jestem fanem KDE jak diabli, po prostu nie jest Trudno mi przyznać się do czegoś, co jest prawdą.

    3.    Txarran powiedział

      Nie wiedząc nic na ten temat, w zasadzie zrozumiałem, że aurorae (silnik, którego używa Breeze) sprawia teraz problemy, ponieważ Kwin5 nie używa już qwidget jak w kwin4, a okna nie zachowują się tak samo. Zamiast tego używa QML i QTquick, które działają bezpośrednio z OpenGL, więc wydaje się, że niektóre istniejące ograniczenia w qt 5.3 zapobiegają temu, że stary silnik i motywy z niego nie działają dobrze na nowym Kwin.

  2.   mat1986 powiedział

    Czy byłoby możliwe stworzenie (lub dostosowanie) Breeze do stylu lub sposobu pracy, jaki ma Oxygen?

  3.   andekuera powiedział

    Czy ktoś ma pojęcie, co stanie się z qtcurve?

    1.    Txarran powiedział

      Qtcurve-qt5 działa doskonale od dłuższego czasu. Jak zwykle pojawi się nowa wersja KDE.

      1.    aiolia powiedział

        Już wydawało mi się dziwne, że w Kaosie, który zawsze jest w czołówce tego, co aktualne, testując Kf5, jak to się nazywa w Kaosie linux, plazma next czy kde 5, tlen szedł domyślnie. Wow, nie wiedziałeś, że jesteś twórcą zorzy polarnej...

        1.    Txarran powiedział

          Jestem twórcą zorzy polarnej? O_o;

  4.   Sergio E. Duran powiedział

    Tworzyłem zamiennik bryzy również w aurorae o nazwie next fresh, który później byłby bryzą świeży, ale nie mogę dostosować plików SVG do motywu, więc jego rozwój jest nieaktywny, elav, jeśli masz okazję, chciałbym, żebyś to pokazał do twórcy motywu bryzy, aby zobaczył, czy mogą przenieść pomysł mojej dekoracji zorzy polarnej do natywnych dekoracji KDE jako alternatywy dla dekoracji bryzy

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

  5.   Eliotime3000 powiedział

    Myślę, że KDE 5 będzie na Fedorze, Debianie, Slackware i Arch, kiedy będę miał rodzinę i dzieci, a będę miał około 30 lat.

    Krótko mówiąc, aby nadal wykorzystywać tę małą młodość, która mi pozostała.