Gtk Ckipboard: вставка файлов из источника с пользовательской схемой URI

Я пытаюсь написать приложение GTK/C, которое помещает некоторые файлы в буфер обмена Gtk, поэтому пользователь Nautilus сможет их вставить. Существует хороший пример копирования и вставки локального файла Gtk Clipboard в stackoverflow. К сожалению, файлы, которые мне нужно вставить, находятся не на локальном диске, и к ним нельзя получить доступ через стандартную схему URI GVFS, такую ​​​​как файл: // Только мое приложение может получить доступ к этим исходным файлам после настройки TCP-соединения, аутентификации и открытия дополнительного канала. .

Как я могу управлять этими приложениями удаленными файлами в буфере обмена Gtk для вставки с помощью Nautilus? И в будущем для Dolphin/KDE тоже?

Погуглив, я пришел к следующей идее: мне нужно разработать новый обработчик схемы URI gvfs (то есть: my-app://). Но трудно найти примеры или документацию. Это единственный способ? И может ли мое приложение зарегистрироваться как временный обработчик схемы GVFS URI без изменения какого-либо внешнего файла конфигурации системы? Как ?


person giox069    schedule 25.03.2016    source источник
comment
Я написал пример на vala, но он все равно может быть полезен: ="вставка uris в буфер обмена gtk с помощью vala">stackoverflow.com/questions/50319438/   -  person    schedule 18.05.2018
comment
Хорошо, в вашем примере вы можете поместить URI в буфер обмена. В вашем конкретном случае это файлы в локальной файловой системе, например «/home/lukas/tmp/test.txt». Но, как сказано выше, у меня нет файлов в файловой системе: поток контента, который я хочу поместить в буфер обмена, генерируется приложением на лету, когда пользователь хочет вставить его в nautilus. В Windows, кажется, есть функция: RegisterClipboardFormat(CFSTR_FILECONTENTS), которая позволяет проводнику Windows вставлять поток, сгенерированный приложением. Но не для наутилуса.   -  person giox069    schedule 17.03.2019


Ответы (1)


Это старый вопрос, но мне пришлось решить аналогичную проблему. Создав пользовательскую файловую систему Fuse, стало возможным использовать обычное поведение буфера обмена (способ kde и gnome объявлять файлы для копирования в буфер обмена) и использовать сетевые ресурсы только в том случае, если данные действительно доступны.

person akallabeth    schedule 09.10.2020