Перемещение файлов в корзину в Linux с использованием C ++ - PullRequest
12 голосов
/ 21 июля 2011

Я пытаюсь переместить (удалить) файл в корзину (в Linux), используя C ++ (также используя QT4 для GUI).К сожалению, это кажется довольно трудным делом, и, насколько я могу судить, единого API для него нет.

Я бы хотел, чтобы мое приложение работало не только на KDE, но и на GNOME, Xfce.и другие окружения рабочего стола Linux.Вот почему я ищу более универсальный подход.

Лучшее, что я смог найти на данный момент:

  • send2trash - но это с использованием Python / QT4а не C ++ / QT4
  • trash-cli - недостатком является то, что это отдельная программа командной строки, а не библиотека

Я был бы счастливс любым подходом, который требует как можно меньше кода, специфичного для среды рабочего стола.Или, другими словами, он настолько независим от компонентов KDE / GNOME / Xfce, насколько это возможно.

Любая помощь в поиске решения (если оно вообще есть) будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 24 июля 2011

Ответ:

http://www.freedesktop.org/wiki/Specifications/trash-spec

Для каждого пользователя ДОЛЖЕН быть доступен каталог «Домашняя корзина».Его имя и местонахождение: $ XDG_DATA_HOME / Trash

Вам нужно только написать код C ++, чтобы переместить ваш файл в такой каталог.

Вы можете перемещать файлы, используя boost file system , и вы можете получить значение XDG_DATA_HOME, используя cstlib getenv .

0 голосов
/ 22 июля 2011

Почему бы не найти команду терминала для перемещения файлов, а затем вызвать system () , чтобы запустить ее для вас внутри вашей программы C ++?

Это возможно (я не проверял это) может быть одной строкой в ​​Linux для перемещения файлов в корзину через терминал.Вы просто передадите команду в виде строки в кавычках system() и вызовете ее в своей реализации C ++.

0 голосов
/ 21 июля 2011

Насколько я знаю, в Linux нет стандартного мусорного ведра.

...