bb45ee2
diff --git a/base/module.py b/base/module.py
bb45ee2
index dd3efa3..04ac5b8 100644
bb45ee2
--- a/base/module.py
bb45ee2
+++ b/base/module.py
bb45ee2
@@ -432,6 +432,12 @@ class Module(object):
bb45ee2
         if show_usage is not None:
bb45ee2
             sys.exit(0)
bb45ee2
 
bb45ee2
+        if mode == GUI_MODE:
bb45ee2
+            if not utils.canEnterGUIMode4():
bb45ee2
+                log.warn("GUI mode not available - switching to interactive mode.")
bb45ee2
+                mode = INTERACTIVE_MODE
bb45ee2
+                ui_toolkit = 'none'
c9df354
+
bb45ee2
         self.mode = mode
bb45ee2
         return opts, device_uri, printer_name, mode, ui_toolkit, lang
bb45ee2
 
c9df354
diff --git a/base/utils.py b/base/utils.py
bb45ee2
index 98437a3..9b8813b 100644
c9df354
--- a/base/utils.py
c9df354
+++ b/base/utils.py
bb45ee2
@@ -722,6 +722,15 @@ def canEnterGUIMode4(): # qt4
bb45ee2
             log.warn(e)
bb45ee2
             return False
bb45ee2
 
bb45ee2
+        try:
bb45ee2
+            import ui4
bb45ee2
+        except ImportError:
bb45ee2
+            try:
7153ae8
+                import ui5.setupdialog
bb45ee2
+            except ImportError as e:
bb45ee2
+                log.warn(e)
bb45ee2
+                return False
bb45ee2
+
bb45ee2
     return True
bb45ee2
 
bb45ee2
 
bb45ee2
@@ -734,6 +743,11 @@ def checkPyQtImport(): # qt3
64f6bd8
         if os.getenv('DISPLAY') and os.getenv('STARTED_FROM_MENU'):
64f6bd8
             no_qt_message_gtk()
bb45ee2
 
64f6bd8
+        try:
64f6bd8
+            import ui
64f6bd8
+        except ImportError:
64f6bd8
+            return False
9fb915e
+
64f6bd8
         log.error("PyQt not installed. GUI not available. Exiting.")
64f6bd8
         return False
bb45ee2
 
bb45ee2
@@ -781,11 +795,13 @@ def checkPyQtImport4():
bb45ee2
         import PyQt4
bb45ee2
         import ui4
bb45ee2
     except ImportError:
bb45ee2
-        import PyQt5
bb45ee2
-        import ui5
bb45ee2
-    else:
78217e9
-        log.debug("HPLIP is not installed properly or is installed without graphical support. Please reinstall HPLIP again")
bb45ee2
-        return False
c9df354
+        try:
bb45ee2
+            import PyQt5
7153ae8
+            import ui5.setupdialog
bb45ee2
+        except ImportError:
bb45ee2
+            log.debug('GUI not available.')
bb45ee2
+            return False
c9df354
+
bb45ee2
     return True
bb45ee2
 
bb45ee2
 # def checkPyQtImport5():
c9df354
diff --git a/fab.py b/fab.py
bb45ee2
index 5577af5..194ceed 100755
c9df354
--- a/fab.py
c9df354
+++ b/fab.py
bb45ee2
@@ -776,14 +776,15 @@ mod.setUsage(module.USAGE_FLAG_NONE)
bb45ee2
 opts, device_uri, printer_name, mode, ui_toolkit, loc = \
bb45ee2
     mod.parseStdOpts(handle_device_printer=False)
bb45ee2
 
bb45ee2
-if ui_toolkit == 'qt3':
bb45ee2
-    if not utils.canEnterGUIMode():
bb45ee2
-        log.error("%s GUI mode requires GUI support (try running with --qt4). Entering interactive mode." % __mod__)
bb45ee2
-        mode = INTERACTIVE_MODE
bb45ee2
-else:
bb45ee2
-    if not utils.canEnterGUIMode4():
bb45ee2
-        log.error("%s GUI mode requires GUI support (try running with --qt3). Entering interactive mode." % __mod__)
bb45ee2
-        mode = INTERACTIVE_MODE
bb45ee2
+if ui_toolkit != 'none':
bb45ee2
+    if ui_toolkit == 'qt3':
bb45ee2
+        if not utils.canEnterGUIMode():
bb45ee2
+            log.error("%s GUI mode requires GUI support (try running with --qt4). Entering interactive mode." % __mod__)
bb45ee2
+            mode = INTERACTIVE_MODE
bb45ee2
+    else:
bb45ee2
+        if not utils.canEnterGUIMode4():
bb45ee2
+            log.error("%s GUI mode requires GUI support (try running with --qt3). Entering interactive mode." % __mod__)
bb45ee2
+            mode = INTERACTIVE_MODE
bb45ee2
 
bb45ee2
 
bb45ee2
 if mode == GUI_MODE: