私は解決策を見つける:コード以下の短い
で
ラン "を/ tmp /ファイル・ツー・クリップ/なめらか" をコピーした後、私はするには、Ctrl + Vを打つことができます詳細
01用のThunarでは
public class FileToClip {
public static void main(final String[] args) throws Exception {
final File file = new File("/tmp/file-to-clip/smth");
System.out.println("copy " + file.toString());
new FileToClip().toClip(file);
Thread.sleep(Long.MAX_VALUE);
}
public void toClip(final File f) throws Exception {
final Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
final ClipboardOwner clipboardOwner = null;
final Transferable transferable = new Transferable() {
public boolean isDataFlavorSupported(final DataFlavor flavor) {
return false;
}
public DataFlavor[] getTransferDataFlavors() {
return new DataFlavor[]{DataFlavor.javaFileListFlavor, DataFlavor.stringFlavor, gcf};
}
public Object getTransferData(final DataFlavor flavor) {
if (flavor.equals(DataFlavor.javaFileListFlavor)) {
final List<String> list = new ArrayList<>();
list.add(f.getAbsolutePath());
return list;
}
if (flavor.equals(DataFlavor.stringFlavor)) {
return f.getAbsolutePath();
}
if (flavor.equals(gcf)) {
String p = "copy\n" +
"file://" + f.getAbsolutePath();
return new ByteArrayInputStream(p.getBytes(Charset.forName("UTF-8")));
}
return null;
}
};
clip.setContents(transferable, clipboardOwner);
}
DataFlavor gcf = createDataFlavor("x-special/gnome-copied-files", null, true);
public static DataFlavor createDataFlavor(@NotNull final String mimeType, @Nullable final Class<?> klass, final boolean register) {
try {
final DataFlavor flavor =
klass != null ? new DataFlavor(mimeType + ";class=" + klass.getName(), null, klass.getClassLoader()) : new DataFlavor(mimeType);
if (register) {
final FlavorMap map = SystemFlavorMap.getDefaultFlavorMap();
if (map instanceof SystemFlavorMap) {
((SystemFlavorMap) map).addUnencodedNativeForFlavor(flavor, mimeType);
}
}
return flavor;
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
}
に貼り付け
は、すべてのコードは、IntelliJのアイデアthis source file(#getTransferDataを参照)
- がどのように "X-特別な/のgnome-コピー・ファイル" のようにされたDataFlavor見つけるために見つけることができますか? 記載
man xclip
-tは、
が所与のターゲット原子を使用して、特定のデータ形式を指定-target。 -oを指定すると、特別なターゲットアトム名 "TARGETS"を使用して、このセレクタの有効なターゲットアトムのリストを取得できます。ターゲット原子の詳細については、私は、ターゲット(JavaでのDataFlavor)
- ヒットCtrl + C GUIで(ファイルエクスプローラ、またはコードを取得するには次の操作を行うことができICCCMセクション2.6.2
を参照してください。
UTF8_STRING
TEXT
STRING
text/plain;charset=UTF-16
text/plain;charset=UTF-8
text/plain;charset=UTF-16BE
text/plain;charset=UTF-16LE
text/plain;charset=ISO-8859-1
text/plain;charset=US-ASCII
text/plain
FILE_NAME
text/uri-list
text/uri-list;charset=UTF-16
text/uri-list;charset=UTF-8
text/uri-list;charset=UTF-16BE
text/uri-list;charset=UTF-16LE
text/uri-list;charset=ISO-8859-1
text/uri-list;charset=US-ASCII
x-special/gnome-copied-files
:IDE) XCLIP -selectionクリップボード-o -tは
次のような出力をターゲットに私の質問から
復帰、私は、CLIでファイルをコピーして、GUIに貼り付けた場合、私は
- メイクスイングまたは(通知アイコン付き)JavaFXの背景アプリ
- は、CLIでこのアプリを制御に必要ソケット
- 私は、
http://superuser.com/questions/288320/whats-like-osxs-pbcopy-for-linux – ewcz
@ewcz(ほとんどのLinuxは、このFUNCを持っている)システム起動時にアプリの自動起動を作りますxclipを知っていますが、私は私のJavaコードを参照して、クリップボードにファイルを保存してから、ファイルエクスプローラで貼り付け(Ctrl + V)してください。 – asullaherc
あなたのコードを理解する限り、絶対パスを入力してくださいクリップボード?その場合はおそらく 'readlink -f your_file | xclip -selection clipboard'は動作するはずです - ここで 'readlink -f'は' your_file'の絶対パスを返します... – ewcz