diff --git a/Alacarte/ItemEditor.py b/Alacarte/ItemEditor.py
index 3b48324..07e8ca3 100644
--- a/Alacarte/ItemEditor.py
+++ b/Alacarte/ItemEditor.py
@@ -182,7 +182,24 @@ class LauncherEditor(ItemEditor):
     def resync_validity(self, *args):
         name_text = self.builder.get_object('name-entry').get_text()
         exec_text = self.builder.get_object('exec-entry').get_text()
-        valid = (name_text != "" and GLib.find_program_in_path(exec_text) is not None)
+
+        valid = False
+        if name_text != "" and exec_text != "":
+
+            try:
+
+                # Attempting to parse command - commands are not simply program names or paths... Errors are raised for blank or invalid input (e.g. missing closing quote)
+                result = GLib.shell_parse_argv(exec_text)
+                if result[0]:
+
+                    # Parsing succeeded - making sure program (first part of the command) is in the path
+                    command = result[1][0]
+                    valid = (GLib.find_program_in_path(command) is not None)
+
+            except:
+                pass
+
+        # Enabling/disabling OK button as a result
         self.builder.get_object('ok').set_sensitive(valid)
 
     def load(self):
