Plasma 5.8

Nawiązując do dawnych, odległych już czasów (2008-2010… pamięta to ktoś?), kiedy na bieżąco testowałem kolejne wersje KDE4, postanowiłem podzielić się swoimi wrażeniami i obserwacjami z migracji z KDE4 na jego następczynię, czyli Plasmę.

Na wstępie dodam, że jest to moje trzecie podejście. Pierwszy raz za czasów Plasmy 5.3 był koszmarny. Więcej nie działało niż działało, a całe środowisko sypało się, kiedy tylko krzywo na nie spojrzałem. Drugie podejście w kwietniu bieżącego roku z Plasmą 5.6 wypadło zdecydowanie lepiej, ale ostatecznie drobne, ale uciążliwe niedoróbki, braki funkcjonalności i okazjonalne problemy ze stabilnością, zmusiły mnie do powrotu do KDE4 (dzięki Bogu za snapshoty btrfs). Czarę goryczy przelał moment, kiedy po zmianie motywu pulpitu na slim-glow i przelogowaniu całe środowisko po prostu przestało działać, zamierając przy starcie.

Minęło jednak parę miesięcy, a w międzyczasie w Gentoo KDE4 stało się obywatelem drugiej kategorii, którego z każdą aktualizacją coraz trudniej było utrzymać przy życiu. Chcąc nie chcąc, byłem więc zmuszony do stawienia czoła Plasmie. I wiecie co? Tym razem używam jej od tygodnia i nic nie doprowadziło mnie do szału. Ba, pod pewnymi względami czuję nawet, że pracuje się szybciej i przyjemniej. Nie ma oczywiście róży bez kolców, ale o tym już poniżej.

Zacznijmy jednak od pozytywów. Ze stabilnością jest zdecydowanie lepiej. Zniknęły uporczywe crashe przy dłuższym używaniu środowiska. Wygląd i funkcjonalność również udało mi się doprowadzić mniej więcej do stanu sprzed migracji. Jako motyw ustawiłem slim-glow i tym razem po restarcie nic nie wybuchło. Stary plasmoid półki z Lancelota zastąpiłem Places Widget. Stary plasmoid powiadamiający o nowej poczcie również znalazł godnego zastępcę w postaci Gmail Feed. Najtrudniejszym orzechem do zgryzienia był aplet Superkaramby, którego używałem od dawna pod KDE4 i służył mi za bardziej nowoczesną wersję conky’ego. Niestety, Superkaramba nie jest już wspierana. Na szczęście udało mi się znaleźć coś o nazwie Awesome Widget, który pozwala w bardzo elastyczny sposób za pomocą szablonów HTML-a i funkcji zbudować lekki plasmoid monitora systemu. I choć ma parę niedoróbek, które musiałem obejść, po odpowiednim ustawieniu działa doskonale.

Wracając do innych komponentów, niektóre z ustawień skrótów klawiszowych i efektów pulpitu musiałem ustawić na nowo, ale nie zajęło mi to wiele czasu. Tym razem w końcu poprawnie działają gesty myszki, co cieszy mnie o tyle, że ich używanie weszło do mojej pamięci mięśniowej. Nie byłem do końca zadowolony z wyglądu zegara, gdyż nie oferował formatu daty, do którego przywykłem, plus brakowało mu marginesów, przez co praktycznie zlewał się z sąsiednimi ikonami. Na szczęście dzięki temu, że plasmoidy są teraz pisane w QML-u, wystarczyło zmienić jedynie trzy linijki w kodzie. Podobnie KRunner nie ma już opcji zmiany pozycji, w jakiej się wyświetla, ale to udało się obejść prostą regułą kwina ustawiającą okno. Menedżer zadań w trybie samych ikon ma zdecydowanie mniej opcji niż jego odpowiednik z KDE4 i nieco różni się zachowaniem, ale na szczęście szybko przyzwyczaiłem się do używania jego nowego wcielenia. EDIT: Powiadomienia w nowym środowisku zachowują się też nieco inaczej w kwestii przechowywania historii. O ile poprzednia Plasma przechowywała historię wszystkich powiadomień, przez co czasem gromadziło się ich sporo, nowa idzie w drugą stronę i loguje tylko powiadomienia oznaczone przez dany program jako „persistent”. Osobiście nie byłem do końca przekonany tą zmianą, więc popełniłem kolejną łatkę.

Spotkało mnie jednak parę niemiłych niespodzianek. Po aktualizacji KDE Frameworks do 5.21 z jakiegoś powodu kwallet zwariował i zawiesił jednorazowo Plasmę przy następnym starcie, przy okazji gubiąc hasła w nim zapisane. Nie jestem pewien jaka była dokładna przyczyna, ale problem więcej się nie powtórzył. Idąc dalej, Konsole czasem wyświetla niewłaściwe menu kontekstowe, ale nie na tyle często, by było to naprawdę uciążliwe. Plasmoid informacji o urządzeniach ma jedną brakującą ikonkę od montowania urządzeń, jeśli używa się innego motywu ikon niż Breeze albo Breeze Dark, co jednak łatwo udało mi się obejść kopiując ikonę emblems/emblem-mounted w miejsce actions/media-mount. Przejściowo byłem też pozbawiony wsparcia dla MTP, ale jak się okazało kio-mtp zostało wcielone w kio-extras i była to kwestia dodania jednej flagi. Chromium nie wykrywa już poprawnie środowiska, przez co okna Otwórz/Zapisz nie są natywnymi z Plasmy, ale nie jest to wielki problem, szczególnie, że ich wsparcie poprzednio nieco kulało. Kończąc tę wyliczankę, SDDM z jakiegoś powodu działa naprawdę ociężale na grafice Intela. Jeszcze szukam na to obejścia. Jedną z opcji byłaby zamiana go na lightdm, który jednak integruje się nieco gorzej ze środowiskiem.

Może to efekt placebo, ale wszystko zdaje się działać zauważalnie płynniej i zużywać mniej ramu. To pierwsze to jednak kwestia subiektywna, a nie mam żadnych konkretnych liczb na poparcie drugiego. Ponadto w aplikacjach zauważyłem trochę drobnych, ale miłych usprawnień w różnych miejscach, jak choćby pasek nawigacyjny z miniaturą struktury pliku przy podglądzie plików tekstowych. Oczywiście aplikacje oparte na Qt4/KDE4 nadal działają, ale na moim systemie z takowych pozostaje na dobrą sprawę tylko k3b, a jeszcze parę dni temu Okular, ale ten w międzyczasie doczekał się oficjalnego wydania portu pod KDE Frameworks. Przy okazji bardzo cieszy mnie rozbicie monolitu, jakim było kdelibs, na wiele mniejszych paczek z lżejszymi i bardziej logicznymi zależnościami.

Reasumując, tym razem moje wrażenia są zdecydowanie pozytywne i nie rozważam powrotu do KDE4. Mam jedynie nadzieję, że niewielkie niedoróbki i braki zostaną kiedyś naprawione. Ale w międzyczasie mam środowisko graficzne, które po drobnych poprawkach działa bardzo w porządku i nie przeszkadza mi w pracy.

EDIT: Zapomniałem wspomnieć o jednej rzeczy. Początkowo plasmoid do montowania urządzeń (device notifier) odmawiał posłuszeństwa i marudził na brak wystarczających uprawnień. Montowanie w Dolphinie działało jednak poprawnie. Teoretycznie mój użytkownik był dodany do odpowiedniej grupy, a consolekit działał poprawnie. Ostatecznie śledźstwo zaprowadziło mnie do tego rozwiązania i szczęśliwie był to koniec problemu. Nie jest to problem stricte z nową Plasmą, raczej coś z konfiguracją mojego systemu, ale tak czy inaczej, gdyby ktoś nadział się na niego, zaręczam, że rozwiązanie podane w powyższym linku działa.

Intel Skylake pod Gentoo, czyli moje boje

W ostatnim czasie postanowiłem wymienić swój leciwy już sprzęt na coś bardziej współczesnego. Po paru tygodniach czytania recenzji, zasięgania języka u różnych ludzi wybór padł na jeszcze świeżą platformę Skylake od Intela, mimo nieco niepokającym doniesieniom o bugach w mikrokodzie. Pomijając mniej ciekawe z punktu widzenia tego wpisu elementy, ostateczny komputer został wyposażony w czterordzeniowego i5-6400, płytę Gigabyte Z170-HD3P (celowo model z sieciówką Realteka, bo te w przeciwieństwie do Intela działają out-of-the-box na odpowiednio nowych wersjach kernela) i SSD Samsung Evo 850 EVO (120GB, bo tyle swobodnie starcza mi na system, a dane trzymam na klasycznym, talerzowym HDD). Celem tego wpisu będzie zrelacjonowanie ogólnych wrażeń, kompatybilności i paru niespodzianek, które spotkały mnie mimo starannego rekonesansu. Cóż, zaczynajmy!

Czytaj dalej…

pwn2dict 2.6

Mam przyjemność ogłosić kolejną, niespodziewaną aktualizację pwn2dict. Jeden z czytelników zgłosił w ostatnim czasie usterkę związaną z sortowaniem haseł, która uniemożliwiała korzystanie z przekonwertowanych słowników w aplikacji koreader na Kindle. Problem istniał od samego początku, ale że w niczym nie przeszkadzał StarDictowi, dopiero teraz wyszedł na światło dzienne. Niemniej poprawka była banalna, więc bug jest już załatany. Przy okazji poprawiłem też inne ostrzeżenie wyświetlane przez stardict-verify, dotyczące spacji na końcu słów. Nowa wersja jest już dostępna do pobrania poniżej.

Przy okazji chciałbym ogłosić przenosiny bloga na adres mzblog.grajpopolsku.pl. Były one wymuszone pewnymi zmianami w konfiguracji serwera. Stare linki przekierowują, rzecz jasna, w odpowiednie miejsce, a żadne treści nie zostały utracone w wyniku migracji. W praktyce jest to jedynie zmiana kosmetyczna.

W każdym razie, oto lista zmian w pwn2dict 2.6:
– Poprawiony porządek sortowania haseł. Teraz jest on w 100% zgodny z oczekiwanym przez StarDicta.
– Skrypt usuwa teraz bezużyteczne spacje, które mogły pojawić się na końcu słów.

Linki:
pwn2dict, Instrukcja obsługi

Przenosiny repozytorium

W związku z tym, że Gitorious z końcem maja kończy swoją działalność, postanowiłem przenieść repozytorium pwn2dict na serwis GitLab. Nowy adres repozytorium to: http://gitlab.com/pwn2dict/pwn2dict. Wszelkie zmiany i poprawki od tej pory będą trafiały tam w pierwszej kolejności i rzecz jasna tutaj.

Korzystając z okazji naprawiłem dostrzeżoną przez czytelnika regresję w ostatniej wersji, która uniemożliwiała konwersję do formatu dictd. Poprawioną wersję można pobrać ze wspomnianego wyżej repozytorium, jak i tutaj. Ze względu na drobność usterki nie podbijałem wersji skryptu.

pwn2dict 2.5

Od ostatniej aktualizacji skryptu wiele wody w Wiśle upłynęło. Przez ten czas (ponad dwa lata!) uzbierało się parę stosunkowo drobnych, ale cennych zmian. Były one wprawdzie dostępne dla wszystkich w repozytorium na Gitoriousie, ale uznałem, że najwyższy czas wydać je oficjalnie, podbijając jednocześnie wersję skryptu.

Oto zmiany, które znajdziecie w pwn2dict 2.5:
– Poprawiona kompatybilność z Pythonem 3.2+
– Wsparcie dla słownika Portal PWN v1.2 2003
– Przyśpieszenie działania skryptu nawet o 30%

Linki:
pwn2dict, Instrukcja obsługi

pwn2dict 2.4

Po paromiesięcznym przestoju przyszedł czas na kolejną, może nieco drobniejszą niż poprzednim razem, aktualizację pwn2dict. Prawdę mówiąc, zmiany były już gotowe w grudniu, ale przez natłok innych zajęć nie miałem czasu wydać nowej wersji.

Nową funkcją jest wstępny eksport do formatu dictd obsługiwanego między innymi przez program S60Dict. Konwersji do tego nowo dodanego formatu można dokonać za pomocą nowego przełącznika -d / –dictd, analogicznie do formatu tabfile. Korzystając z okazji poprawiłem też jeden drobny bug, który mógł wywołać problemy z indeksem haseł, jeśli z jakiejś przyczyny słownik zawierał puste definicje.

Poza tym, w tak zwanym międzyczasie postanowiłem utworzyć dla skryptu repozytorium na Gitoriousie. Jeśli z jakiegoś powodu potrzebujecie którejś starszej wersji albo chcecie prześledzić zmiany, teraz macie taką możliwość. Umieściłem tam też przetłumaczoną na angielski instrukcję użytkowania skryptu. Podczas prac nad skryptem i tak używałem Gita, więc był to dość oczywisty wybór.

Linki:
pwn2dict, Instrukcja obsługi

pwn2dict 2.3

Minęło ledwie półtora tygodnia od poprzedniej wersji, a już mam dla was kolejną i jest to aktualizacja dość znaczna!

Otóż jeden z czytelników zgłosił bowiem problem z bazami rosyjsko-polskiego słownika, uniemożliwiający otwarcie niektórych haseł. Co ciekawe, problem występował tylko pod StarDictem, ale nie pod GoldenDictem. Otóż, okazuje się, że mój kod sortujący hasła przez drobne niedopatrzenie układał hasła nieco inaczej niż tego oczekuje StarDict. Problem na dobrą sprawę nie występował przy polskich i łacińskich znakach, ale przy cyrylicy już tak. Potem okazało się, że podobny problem dotyka również umlautów w niemiecko-polskim słowniku (o którym więcej za chwilę).

Sama tamta zmiana jest moim zdaniem na tyle istotna, żeby podbić numer wersji, ale na tym jeszcze nie koniec! Poprawiając tamten błąd dostałem też weny do uproszczenia kawałków kodu zapewniającego działanie pod obydwoma wersjami Pythona, dzięki czemu skrypt jest trochę ładniejszy 🙂

Korzystając z dobrej passy przyśpieszyłem też kod formatujący hasła i definicje. Teraz standardowe encje nie są ręcznie formatowane. Skrypt zmalał o jakieś 150 linii i zyskał do 14% szybkości, jeśli wierzyć testom.

Na koniec (last but not least), dzięki wymianie zrzutów ekranu i fragmentów haseł z czytelnikiem (podziękowania dla Przemysława Kaplona) dodałem też wsparcie dla (jeszcze ciepłego!) niemiecko-polskiego i polsko-niemieckiego słownika PWN!

Potraktujcie to jako świąteczny prezent ode mnie 🙂

Skrócona lista zmian:
* Prawidłowe sortowanie haseł słownika rosyjsko-polskiego i niemiecko-polskiego w StarDict
* Optymalizacja szybkości – do 14% szybciej
* Obsługa niemiecko-polskiego i polsko-niemieckiego słownika PWN

Linki:
pwn2dict, Instrukcja obsługi

GCC 4.5.1

Jakieś trzy tygodnie temu po uprzednim przestudiowaniu listy otwartych bugów postanowiłem zaktualizować GCC do wersji 4.5.1 i przekompilować system. Pamiętając burzliwą aktualizację do 4.1 i nieco mniej burzliwą do 4.3, spodziewałem się wielu kłód rzuconych pod nogi. Tymczasem była to prawdopodobnie najbardziej bezbolesna aktualizacja kompilatora, jaką kiedykolwiek przeprowadzałem. Może miałem dużo szczęścia, a może trafiłem po prostu na właściwy moment, ale z radością donoszę, że ŻADEN spośród ponad 950 pakietów w moim systemie nie wysypał się z powodu nowego GCC. Jedynym pakietem, który padł była stepmania w wersji cvs z zaprzyjaźnionego overlaya, a przyczyną usterki były zmiany w API ffmpeg, nie zaś zmiany w nowej wersji GCC. Cóż, wersja stabilna z portage i tak działa lepiej 🙂 Krótko mówiąc, aktualizacja poszła jak po maśle. Nie zauważyłem w systemie żadnych niepokojących objawów. Nie uraczyłem też żadnych ewidentnych zysków z aktualizacji, ale cóż… 🙂

pwn2dict 2.2

Prawie równo pół roku od ostatniej aktualizacji udostępniam nową wersję skryptu. Główną zmianą jest tym razem dodanie pełnego wsparcia dla formatu PWN w wersji 2003, używanego w płytach dołączanych kiedyś do papierowych wersji słowników. Konwersja została sprawdzona na Słowniku Poprawnej Polszczyzny i Słowniku Języka Polskiego PWN (podziękowania dla Jakuba Cholewki za informację zwrotną), a także angielsko-polskim słowniku PWN Oxford 2003. Ponadto zostały poprawione usterki kosmetyczne w słowniku Słowniku Języka Polskiego w wersji dołączonej do Gazety Wyborczej. Jeśli ktoś z was dysponuje którymś z tych słowników i wcześniej nie mógł ich przekonwertować, teraz nic nie powinno stanąć na przeszkodzie 🙂

Nową wersję można pobrać tutaj bądź tam gdzie zwykle.

Czcionki w Operze 10.50+

Jako użytkownik Opery od wersji 4.x poczułem się mocno zmartwiony niefrasobliwym podejściem deweloperów Opera Software do kwestii czcionek w linuksowej wersji tej przeglądarki. Mniej więcej odkąd zaczęły się ukazywać pierwsze testowe buildy nowej serii Opery, cierpliwie czekam aż czcionki zaczną wyglądać "po ludzku". W różnych miejscach globalnej sieci informatycznej (w tym w komentarzach na blogu Desktop Team) nie brak zgłoszeń, że czcionki wyglądają gorzej niż w Operze 10.10, ale poprawek ani widu ani słychu. Problem dotyczy osób takich jak ja, które korzystają z nieco bardziej wyszukanych ustawień czcionek, konkretnie subpixel hintingu. Przyczyn zaś należy dopatrywać się w rozwodzie nowej serii Opery z Qt na rzecz własnego toolkitu. Wprawdzie deweloperom przyświecał szczytny cel – przyśpieszenie działania przeglądarki i lepsza integracja z różnymi środowiskami, ale w wyniku migracji nie obyło się bez różnych mniej lub bardziej uciążliwych usterek – w tym właśnie związanych z czcionkami. Opóźnienie w pracach nad wersją linuksową dodatkowo zaogniło problem.

W każdym razie, przez długi czas właśnie czcionki zmuszały mnie do pozostania przy Operze 10.1x. Wiedząc jednak, że nie mogę trzymać się jej bez końca, ostatnio zdecydowałem na aktualizację. Oczywiście zgodnie z oczekiwaniami wersja 10.62 nadal ignorowała ustawienia fontconfiga. Doświadczalnie doszedłem do wniosku, że istota problemu tkwi w wymuszaniu natywnego hintingu (BCI) zamiast autohintingu. Który z nich jest lepszy to kwestia gustu, ale osobiście przyzwyczaiłem się do tego, co oferuje autohinter, i na czymkolwiek innym moje oczy odczuwają wyraźne zmęczenie.

Biorąc pod uwagę opieszałość Opera Software i bezużyteczność ustawień fontconfig, postanowiłem zaatakować poziom wyżej – w kodzie źródłowym freetype. Mimo, że pierwszy raz zapuszczałem się w te tereny, sprawa okazała się dość prosta. Kilka linii kodu wystarczyło, żeby wymusić na stałe autohinter. Później dopisałem jeszcze warunek, żeby nie był używany dla grubych fontów (robią się trochę ZA grube).

Nie będzie to w żadnym razie kompletne HOWTO (zakładam, że czytający będą wiedzieli co z tym zrobić), ale oto co zrobiłem:
1) Skompilowałem freetype z zaaplikowaną moją łatką.
2) Skopiowałem /usr/lib/libfreetype.so.6.6.0 z tak spreparowanej paczki w bezpieczne miejsce.
3) W skrypcie /usr/bin/opera przed ostatnią linią dopisałem:

export LD_PRELOAD="/ścieżka/do/załatanego/libfreetype.so"

To może niezbyt eleganckie obejście dało mi w końcu jakąś namiastkę tego, czego szukałem – czcionki, od których nie krwawią mi oczy 😛 Mam wrażenie, że nie wszystko wygląda tak samo jak kiedyś (nowa wersja jakoś inaczej dobiera rozmiary czcionek i nie tylko), ale efekt jest bardzo bliski temu, do czego przywykłem. Mam nadzieję, że komuś te informacje pomogą w uniknięciu wizyty u okulisty 🙂 Tymczasem nadal będę czekał na wersję Opery, w która będzie respektowała bez żadnych obejść ustawienia czcionek.