gtk3-mushrooms, czyli o grzybkowym międzymordziu próbującym przejąć władzę nad światem
Czasem warto puścić wodzę fantazji i zanurzyć się w nieznane tak jak ja, gdy ponad rok temu po raz pierwszy zajrzałem do kodu biblioteki GTK3, napisanego w nieznanym mi języku C. Ciekawość, cierpliwość i wytrwałość doprowadziły mnie do stworzenia nowego, trochę dziwnego projektu programistycznego. Ale zacznijmy od początku…
Czym jest GTK?
GTK to biblioteka programistyczna, rozwijana w ramach projektu GNOME, renderująca interfejs graficzny — przyciski, pola tekstowe, checkboksy, listy rozwijane, tekst w oknach, ogółem: zawartość okien. Na bazie biblioteki GTK działa wiele uniksowych środowisk graficznych takich jak GNOME, XFCE, MATE, Cinnamon; a także wiele aplikacji takich jak GIMP czy Inkscape.
Istnieją dwie stabilne wersje biblioteki: utrzymywana przy życiu, przestarzała GTK2 stworzona w ramach nierozwijanego już GNOME 2, a także GTK3 — najnowsza wersja biblioteki rozwijana przez programistów GNOME 3.
Czemu powstało gtk3-mushrooms?
Na przestrzeni lat twórcy GNOME 3 w bibliotece GTK3 wprowadzili wiele zmian, niektóre z nich były niekorzystne dla zwolenników tradycyjnego pulpitu, nienowoczesnego, niedopasowanego do urządzeń mobilnych. Użytkownikom środowisk takich jak XFCE (a więc również i mnie) zaczęły doskwierać drobne problemy wynikające z nieprzemyślanych decyzji programistów GNOME, którzy do powszechnie stosowanej w różnych środowiskach biblioteki GTK3 wprowadzali rozwiązania adekwatne wyłącznie dla GNOME, ale niemożliwe do łatwego wyłączenia bądź usunięcia.
Niespójny wygląd okien dialogowych, brzydki kolor tła nowo otwartych okien, niespójne dekoracje okien (CSD), głupie komunikaty błędów w konsoli, irytujące zachowanie wyszukiwarki okna wyboru pliku — to tylko kilka drobnych problemów, właściwie nieszkodliwych w codziennej pracy, ale pogarszających spójność i wygodę pracy z perspektywy użytkownika środowiska opartego na technologiach GNOME.
Przez wiele miesięcy unikałem kontaktu z GTK3, używając wyłącznie aplikacji opartych na bibliotekach Qt bądź starszej GTK2 — nawet do tego stopnia, że sam kompilowałem przestarzałe wersje programów z czasów, gdy korzystały jeszcze ze starszej biblioteki.
Jak powstało grzybkowe międzymordzie?
W 2017 roku powoli zacząłem przekonywać się do GTK3. Niektóre usterki tej biblioteki ignorowałem, inne łatałem, instalując spaczowane wersje paczki GTK3 z repozytorium AUR (jako użytkownik systemu Manjaro). Pojawił się jednak prozaiczny problem: interesujące mnie modyfikacje dystrybuowane były przez kilku autorów w kilku oddzielnych paczkach, nie mogłem więc używać ich jednocześnie.
Przyszedł mi do głowy szalony pomysł. Pewnego kwietniowego dnia postanowiłem zajrzeć do kodu biblioteki GTK3 napisanego w języku C. Tak właściwie jestem webmasterem, znam tylko języki webowe, język C jest mi obcy. Nie przeszkodziło mi to jednak w naskrobaniu kilku łat (patchy) do kodu projektu — zmieniały one dokładnie to, czego potrzebowałem.
Aby ułatwić sobie instalację mojej modyfikacji, pierwszy raz w życiu zapoznałem się ze sposobem konstruowania plików PKGBUILD
i paczek AUR Arch Linuksa, przygotowałem paczkę o nazwie gtk3-mushrooms
(wybrana przypadkowo nazwa nawiązuje do mojego dawnego pseudonimu), nakładającą moje modyfikacje na kod najnowszej wtedy wersji biblioteki GTK3, i udostępniłem ją w sieci. Przygotowałem też plik README
dla błądzących po internetach, którzy natrafiliby akurat na moje wypociny.
No i mleczko grzybkowe się rozlało…
Po kilku miłych komentarzach pod paczką AUR uznałem, że może jednak warto byłoby szerzej przedstawić światu moje drobne modyfikacje. Założyłem wątek na forum Manjaro na temat gtk3-mushrooms
. Społeczność forum, a nawet twórcy samego systemu, bardzo pozytywnie przyjęli moją modyfikację. Tak bardzo, że 15 września 2017 roku otrzymałem od jednego z opiekunów Manjaro propozycję umieszczenia mojej modyfikacji w oficjalnym repozytorium tej dystrybucji pod nazwą gtk3-classic
(wow!).
Po pewnych ustaleniach, kilka dni później paczka gtk3-classic
była już dostępna dla użytkowników Manjaro i jest dostępna do dziś. W kolejnych miesiącach o mojej modyfikacji zaczęto wspominać na forach dyskusyjnych, nawet rosyjskojęzycznych, w zgłoszeniach błędów na GitHubie, a nawet w różnych dyskusjach na Reddicie. Niektórzy twórcy wykorzystują moje modyfikacje we własnych paczkach, na przykład w Fedorze.
Upadłem na ryj i przewierciłem się dwa kilometry w dół, gdy dowiedziałem się o szalonym pomyśle jednego z użytkowników dość konserwatywnej dystrybucji — Debiana — by do oficjalnej paczki z biblioteką GTK3 dołączyć też moje patche. Oczywiście opiekun reprezentujący dystrybucję nie zgodził się — na jego miejscu postąpił bym tak samo, ale sam fakt takiego pomysłu mnie zdumiewa.
Dziś zmodyfikowana przeze mnie wersja biblioteki GTK3 używana jest w niektórych społecznościowych odmianach Manjaro i sam boję się myśleć, gdzie jeszcze… ;-)
Paczka gtk3-mushrooms
jest przeze mnie na bieżąco aktualizowana. Większość modyfikacji, które do swojej odmiany biblioteki GTK chciałem wprowadzić, już się w niej znajduje, dlatego rozwój na razie jest zamrożony. Jaka będzie przyszłość grzybkowego GTK3, tego nie wiem. Wiem natomiast tyle, że przypadkiem znowu wyszło mi coś fajnego.
Aktualizacja. Przestałem zajmować się projektem gtk3-mushrooms. Od czerwca 2019 roku ma on nowego opiekuna.
Dodaj komentarz