On 2023-08-29 19:12, Sieghard Schicktanz <Sieghard....@SchS.de> wrote:
> Hallo Peter, Du schriebst am Tue, 29 Aug 2023 17:02:47 +0200:
>> Ich weiß nicht wirklich, wie der Selection/Copy&Paste/Drag&Drop-
>> Mechanismus funktioniert. Aber es gibt hier sicher zwei Ebenen: Den
>
> Vier, aber keine "Ebenen": primary und secondary selection, clipboard und
> "buffer-cut".
Nein, das ist alles die erste Ebene. Der Mechanismus von GTK und QT
(Xdnd, oder ist das nur ein Teil davon?) setzt darauf auf. Das ist dann
die zweite Ebene.
> Das sind zumindest die Bezeichnungen, die das Programm
> "xclip" dafür verwendet, das diesen Mechanismus auch skriptfähig verwendbar
> macht.
>
>> ursprünglichen Selection-Mechanismus von X11, den xterm vermutlich noch
>> immer unverändert benutzt. Und darauf aufbauend den Copy&Paste/
>> Drag&Drop-Mechanismus von GTK und QT. Letzterer involviert eine
>
> So in etwa dürfte das passen.
>
>> Verhandlung zwischen Quelle und Ziel, also muss die Quelle noch
>> existieren, wenn das Ziel darauf zugreifen will. Bei ersterem scheint
>
> Das ist, unter X11, _grundsätzlich_ der Fall. Ist der "Herausgeber" weg,
> ist auch der Bufferinhalt weg.
So stehts in der Doku, ist aber bei xterm eindeutig nicht so. Probier's
aus:
trintignant:~ 22:14 :-) 1011% ps aux | grep '[x]term'
# kein xterm
trintignant:~ 22:14 :-( 1012% xterm &
[1] 239937
trintignant:~ 22:14 :-) 1013% ps aux | grep '[x]term'
hjp 239937 0.8 0.0 14500 10564 pts/3 S 22:14 0:00 xterm
# Jetzt läuft eines.
# Ich tippe im xterm "Das ist ein Test", markiere es, lösche es und
# beende das xterm mit Ctrl-D.
trintignant:~ 22:14 :-) 1014%
[1] + done xterm
# hat sich brav beendet
trintignant:~ 22:15 :-) 1014% ps aux | grep '[x]term'
# Und weg ist es
trintignant:~ 22:15 :-( 1015% xterm &
[1] 240100
# Auf ein Neues
trintignant:~ 22:15 :-) 1016% ps aux | grep '[x]term'
hjp 240100 0.6 0.0 14500 10444 pts/3 S 22:15 0:00 xterm
# Wie man sieht: Wieder ein xterm, neue PID.
# Ich drücke im xterm die mittlere Maustaste, und voila, da steht
# "Das ist ein Test"
trintignant:~ 22:15 :-) 1017%
>
>> zumindest minimale Information (der Anfang des selektierten Texts?) im
>> X-Server gespeichert zu werden und kann somit die Quelle überleben. Aber
>
> Nein. Das ist eher deswegen so zu beobachten, weil Deine Prämisse, "Jedes
> xterm ist ein ei[ge]nständiger Prozess.", nicht unbedingt zutrifft. Es gibt
> AFAIK Implementierungen, die einen gemeinsamen Server-Prozess für alle
> xterm (oder andere -term*s) starten, ggfs. sogar ohne Wissen des Benutzers,
> der dieDatenhaltung für alle Anzeigefenster übernimmt. Wird halt aus
> "Geschwindigkeitsgründen" gemacht.
Wenn ich "xterm" schreibe, dann meine ich xterm und nicht
gnome-terminal, konsole, xfce-terminal und wie sie alle heißen. Einige
von denen machen das, das weiß ich. Bei xterm hingegen weiß ich sehr
genau, dass jedes xterm ein eigener Prozess ist, und irgendein
zusätzlicher Hintergrundprozess wäre mir noch nie aufgefallen.
Aber ich glaube, ich habe gerade die Lösung in der Wikipedia gefunden:
| Cut buffers, by contrast, provide a passive mechanism: when the user
| selects some text, its content is transferred to a cut buffer, where
| it remains even if the application handling the window terminates and
| the window is destroyed.
--
https://en.wikipedia.org/wiki/X_Window_System_protocols_and_architecture#Selections,_cut_buffers,_and_drag-and-drop
Xterm verwendet also offenbar (zusätzlich?) Cut-Buffers. Xdnd hingegen
nur PRIMARY und CLIPBOARD.
hp