diff --git a/usr/lib/linuxmint/mintMenu/plugins/execute.py b/usr/lib/linuxmint/mintMenu/plugins/execute.py index 7835f2e..f76429d 100755 --- a/usr/lib/linuxmint/mintMenu/plugins/execute.py +++ b/usr/lib/linuxmint/mintMenu/plugins/execute.py @@ -1,7 +1,7 @@ #!/usr/bin/python2 import os -from gi.repository import Gio +from gi.repository import Gio, GLib def RemoveArgs(Execline): @@ -16,12 +16,20 @@ def RemoveArgs(Execline): return Execline +def dummy_child_watch (pid, status, data): + # Do nothing, this is just to ensure we don't double fork + # and break pkexec: https://bugzilla.gnome.org/show_bug.cgi?id=675789 + pass + +def gather_pid_callback(appinfo, pid, data): + GLib.child_watch_add(pid, dummy_child_watch, None) + # Actually execute the command def Execute(cmd , commandCwd=None, desktopFile=None): if desktopFile: launcher = Gio.DesktopAppInfo.new_from_filename(desktopFile) - retval = launcher.launch_uris() - + retval = launcher.launch_uris_as_manager(uris=[], launch_context=None, spawn_flags=GLib.SpawnFlags.SEARCH_PATH|GLib.SpawnFlags.DO_NOT_REAP_CHILD, \ + user_setup=None, user_setup_data=None, pid_callback=gather_pid_callback, pid_callback_data=None) return retval cwd = os.path.expanduser("~")