FW: clipboard

Lubos Lunak l.lunak na email.cz
Čtvrtek Srpen 21 13:34:18 CEST 2003


Antala Mario wrote:

>  
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
>   caute,
> 
> jedina vec, ktora ma v poslednej dobe na linuxe stve je clipboard.
> pri pracovani v X-och (WindowMaker, KDE, Gnome atd.) je problem
> prenasat data medzi aplikaciam cez clipboard.
> obcas je problem, obcas nie je. zavisi od aplikacie a od niecoho co
> sa mi nepodarilo vystopovat (dufam, ze ziadna bulharska konstanta:)
> 
> v kde je aj nejaky clipboard tool. v nom je skutocne vsetko, co som
> kedy skopiroval, ale napriek tomu sa mi nedari dostat do niektorych
> aplikacii data cez Ctrl-V (napr.IDEA). je to chyba aplikacie, alebo
> nejakeho nastavenia? aj ked v kde ten clipboard tool vypnem (v
> ostatnych wm nic take nepouzivam), nic to neriesi.
> 
> vie niekto ako dosiahnut fungovanie clipboardu na 100% ?

 No, to by vyzadovalo neco tak na urovni mensiho heroickeho vykonu. Ne ze by
to bylo zase tak slozite, ale autori X tady prekonali svuj prumer a dotahli
dost do extremu svoji filozofii hlavne-at-pane-boze-nekomu-neco-nezakazeme.
Jinymi slovy, popis clipboardu v X
(http://tronche.com/gui/x/icccm/sec-2.html) podrobne a precizne popisuje,
jak prenes nejaka data a oznaceni jejich typu mezi dvema aplikacemi, a tam
ta podrobnost a preciznost konci. Popisy typu clipboardu (ano, je jich
vice, ten dokument jim rika selections) jsou tezce vagni, a standardizovane
typy dat pro komunikaci jsou nedostatecne. Neboli je dost jednoduche to
zvorat, v lepsim pripade udelat navzajem nekompatibilne, a je v vlastne
zazrak, ze to mezi ruznymi aplikacemi alespon nejak funguje.

 Je to zhruba asi takhle:

 Ty druhy selections jsou 3 : PRIMARY, SECONDARY a CLIPBOARD. Do PRIMARY se
obvykle data vlozi tak, ze se proste oznaci mysi (tj. obvykle je to jen na
text), z PRIMARY se data potom vyndaji prostrednim tlacitkem mysi. K cemu
je SECONDARY, to asi tusi malokdo. CLIPBOARD je takovy ten klasicky
clipboard znamy treba z Windows - vlada se do nej obvykle Ctrl+C, Ctrl+X
(nektere aplikace tim Ctrl+Ins nebo jak to je), vyndava se z nej Ctrl+V.

 Pro to, aby se obe aplikace dohodly na prenosu dat pres clipboard, ze musi
dohodnout na:
1) pouziti spravne selection - nektere aplikace/toolkity treba vesele
pouzivaji jen jeden druh selection a ostatni (resp. ten druhy, kdyz se bude
ignorovat SECONDARY) neberou na vedomi - ne ze by to tedy delaly vyslovene
spatne - ten popis nahore je jen konvence, nic zavazneho, aplikace si v
podstate muze pouzivat jako klavesove zkratky chce a jakou selection chce

2) pouziti stejneho typu dat (resp. prijemce musi umet alespon jeden typ,
ktery nabidne vlastnik clipboardu) - ted uz se sice pouzivaji jako typy
vetsinou mime types (text/plain,image/png, atd.), ale i tady se aplikacim
povede si vymyslet vlastni typy nebo neco podobneho

3) stejne implementaci selections - i tady se chybicka obcas stane, ta
pravidla pro tohle jsou sice precizni, ale neni to uplna brnkacka (vlastni
zkusenost). Pokud si tohle aplikace neresi sama, ale pouziva toolkit, tak
si tim vetsinou vyresi dost problemu, a staci ji jen pouzivat spravnou
selection, vybrat vhodny typ dat pro prenos, a data z/do nej transformovat.
To neni az takova drina.



 Pokud mate problem s prenosem dat clipboardem mezi dvema aplikacemi, tak
zkuste zjistit, ktera z nich je vinik, treba zkuste jak jde oboum prenost
do neceho "nezavisleho" (xterm,kwrite,gedit,mozilla,...). Pak navstivte
bugreport system patrici k aplikaci, ktera prohrala, a problem popiste. Ja
vim, to je neco na urovni mensiho heroickeho vykonu. Jenze to je asi tak
jediny realny zpusob, jak situaci zlepsit :-/.


 BTW, Klipper (=clipboard tool z KDE) tady obcas muze pomoct - jednak dela
historii, coz se dost hodi, jednak si pamatuje obsah clipboardu i kdyz tak
aplikace co ho nastavila se ukonci (jinak by se "vymazal"), jednak kdyz se
nektera z tech polozek v te historii explicitne vybere, tak se nastavi do i
PRIMARY i CLIPBOARD, coz se muze hodit u aplikaci ktere maji problem s 1),
a v posledni rade Qt u nekterych typu dat nabizi vetsi mnozstvi typu (treba
obrazky asi v 10-ti formatech), takze i to muze obcas pomoct. Na druhou
stranu obcas Klipper muze i nejaky ten problem zpusobit, protoze Qt v tom
kodu tykajiciho se clipboardu melo par bugu, a jeste se mi nepovedlo
vsechny opravy protlacit, takze nekdy naopak vypnuti Klipperu muze situaci
i vylepsit :( .

-- 
 Lubos Lunak
 KDE developer
 l.lunak na kde.org     l.lunak na email.cz



Další informace o konferenci Linux