diff --git a/GUI/View/SampleDesigner/SampleListing.cpp b/GUI/View/SampleDesigner/SampleListing.cpp
index 8f68d36ec81e4c3e5db84b62ef8ca2b92f361aad..33468c405e2ba819906d00a547f74a09602946ce 100644
--- a/GUI/View/SampleDesigner/SampleListing.cpp
+++ b/GUI/View/SampleDesigner/SampleListing.cpp
@@ -66,6 +66,8 @@ SampleListing::SampleListing(QWidget* parent, ProjectDocument* document)
     : QListView(parent)
     , m_document(document)
 {
+    setMaximumWidth(200);
+
     m_model = new SampleListModel(this, document->sampleModel());
 
     setContextMenuPolicy(Qt::CustomContextMenu);
diff --git a/GUI/View/SampleDesigner/SampleView.cpp b/GUI/View/SampleDesigner/SampleView.cpp
index b0dd2252fc39b8622f78e3997c879ca429bbc754..f265cebb84bb052306bf91cce4ac9509d3a1585d 100644
--- a/GUI/View/SampleDesigner/SampleView.cpp
+++ b/GUI/View/SampleDesigner/SampleView.cpp
@@ -18,7 +18,6 @@
 #include "GUI/Model/Sample/LayerItem.h"
 #include "GUI/Model/Sample/ParticleLayoutItem.h"
 #include "GUI/Model/Sample/SampleItem.h"
-#include "GUI/View/Dock/DocksController.h"
 #include "GUI/View/SampleDesigner/SampleEditor.h"
 #include "GUI/View/SampleDesigner/SampleListing.h"
 #include "GUI/View/SampleDesigner/ScriptPanel.h"
@@ -32,62 +31,63 @@
 #include <QDockWidget>
 #include <QMenu>
 #include <QMessageBox>
+#include <QTabWidget>
 #include <QToolButton>
 #include <QWidgetAction>
 
 SampleView::SampleView(QWidget* parent, ProjectDocument* document)
-    : QMainWindow(parent)
+    : QWidget(parent)
     , m_document(document)
 {
-    setObjectName("SampleView");
+    auto* layout = new QVBoxLayout(this);
 
-    connect(m_document, &ProjectDocument::singleSampleModeChanged, this,
-            &SampleView::updateSingleSampleMode);
+    // Top toolbar with action buttons "new", "import", "example"
+    auto* toolbar = new StyledToolbar;
+    layout->addWidget(toolbar);
+    toolbar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
 
-    //... Central widget: sample editor
+    // Everything below
+    auto* hLayout = new QHBoxLayout;
+    layout->addLayout(hLayout);
 
-    auto* editor = new SampleEditor(this, document);
-    setCentralWidget(editor);
+    //... Left margin: sample listing
 
-    //... All other panels controlled by m_docks
+    m_listing = new SampleListing(this, m_document);
+    hLayout->addWidget(m_listing);
+    m_listing->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
 
-    m_docks = new DocksController(this);
+    //... Right block: sample editor and bottom panels
 
-    //... Left margin: sample selector and listing
+    auto* vLayout = new QVBoxLayout;
+    hLayout->addLayout(vLayout);
 
-    auto* selectorPane = new QWidget;
-    m_docks->addWidget(SAMPLE_LIST, selectorPane, Qt::LeftDockWidgetArea);
-    selectorPane->setWindowTitle("Samples");
+    auto* editor = new SampleEditor(this, document);
+    vLayout->addWidget(editor);
 
-    auto* selectorLayout = new QVBoxLayout(selectorPane);
-    selectorLayout->setSpacing(0);
+    //... Below central widget: realspace and script panels
 
-    auto* selectorToolbar = new StyledToolbar(selectorPane);
-    selectorLayout->addWidget(selectorToolbar);
-    selectorToolbar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
+    auto* tabs = new QTabWidget;
+    vLayout->addWidget(tabs);
 
-    m_listing = new SampleListing(this, m_document);
-    selectorLayout->addWidget(m_listing);
-    m_listing->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
+    m_realspacePanel = new RealspacePanel(this);
+    tabs->addTab(m_realspacePanel, "3D view");
+
+    auto* scriptPanel = new ScriptPanel(this);
+    tabs->addTab(scriptPanel, "Python");
+
+    //... Finish
 
-    selectorToolbar->addAction(m_listing->newSampleAction());
+    toolbar->addAction(m_listing->newSampleAction());
 #ifdef BORNAGAIN_PYTHON
-    selectorToolbar->addAction(m_listing->importSampleAction());
+    toolbar->addAction(m_listing->importSampleAction());
 #endif
-    selectorToolbar->addAction(m_listing->chooseFromLibraryAction());
+    toolbar->addAction(m_listing->chooseFromLibraryAction());
     if (auto* btn = dynamic_cast<QToolButton*>(
-            selectorToolbar->widgetForAction(m_listing->chooseFromLibraryAction())))
+            toolbar->widgetForAction(m_listing->chooseFromLibraryAction())))
         btn->setPopupMode(QToolButton::InstantPopup);
 
-    //... Below central widget: realspace and script panels
-
-    auto* scriptPanel = new ScriptPanel(this);
-    m_docks->addWidget(PYTHONPANEL, scriptPanel, Qt::BottomDockWidgetArea);
-
-    m_realspacePanel = new RealspacePanel(this);
-    m_docks->addWidget(REALSPACEPANEL, m_realspacePanel, Qt::BottomDockWidgetArea);
-
-    //... Finish
+    connect(m_document, &ProjectDocument::singleSampleModeChanged, this,
+            &SampleView::updateSingleSampleMode);
 
     connect(m_listing, &SampleListing::currentSampleChanged, editor,
             &SampleEditor::setCurrentSample);
@@ -115,13 +115,11 @@ SampleView::SampleView(QWidget* parent, ProjectDocument* document)
 
     connect(editor, &SampleEditor::modified, m_document, &ProjectDocument::setModified,
             Qt::UniqueConnection);
-
-    resetLayout();
 }
 
 void SampleView::updateSingleSampleMode()
 {
-    m_docks->setDockVisible(SAMPLE_LIST, !m_document->singleSampleMode());
+    // m_docks->setDockVisible(SAMPLE_LIST, !m_document->singleSampleMode());
 }
 
 void SampleView::onRequestViewInRealspace(Item3D* item)
@@ -131,7 +129,7 @@ void SampleView::onRequestViewInRealspace(Item3D* item)
         return;
     }
 
-    m_docks->setDockVisible(REALSPACEPANEL);
+    // m_docks->setDockVisible(REALSPACEPANEL);
     m_realspacePanel->widget()->setDisplayedItem(m_listing->currentSampleItem(), item);
 }
 
@@ -163,14 +161,9 @@ void SampleView::onAboutToRemoveItem(Item3D* item)
     }
 }
 
-void SampleView::toggleRealspaceView()
-{
-    m_docks->toggleDock(REALSPACEPANEL);
-}
-
 void SampleView::fillViewMenu(QMenu* menu)
 {
-    m_docks->addDockActionsToMenu(menu);
+    // m_docks->addDockActionsToMenu(menu);
 
     menu->addSeparator();
 
@@ -182,11 +175,6 @@ void SampleView::fillViewMenu(QMenu* menu)
     actionSampleMode->setCheckable(true);
     actionSampleMode->setDefaultWidget(sampleModeWidget);
     menu->addAction(actionSampleMode);
-
-    auto* action = new QAction(menu);
-    action->setText("Reset to default layout");
-    connect(action, &QAction::triggered, this, &SampleView::resetLayout);
-    menu->addAction(action);
 }
 
 void SampleView::showEvent(QShowEvent*)
@@ -195,24 +183,6 @@ void SampleView::showEvent(QShowEvent*)
         m_listing->restoreSelection();
 }
 
-void SampleView::resetLayout()
-{
-    m_docks->resetLayout();
-
-    tabifyDockWidget(m_docks->findDock(REALSPACEPANEL), m_docks->findDock(PYTHONPANEL));
-    m_docks->findDock(REALSPACEPANEL)->raise(); // makes first tab active
-
-    m_docks->findDock(REALSPACEPANEL)->hide();
-    m_docks->findDock(PYTHONPANEL)->hide();
-
-    if (auto* d = m_docks->findDock(SAMPLE_LIST)) {
-        if (m_document->singleSampleMode())
-            d->hide();
-        else
-            d->show();
-    }
-}
-
 void SampleView::onSingleSampleModeChanged(bool newState)
 {
     if (newState) {
diff --git a/GUI/View/SampleDesigner/SampleView.h b/GUI/View/SampleDesigner/SampleView.h
index 2addea6cc1d48b06a8a68d2e371c5efded3d9f5c..8861019a2fa7e38ee0810666a8784346208efcd1 100644
--- a/GUI/View/SampleDesigner/SampleView.h
+++ b/GUI/View/SampleDesigner/SampleView.h
@@ -15,28 +15,23 @@
 #ifndef BORNAGAIN_GUI_VIEW_SAMPLEDESIGNER_SAMPLEVIEW_H
 #define BORNAGAIN_GUI_VIEW_SAMPLEDESIGNER_SAMPLEVIEW_H
 
-#include <QMainWindow>
+#include <QWidget>
 
-class DocksController;
 class Item3D;
 class ProjectDocument;
 class RealspacePanel;
 class SampleListing;
 
-class SampleView : public QMainWindow {
+class SampleView : public QWidget {
     Q_OBJECT
 public:
-    enum ESubWindows { PYTHONPANEL, REALSPACEPANEL, SAMPLE_LIST };
-
     SampleView(QWidget* parent, ProjectDocument* document);
 
-    void toggleRealspaceView();
     void fillViewMenu(QMenu* menu);
 
 private:
     void showEvent(QShowEvent*) override;
 
-    void resetLayout();
     void updateSingleSampleMode();
 
     //! Show the item in the real space view
@@ -48,7 +43,6 @@ private:
 
     void onSingleSampleModeChanged(bool newState);
 
-    DocksController* m_docks = nullptr;
     ProjectDocument* m_document = nullptr;
     RealspacePanel* m_realspacePanel = nullptr;
     SampleListing* m_listing = nullptr;