Git Repositories

Drop Freedesktop (xdg-open) support for root.
authorCyrille Pontvieux <jrd@enialis.net>
Mon, 24 Mar 2014 23:36:29 +0000 (00:36 +0100)
committerCyrille Pontvieux <jrd@enialis.net>
Tue, 25 Mar 2014 00:01:03 +0000 (01:01 +0100)
xdg-open is not reliable as root. So pick a valid graphical editor
amongst:
- leafpad
- gedit
- geany
- kate
- 'xterm -e nano' as the last ressort.

src/lib/gathercurses.py
src/lib/gathergui.py

index 0adf8a8..a3194b7 100644 (file)
@@ -61,6 +61,7 @@ class GatherCurses:
   _custom_lilo = False
   _grub2_cfg = False
   _liloMaxChars = 15
+  _editors = ['vim', 'nano']
 
   def __init__(self, bootsetup, version, bootloader = None, target_partition = None, is_test = False, use_test_data = False):
     self._bootsetup = bootsetup
@@ -523,9 +524,9 @@ click on this button to install your bootloader.")
       self._create_lilo_config()
     if os.path.exists(lilocfg):
       launched = False
-      for editor in ('vim', 'nano'):
+      for editor in self._editors:
         try:
-          sltl.execCall([editor, lilocfg], shell=False, env=None)
+          sltl.execCall([editor, lilocfg], shell=True, env=None)
           launched = True
           break
         except:
@@ -591,9 +592,9 @@ click on this button to install your bootloader.")
       doumount = True
     grub2cfg = os.path.join(mp, "etc/default/grub")
     launched = False
-    for editor in ('vim', 'nano'):
+    for editor in self._editors:
       try:
-        sltl.execCall([editor, grub2cfg], shell=False, env=None)
+        sltl.execCall([editor, grub2cfg], shell=True, env=None)
         launched = True
         break
       except:
index ea1c9ac..b8db8f0 100644 (file)
@@ -30,6 +30,7 @@ class GatherGui:
   _grub2 = None
   _editing = False
   _custom_lilo = False
+  _editors = ['leafpad', 'gedit', 'geany', 'kate', 'xterm -e nano']
 
   def __init__(self, bootsetup, version, bootloader = None, target_partition = None, is_test = False, use_test_data = False):
     self._bootsetup = bootsetup
@@ -379,9 +380,17 @@ click on this button to install your bootloader."))
       self.update_buttons()
       self._create_lilo_config()
     if os.path.exists(lilocfg):
-      try:
-        sltl.execCall(['xdg-open', lilocfg], shell=False, env=None)
-      except:
+      launched = False
+      for editor in self._editors:
+        try:
+          cmd = editor.split(' ') + [lilocfg]
+          sltl.execCall(cmd, shell=True, env=None)
+          launched = True
+          break
+        except:
+          pass
+      if not launched:
+        self._custom_lilo = False
         self._bootsetup.error_dialog(_("Sorry, BootSetup is unable to find a suitable text editor in your system. You will not be able to manually modify the LiLo configuration.\n"))
 
   def on_lilo_undo_button_clicked(self, widget, data=None):
@@ -405,9 +414,16 @@ click on this button to install your bootloader."))
       doumount = True
     grub2cfg = os.path.join(mp, "etc/default/grub")
     if os.path.exists(grub2cfg):
-      try:
-        sltl.execCall(['xdg-open', grub2cfg], shell=False, env=None)
-      except:
+      launched = False
+      for editor in self._editors:
+        try:
+          cmd = editor.split(' ') + [grub2cfg]
+          sltl.execCall(cmd, shell=True, env=None)
+          launched = True
+          break
+        except:
+          pass
+      if not launched:
         self._bootsetup.error_dialog(_("Sorry, BootSetup is unable to find a suitable text editor in your system. You will not be able to manually modify the Grub2 default configuration.\n"))
     if doumount:
       sltl.umountDevice(mp)