diff --git a/send2trash/__init__.py b/send2trash/__init__.py index 1fa83de..8a059a0 100644 --- a/send2trash/__init__.py +++ b/send2trash/__init__.py @@ -11,4 +11,9 @@ if sys.platform == 'darwin': elif sys.platform == 'win32': from .plat_win import send2trash else: - from .plat_other import send2trash + try: + # If we can use gio, let's use it + from .plat_gio import send2trash + except ImportError: + # Oh well, let's fallback to our own Freedesktop trash implementation + from .plat_other import send2trash diff --git a/send2trash/plat_gio.py b/send2trash/plat_gio.py new file mode 100644 index 0000000..9282d90 --- /dev/null +++ b/send2trash/plat_gio.py @@ -0,0 +1,14 @@ +# Copyright 2013 Hardcoded Software (http://www.hardcoded.net) + +# This software is licensed under the "BSD" License as described in the "LICENSE" file, +# which should be included with this package. The terms are also available at +# http://www.hardcoded.net/licenses/bsd_license + +from gi.repository import GObject, Gio + +def send2trash(path): + try: + f = Gio.File.new_for_path(path) + f.trash(cancellable=None) + except GObject.GError as e: + raise OSError(e.message)