Multiple monitors

Is there any way to split the red, green, yellow, and 3d screen to another monitor? It would be nice to keep the modules on one screen and images on another. Thank you.

For multi-monitor setups, we usually stretch the application window to cover all screens that we want to use and drag-and-drop the vertical splitters to be at the edge of the monitor. Several layouts have vertical splitters, but none of them would allow you to split 3 slice views. For that, you need to copy-paste the code below into the Python console to define and switch to a custom layout:

customLayout = """
<layout type="horizontal" split="true">
 <item>
  <view class="vtkMRMLSliceNode" singletontag="Red">
   <property name="orientation" action="default">Axial</property>
     <property name="viewlabel" action="default">R</property>
   <property name="viewcolor" action="default">#F34A33</property>
  </view>
 </item>
 <item>
  <view class="vtkMRMLSliceNode" singletontag="Green">
   <property name="orientation" action="default">Axial</property>
   <property name="viewlabel" action="default">G</property>
   <property name="viewcolor" action="default">#6EB04B</property>
  </view>
 </item>
 <item>
  <view class="vtkMRMLSliceNode" singletontag="Yellow">
   <property name="orientation" action="default">Axial</property>
   <property name="viewlabel" action="default">Y</property>
   <property name="viewcolor" action="default">#EDD54C</property>
  </view>
 </item>
 <item>
  <view class="vtkMRMLViewNode" singletontag="1">
   <property name="viewlabel" action="default">1</property>
  </view>
 </item>
</layout>
"""
  
customLayoutId=555

layoutManager = slicer.app.layoutManager()
layoutManager.layoutLogic().GetLayoutNode().AddLayoutDescription(customLayoutId, customLayout)                                         
layoutManager.setLayout(customLayoutId)

image

Also something like this works to split a widget out of the main window:

slicer.app.layoutManager().sliceWidget('Red').setParent(None)
slicer.app.layoutManager().sliceWidget('Red').show()

The widget gets reparented to the main window when you change the layout.

You can also create a completely independent slice widget (that will not be reparented to the main window) as shown here: https://www.slicer.org/wiki/Documentation/Nightly/ScriptRepository#Show_a_slice_view_outside_the_view_layout

It requires some API changes that I’ve just added, so it’ll work with nightly Slicer builds that you download tomorrow or later.