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.
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 ..
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.
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
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ą.
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.
Czy byłoby możliwe stworzenie (lub dostosowanie) Breeze do stylu lub sposobu pracy, jaki ma Oxygen?
Czy ktoś ma pojęcie, co stanie się z qtcurve?
Qtcurve-qt5 działa doskonale od dłuższego czasu. Jak zwykle pojawi się nowa wersja KDE.
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...
Jestem twórcą zorzy polarnej? O_o;
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
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.