Nautilusスクリプトからクリップボードにファイルをコピーする

Nautilusスクリプトからクリップボードにファイルをコピーする

ノーチラスウィンドウで選択したファイルに基づいてアーカイブファイルを生成するノーチラススクリプトがあります。アーカイブが/tmpディレクトリに作成されます。私は方法が欲しいコピーこのファイルをスクリプトからクリップボードにコピーすると、ユーザーはデスクトップまたはホームディレクトリに移動して貼り付けることができます。

私はxclipこれを使ってみましたが、xselファイルコピー操作ではなくファイルの内容をコピーするようです。

xclip -in -selection c generated-archive
echo -n generated-archive | xsel --clipboard --input

それらのどれも私が必要なことをしませんでした。

もしそうなら、これが可能かどうか疑問に思います。では、どうすればよいですか?

ありがとうございます。

ベストアンサー1

Nautilusはクリップボードの変更の内部状態を追跡しているようです。これは、クリップボードの状態に対するすべての変更(同じファイルパス文字列に置き換えることを含む)が自動的にキャンセルされることを意味します。貼り付け保留中状態なので、外部からロードされたクリップボードに有効なファイルパスが含まれていると、何も起こりません。

ノーチラスのみ認識します。ファイルのコピー/切り取りこれはノーチラス内で始まります。
これはまさにあなたが観察したものです...おそらく理由の説明があります...私はNautilusソース "cut-paste-code"に保存された状態に関する多くの情報が含まれていることを発見しました。

# In Nautilus, manually "copy" a file (to the clipboard) using Ctrl+C

xsel -ob |xxd      # hex-display clipboard contents of the clipboard
echo "### At this point, Nautilus **paste** works."
read               # pause
xsel -ob |xsel -ib # Replace clipboard with itself
xsel -ob |xxd      # hex-display clipboard contents again
echo "### At this point, Nautilus **paste** does NOT work."

手動でコピー/カットした後(ノーチラスまたは他の場所で)Ctrl + Vを実行できる操作は無関心です。生地Nautilusで動作しますが、クリップボードを変更すると「貼り付け」になりません...

おすすめ記事