diff --git a/Examples/Python/sim02_Complexes/LargeParticlesFormFactor.py b/Examples/Python/sim02_Complexes/LargeParticlesFormFactor.py
index f4298acb8f3f20972ea8c3d675465cd9dae64c4f..70a515e706aeca79eaa54ebe3a31065eb689adb3 100644
--- a/Examples/Python/sim02_Complexes/LargeParticlesFormFactor.py
+++ b/Examples/Python/sim02_Complexes/LargeParticlesFormFactor.py
@@ -48,7 +48,8 @@ def get_simulation(integration_flag):
     simulation.setDetectorParameters(200, -2.0*deg, 2.0*deg, 200, 0.0*deg, 2.0*deg)
     simulation.setBeamParameters(1.0*angstrom, 0.2*deg, 0.0*deg)
     simulation.getOptions().setMonteCarloIntegration(integration_flag, 50)
-    simulation.setTerminalProgressMonitor()
+    if not "__no_terminal__" in globals():
+        simulation.setTerminalProgressMonitor()
     return simulation
 
 
diff --git a/Examples/Python/sim03_Structures/FindPeaks.py b/Examples/Python/sim03_Structures/FindPeaks.py
index 67e819af38a7e163a3ddec33c1b5550762edf7e8..b7a144367eb8dc9612a8e3bfe402fc3d8675a846 100644
--- a/Examples/Python/sim03_Structures/FindPeaks.py
+++ b/Examples/Python/sim03_Structures/FindPeaks.py
@@ -71,7 +71,8 @@ def run_simulation():
     """
     simulation = get_simulation()
     simulation.setSample(get_sample())
-    simulation.setTerminalProgressMonitor()
+    if not "__no_terminal__" in globals():
+        simulation.setTerminalProgressMonitor()
     simulation.runSimulation()
     return simulation.result()
 
@@ -87,4 +88,3 @@ if __name__ == '__main__':
     plt.plot(xpeaks, ypeaks, linestyle='None', marker='x', color='white',
              markersize=10)
     plt.show()
-
diff --git a/Examples/Python/sim03_Structures/Interference1DLattice.py b/Examples/Python/sim03_Structures/Interference1DLattice.py
index 75b071cb3db4720d0b55b64f3f52759d52d12084..8bb33dc3eccabd01500f94fe2fbeae39bef87d7f 100644
--- a/Examples/Python/sim03_Structures/Interference1DLattice.py
+++ b/Examples/Python/sim03_Structures/Interference1DLattice.py
@@ -62,7 +62,8 @@ def run_simulation():
     """
     simulation = get_simulation()
     simulation.setSample(get_sample())
-    simulation.setTerminalProgressMonitor()
+    if not "__no_terminal__" in globals():
+        simulation.setTerminalProgressMonitor()
     simulation.runSimulation()
     return simulation.result()
 
diff --git a/Examples/Python/sim03_Structures/Interference2DParaCrystal.py b/Examples/Python/sim03_Structures/Interference2DParaCrystal.py
index 9e3ba10f50c9c60c11e6774749ecf0ad642d76e9..eb1d0fa9f3e074b7ff639d5fabd5728398d7cc07 100644
--- a/Examples/Python/sim03_Structures/Interference2DParaCrystal.py
+++ b/Examples/Python/sim03_Structures/Interference2DParaCrystal.py
@@ -59,7 +59,8 @@ def run_simulation():
     """
     simulation = get_simulation()
     simulation.setSample(get_sample())
-    simulation.setTerminalProgressMonitor()
+    if not "__no_terminal__" in globals():
+        simulation.setTerminalProgressMonitor()
     simulation.runSimulation()
     return simulation.result()
 
diff --git a/Examples/Python/sim03_Structures/RectangularGrating.py b/Examples/Python/sim03_Structures/RectangularGrating.py
index 2ffe6128fcaeba84ba238de3cd884a4a7fcce8fb..51f548aa26c76f79d37d2424761fdf5de00a4c40 100644
--- a/Examples/Python/sim03_Structures/RectangularGrating.py
+++ b/Examples/Python/sim03_Structures/RectangularGrating.py
@@ -69,7 +69,8 @@ def run_simulation():
     """
     simulation = get_simulation()
     simulation.setSample(get_sample())
-    simulation.setTerminalProgressMonitor()
+    if not "__no_terminal__" in globals():
+        simulation.setTerminalProgressMonitor()
     simulation.runSimulation()
     return simulation.result()
 
diff --git a/Examples/Python/sim04_Multilayers/GratingMC.py b/Examples/Python/sim04_Multilayers/GratingMC.py
index 994a4f82417072bbbd313e6e8ef80ee37a261523..0c4b038c5d8b8b346e1f6a27e77c8f01fd119248 100644
--- a/Examples/Python/sim04_Multilayers/GratingMC.py
+++ b/Examples/Python/sim04_Multilayers/GratingMC.py
@@ -70,12 +70,14 @@ def run_simulation():
     """
     simulation = get_simulation()
     simulation.setSample(get_sample())
-    simulation.setTerminalProgressMonitor()
+    if not "__no_terminal__" in globals():
+        simulation.setTerminalProgressMonitor()
     simulation.runSimulation()
     return simulation.result()
 
 
 if __name__ == '__main__':
+    interactive = True
     result = run_simulation().histogram2d()
     ba.plot_histogram(result, cmap='jet', aspect='auto')
 
diff --git a/Examples/Python/sim11_Device/ResonatorOffSpecSetup.py b/Examples/Python/sim11_Device/ResonatorOffSpecSetup.py
index 9fbec87e3b6e3f049e9e41f012e19a490940181f..467c0c02405566fd507c775d70e21d0ad665b373 100644
--- a/Examples/Python/sim11_Device/ResonatorOffSpecSetup.py
+++ b/Examples/Python/sim11_Device/ResonatorOffSpecSetup.py
@@ -55,7 +55,8 @@ def get_offspec_simulation():
 
     # create OffSpecular simulation
     simulation = ba.OffSpecSimulation()
-    simulation.setTerminalProgressMonitor()
+    if not "__no_terminal__" in globals():
+        simulation.setTerminalProgressMonitor()
 
     # define detector parameters
     n_alpha, alpha_min, alpha_max = 300, 0.0*deg, 4.0*deg
diff --git a/Tests/Functional/Python/PyExamples/check_functionality.in.py b/Tests/Functional/Python/PyExamples/check_functionality.in.py
index b5843b2539ee268b83485a43ca9db25ec095df4d..c885bd9275a6d62f4e8a408c6449a5a44854217d 100644
--- a/Tests/Functional/Python/PyExamples/check_functionality.in.py
+++ b/Tests/Functional/Python/PyExamples/check_functionality.in.py
@@ -40,8 +40,9 @@ def exec_full(filepath):
     global_namespace = {
         "__file__": filepath,
         "__name__": "__main__",
+        "__no_terminal__": True
     }
-    sys.argv = []  # FIXME after cleanup in plot_utils
+    sys.argv = []  # TODO: FIXME after cleanup in plot_utils
     with open(filepath, 'rb') as file:
         exec(compile(file.read(), filepath, 'exec'), global_namespace)
 
@@ -53,11 +54,12 @@ def run_example(filename):
     if not os.path.exists(filename):
         raise Exception("Example script '" + filename + "' not found")
 
-    print("Input script: " + filename)
+    print("Input script: " + filename, flush=True)
 
     fig = get_figure(filename)
 
     exec_full(filename)
+    print("Input script completed.", flush=True)
 
     plot_file_name = os.path.join(
         output_dir,
@@ -76,8 +78,6 @@ def run_example(filename):
 if __name__ == '__main__':
 
     if len(sys.argv) != 2:
-        exit(
-            "Auxiliary script check_functionality called with wrong number of arguments"
-        )
+        exit("check_functionality called with wrong number of arguments")
 
     run_example(sys.argv[1])