お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2014-11-23 03:31:38

M_T_Asagi
新しいメンバ
登録日: 2014-11-23

クリップボードのバグ?

最近、会社でPCを新調したので、ubuntuを入れました。
Ubuntu自体は今までも使っていて、そこそこなれてきたのかなあ、何て思っていたのですが、
いつもの通りVimをインストールし、設定をしていたら、どうもヤンクとクリップボードの連携がうまくいっていないのか、Vim起動中は別アプリケーション(ブラウザなど)へ文字列のコピーが出来るのですが、Vimを停止してしまうと、クリップボードの中身も掃除されてしまうらしく、再びペーストしようとしても何も貼り付けできません。

また、例としてVimを上げましたが、他アプリケーションに置いても動作は同じで、LibreOfficeなどでも、起動中はコピー&ペーストが可能なのに、終了してしまうとペーストができなくなります。

もし、この動作についてご存知でしたらお教えください。
また、他ツールやアプリケーションなど用いても構いませんので、一時的にでもとれる対策があればお教えいただければと思います。

オフライン

 

#2 2014-11-26 02:26:08

taka.zoo.n
メンバ
登録日: 2013-05-30

Re: クリップボードのバグ?

これはバグではなく、X-window の「selection によるデータ転送」の仕様によるものと思われます。

一例として、端末ウィンドーが3つ動いているとし、何も選択されていないとします。
第一の端末でマウスをドラッグしてテキストを選択したとき、この端末プロセスはサーバーに「primary selectionは自分が持つ」という要求を送ります。
選択されたテキストはサーバーには送られません。サーバーは今 primary selection を持っているのは第一の端末プロセスだということを覚えます。
その後、第二の端末でマウスをドラッグしてテキストを選択すると、この端末プロセスもサーバーに「primary selectionは自分が持つ」という要求を送ります。
それを受けたサーバーは今 primary selection を持っているのは第二の端末プロセスであるということを覚え、今まで持っていた第一の端末に「あなたはprimary selection を失いました」というメッセージを送ります。
その後、第三の端末でマウスを右クリックして選択されているテキストをペーストしようとします。このときこの端末プロセスは「primary selectionを欲しい」という
要求をサーバーに送ります。サーバーは現在の primary selectionの所有者である第二の端末に「第三の端末プロセスがprimary selectionを要求している」
というメッセージを送ります。それを受けた第二の端末プロセスが第三の端末プロセスに選択されたテキストを送ります。

第二の端末プロセスが終了した後、他のプロセスが primary selection を持つまでの間に primary selection を要求されたらサーバーは「primary selectionを持っているプロセスは存在しない」と要求元に返答します。転送されるべきデーターは第二の端末プロセスのみが持っていたのでこうするより他ありません。

なお、この説明は非常に単純化されています。実際の転送メカニズムでは selection の種類はいろいろありますし、大量データの転送や型変換なども考慮せねばなりません。(正確な手順は Inter-Client Communication Conventions Manual 略して ICCCM に記述されています。これは正確ですが難解で、読むためには少なくとも X-window の基本的な概念を理解しておく必要があります。)

なお、転送されるデータをルートウィンドーに置く転送メカニズムもありますが、機能的に劣るためでしょうか、これが実際に使われているプログラムを私は知りません。

オフライン

 

Board footer

Powered by FluxBB