37 lines
		
	
	
		
			900 B
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			900 B
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #! /usr/bin/env python
 | |
| # -*- coding: utf-8 -*-
 | |
| # vim: set ft=python ts=4 sw=4 sts=4 et :
 | |
| 
 | |
| import sys
 | |
| import subprocess
 | |
| 
 | |
| from gi.repository import Gio
 | |
| 
 | |
| def main(myname, desktop, *files):
 | |
|     info = Gio.DesktopAppInfo()
 | |
|     dbus_activate = False
 | |
| 
 | |
|     try:
 | |
|         launcher = info.new_from_filename(desktop)
 | |
|     except TypeError:
 | |
|         launcher = None
 | |
| 
 | |
|     if launcher:
 | |
|         try:
 | |
|             dbus_activate = launcher.get_boolean('DBusActivatable')
 | |
|         except AttributeError:
 | |
|             dbus_activate = False
 | |
| 
 | |
|         if not dbus_activate:
 | |
|             launcher.launch(files, None)
 | |
| 
 | |
|         else:
 | |
|             if dbus_activate:
 | |
|                 cmd = ['gapplication', 'launch', launcher.get_id().replace('.desktop', '')]
 | |
|                 if files:
 | |
|                     cmd.extend(files)
 | |
|                 process = subprocess.Popen(cmd, close_fds=True)
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     main(*sys.argv)
 | 
