diff --git a/src/renderer/components/layout/top-bar/top-bar-items/context-menu/context-menu-top-bar-item.injectable.ts b/src/renderer/components/layout/top-bar/top-bar-items/context-menu/context-menu-top-bar-item.injectable.ts
new file mode 100644
index 0000000000..21fb69cf3f
--- /dev/null
+++ b/src/renderer/components/layout/top-bar/top-bar-items/context-menu/context-menu-top-bar-item.injectable.ts
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) OpenLens Authors. All rights reserved.
+ * Licensed under MIT License. See LICENSE in root directory for more information.
+ */
+import { getInjectable } from "@ogre-tools/injectable";
+import isLinuxInjectable from "../../../../../../common/vars/is-linux.injectable";
+import isWindowsInjectable from "../../../../../../common/vars/is-windows.injectable";
+import { computed } from "mobx";
+import { ContextMenu } from "./context-menu";
+import topBarItemInjectionToken from "../top-bar-item-injection-token";
+
+const contextMenuTopBarItemInjectable = getInjectable({
+ id: "context-menu-top-bar-item",
+
+ instantiate: (di) => {
+ const isWindows = di.inject(isWindowsInjectable);
+ const isLinux = di.inject(isLinuxInjectable);
+
+ return {
+ id: "context-menu",
+ isShown: computed(() => isWindows || isLinux),
+ orderNumber: 10,
+ Component: ContextMenu,
+ };
+ },
+
+ injectionToken: topBarItemInjectionToken,
+});
+
+export default contextMenuTopBarItemInjectable;
+
diff --git a/src/renderer/components/layout/top-bar/top-bar-items/context-menu/context-menu.tsx b/src/renderer/components/layout/top-bar/top-bar-items/context-menu/context-menu.tsx
new file mode 100644
index 0000000000..d543b93fb1
--- /dev/null
+++ b/src/renderer/components/layout/top-bar/top-bar-items/context-menu/context-menu.tsx
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) OpenLens Authors. All rights reserved.
+ * Licensed under MIT License. See LICENSE in root directory for more information.
+ */
+import { withInjectables } from "@ogre-tools/injectable-react";
+import React from "react";
+import styles from "../../top-bar.module.scss";
+import openAppContextMenuInjectable from "./open-app-context-menu/open-app-context-menu.injectable";
+
+interface Dependencies {
+ openAppContextMenu: () => void;
+}
+
+const NonInjectedContextMenu = ({ openAppContextMenu }: Dependencies) => (
+
+);
+
+export const ContextMenu = withInjectables(
+ NonInjectedContextMenu,
+
+ {
+ getProps: (di) => ({
+ openAppContextMenu: di.inject(openAppContextMenuInjectable),
+ }),
+ },
+);
diff --git a/src/renderer/components/layout/top-bar/top-bar-items/context-menu/open-app-context-menu/open-app-context-menu.global-override-for-injectable.ts b/src/renderer/components/layout/top-bar/top-bar-items/context-menu/open-app-context-menu/open-app-context-menu.global-override-for-injectable.ts
new file mode 100644
index 0000000000..2dfd22bb5e
--- /dev/null
+++ b/src/renderer/components/layout/top-bar/top-bar-items/context-menu/open-app-context-menu/open-app-context-menu.global-override-for-injectable.ts
@@ -0,0 +1,8 @@
+/**
+ * Copyright (c) OpenLens Authors. All rights reserved.
+ * Licensed under MIT License. See LICENSE in root directory for more information.
+ */
+import openAppContextMenuInjectable from "./open-app-context-menu.injectable";
+import { getGlobalOverrideForFunction } from "../../../../../../../common/test-utils/get-global-override-for-function";
+
+export default getGlobalOverrideForFunction(openAppContextMenuInjectable);
diff --git a/src/renderer/components/layout/top-bar/open-app-context-menu.injectable.ts b/src/renderer/components/layout/top-bar/top-bar-items/context-menu/open-app-context-menu/open-app-context-menu.injectable.ts
similarity index 85%
rename from src/renderer/components/layout/top-bar/open-app-context-menu.injectable.ts
rename to src/renderer/components/layout/top-bar/top-bar-items/context-menu/open-app-context-menu/open-app-context-menu.injectable.ts
index 4d2bf911d3..48ce3ef2d4 100644
--- a/src/renderer/components/layout/top-bar/open-app-context-menu.injectable.ts
+++ b/src/renderer/components/layout/top-bar/top-bar-items/context-menu/open-app-context-menu/open-app-context-menu.injectable.ts
@@ -3,7 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
-import { emitOpenAppMenuAsContextMenu } from "../../../ipc";
+import { emitOpenAppMenuAsContextMenu } from "../../../../../../ipc";
const openAppContextMenuInjectable = getInjectable({
id: "open-app-context-menu",
diff --git a/src/renderer/components/layout/top-bar/top-bar.test.tsx b/src/renderer/components/layout/top-bar/top-bar.test.tsx
index a32529cb91..8b4f1fb03a 100644
--- a/src/renderer/components/layout/top-bar/top-bar.test.tsx
+++ b/src/renderer/components/layout/top-bar/top-bar.test.tsx
@@ -18,7 +18,7 @@ import closeWindowInjectable from "./close-window.injectable";
import goBackInjectable from "./go-back.injectable";
import goForwardInjectable from "./go-forward.injectable";
import maximizeWindowInjectable from "./maximize-window.injectable";
-import openAppContextMenuInjectable from "./open-app-context-menu.injectable";
+import openAppContextMenuInjectable from "./top-bar-items/context-menu/open-app-context-menu/open-app-context-menu.injectable";
import toggleMaximizeWindowInjectable from "./toggle-maximize-window.injectable";
import topBarStateInjectable from "./state.injectable";
import platformInjectable from "../../../../common/vars/platform.injectable";
diff --git a/src/renderer/components/layout/top-bar/top-bar.tsx b/src/renderer/components/layout/top-bar/top-bar.tsx
index 6d8b3846a7..75aafe5466 100644
--- a/src/renderer/components/layout/top-bar/top-bar.tsx
+++ b/src/renderer/components/layout/top-bar/top-bar.tsx
@@ -18,7 +18,6 @@ import routeIsActiveInjectable from "../../../routes/route-is-active.injectable"
import { UpdateButton } from "../../../../features/application-update/child-features/application-update-using-top-bar/renderer/update-button";
import topBarPrevEnabledInjectable from "./prev-enabled.injectable";
import topBarNextEnabledInjectable from "./next-enabled.injectable";
-import openAppContextMenuInjectable from "./open-app-context-menu.injectable";
import goBackInjectable from "./go-back.injectable";
import goForwardInjectable from "./go-forward.injectable";
import closeWindowInjectable from "./close-window.injectable";
@@ -39,7 +38,6 @@ interface Dependencies {
isLinux: boolean;
prevEnabled: IComputedValue;
nextEnabled: IComputedValue;
- openAppContextMenu: () => void;
goBack: () => void;
goForward: () => void;
minimizeWindow: () => void;
@@ -59,7 +57,6 @@ const NonInjectedTopBar = observer(({
isLinux,
prevEnabled,
nextEnabled,
- openAppContextMenu,
goBack,
goForward,
closeWindow,
@@ -93,22 +90,6 @@ const NonInjectedTopBar = observer(({
return ;
})}
- {(isWindows || isLinux) && (
-
- )}
(NonInjectedTopBar, {
isWindows: di.inject(isWindowsInjectable),
prevEnabled: di.inject(topBarPrevEnabledInjectable),
nextEnabled: di.inject(topBarNextEnabledInjectable),
+
welcomeRouteIsActive: di.inject(
routeIsActiveInjectable,
di.inject(welcomeRouteInjectable),
),
- openAppContextMenu: di.inject(openAppContextMenuInjectable),
+
goBack: di.inject(goBackInjectable),
goForward: di.inject(goForwardInjectable),
closeWindow: di.inject(closeWindowInjectable),
diff --git a/src/renderer/getDiForUnitTesting.tsx b/src/renderer/getDiForUnitTesting.tsx
index 1efcb55d44..ca66a18914 100644
--- a/src/renderer/getDiForUnitTesting.tsx
+++ b/src/renderer/getDiForUnitTesting.tsx
@@ -38,7 +38,6 @@ import platformInjectable from "../common/vars/platform.injectable";
import startTopbarStateSyncInjectable from "./components/layout/top-bar/start-state-sync.injectable";
import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx";
import watchHistoryStateInjectable from "./remote-helpers/watch-history-state.injectable";
-import openAppContextMenuInjectable from "./components/layout/top-bar/open-app-context-menu.injectable";
import goBackInjectable from "./components/layout/top-bar/go-back.injectable";
import goForwardInjectable from "./components/layout/top-bar/go-forward.injectable";
import closeWindowInjectable from "./components/layout/top-bar/close-window.injectable";
@@ -149,7 +148,6 @@ export const getDiForUnitTesting = (
di.override(environmentVariablesInjectable, () => ({}));
di.override(watchHistoryStateInjectable, () => () => () => {});
- di.override(openAppContextMenuInjectable, () => () => {});
di.override(goBackInjectable, () => () => {});
di.override(goForwardInjectable, () => () => {});
di.override(closeWindowInjectable, () => () => {});