Blog (75)
Komentarze (5.3k)
Recenzje (0)
@nintyfanWXConsoleSpawner: Odgadywanie czy program wymaga terminala

WXConsoleSpawner: Odgadywanie czy program wymaga terminala

09.04.2022 10:31, aktualizacja: 09.04.2022 11:49

Są osoby, które zarzuciły mi brak zdolności programistycznych. Dlatego postanowiłem nie podejmować się trudnych zadań, a jedynie tworzyć coś do udowodnienia, że się da. Może zachęci to kogoś, by zrobił to porządnie ;‑) ?

Jednym z powodów krytyki systemów GNU/Linux jest konieczność użycia konsoli. Użytkownik próbuje odpalić program z internetu (np. sterowniki drukarki), a gdy nic to nie daje, zaczyna szukać. I tam znajduje info, że trzeba uruchomić jakiś emulator terminala, przejść do katalogu z programem, nadać bit wykonywalności i odpalić w emulatorze terminala.

Ponieważ środowiska graficzne same się zapytają o konieczność nadania bitu wykonywalności, to pozostaje kwestia emulatora terminala w odniesieniu do programów konsolowych. Z pomocą może przyjść WXConsoleSpawner.

Program próbuje rozpoznać, czy uruchomiony przez niego proces to aplikacja konsolowa czy graficzna. Stosuje taki algorytm:

1. Jeżeli program  będzie starać się odczytać z domyślnego wejścia, to jest to program konsolowy. W tym przypadku zakończ.

2. Gdy program będzie złączony z pewnymi bibliotekami systemu graficznego X (Xlib/Xcb), to jest to program graficzny i zakończ

3. Gdy program będzie mieć otwarte gniazdo systemu graficznego Wayland, to jest to program graficzny i zakończ

4. Gdy program się zakończy, to najprawdopodobniej jest to program konsolowy lub użytkownik musi zobaczyć logi (przecież nie udało się nam wykryć typu aplikacji, więc nie ma mowy o wyświetleniu okna), więc wyświetlamy odpowiedni komunikat

Metoda nie działa w przypadku programów wymagających X‑ów, ale nie złączonych z Xlib/Xcb (Xeyes, itd.). Nie działa także w przypadku skryptów, co posiłkują się np. kdialog, itd. Wiem... Gry często korzystają ze skryptów do uruchomienia ich, ale to narzędzie nie jest do gier, tylko małych programów (najczęściej instalatorów) pobranych z internetu. Co do gier, to po ich instalacji, powinna być pozycja w menu. Spróbuję to rozwiązać, posiłkując się mechanizmem cgroup, ale to strasznie może skomplikować sprawę.

Na zakończenie mały filmik;

Wybrane dla Ciebie
Komentarze (0)