From: xf0r3m Date: Sat, 6 Apr 2024 16:34:29 +0000 (+0200) Subject: Zakończenie pisania 13 rozdziału materiału: Linux. Podstawy. Do przeredagowania. X-Git-Url: https://gitweb.morketsmerke.org/?a=commitdiff_plain;h=b606aca6538cd50e764f27b9dac3e687cf4c5d14;p=mmdev.git Zakończenie pisania 13 rozdziału materiału: Linux. Podstawy. Do przeredagowania. --- diff --git a/articles/terminallog/Linux.Podstawy.html b/articles/terminallog/Linux.Podstawy.html index 0c430b5..96483de 100644 --- a/articles/terminallog/Linux.Podstawy.html +++ b/articles/terminallog/Linux.Podstawy.html @@ -10885,7 +10885,7 @@ xwininfo: Window id: 0x3400003 "Terminal - xf0r3m@vm-cffa62e: ~" eksperymentowania z zdarzeniami przy użyciu polecenia xev. Uruchomienie tego polecenia spowoduje otworzenie okna, po którym możemy jeździć kursorem i na nim klikać, natomiast w terminalu - polecenie zajmie się obróbką tych zdarzeń i ich przedwieniem + polecenie zajmie się obróbką tych zdarzeń i ich przedstawieniem użytkownikowi.

@@ -10947,10 +10947,305 @@ KeyRelease event, serial 37, synthetic NO, window 0x3800001,
           i przesunięcie kursora. Następnie naciśnięto dwa klawisze na
           klawiaturze. W polu root otrzymamy współrzędne kursa myszy
           na ekranie. Natomiast przed tym polem znajdują się współrzędne
-          względem okna otwartego przez polecenie xev
-          
-        

- + względem okna otwartego przez polecenie xev. W przypadku + naciśniętych na klawiszy istotną informacją zwracaną przez to + polecenie jest keycode, który + pozwoli nam na zmianę mapowania klawiatury, co może być przydatne + przy komputerach firmy Apple, zamieniając na ich klawiaturach + klawisze Command z Option. W tych klawiaturach + klawisz Option pełni rolę klawisza Alt, zatem + po zmianie mapowania, klawiatura funkcjonalnie będzie przypinać + każdą inną. +

+

+ Ciekawą opcją polecenia xev jest + -id identyfikator. Pozwala ona na + podanie identyfikatora okna (możną go uzyskać, za pomocą polecenia + xwininfo), z którego polecenie + xev będzie odczytywać zdarzenia. +

+

13.4.5. Ustawianie preferencji i dane wejściowe serwera X

+

+ System wyświetlania Xorg oraz jego serwer zapewniają kilka + możliwych metod na zmianę preferencji, a niektóre z nich mogą nawet + nie zadziałać. Jedną ze zmian jakie możemym chceć przeprowadzić jest + wspomniana wcześniej zmiana mapowania, które można przeprowadzić na + dwa sposoby, albo zmiany są małe i wprowadzane na obecnym mapowaniu + przy użyciu polecenia + xmodmap albo utworzenie nowego + mapowania, skomplowania go za pomocą polecenia + xkbcomp oraz załadowania i + aktywacji przy użyciu polecenia + setxkbmap. Za pomocą tych poleceń + możemy zmieniać mapowania większości klawiszy, jak i mamy możliwość + definicji mapować dla każdej podłączonej klawiatury. +

+

+ Innym ustawieniem, które możemy chceć zmienić jest kolejność klawiszy + przy myszy. W przypadku osób leworęcznych podstawowy przypisk (LPM, + dla osób praworęcznych mieści skrajnie po lewej stronie) powinien + znajdować sie po drugiej stronie urządzenia (skrajnie po lewej). + Takiej zamiany możemy dokonać z pomocą + xinput. Na poniższym przykładzie + pokazano w jaki sposób dostosować myszkę dla osób leworęcznych. +

+
+xf0r3m@vm-cffa62e:~$ xinput --set-button-map dev 3 2 1
+
+

+ Gdzie dev jest identyfikatorem + urządzenia. Po podaniu informacji o urządzeniu wskazujemy kolejność + klawiszy. Jednak skąd można wziąć taki identyfikator? +

+

+ Aby poznać urządzenia wejsciowe podłączone do komputera z dystrybucją + linuksa, na której wykorzystywany jest serwer wyświetlania X, + należy użyć wyżej wymienionego polecenia + xinput. +

+
+xf0r3m@vm-cffa62e:~$ xinput
+⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
+⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
+⎜   ↳ JUCHEN USB Keyboard                     	id=11	[slave  pointer  (2)]
+⎜   ↳ JUCHEN USB Keyboard                     	id=12	[slave  pointer  (2)]
+⎜   ↳ Logitech G502 HERO Gaming Mouse         	id=13	[slave  pointer  (2)]
+⎜   ↳ Logitech G502 HERO Gaming Mouse Keyboard	id=14	[slave  pointer  (2)]
+⎜   ↳ AlpsPS/2 ALPS GlidePoint                	id=17	[slave  pointer  (2)]
+⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
+    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
+    ↳ Power Button                            	id=6	[slave  keyboard (3)]
+    ↳ Video Bus                               	id=7	[slave  keyboard (3)]
+    ↳ Power Button                            	id=8	[slave  keyboard (3)]
+    ↳ Sleep Button                            	id=9	[slave  keyboard (3)]
+    ↳ JUCHEN USB Keyboard                     	id=10	[slave  keyboard (3)]
+    ↳ Dell WMI hotkeys                        	id=15	[slave  keyboard (3)]
+    ↳ AT Translated Set 2 keyboard            	id=16	[slave  keyboard (3)]
+    ↳ DELL Wireless hotkeys                   	id=18	[slave  keyboard (3)]
+    ↳ JUCHEN USB Keyboard                     	id=19	[slave  keyboard (3)]
+    ↳ Logitech G502 HERO Gaming Mouse Keyboard	id=20	[slave  keyboard (3)]
+
+

+ W przypadku mojego komputera, klawiatury posiadają identyfikatory + 10 lub 19 oraz 16, w przypadku myszy (wskaźnika) jest to 13 oraz 17. +

+

+ Nie ma takiej potrzeby aby klienci mieli by nasłuchiwać zdarzeń na + (w tym przypadku) na trzech lub większej ilości urządzeń. + Wykorzystują oni natomiast pojedyncze urządzenia + rdzenia wirtualnego, dzięki temu możemy podłączyć + i korzystać z więcej niż jednej klawiatury i więcej niż jednej + myszy. Nie mniej jednak, klienci mogą korzystać z rozszerzenia + X Input Extension w celu skupienia nasłuchiwania na jednym + z nich, najczęsciej wiekszość z nich nie posiada w ogóle informacji + o tym rozszerzeniu. +

+

+ Pozostałymi preferencjami to ustawienia może być tło ekranu + nazywane potocznie tłem pulpitu, w tym przypadku możemy skorzystać + z polecenia xsetroot, jednak + nie działa ono we wszystkich przypadkach. Lepszym rozwiązaniem może + być użycie zewnętrznego programu feh, które de facto jest + przeglądarką plików graficznych; czy ustawienia wygaszacza ekranu + lub funkcji DPMS (ang. Display Power Management Signaling) +

+

13.5. Usługa D-Bus

+

+ Usługa D-Bus jest mechanizm przekazywania + komunikatów, umożliwia ona wymianę informacji między aplikacji + klienta, wykorzystując do tego komunikację między procesową. Jednak + aplikację wykorzystują ją do powiadamiania o zdarzeniach systemowych + takich jaki np. podłącznie pendrive-a do komputera. Proces + chcąc wykorzystać ją do nasłuchiwania zdarzeń muszą połączyć się + na początku z centralnym koncentratorem - demonem + dbus-daemon i zarejestrować w celu odbierania konkretych + rodzajów komunikatów. Dla przykładku inny monitor + udisks-daemon sprawdza stan systemu plików udev + pod kątem zdarzeń dyskowych i następnie wysyła je do + dbus-daemona, a on przesyła je dalej do aplikacji + zaintersowanych zdarzeniami tego typu. +

+

13.5.1. Instancja systemowa oraz instancja sessji

+

+ System D-Bus obecnie jest jedną z ważniejszych części + dystrybucji + Linuksa - kanałami komunikacji D-Bus dysponuje + systemd, a ze względu na to, że jest on ściśle powiązany ze + środowiskiem graficznym powoduje to konflikt natury projektowej. + Rozwiązaniem okazało się podzielenie centralnego koncentratora na + dwa osobne procesy - instancję systemową, która + uruchamiana jest podczas rozruchu przez program typu init. + Proces ten jest uruchamiany wówczas w raz z opcją --system i + działa z uprawnieniami użytkowanika usługi D-Bus, a procesy mogą + łączyć się z nią za pomocą uniksowego gniazda. +

+

+ Nie zależnie od instacji systemowej występuje + instancja sesji która jest uruchamiana wyłącznie + w momencie startu środowiska graficznego i to z nią łączą się + aplikacje. +

+

13.5.2. Monitorowanie komunikatów usługi D-Bus

+

+ W przypadku instancji systemowej, może dziać się nie wiele w + zależności od sprzętu na jakim pracujemy. Nie mniej jednak do + obserwacji komunikatów usługi D-Bus możemy wykorzystać + dostępne polecenie jakie dbus-monitor + Wybóru instancji dokonujemyu za pomocą odpowiedniej opcji: + instancja systemowa - --system oraz instancja sesji - + --session. +

+

+ Osobiście na swoim sprzęcie za pomocą monitorowania komunikatów + D-Bus zauważyłem informacje odnośnie baterii oraz skanowania + sieci bezprzewodowych przez mój komputer. +

+
+xf0r3m@laptop-0b3697e:~$ dbus-monitor --system
+...
+signal time=1712415292.734476 sender=:1.39 -> destination=(null destination) 
+serial=3626 path=/org/freedesktop/UPower/devices/battery_BAT0; 
+interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
+   string "org.freedesktop.UPower.Device"
+   array [
+      dict entry(
+         string "UpdateTime"
+         variant             uint64 1712415292
+      )
+      dict entry(
+         string "Voltage"
+         variant             double 8.388
+      )
+   ]
+   array [
+   ]
+signal time=1712415307.335665 sender=:1.8 -> destination=(null destination) 
+serial=14104 path=/org/freedesktop/NetworkManager/Devices/3; 
+interface=org.freedesktop.NetworkManager.Device.Wireless; member=AccessPointAdded
+   object path "/org/freedesktop/NetworkManager/AccessPoint/794"
+signal time=1712415307.335727 sender=:1.8 -> destination=(null destination) 
+serial=14105 path=/org/freedesktop/NetworkManager/Devices/3; 
+interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
+   string "org.freedesktop.NetworkManager.Device.Wireless"
+   array [
+      dict entry(
+         string "AccessPoints"
+         variant             array [
+               object path "/org/freedesktop/NetworkManager/AccessPoint/348"
+               object path "/org/freedesktop/NetworkManager/AccessPoint/349"
+               object path "/org/freedesktop/NetworkManager/AccessPoint/766"
+               object path "/org/freedesktop/NetworkManager/AccessPoint/787"
+               object path "/org/freedesktop/NetworkManager/AccessPoint/788"
+               object path "/org/freedesktop/NetworkManager/AccessPoint/792"
+               object path "/org/freedesktop/NetworkManager/AccessPoint/793"
+               object path "/org/freedesktop/NetworkManager/AccessPoint/794"
+            ]
+      )
+   ]
+   array [
+   ]
+
+

+ W przypadku instancji sesji informacji jest znacznie więcej, wystarczy + że zmienimy aktywne okno lub nacisniemy klawisz kontrol przy aktywnym + terminalu. +

+
+xf0r3m@laptop-0b3697e:~$ dbus-monitor --session
+...
+error time=1712415718.701034 sender=:1.119 -> destination=:1.106 
+error_name=org.xfce.Xfconf.Error.PropertyNotFound reply_serial=25086
+   string "Właściwość „/shortcuts-no-menukey” nie istnieje na kanale „xfce4-terminal”"
+method call time=1712415718.925428 sender=:1.106 -> destination=:1.119 
+serial=25087 path=/org/xfce/Xfconf; interface=org.xfce.Xfconf; member=GetProperty
+   string "xfce4-terminal"
+   string "/shortcuts-no-menukey"
+error time=1712415718.926183 sender=:1.119 -> destination=:1.106 
+error_name=org.xfce.Xfconf.Error.PropertyNotFound reply_serial=25087
+   string "Właściwość „/shortcuts-no-menukey” nie istnieje na kanale „xfce4-terminal”"
+
+

13.6. Drukowanie

+

+ Drukowanie dokumentów w dystrybucjach linuksa, to wieloetapowy + proces: +

+

+ Program odpowiedzialny za drukowanie może przekszatałcić + drukowany dokument na format PostScript. Ten krok jest + opcjonalny. W przypadku braku konwersji program przesyła dokument do + serwera wydruku, dokument wówczas zostaje umieszczony w kolejce + wydruku. W momencie rozpoczęcia procesu drukowania serwer wydruku + przesła dokument do filtra wydruku. W przypadku gdy dokument nie ma + formatu PostScript filtr wydruku może dokonać konwersji. + Jeśli drukarka nie obsługuje formatu PostScript to przy + użyciu sterownika dokument zostaje skonwertowany do postacji + odpowiedniej dla urządzenia drukującego. Ze sterownika drukarki + zostają pobrane takie informacje jak źródło papieru czy ewentualny + dupleks - zostają one dodane do dokumentu. Na koniec serwer wydruku + wykorzystuje postprocesor aby wysłać dokument do drukarki. +

+

+ Sam proces jest dość skomplikowany, ponieważ wykorzystuje się on w + bardzo dużym stopniu na języku programowania PostScript. + Język ten pełni rolę standardu drukowania w dystrybucjach Linuksa. +

+

13.6.1. CUPS

+

+ System wydruku w dystrybucjach jest CUPS, produkt firmy Apple, więc + jest on także stosowany systemach macOS. Demonem tego system jest + cupsd. W raz system drukowania mamy dostępne polecenie + lpr, które może pełnić rolę prostego + klienta pozwalającego na wysłanie plików do demona. +

+

+ Istotną funkcją systemu CUPS jest implementacja protokołu IPP + (ang. Internet Print Protocol), wykorzystuje on port TCP/631 i jego + działanie opiera się transakcje podobne do protokołu HTTP. System + CUPS można konfigurować za pomocą przeglądarki łącząc się z adresem + http://localhost:631. Użytkownikiem administracyjnym jest + root i hasło jest takie same jak do zalogowania się na tego + użytkownika w systemie. Większość serwerów wydruku obsługuje + protokół IPP, w tym również system MS Windows. Co umożliwia nam + tworznie drukarek sieciowych, które nie są domyślnie sieciowe. + To zadanie jednak wymaga nieco ingerencji, ponieważ domyślna + konfiguracja nie jest zbyt bezpieczna. +

+

+ Konfiguracja drukarek w dystrybucjach Linuksa, jeśli mówimy tu o + komputerze desktopowym zazwyczaj sprowadza się dodania drukarki + przy użyciu specjalnego apletu w sekcji ustawień dla danego + środowiska graficznego. Oczywiście, jak w przypadku większości + zwykłego sprzętu dostępnego dla ogółu problemem mogą być sterowniki + lub brak pliku PPD (wyjaśnienie czym jest plik PPD znajduje się + w podrozdziale 13.6.2). Z własnego doświadczenia wiem, że + z dystrybucjami Linuksa (przynajmniej z Debianem) dobrz działają + drukarki firmy Kyocera (dawniej Kyocera-Mita) jeśli nie działają + plug and play to zapewne dostępny jest sterownik + własnościowy - w przypadku tych urządzeń problemem może być koszt + tonera (są to urządzenia laserowe). Urządzeniem domowym, z które + rzadko korzystam jest Canon Pixma TR4550 działa z Debianem + plug and play dużym plusem jest tego urządzenia jest to, + że te tusze nie zasychają (przynajmniej oryginalne). Z racji tego + że to urządzenie wielofunkcyjne różnież jest możliwość skanowania + przez pakiet Sane. +

+

13.6.2. Konwersja formatów i filtry wydruku

+

+ Większość tanich drukarek nie rozpoznaje formatów PostScript + ani PDF, aby móc znich korzystać na dystrybucjach Linuksa niezbędna + jest konwersja formatu do tego określanego przez drukarkę. +

+

+ System CUPS wysyła dokument do procesora RIP (ang. Raster Image + Processor), aby wygenerować bitmapę. Procesor RIP zawsze stosuje + program Ghostscript (gs) do + realizowanie większości zadań. Czynność jest dość skomplikowana, gdyż + bitmapa musi być dostowana do formatu drukarki. Sterowniki drukarki + używane przez CUPS sprawdzają plik PPD + (ang. PostScript Printer Definition) konkretnego urządzenia, + aby określić takie ustawienia jak rozmiar papieru czy rozdzielczość. +

+

2022; COPYLEFT; ALL RIGHTS REVERSED;