]> gitweb.morketsmerke.org Git - mmdev.git/commitdiff
Tworzenie rozdziału 13. Podrozdział 13.4.4
authorxf0r3m <jakubstasinski@protonmail.com>
Wed, 25 Oct 2023 12:50:12 +0000 (14:50 +0200)
committerxf0r3m <jakubstasinski@protonmail.com>
Wed, 25 Oct 2023 12:50:12 +0000 (14:50 +0200)
articles/terminallog/Linux.Podstawy.html

index 5c76463bb5277b0e0ac4058d7549072e95b7f212..0c430b584bf2f44e0fc773d017fce5e7e0bf4298 100644 (file)
@@ -10829,6 +10829,127 @@ xhost +SI:localuser:&lt;nazwa_użytkownika&gt;
           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;