diff --git a/fsl/__init__.py b/fsl/__init__.py
index 3bcf0bb9c8e757dd6535f7392cf9fb240a3d24ea..dcd21e0618658f6923d39db018b18e84b3fe3e48 100644
--- a/fsl/__init__.py
+++ b/fsl/__init__.py
@@ -95,7 +95,8 @@ log = logging.getLogger()
 log.addHandler(logHandler)
 
 
-import fsl.tools as tools
+import fsl.tools          as tools
+import fsl.utils.settings as fslsettings
 
 
 def loadAllFSLTools():
@@ -323,7 +324,16 @@ def fslDirWarning(frame, toolName, fslEnvActive):
     warnmsg = 'The FSLDIR environment variable is not set - '\
               '{} may not behave correctly.'.format(toolName)
 
-    if frame is not None:
+
+    # Check fslpy settings before
+    # prompting the user
+    fsldir = fslsettings.read('fsldir')
+
+    if fsldir is not None:
+        os.environ['FSLDIR'] = fsldir
+        return
+
+    if frame is not None and fsldir is None:
         import wx
         from fsl.utils.fsldirdlg import FSLDirDialog
 
@@ -333,7 +343,9 @@ def fslDirWarning(frame, toolName, fslEnvActive):
             fsldir = dlg.GetFSLDir()
             log.debug('Setting $FSLDIR to {} (specified '
                       'by user)'.format(fsldir))
+            
             os.environ['FSLDIR'] = fsldir
+            fslsettings.write('fsldir', fsldir)
     else:
         log.warn(warnmsg)
         
@@ -397,6 +409,7 @@ def main(args=None):
     and displays a GUI (if the tool has one), or executes the tool.
     """
 
+    # Search the environment for FSLDIR 
     fsldir       = os.environ.get('FSLDIR', None)
     fslEnvActive = fsldir is not None
 
diff --git a/fsl/fslview/frame.py b/fsl/fslview/frame.py
index 29c55ae34d8d23271290e387c37177de9eabf83f..3e40a4df2a887dc1395a7dd1102c941306d16f83 100644
--- a/fsl/fslview/frame.py
+++ b/fsl/fslview/frame.py
@@ -53,8 +53,8 @@ import logging
 import wx
 import wx.aui as aui
 
-import fsl.data.strings     as strings
-import fsl.fslview.settings as fslsettings
+import fsl.data.strings   as strings
+import fsl.utils.settings as fslsettings
 
 import views
 import actions
diff --git a/fsl/fslview/overlay.py b/fsl/fslview/overlay.py
index a7f1fd7bb54ab14fcd5adbc4bc764dae3e63b214..80f87619e72ade22502b750a3bad092f3f941375 100644
--- a/fsl/fslview/overlay.py
+++ b/fsl/fslview/overlay.py
@@ -22,7 +22,7 @@ import fsl.data.featresults as featresults
 import fsl.data.featimage   as fslfeatimage
 import fsl.data.strings     as strings
 import fsl.data.model       as fslmodel
-import fsl.fslview.settings as fslsettings
+import fsl.utils.settings   as fslsettings
 
 
 log = logging.getLogger(__name__)
diff --git a/fsl/fslview/settings.py b/fsl/utils/settings.py
similarity index 70%
rename from fsl/fslview/settings.py
rename to fsl/utils/settings.py
index d2d1347dfdd406d703be4df91f1e75b79edafbc4..87b6c9ce6a5bc0cb34d777ce0e2b8245a7492922 100644
--- a/fsl/fslview/settings.py
+++ b/fsl/utils/settings.py
@@ -14,10 +14,13 @@ def read(name, default=None):
     try:    import wx
     except: return None
 
-    config = wx.Config('fslview')
+    config = wx.Config('fsleyes')
     
     value = config.Read(name)
 
+    log.debug('Read {}: {}'.format(
+        name, '(no value)' if value == '' else value))
+
     if value == '': return default
     else:           return value
 
@@ -28,8 +31,8 @@ def write(name, value):
     except: return None    
 
     value  = str(value)
-    config = wx.Config('fslview')
+    config = wx.Config('fsleyes')
 
-    log.debug('Saving {}: {}'.format(name, value))
+    log.debug('Writing {}: {}'.format(name, value))
 
     config.Write(name, value)