def on_drag_data_received(self, widget, context, x, y, selection, target, timestamp, box): droppeduris = selection.get_uris() # url-unquote the list, strip file:// schemes, handle .desktop-s pathlist = [] app = None for uri in droppeduris: scheme, _, path, _, _ = urlsplit(uri) if scheme != "file": pathlist.append(uri) else: filename = url2pathname(path) desktopentry = DesktopEntry() try: desktopentry.parse(filename) except xdg.Exceptions.ParsingError: pathlist.append(filename) continue if desktopentry.getType() == 'Link': pathlist.append(desktopentry.getURL()) if desktopentry.getType() == 'Application': app = desktopentry.getExec() if app and len(droppeduris) == 1: text = app else: text = str.join("", (shell_quote(path) + " " for path in pathlist)) box.terminal.feed_child(text) return True