naprawdę potrzebujemy zdalnego pulpitu, to warto użyć do tego np.
takich protokół jak RDP lub VNC.
</p>
+ <h3 id="13.4.3.xwindowclients">Przegląd klientów X Window</h3>
+ <p>
+ Mogliśmy spodziewać się tego, że omawianie środowiska graficznego
+ użytkownika może nie mieć nic wspólnego z wierszem polecenia, ale
+ system <em>X Window</em> wychodzi nam na przekór, udostępniając kilka
+ narzędzi, które pozwalają wyświetlenie informacji czy też diagnostykę.
+ Jednym z takich narzędzi jest polecenie <em>xwininfo</em>. Polecenie
+ to zwraca informacje na temat wybranego przez nas okna. Po
+ uruchomieniu poprosi nas o wybranie okna za pomocą myszy o po
+ kliknięciu na nie w terminalu zostaną nam zwrócone informacje o tym
+ oknie.
+ </p>
+<pre class="code-block">
+xf0r3m@vm-cffa62e:~$ xwininfo
+
+xwininfo: Please select the window about which you
+ would like information by clicking the
+ mouse in that window.
+
+xwininfo: Window id: 0x3400003 "Terminal - xf0r3m@vm-cffa62e: ~"
+
+ Absolute upper-left X: 5
+ Absolute upper-left Y: 158
+ Relative upper-left X: 5
+ Relative upper-left Y: 29
+ Width: 817
+ Height: 578
+ Depth: 32
+ Visual: 0x50c
+ Visual Class: TrueColor
+ Border width: 0
+ Class: InputOutput
+ Colormap: 0x3400002 (not installed)
+ Bit Gravity State: NorthWestGravity
+ Window Gravity State: NorthWestGravity
+ Backing Store State: NotUseful
+ Save Under State: no
+ Map State: IsViewable
+ Override Redirect State: no
+ Corners: +5+158 -202+158 -202-32 +5-32
+ -geometry 100x30+0-27
+</pre>
+ <p>
+ Innym ciekawym narzędziem może być polecenie <em>xlclients</em> wraz
+ z opcją <em>-l</em>. Jego zadaniem jest wyświetlenie wszystkich
+ klientów serwera <em>X Window</em>.
+ </p>
+ <h3 id="13.4.4.xwindowevents">13.4.4. Zdarzenia serwera X</h3>
+ <p>
+ Okna programów otrzymują dane wejściowe oraz informacje o stanie
+ serwera <em>X</em> za pośrednictwem zdarzeń. Serwer <em>X</em>
+ odbiera zdarzenia ze źródła następnie kieruje do dowolnego
+ zainteresowanego klienta. System <em>X Window</em> daje nam możliwość
+ eksperymentowania z zdarzeniami przy użyciu polecenia <em>xev</em>.
+ 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
+ użytkownikowi.
+ </p>
+<pre class="code-block">
+xf0r3m@vm-cffa62e:~$ xev
+ButtonPress event, serial 38, synthetic NO, window 0x3800001,
+ root 0x529, subw 0x0, time 21524866, (41,103), root:(464,396),
+ state 0x0, button 1, same_screen YES
+...
+MotionNotify event, serial 38, synthetic NO, window 0x3800001,
+ root 0x529, subw 0x0, time 21526915, (49,104), root:(472,397),
+ state 0x100, is_hint 0, same_screen YES
+
+MotionNotify event, serial 38, synthetic NO, window 0x3800001,
+ root 0x529, subw 0x0, time 21526998, (51,104), root:(474,397),
+ state 0x100, is_hint 0, same_screen YES
+
+MotionNotify event, serial 38, synthetic NO, window 0x3800001,
+ root 0x529, subw 0x0, time 21527185, (52,104), root:(475,397),
+ state 0x100, is_hint 0, same_screen YES
+
+ButtonRelease event, serial 38, synthetic NO, window 0x3800001,
+ root 0x529, subw 0x0, time 21527854, (52,104), root:(475,397),
+ state 0x100, button 1, same_screen YES
+
+MotionNotify event, serial 37, synthetic NO, window 0x3800001,
+ root 0x529, subw 0x0, time 19437248, (99,87), root:(522,380),
+ state 0x0, is_hint 0, same_screen YES
+...
+KeyPress event, serial 37, synthetic NO, window 0x3800001,
+ root 0x529, subw 0x0, time 19448798, (194,226), root:(617,519),
+ state 0x0, keycode 39 (keysym 0x73, s), same_screen YES,
+ XLookupString gives 1 bytes: (73) "s"
+ XmbLookupString gives 1 bytes: (73) "s"
+ XFilterEvent returns: False
+
+KeyRelease event, serial 37, synthetic NO, window 0x3800001,
+ root 0x529, subw 0x0, time 19448918, (194,226), root:(617,519),
+ state 0x0, keycode 39 (keysym 0x73, s), same_screen YES,
+ XLookupString gives 1 bytes: (73) "s"
+ XFilterEvent returns: False
+
+KeyPress event, serial 37, synthetic NO, window 0x3800001,
+ root 0x529, subw 0x0, time 19449093, (194,226), root:(617,519),
+ state 0x0, keycode 40 (keysym 0x64, d), same_screen YES,
+ XLookupString gives 1 bytes: (64) "d"
+ XmbLookupString gives 1 bytes: (64) "d"
+ XFilterEvent returns: False
+
+KeyRelease event, serial 37, synthetic NO, window 0x3800001,
+ root 0x529, subw 0x0, time 19449206, (194,226), root:(617,519),
+ state 0x0, keycode 40 (keysym 0x64, d), same_screen YES,
+ XLookupString gives 1 bytes: (64) "d"
+ XFilterEvent returns: False
+
+</pre>
+ <p>
+ Na przykładzie pokazano w przyciśniecie klawisza myszy, przesunięcie
+ kursora z przytrzymanym klawiszem, następnie zwolnienie klawisza
+ i przesunięcie kursora. Następnie naciśnięto dwa klawisze na
+ klawiaturze. W polu <em>root</em> otrzymamy współrzędne kursa myszy
+ na ekranie. Natomiast przed tym polem znajdują się współrzędne
+ względem okna otwartego przez polecenie <em>xev</em>
+ <!-- Opisać znaczenie keykodów przy mapowaniu klawiatury -->
+ </p>
</div>
<p style="margin: 15px; padding: 0; outline: 0;">
2022; COPYLEFT; ALL RIGHTS REVERSED;