Перемещение файлов в Trash Can в Linux с использованием С++

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

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

Самое лучшее, что я смог найти, это:

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

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

Было бы полезно получить любую помощь в поиске решения (если оно есть).

Ответ 1

Ответ находится в

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

Для каждого пользователя каталог "home trash" ДОЛЖЕН быть доступен. Его имя и местоположение: $XDG_DATA_HOME/Корзина

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

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

Ответ 2

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

Ответ 3

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

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