Czy jest możliwe napisać samemu swoje środowisko graficzne na Linuxa?

0

Chcę nauczyć się programowania w Pythonie i Go, bo chciałbym osiągnąć coś w życiu.

Mój największy cel przyszłościowy, to tworzenie swojego DE na Linuxa, ponieważ mam swoją wizję, jak takie środowisko powinno wyglądać.

Na zagranicznych forach były już takie pytania dot. samodzielnego pisania takich rzeczy, ale ludzie odpowiadali, że tworzenie samemu DE zajęłoby kilkanaście lat. Tylko, że jako przykłady ludzie podawali Gnome lub KDE.

Gnome i KDE, to bardzo potężne i rozbudowane DE, więc rzeczywiście tyle mogłoby to potrwać, ale czy to samo można by było powiedzieć o tworzeniu, DE prostego do bólu? I to jeszcze pisanego w Pythonie lub Go? DE są pisane w C lub C++, które są przecież o wiele bardziej trudniejsze i rozbudowane.

Jeśli o chodzi o totalną prostotę DE, to chciałbym stworzyć ładne i przyjemne środowisko, przeznaczone dla zwyczajnych użytkowników. Nawet taka Krystyna czy Janusz, nie musieliby specjalnie się go uczyć.

Nie było więc konfigurowalne w sumie to prawie wcale.

Np. WM:

  • Miałby tylko jeden styl okien. Co najwyżej mogłoby by się zmienić kolor titlebara.
  • Jedynymi efektami graficznymi WM były by, cienie, jeden rodzaj animacji min, max, close i przezroczystość okna, podczas jego przesuwania. Jedyna opcja konfiguracji, to wyłączenie animacji.

Tak samo by było z taskbarem, file managerem i innymi opcjami.

0

Czy jest możliwe napisać samemu swoje środowisko graficzne na Linuxa?

Jest możliwe, ale faktycznie zajmie bardzo dużo czasu. Obawiam się że w Pythonie nie da rady bo to musi być jakaś natywna aplikacja.

2
DrewnianaPanela napisał(a):

Jeśli o chodzi o totalną prostotę DE, to chciałbym stworzyć ładne i przyjemne środowisko, przeznaczone dla zwyczajnych użytkowników. Nawet taka Krystyna czy Janusz, nie musieliby specjalnie się go uczyć.

każdy nowego środowiska musi się uczyć. Różnica polega na tym że Krystyna czy Janusz nie umieją się nauczyć samodzielnie. W skrajnych przypadkach trzeba im mówić że jak kończy się blat to należy podnieść myszkę, położyć na środku biurka i można przesuwać kursor dalej :/

4

prostego do bólu?

Większość aplikacji zaczyna prosta do bólu :-)

  • Potem przychodzi pan Foo, który chciałby z eksploratora plików mieć dostęp do NASa i cyk tracisz miesiąc na integrację z Sambą

  • Potem przychodzi pani Bar, która chciałaby mieć możliwość konfigurowania drukarek i cyk tracisz miesiąc na integrację z CUPS.

  • Potem przychodzi pan Zar, który chciałby móc kontrolować jasność ekranu za pomocą klawiszy Fn (co na Linuksie jest odpowiedzialnością DM właśnie) i cyk tracisz tydzień na sprawdzenie dlaczego light -A nie działa przy danej kombinacji kernel + matryca.

Nie oznacza to oczywiście, że nie powinieneś próbować - jak najbardziej zachęcam; pamiętaj jednak, że niektóre aplikacje są "rozlazłe" dlatego właśnie, że istnieją ludzie korzystający z tych różnych dziwnych ficzerów. Fakt, że Ty nie dostrzegasz przydatności konfigurowania np. domyślnego rozmiaru papieru dla drukarki nie oznacza, że jest to zbędny kod.

4

Nie jest to temat nierealny, ale baaardzo pracochłonny. Zobacz, ile osób tworzy aktualnie dostępne środowiska:

https://mate-desktop.org/pl/team/
https://github.com/orgs/linuxmint/people
https://www.gnome.org/about/

Poza tym pamiętaj, że takie środowisko to jest ciągła walka. Nie wiem, czy chcesz to zrobić w ramach własnej satysfakcji, czy naprawdę liczysz, że ludzie będą z tego korzystać, ale dla jednej osoby będzie to mega trudne do ogarnięcia. Nie wystarczy tylko takie środowisko stworzyć, trzeba potem je aktualizować, usuwać zgłoszone problemy, zapewnić kompatybilność z nowszymi wersjami systemów itp. Zresztą w temacie kompatybilności - pamiętaj, że dystrybucji linuksa jest (takich sensownych i posiadających jakiś udział na rynku) kilkanaście, więc już samo zapewnienie, żeby Twoje okienka się odpalały i działały poprawnie na każdej z nich to będzie niezły wyczyn. Powtarzam - nie jest to nierealne, ale bardzo kiepsko to widzę jako zajęcie dla jednej osoby.

A co do Pythona - może się przydać ;) Za Wikipedią: Cinnamon (desktop environment) is written in C (GTK), JavaScript, and Python. Czyli pewnie sam rdzeń jest pisany w C, natomiast różne dodatki, efekty itp. mogą być pisane w innych językach. Tak czy siak - raczej w samym Pajtonie tego nie da się zrobić.

1

@DrewnianaPanela zauważ że z jakichś konkretnych powodów to wszystko jest pisane w C a nie w Go (patrz wydajność). Ale jak chcesz nikt ci nie zabroni próbować :D

2
hzmzp napisał(a):

@DrewnianaPanela zauważ że z jakichś konkretnych powodów to wszystko jest pisane w C a nie w Go (patrz wydajność). Ale jak chcesz nikt ci nie zabroni próbować :D

Moze to prawda ale tez Go wtedy nie istnialo

1

@stivens: w Go masz szybciej wolny kod, w C++ masz wolniej szybszy kod. Taka śmieszna zależność.

2

Nie dość, że tworzenie takiego tworu to bardzo dużo pracy, to wymaga sporych umiejętności w projektowaniu nie tylko GUI ale i kodu. Jest od groma sytuacji, które trzeba przewidzieć - jak nie teraz to wyjdą później, same, w postaci bugów. @cerrato wspomniał, że środowiska tworzy dużo osób. Nie zapominajmy, że te zespoły korzystają już z gotowych bibliotek, np. KDE z Qt. To z jednej strony upraszcza sprawę., ale żeby nie było łatwo biblioteka też potrafi płatać figle.

4

Jest to możliwe ale nie dla osoby która dopiero zaczyna programowanie, zwłaszcza że znajomość OpenGL/Vulkan/SDL jest tutaj mocno przydatna.
Windows Manager wykonuje operacje na "niskim" poziomie wraz z komunikacją z serwerem wyświetlania z tego też powodu język C tutaj jest językiem dominującym.
Był sobie taki WM way cooler pod serwer wayland, początkowo w "całości" był napisany w rust, niestety ale okazało się to syzyfową pracą (komunikacja z wayland jest łatwiejsza gdy piszesz kod w C) więc autor postanowił przepisać go na C -> http://way-cooler.org/blog/2019/04/29/rewriting-way-cooler-in-c.html

Jeśli mimo tego chcesz dalej spróbować tego tematu, to musisz się zastanowić pod jaki serwer wyświetlania będziesz pisał:

Samo DE to po prostu WM + aplikacje (np. eksplorator plików, display manager, ...)

Edit:
Do tego jeszcze musisz jakość komunikować się z sprzętem (poprzez np. D-bus)

Edit2:
W przypadku x.org przy pomocy pythona także da się stworzyć WM:
https://github.com/kathamer/ZeroWM
http://www.qtile.org/

1

@DrewnianaPanela: Byłem tam gdzie ty jesteś, stawiając sobie na początku dalekosiężne cele, nie umiejąc jeszcze programować, ale mając dużo zapału. Fajnie, że masz cel, ale dam ci rady, które sam bym chciał dostać dawno temu.

  • Traktuj język programowania jak narzędzie. Piłą gwoździa wbijać raczej nie będziesz, tak samo tutaj. By jednak nauczyć się wybrać konkretne narzędzie do konkretnej pracy potrzeba doświadczenia, czyli w naszym wypadku czasu i masy nieudanych projektów.
  • Ogarnij podstawy, naucz się algorytmów, które uważane są za "core", pobaw się stronami typu codewars gdzie będziesz mógł przećwiczyć swoje umiejętności. Nic na szybko i nic na siłę. Polecam wejść sobie na kanał Gynvael Coldwind i obejrzeć streamy z tworzenia terminala, zobaczysz wtedy co mniej więcej cię czeka.
  • Jeśli już serio chcesz się trzymać swojego tematu, to już teraz rozpisz sobie najlepiej na kartce, plan ramowy (plan 5-letni, oczywiście może on trwać krócej, ja go znam pod taką nazwą), co kiedy chcesz osiągnąć. I dzięki temu szybciej będziesz mógł się wycofać z nietrafionego pomysłu i mniej czasu stracić.
  • Nie wiem ile masz lat, ale przy uczelniach są koła naukowe (by do nich należeć nie musisz być studentem), w wielu miastach są też hackerspaces gdzie spotkasz osoby, które mogą ci pomóc i rozwiązać masę twoich problemów w czasie rzeczywistym, a niekiedy razem z tobą tworzyć coś nowego.
1

Potem przychodzi pan Foo, który chciałby z eksploratora plików mieć dostęp do NASa i cyk tracisz miesiąc na integrację z Sambą

Potem przychodzi pani Bar, która chciałaby mieć możliwość konfigurowania drukarek i cyk tracisz miesiąc na integrację z CUPS.

Potem przychodzi pan Zar, który chciałby móc kontrolować jasność ekranu za pomocą klawiszy Fn (co na Linuksie jest odpowiedzialnością DM właśnie) i cyk tracisz tydzień na sprawdzenie dlaczego light -A nie działa przy danej kombinacji kernel + matryca.

Masz rację o takich rzeczach to nie pomyślałem. Ale z drugiej strony zauważyłem, że te mniejsze, nowsze środowiska "podkradały" pewne elementy z innych środowisk np. obsługę drukarek czy mikser dźwięku, więc chyba na początku można też było by "podkradać", a gdyby pozyskało się jakichś programistów, to z czasem tworzyło by się własne rozwiązania.


Te moje zamiary zabrzmiały, jakbym chciał do końca żywota wszystko pisać wszystko sam. Ja raczej chciałbym stworzyć podwaliny DE, by pokazać swoje koncepcje, jak powinno wyglądać DE dla zwykłego użytkownika. I gdyby to komuś spodobało, to pozyskać w jakiś sposób programistów.

Uważam, że wszystkie obecne Linuxowe DE są złe i nieintuicyjne dla zwykłego użytkownika. One są raczej pisane pod bardziej zaawansowanych użytkowników.

Np. obecne GNOME chce uchodzić za łatwe do obsługi i to się jak dla mnie chwali. Ale jest trochę ich rewolucji, które są beznadziejne np. gnome shell, który jest nieintuicyjny i niewygodny. Wiem, że można sobie to skonfigurować poprzez edytowanie plików i instalowanie pluginów, ale takie rzeczy nie są dla osoby, która używa komputera do przeglądania internetu, słuchania muzyki czy grania w jakieś tam gry.

Wielu ludzi mówi, że Linux nie nadaje do użytku domowego, bo za trudny lub niestabilny. A ja uważam, że świetnie się nadaje, tylko trzeba stworzyć środowisko, które:

  • Ma ładny i estetyczny wygląd np. jak elementaryOs czy Deepin.
  • Jest w miarę lekkie, jak XFCE czy LXDE a nie kobylaste jak KDE czy nawet GNOME.
  • Jest stabilne a nie sypiące błędami, jak te kobyły, szczególnie KDE(te środowisko zawsze było u mnie niestabilne już od wersji 3, dlatego go nie cierpię)
  • Jest proste w obsłudze i mające możliwość, aby podstawowe rzeczy dało się wyklikać(Nie jestem poweruserem, z komputera korzystam intensywnie od 15 lat, ale w żadnym Windowsie od w. 98 nigdy nie używałem konsoli, a w Linuxie korzystam z niej i to nawet w Ubuntu czy Linux Mint, by te systemy skonfigurować)
  • Jest prosto napisane i ma nieskomplikowaną budowę, przez co łatwiej je utrzymać, w przeciwieństwie do kobył.
  • Nie produkuje rewolucji, które mocno zmieniają korzystanie z komputera jak gnome shell.

Podobnie powinno postąpić się z kernelem Linuxa.

Ktoś pewnie powie, bym te swoje koncepcje przedstawiał ludziom, którzy już piszą te środowiska jak KDE i inni. Tylko, że bardzo rzadko oni biorą pod uwagę pomysły którzy ludzie im zgłaszają. A z resztą moje koncepcje i tak by nie przeszły, bo są kontrowersyjne dla tych bardziej zaawansowanych użytkowników, którzy twierdzą, że siła Linuxa, to właśnie olbrzymia konfigurowalność.

Wszyscy piszecie, że to jest bardzo trudna robota. To może lepszym rozwiązaniem, byłby fork innego środowiska lub fork obecnego i niezależnego WM oraz fork file managera i taskbara, aby następnie je scalić? LXDE po części taki był.

Tak w ogóle, to jak powstają i realizują się tego typu projekty jeśli są tworzone przez osoby prywatne lub przez zapaleńców? Ktoś lub kilka osób jeśli wymyśla jakiś projekt, to przecież musi skądś pozyskać programistów. Wątpię czy ci programiści chcieli by robić za darmo, skoro to są pracochłonne rzeczy. Wątpię też, że pomysłodawcy będą im płacić z własnych pieniędzy, skoro to małe sumy nie będą. A widzę, że różnymi, poważniejszymi projektami nie zajmują się właśnie "starsi", tylko właśnie młodziki, którzy raczej do bogatych nie należą. :P

2

Polecam Cinnamon ;)

0

Cinnamon mi się podoba, ale to jeszcze nie to. Ja mam na myśli połączenie interfejsu z ChromeOS, XFCE i pewne elementy z cynamona.

2

Jeden śmiałek z reddit napisał menadżer okien Penrose dla Linux w języku Rust. Bądź raczej przepisał go z C do Rust. Szkoda, że wybrał Xorg zamiast Waylanda. Ale jest już menadżer okien Sway korzystający z kompozytora Wayland.
https ://www .reddit.com/r/rust/comments/htny8s/penrose_a_tiling_window_manager_in_the_style_of/

Który z was programistów podejmie się przepisania najlżejszego, najmniejszego menadżera okien TinyWM z C na Rust i Wayland? Zobaczcie TinyWM ma bardzo małą ilość linijek kodu, bez komentarzy będzie mniej niż 30 linijek. Do tego składnia Rust jest bardziej zwięzła niż ta z C.
https ://www .dobreprogramy.pl/mati75/Tinywm-najlzejszy-menadzer-okien-na-swiecie-Czesc,21316.html

1

@DrewnianaPanela: Twórcy istniejących środowisk nie są w stanie fizycznie wysłuchać każdego pomysłu a już nie ma co mówić o wdrożeniu. Nawet najlepszy na świecie pomysł wymaga pracy, co sam zauważyłeś. Jeśli środowisko nabierało kształtu latami to nie zmieni się z dnia na dzień pod wpływem jednego niepoprawnego romantyka. Fork to całkiem dobry pomysł. Można rzucić publicznie kod źródłowy i binarki, ludzie sami ocenią czy chcą używać.
Mi po godzinach czasem się nie chce uporządkować folderów na dysku a co dopiero walczyć z nowym środowiskiem. Nie dlatego, że nie lubię albo nie umiem programować, ale czasem trzeba odpocząć i mieć jakieś inne zainteresowania.

0

Spróbuj coś mniej ambitnego np. mid-alpha software, przykład platform-native GUI library for Go oparte o https://github.com/andlabs/libui

3
DrewnianaPanela napisał(a):

Chcę nauczyć się programowania w Pythonie i Go, bo chciałbym osiągnąć coś w życiu.

Mój największy cel przyszłościowy, to tworzenie swojego DE na Linuxa, ponieważ mam swoją wizję, jak takie środowisko powinno wyglądać.

Nie programuję pod Linuxem, ale mam doświadczenia z Windowsa.
Jak byłem młody :-), to prowadziłem firmę zajmującą się komputerowym składem dokumentów. Podobnie jak Ty (tylko w innej branży) stwierdziłem, że to oprogramowanie, które wtedy było dostępne jest słabe i że sam napiszę lepsze :-).
Te składy robiliśmy wtedy na Atari w programie Calamus https://pl.wikipedia.org/wiki/Calamus_(program_komputerowy).
Napisałem wtedy dwa programy (edytor tekstu i prosty program do grafiki wektorowej) w GFA-BASIC-u na Atari (https://pl.wikipedia.org/wiki/GFA_Basic).
W 96 postanowiłem to przenieść i rozbudować na Windowsa. Wybrałem C/C++ (wtedy w grę jeszcze wchodził Pascal/Delphi).
W 98 zacząłem sprzedawać wersję 2.0 programu (dwa lata od rozpoczęcia prac, ale wykorzystując koncepcje z programów na Atari).
W 2001 powstała wersja 4.0 - https://www.chip.pl/2001/05/tanio-taniej-kombi
W 2008 w zasadzie program robił to co sobie założyłem.
Wtedy wypuściłem wersję 8.0 https://www.dobreprogramy.pl/Osme-oblicze-Kombi,News,6131.html
Czyli można powiedzieć - 10 lat pracy w zasadzie od zera do w pełni funkcjonalnego komercyjnego pakietu.
Do 2013 robiłem już tylko drobne poprawki. Potem zająłem się innymi sprawami. W 2017 nie dało się już programu używać. Zmiany w systemie były na tyle duże, że przestało działać drukowanie :-). W programie do składu to jednak ważna funkcjonalność.
Od połowy 2017 do połowy 2018 - to była reanimacja i przywracanie programu do życia :-). Sporo funkcji zwyczajnie wypadło z systemu. Największym problemem okazał się program winhlp32.exe (a w zasadzie jego brak). W siódemce można go chyba było doinstalować, a w Win10 po prostu wypadł całkowicie. A mój system pomocy (pomoc podpięta do każdej ikony) po prostu nie działał :-).
W połowie 2018 dało się pakiet postawić na nogi. I zdziwienie, bo odezwali się starzy użytkownicy i napisali - no, nareszcie będziemy mogli wyrzucić emulatory XP :-). To jest jakaś tam satysfakcja :-)

Teraz już na spokojnie podrasowuję niektóre składniki pakietu. Tak to wygląda teraz:




Podsumowując - tak, jest to do zrobienia w pojedynkę. Ale jest to praca na długie lata. Jak się powiedzie (czego Ci życzę) - satysfakcja gwarantowana :-).

2

Ten wątek przypomina mi rozważania młodego adepta prawa jazdy kategorii B który to świeżo po zalogowaniu się na forum daewoo klub polska zakłada wątek z pytaniem ile będzie kosztował swap silnika w jego matizie ze standardowych 1000cm3 na przynajmniej coś dwulitrowego po czym nigdy więcej się nie loguje z powrotem bo dotarło do niego, że cała operacja kosztowałaby równowartość 8 jego matizow a na dodatek stanie po 100m jazdy.

Fajnie jest mieć marzenia itp ale z czasem jak zaczniesz się uczyć programować paradoksalnie coraz częściej będzie do Ciebie docierać jak mało wiesz i ile jest na świecie technologii które chętnie byś poznał ale nie ma kiedy.
Finalnie dojdziesz do wniosku, że to bez sensu bo nie bez powodu całe teamy rozwijają swoje DE latami.

Spójrz na xfce które jest chyba rozwijane przez jednego developera. IMHO zarówno pod kątem ui jak i funkcjonalności jest daleko w tyle za GNOME czy KDE (a przecież czerpie garściami z gtk) a mówimy o projekcie który jest (strzelam) starszy od Ciebie.

Podsumowując ucz się programować, może nawet zostań commiterem w jakimś projekcie open source, ciesz się tym, że zajawka może przynosić $$ ale jednocześnie zejdź na ziemię i zrozum, że marzenia to jedno a realia to drugie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1