diff --git a/app/components/commander/action_modes.hbs b/app/components/commander/action_modes.hbs
index 9525a7c4545a73f85199029842ad06e8a350c1d9..5db1cd05044ba3e84a15dd7645baf37c53343f11 100644
--- a/app/components/commander/action_modes.hbs
+++ b/app/components/commander/action_modes.hbs
@@ -1,6 +1,12 @@
 <div class="d-flex">
+
   <Commander::ViewMode
     @onViewModeChange={{@onViewModeChange}} />
+
+  <PanelModes
+    @dualPanelMode={{@dualPanelMode}}
+    @hint={{@hint}} />
+
   <div class="panel-mode">
     <button type="button" class="btn btn-light mx-1"
       {{on "click" (fn @onPanelToggle @hint) }}>
@@ -11,4 +17,5 @@
       {{/if}}
     </button>
   </div>
-</div>
\ No newline at end of file
+
+</div>
diff --git a/app/components/panel_modes.hbs b/app/components/panel_modes.hbs
new file mode 100644
index 0000000000000000000000000000000000000000..192f5841fb229ee20eb94f31c6c4a21b12deb27c
--- /dev/null
+++ b/app/components/panel_modes.hbs
@@ -0,0 +1,18 @@
+{{#if @dualPanelMode}}
+  {{#if (is_equal @hint "left")}}
+    <button type="button"
+      class="btn btn-light mx-1">
+        <i class="bi-arrow-bar-right"></i>
+    </button>
+  {{else}}
+    <button type="button"
+      class="btn btn-light mx-1">
+        <i class="bi-arrow-bar-left"></i>
+    </button>
+  {{/if}}
+
+  <button type="button"
+    class="btn btn-light mx-1">
+      <i class="bi-arrow-left-right"></i>
+  </button>
+{{/if}}
diff --git a/app/components/viewer/action_modes.hbs b/app/components/viewer/action_modes.hbs
index cd50f34f529f7df1bd13aaa5a660a6069ff0727e..d0e4eea8d5499185b17c87f08479fcfcfb24e76a 100644
--- a/app/components/viewer/action_modes.hbs
+++ b/app/components/viewer/action_modes.hbs
@@ -1,4 +1,9 @@
 <div class="d-flex">
+
+  <PanelModes
+    @dualPanelMode={{@dualPanelMode}}
+    @hint={{@hint}} />
+
   <div class="panel-mode">
     <button type="button" class="btn btn-light mx-1"
       {{on "click" (fn @onPanelToggle @hint)}}>
diff --git a/app/controllers/authenticated/document.js b/app/controllers/authenticated/document.js
index 4a7d91e2728b0e9be3963bbdbfcf6a1093564d48..7f4f96c5ffeae6d61693b38f4b02a609a2f3e211 100644
--- a/app/controllers/authenticated/document.js
+++ b/app/controllers/authenticated/document.js
@@ -36,4 +36,19 @@ export default class DocumentController extends DualPanelBaseController {
     }
   }
 
+  @action
+  onSwapPanels() {
+    console.log(`onSwapPanels`);
+  }
+
+  @action
+  onLeftDuplicate() {
+    console.log(`onLeftDuplicate`);
+  }
+
+  @action
+  onRightDuplicate() {
+    console.log(`onRightDuplicate`);
+  }
+
 }
diff --git a/app/controllers/authenticated/nodes.js b/app/controllers/authenticated/nodes.js
index e927302e58bf077cec2f798bb423e9874228ba06..fd41b8f6f97d9ef8dedaa3818f57ad2042788ca4 100644
--- a/app/controllers/authenticated/nodes.js
+++ b/app/controllers/authenticated/nodes.js
@@ -34,4 +34,19 @@ export default class NodesController extends DualPanelBaseController {
       this.extra_type = 'folder';
     }
   }
+
+  @action
+  onSwapPanels() {
+    console.log(`onSwapPanels`);
+  }
+
+  @action
+  onLeftDuplicate() {
+    console.log(`onLeftDuplicate`);
+  }
+
+  @action
+  onRightDuplicate() {
+    console.log(`onRightDuplicate`);
+  }
 }
diff --git a/app/styles/context_menu.scss b/app/styles/context_menu.scss
index a7cf29b8be4580ef3a647801d8daed5a1595f653..4900517636bb83ebbd1e64603ae1e7f8896fbaa1 100644
--- a/app/styles/context_menu.scss
+++ b/app/styles/context_menu.scss
@@ -20,5 +20,3 @@
   }
 
 }
-
-