#!/bin/env python3 import subprocess import urllib.parse from gi.repository import GLib from pydbus import SessionBus terminal_cmd = ["st", "-e"] class FMService(object): """ <node> <interface name='org.freedesktop.FileManager1'> <method name='ShowFolders'> <arg type='as' name='URIs' direction='in'/> <arg type='s' name='StartupId' direction='in'/> </method> <method name='ShowItems'> <arg type='as' name='URIs' direction='in'/> <arg type='s' name='StartupId' direction='in'/> </method> <method name='ShowItemProperties'> <arg type='as' name='URIs' direction='in'/> <arg type='s' name='StartupId' direction='in'/> </method> </interface> </node> """ def ShowItems(self, uris, startup_id): uri = urllib.parse.unquote(uris[0]).replace("file://", "") subprocess.Popen([*terminal_cmd, "lf", uri]) def ShowFolders(self, uris, startup_id): self.ShowItems(uris, startup_id) def ShowItemProperties(self, uris, startup_id): self.ShowItems(uris, startup_id) session_bus = SessionBus() session_bus.publish("org.freedesktop.FileManager1", FMService()) loop = GLib.MainLoop() loop.run()