domingo, 4 de agosto de 2013

Arreglar error lanzador de aplicaciones linux mint mintmenu 5.3.8

Bueno, luego de cabeciarme harto y no encontrar información en ni un lado, les dejo la solución al problema cuando no encontraba ruta o alegaba por permisos root en mintmenu 5.3.8, esto ocurre una vez actualizamos nuestro sistema operativo ;).

la solución consiste en reemplazar el código del archivo execute.py (código python responsable de lanzar aplicaciones del menú).
El código inicial:


import os
import subprocess

def RemoveArgs(Execline):
 NewExecline = []
 Specials=["\"%c\"", "%f","%F","%u","%U","%d","%D","%n","%N","%i","%c","%k","%v","%m","%M", "-caption", "/bin/sh", "sh", "-c", "STARTED_FROM_MENU=yes"]
 for elem in Execline:
  elem = elem.replace("'","")
  elem = elem.replace("\"", "")
  if elem not in Specials:
   print elem
   NewExecline.append(elem)
 return NewExecline

# Actually execute the command
def Execute( cmd ):
 if isinstance( cmd, str ):
  if (cmd.find("/home/") >= 0) or (cmd.find("su-to-root") >= 0) or (cmd.find("\"") >= 0):
   print "running manually..."
   os.system(cmd + " &")
   return True  
  cmd = cmd.split()
 cmd = RemoveArgs(cmd)
 try:
  os.chdir( os.path.expanduser( "~" ) )
  subprocess.Popen( cmd )
  return True
 except Exception, detail:
  print detail
  return False
  
El código como debe quedar:


import os
import subprocess

def RemoveArgs(Execline):
 NewExecline = []
 Specials=["\"%c\"", "%f","%F","%u","%U","%d","%D","%n","%N","%i","%c","%k","%v","%m","%M", "-caption", "/bin/sh", "sh", "-c", "STARTED_FROM_MENU=yes"]
 for elem in Execline:
  elem = elem.replace("'","")
  elem = elem.replace("\"", "")
  if elem not in Specials:
   print elem
   NewExecline.append(elem)
 return NewExecline

# Actually execute the command
def Execute( cmd ):
 if isinstance( cmd, str ) or isinstance( cmd, unicode):
  if (cmd.find("/home/") >= 0) or (cmd.find("su-to-root") >= 0) or (cmd.find("\"") >= 0):
   print "running manually..."
   os.system(cmd + " &")
   return True  
  cmd = cmd.split()
 cmd = RemoveArgs(cmd)
 try:
  os.chdir( os.path.expanduser( "~" ) )
  subprocess.Popen( cmd )
  return True
 except Exception, detail:
  print detail
  return False

Ahora reiniciamos y listo, ya no más errores de permisos, de rutas, etc en mintmenu. Estas fuentes fueron
recopilación de pruebas e info, dejo los siguientes enlaces:


Topic en foro de Linux Mint, donde respondí a este bug de la última versión de matemenu

Saludos y si quieren más detalle del código me dicen y explico los cambios más en detalle ;).

No hay comentarios:

Publicar un comentario