diff --git a/src/ui/AppShell.tsx b/src/ui/AppShell.tsx
index 742a709b..019c1f1f 100644
--- a/src/ui/AppShell.tsx
+++ b/src/ui/AppShell.tsx
@@ -1713,6 +1713,10 @@ export function AppShell({
onAddToSplit={addTabToSplit}
onRemoveFromSplit={removeTabFromSplit}
onRenameTab={renameTab}
+ onOpenFileManager={(tabId) => {
+ const targetTab = tabs.find((t) => t.id === tabId);
+ if (targetTab?.host) openTab(targetTab.host, "files");
+ }}
isAppFullscreen={isAppFullscreen}
onToggleAppFullscreen={toggleAppFullscreen}
/>
diff --git a/src/ui/shell/TabBar.tsx b/src/ui/shell/TabBar.tsx
index df1dee24..f9553dc1 100644
--- a/src/ui/shell/TabBar.tsx
+++ b/src/ui/shell/TabBar.tsx
@@ -18,6 +18,7 @@ import {
Pencil,
Maximize2,
Minimize2,
+ FolderOpen,
} from "lucide-react";
import { tabIcon } from "@/shell/tabUtils";
import { isElectron } from "@/lib/electron";
@@ -40,6 +41,7 @@ export function TabBar({
onAddToSplit,
onRemoveFromSplit,
onRenameTab,
+ onOpenFileManager,
isAppFullscreen,
onToggleAppFullscreen,
}: {
@@ -56,6 +58,7 @@ export function TabBar({
onAddToSplit: (tabId: string) => void;
onRemoveFromSplit: (tabId: string) => void;
onRenameTab?: (tabId: string, newLabel: string) => void;
+ onOpenFileManager?: (tabId: string) => void;
isAppFullscreen: boolean;
onToggleAppFullscreen: () => void;
}) {
@@ -527,6 +530,20 @@ export function TabBar({
{t("nav.refreshTab")}
)}
+ {ctxTab.type === "terminal" &&
+ ctxTab.host &&
+ onOpenFileManager && (
+
+ )}