/** * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ import React from "react"; import { action } from "mobx"; import { observer } from "mobx-react"; import type { UserStore } from "../../../common/user-store"; import { SubTitle } from "../layout/sub-title"; import { Input } from "../input"; import { Switch } from "../switch"; import { Select, type SelectOption } from "../select"; import type { ThemeStore } from "../../themes/store"; import { Preferences } from "./preferences"; import { withInjectables } from "@ogre-tools/injectable-react"; import userStoreInjectable from "../../../common/user-store/user-store.injectable"; import themeStoreInjectable from "../../themes/store.injectable"; import defaultShellInjectable from "./default-shell.injectable"; import logger from "../../../common/logger"; interface Dependencies { userStore: UserStore; themeStore: ThemeStore; defaultShell: string; } const NonInjectedTerminal = observer(( { userStore, themeStore, defaultShell, }: Dependencies) => { const themeOptions = [ { value: "", // TODO: replace with a sentinal value that isn't string (and serialize it differently) label: "Match Lens Theme", }, ...Array.from(themeStore.themes, ([themeId, { name }]) => ({ value: themeId, label: name, })), ]; // fonts must be declared in `fonts.scss` and at `template.html` (if early-preloading required) const supportedCustomFonts: SelectOption[] = [ "RobotoMono", "Anonymous Pro", "IBM Plex Mono", "JetBrains Mono", "Red Hat Mono", "Source Code Pro", "Space Mono", "Ubuntu Mono", ].map(customFont => { const { fontFamily, fontSize } = userStore.terminalConfig; return { label: {customFont}, value: customFont, isSelected: fontFamily === customFont, }; }); const onFontFamilyChange = action(({ value: fontFamily }: SelectOption) => { logger.info(`setting terminal font to ${fontFamily}`); userStore.terminalConfig.fontFamily = fontFamily; // save to external storage }); return (

Terminal

userStore.shell = value} />
userStore.terminalCopyOnSelect = !userStore.terminalCopyOnSelect} > Copy on select and paste on right-click
userStore.terminalConfig.fontSize = Number(value)} />