diff --git a/coderd/apidoc/docs.go b/coderd/apidoc/docs.go
index 9d866e7932..81af4967e5 100644
--- a/coderd/apidoc/docs.go
+++ b/coderd/apidoc/docs.go
@@ -19861,6 +19861,7 @@ const docTemplate = `{
"type": "string",
"enum": [
"",
+ "geist-mono",
"ibm-plex-mono",
"fira-code",
"source-code-pro",
@@ -19868,6 +19869,7 @@ const docTemplate = `{
],
"x-enum-varnames": [
"TerminalFontUnknown",
+ "TerminalFontGeistMono",
"TerminalFontIBMPlexMono",
"TerminalFontFiraCode",
"TerminalFontSourceCodePro",
diff --git a/coderd/apidoc/swagger.json b/coderd/apidoc/swagger.json
index a3cc695b3e..04e2369ff4 100644
--- a/coderd/apidoc/swagger.json
+++ b/coderd/apidoc/swagger.json
@@ -18190,6 +18190,7 @@
"type": "string",
"enum": [
"",
+ "geist-mono",
"ibm-plex-mono",
"fira-code",
"source-code-pro",
@@ -18197,6 +18198,7 @@
],
"x-enum-varnames": [
"TerminalFontUnknown",
+ "TerminalFontGeistMono",
"TerminalFontIBMPlexMono",
"TerminalFontFiraCode",
"TerminalFontSourceCodePro",
diff --git a/codersdk/users.go b/codersdk/users.go
index eccee428de..4ecabc82af 100644
--- a/codersdk/users.go
+++ b/codersdk/users.go
@@ -196,12 +196,13 @@ type ValidateUserPasswordResponse struct {
type TerminalFontName string
var TerminalFontNames = []TerminalFontName{
- TerminalFontUnknown, TerminalFontIBMPlexMono, TerminalFontFiraCode,
- TerminalFontSourceCodePro, TerminalFontJetBrainsMono,
+ TerminalFontUnknown, TerminalFontGeistMono, TerminalFontIBMPlexMono,
+ TerminalFontFiraCode, TerminalFontSourceCodePro, TerminalFontJetBrainsMono,
}
const (
TerminalFontUnknown TerminalFontName = ""
+ TerminalFontGeistMono TerminalFontName = "geist-mono"
TerminalFontIBMPlexMono TerminalFontName = "ibm-plex-mono"
TerminalFontFiraCode TerminalFontName = "fira-code"
TerminalFontSourceCodePro TerminalFontName = "source-code-pro"
diff --git a/docs/reference/api/schemas.md b/docs/reference/api/schemas.md
index ab53b42ef6..cfa29730c2 100644
--- a/docs/reference/api/schemas.md
+++ b/docs/reference/api/schemas.md
@@ -9346,9 +9346,9 @@ Restarts will only happen on weekdays in this list on weeks which line up with W
#### Enumerated Values
-| Value(s) |
-|-----------------------------------------------------------------------|
-| ``, `fira-code`, `ibm-plex-mono`, `jetbrains-mono`, `source-code-pro` |
+| Value(s) |
+|-------------------------------------------------------------------------------------|
+| ``, `fira-code`, `geist-mono`, `ibm-plex-mono`, `jetbrains-mono`, `source-code-pro` |
## codersdk.TimingStage
diff --git a/docs/user-guides/workspace-access/web-terminal.md b/docs/user-guides/workspace-access/web-terminal.md
index 93c364c289..46c04134df 100644
--- a/docs/user-guides/workspace-access/web-terminal.md
+++ b/docs/user-guides/workspace-access/web-terminal.md
@@ -85,7 +85,8 @@ You can customize the terminal font through your user settings:
1. Click your avatar in the top-right corner
2. Select **Settings** → **Appearance**
3. Choose from available fonts:
- - **IBM Plex Mono** (default)
+ - **Geist Mono** (default)
+ - **IBM Plex Mono**
- **Fira Code** (with ligatures)
- **JetBrains Mono**
- **Source Code Pro**
diff --git a/site/.storybook/preview-head.html b/site/.storybook/preview-head.html
index d92f73be81..821d23da69 100644
--- a/site/.storybook/preview-head.html
+++ b/site/.storybook/preview-head.html
@@ -1,5 +1,4 @@
-
-
+
diff --git a/site/package.json b/site/package.json
index cea9343741..191d9678fe 100644
--- a/site/package.json
+++ b/site/package.json
@@ -42,6 +42,7 @@
"@emotion/react": "11.14.0",
"@emotion/styled": "11.14.1",
"@fontsource-variable/geist": "5.2.8",
+ "@fontsource-variable/geist-mono": "5.2.7",
"@fontsource/fira-code": "5.2.7",
"@fontsource/ibm-plex-mono": "5.2.7",
"@fontsource/jetbrains-mono": "5.2.8",
diff --git a/site/pnpm-lock.yaml b/site/pnpm-lock.yaml
index 1757d1ba07..f2343291ac 100644
--- a/site/pnpm-lock.yaml
+++ b/site/pnpm-lock.yaml
@@ -40,6 +40,9 @@ importers:
'@fontsource-variable/geist':
specifier: 5.2.8
version: 5.2.8
+ '@fontsource-variable/geist-mono':
+ specifier: 5.2.7
+ version: 5.2.7
'@fontsource/fira-code':
specifier: 5.2.7
version: 5.2.7
@@ -1076,6 +1079,9 @@ packages:
'@floating-ui/utils@0.2.10':
resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==, tarball: https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz}
+ '@fontsource-variable/geist-mono@5.2.7':
+ resolution: {integrity: sha512-ZKlZ5sjtalb2TwXKs400mAGDlt/+2ENLNySPx0wTz3bP3mWARCsUW+rpxzZc7e05d2qGch70pItt3K4qttbIYA==, tarball: https://registry.npmjs.org/@fontsource-variable/geist-mono/-/geist-mono-5.2.7.tgz}
+
'@fontsource-variable/geist@5.2.8':
resolution: {integrity: sha512-cJ6m9e+8MQ5dCYJsLylfZrgBh6KkG4bOLckB35Tr9J/EqdkEM6QllH5PxqP1dhTvFup+HtMRPuz9xOjxXJggxw==, tarball: https://registry.npmjs.org/@fontsource-variable/geist/-/geist-5.2.8.tgz}
@@ -7229,6 +7235,8 @@ snapshots:
'@floating-ui/utils@0.2.10': {}
+ '@fontsource-variable/geist-mono@5.2.7': {}
+
'@fontsource-variable/geist@5.2.8': {}
'@fontsource/fira-code@5.2.7': {}
diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts
index 894bacf359..2a4639c792 100644
--- a/site/src/api/typesGenerated.ts
+++ b/site/src/api/typesGenerated.ts
@@ -6137,6 +6137,7 @@ export interface TemplateVersionsByTemplateRequest extends Pagination {
// From codersdk/users.go
export type TerminalFontName =
| "fira-code"
+ | "geist-mono"
| "ibm-plex-mono"
| "jetbrains-mono"
| "source-code-pro"
@@ -6144,6 +6145,7 @@ export type TerminalFontName =
export const TerminalFontNames: TerminalFontName[] = [
"fira-code",
+ "geist-mono",
"ibm-plex-mono",
"jetbrains-mono",
"source-code-pro",
diff --git a/site/src/pages/UserSettingsPage/AppearancePage/AppearanceForm.tsx b/site/src/pages/UserSettingsPage/AppearancePage/AppearanceForm.tsx
index d072c129e2..bad1212c95 100644
--- a/site/src/pages/UserSettingsPage/AppearancePage/AppearanceForm.tsx
+++ b/site/src/pages/UserSettingsPage/AppearancePage/AppearanceForm.tsx
@@ -18,6 +18,14 @@ import {
import { cn } from "utils/cn";
import { Section } from "../Section";
+// Display Geist Mono (the default monospace font) first, then the rest
+// alphabetically. TerminalFontNames is auto-generated in alphabetical
+// order, so we reorder here for a better UX.
+const sortedTerminalFontNames = [
+ "geist-mono" as TerminalFontName,
+ ...TerminalFontNames.filter((name) => name !== "" && name !== "geist-mono"),
+];
+
interface AppearanceFormProps {
isUpdating?: boolean;
error?: unknown;
@@ -107,7 +115,7 @@ export const AppearanceForm: FC = ({
onChangeTerminalFont(toTerminalFontName(value))
}
>
- {TerminalFontNames.filter((name) => name !== "").map((name) => (
+ {sortedTerminalFontNames.map((name) => (