vukkt/iglass

A Liquid Glass–inspired theme for iTerm2 and Ghostty, on macOS and Linux. Real Liquid Glass in Ghostty on macOS 26+; contrast-checked, light/dark, fully reversible.

Shell

71

19 commits

updated Oct 14, 2026

See the code

See what people are saying

SourceMessageScoreDate

[KDE] iglass: Apple's Liquid Glass look for Ghostty, now on Linux (r/unixporn)

\- Terminal: Ghostty · Theme: iglass Frosted (blue accent) · DE: KDE Plasma (Fedora 44) \- iglass is a free, open-source theme + CLI. The palettes are built from Apple's system colors and contrast-checked against the window as it looks over your wallpaper. \- Four glass levels (Clear, Frosted,…

2

Oct 14, 2026

I made a Liquid Glass theme for iTerm2 and Ghostty (real glass in Ghostty) (r/coolgithubprojects)

0

Oct 13, 2026

README

iglass

A Liquid Glass theme for iTerm2 and Ghostty. Translucent, built from Apple's system colors, and contrast-checked so it stays readable. In Ghostty it uses Apple's real Liquid Glass material.

CI macOS 15+ iTerm2 3.5+ Ghostty 1.0+ License: MIT Sponsor

An iTerm2 window turning glassier and changing accent color live as iglass install commands run

Tweaking iglass live: each iglass install updates the open window instantly.

Why iglass

macOS's Liquid Glass makes apps feel light and layered. iglass brings that look to your terminal, carefully:

  • Real Liquid Glass in Ghostty (macOS 26+): Apple's own glass material, not an imitation.
  • The closest iTerm2 allows: transparency, blur and a palette designed to sit on top of them.
  • Four glass levels, mirroring Apple's own options: Clear, Frosted, Tinted and Solid.
  • Follows light and dark mode automatically, with a separate palette for each.
  • Apple's system colors and macOS accent colors, adjusted only where contrast requires it.
  • Contrast-checked. Every color is verified against the window as it looks over your desktop, not just against a flat background. See the report.
  • High-contrast option and hints for macOS Reduce Transparency / Increase Contrast.
  • Keeps your setup. Only the look changes: your font, keyboard shortcuts, shell and directories stay as they are.
  • Safe and reversible. Everything iglass changes is backed up and undone exactly on uninstall.

Ghostty: real Liquid Glass

DarkLight
Cleariglass Clear in Ghostty, darkiglass Clear in Ghostty, light
Frostediglass Frosted in Ghostty, darkiglass Frosted in Ghostty, light
Tintediglass Tinted in Ghostty, darkiglass Tinted in Ghostty, light
Solidiglass Solid in Ghostty, darkiglass Solid in Ghostty, light

iTerm2

DarkLight
Cleariglass Clear in iTerm2, darkiglass Clear in iTerm2, light
Frostediglass Frosted in iTerm2, darkiglass Frosted in iTerm2, light
Tintediglass Tinted in iTerm2, darkiglass Tinted in iTerm2, light
Solidiglass Solid in iTerm2, darkiglass Solid in iTerm2, light
VariantFeels likeTransparencyGhostty glassReadable over
ClearLiquid Glass Clear50%macos-glass-clearMid-tone wallpapers (aesthetic choice)
Frosted · defaultLiquid Glass Regular34%macos-glass-regularTypical wallpapers
TintedmacOS Tinted mode18%macos-glass-regularAny wallpaper
SolidReduce Transparency0%noneAny wallpaper

Accents: blue, purple, pink, red, orange, yellow, green, graphite (the macOS accent colors).

Install

Requirements: macOS 15 or later, and iTerm2 3.5+ or Ghostty 1.0+. Real Liquid Glass needs macOS 26+ and a recent Ghostty.

With Homebrew:

brew install vukkt/tap/iglass
iglass install

Or with the install script, which downloads the latest release (puts iglass in ~/.local/bin):

curl -fsSL https://raw.githubusercontent.com/vukkt/iglass/main/install.sh | bash
iglass install

Or from source:

git clone https://github.com/vukkt/iglass.git
cd iglass && ./install.sh --local
iglass install

iglass install sets up the terminal you run it in. Use --terminal iterm2, ghostty or all to choose. In iTerm2, open a window with iglass preview or pick Profiles › iglass Frosted. In Ghostty, quit and reopen it (Ghostty reads transparency only at launch).

Without the CLI

iTerm2: copy themes/iglass.json into ~/Library/Application Support/iTerm2/DynamicProfiles/. iTerm2 picks it up immediately. Plain color presets are in themes/ too (iTerm2 › Settings › Profiles › Colors › Color Presets › Import), but they carry colors only, not the glass settings.

Ghostty: copy the files in themes/ghostty/themes to ~/.config/ghostty/themes/, then add to your Ghostty config:

theme = light:iglass-frosted-light,dark:iglass-frosted-dark

Usage

iglass install                          # all four variants, blue accent
iglass install --accent purple          # pick an accent
iglass install --contrast high          # stronger colors
iglass install --terminal all           # iTerm2 and Ghostty
iglass install --app-settings           # iTerm2: native title bar + roomier padding (restarts iTerm2)
iglass install --variant tinted --default   # iTerm2: make a variant your default profile

iglass preview --variant clear          # open a window to try a variant
iglass list                             # variants and accents
iglass status                           # what's installed
iglass doctor                           # check for problems (changes nothing)
iglass uninstall                        # remove everything, restore settings

Fine-tuning

iglass install --opacity 0.8 --blur 18      # adds an "iglass Custom" profile / theme
iglass install --cursor box                  # bar (default), box, underline, keep
iglass install --window no-titlebar          # native (default), no-titlebar, keep
iglass install --font sf-mono                # keep (default), sf-mono, or "PostScriptName 14"
iglass install --glass blur                  # Ghostty: classic blur instead of real glass
iglass export --accent green > my.json       # print the iTerm2 profiles file instead

Opacity below the readable minimum (0.66) asks for --force.

What iglass changes in Ghostty

  • Theme files in ~/.config/ghostty/themes/iglass-*, one per variant and appearance, with the colors, opacity and glass.
  • ~/.config/ghostty/iglass.ghostty: which theme to use, padding and cursor.
  • Two lines, after a blank line, at the end of your Ghostty config (the one Ghostty loads last): a comment and an optional config-file include. Your config is backed up first, symlinked dotfiles stay symlinks, and iglass uninstall restores the file exactly.

App-wide settings (iTerm2)

Some of the native feel comes from iTerm2 settings that apply to every window, not just a profile: iTerm2's Automatic theme, which lets macOS draw the title bar and tabs the way it draws them for its own apps, and generous padding. Apple's Liquid Glass guidance asks apps to let the system draw bars rather than custom ones. --app-settings turns these on. Because iTerm2 saves its settings when it quits, iglass has to change them while iTerm2 is closed:

  1. iglass records the current values and backs up your iTerm2 preferences.
  2. A small helper quits iTerm2 (it asks first if programs are running), applies the change and reopens it. If you cancel the quit, nothing is written.
  3. iglass uninstall restores the exact previous values and removes keys that didn't exist.

Backups live in ~/Library/Application Support/iglass/backups.

How it works

One contrast-checked palette drives both terminals:

  1. design/palettes.json holds Apple's system colors, the variants and the contrast targets.
  2. tools/build_palettes.py blends each window background over black, white and grey desktops at each variant's transparency, checks every color against the worst case, and nudges lightness (in OKLCH, keeping hue) only where a color falls short.
  3. The result ships as data/palette.json, and every decision is listed in the contrast report.

For iTerm2, iglass installs a dynamic profile. A dynamic profile inherits everything it doesn't set from your default profile, so iglass sets every color and every setting iTerm2 keeps separately for light and dark mode (a test enforces this), and nothing about how you work. Files are validated with Apple's parser first, because one unreadable file stops iTerm2 from loading any dynamic profile.

For Ghostty, iglass writes theme files and checks them with Ghostty's own validator before anything touches your config. It asks Ghostty whether it supports macos-glass rather than guessing from version numbers.

The CLI is plain bash plus the jq, plutil and defaults that ship with macOS, so there is nothing else to install. More detail, including what was verified in iTerm2's and Ghostty's behavior: docs/research-notes.md.

FAQ

Is this real Liquid Glass?

In Ghostty, yes, on macOS 26 and later: iglass uses Ghostty's macos-glass-regular and macos-glass-clear, which are Apple's own glass material.

In iTerm2, no, and no theme can change that. iTerm2 hasn't shipped Liquid Glass for terminal windows: a pull request adding it was closed because glass breaks window resizing in a terminal. iglass gets as close as iTerm2 allows with transparency, blur and a matching palette, and will use real glass if iTerm2 adds it.

Isn't glass behind text against Apple's own advice?

Partly. Apple reserves glass for controls and navigation and keeps content clear. Terminal text is content, which is why Frosted is the default, Tinted and Solid exist, and every variant is contrast-checked. Choose the level that suits you; Tinted is the most Apple-like for long work.

Ghostty didn't change.

Quit and reopen Ghostty: it reads transparency only at launch. If it still looks the same, run iglass doctor; another config file loading after yours can override iglass.

My prompt icons disappeared.

iglass keeps your font unless you pass --font. If you did, reinstall without it (iglass install) to go back to your own (e.g. a Nerd Font).

Text is hard to read on my wallpaper.

Use a lower glass level (iglass preview --variant tinted), or --contrast high.

iglass profiles don't show up in iTerm2.

Run iglass doctor. The most common cause is another broken file in the dynamic profiles folder, which stops iTerm2 from loading all of them.

Uninstall

iglass uninstall            # removes iglass from every terminal; asks to restore iTerm2 settings
brew uninstall iglass       # or: curl -fsSL …/install.sh | bash -s -- --uninstall

Development

make palettes          # rebuild colors after editing design/palettes.json
make themes            # rebuild the prebuilt themes/ files
make check             # shellcheck, generated-file check, palette tests, bats suite
tools/screenshots.sh   # README screenshots over a generated backdrop (needs Screen Recording)
tools/record-gif.sh    # docs/demo.gif (needs ffmpeg)
osascript -l JavaScript tools/social-card.js BACKDROP.png SHOT.png docs/social-preview.png

Tests run in a sandbox with stand-ins for iTerm2, Ghostty and system commands, so they never touch your real settings. See CONTRIBUTING.md.


iglass is an independent project, not affiliated with or endorsed by Apple Inc., iTerm2 or Ghostty. Liquid Glass, macOS and SF Mono are trademarks of Apple Inc.

MIT · built by @vukkt · sponsor

cli
dynamic-profiles
ghostty
ghostty-theme
gnome
iterm2
iterm2-theme
kde
linux
liquid-glass
macos
terminal-theme

vukkt/iglass

A Liquid Glass–inspired theme for iTerm2 and Ghostty, on macOS and Linux. Real Liquid Glass in Ghostty on macOS 26+; contrast-checked, light/dark, fully reversible.

Shell

71

19 commits

updated Oct 14, 2026

See the code

See what people are saying

SourceMessageScoreDate

[KDE] iglass: Apple's Liquid Glass look for Ghostty, now on Linux (r/unixporn)

\- Terminal: Ghostty · Theme: iglass Frosted (blue accent) · DE: KDE Plasma (Fedora 44) \- iglass is a free, open-source theme + CLI. The palettes are built from Apple's system colors and contrast-checked against the window as it looks over your wallpaper. \- Four glass levels (Clear, Frosted,…

2

Oct 14, 2026

I made a Liquid Glass theme for iTerm2 and Ghostty (real glass in Ghostty) (r/coolgithubprojects)

0

Oct 13, 2026

README

iglass

A Liquid Glass theme for iTerm2 and Ghostty. Translucent, built from Apple's system colors, and contrast-checked so it stays readable. In Ghostty it uses Apple's real Liquid Glass material.

CI macOS 15+ iTerm2 3.5+ Ghostty 1.0+ License: MIT Sponsor

An iTerm2 window turning glassier and changing accent color live as iglass install commands run

Tweaking iglass live: each iglass install updates the open window instantly.

Why iglass

macOS's Liquid Glass makes apps feel light and layered. iglass brings that look to your terminal, carefully:

  • Real Liquid Glass in Ghostty (macOS 26+): Apple's own glass material, not an imitation.
  • The closest iTerm2 allows: transparency, blur and a palette designed to sit on top of them.
  • Four glass levels, mirroring Apple's own options: Clear, Frosted, Tinted and Solid.
  • Follows light and dark mode automatically, with a separate palette for each.
  • Apple's system colors and macOS accent colors, adjusted only where contrast requires it.
  • Contrast-checked. Every color is verified against the window as it looks over your desktop, not just against a flat background. See the report.
  • High-contrast option and hints for macOS Reduce Transparency / Increase Contrast.
  • Keeps your setup. Only the look changes: your font, keyboard shortcuts, shell and directories stay as they are.
  • Safe and reversible. Everything iglass changes is backed up and undone exactly on uninstall.

Ghostty: real Liquid Glass

DarkLight
Cleariglass Clear in Ghostty, darkiglass Clear in Ghostty, light
Frostediglass Frosted in Ghostty, darkiglass Frosted in Ghostty, light
Tintediglass Tinted in Ghostty, darkiglass Tinted in Ghostty, light
Solidiglass Solid in Ghostty, darkiglass Solid in Ghostty, light

iTerm2

DarkLight
Cleariglass Clear in iTerm2, darkiglass Clear in iTerm2, light
Frostediglass Frosted in iTerm2, darkiglass Frosted in iTerm2, light
Tintediglass Tinted in iTerm2, darkiglass Tinted in iTerm2, light
Solidiglass Solid in iTerm2, darkiglass Solid in iTerm2, light
VariantFeels likeTransparencyGhostty glassReadable over
ClearLiquid Glass Clear50%macos-glass-clearMid-tone wallpapers (aesthetic choice)
Frosted · defaultLiquid Glass Regular34%macos-glass-regularTypical wallpapers
TintedmacOS Tinted mode18%macos-glass-regularAny wallpaper
SolidReduce Transparency0%noneAny wallpaper

Accents: blue, purple, pink, red, orange, yellow, green, graphite (the macOS accent colors).

Install

Requirements: macOS 15 or later, and iTerm2 3.5+ or Ghostty 1.0+. Real Liquid Glass needs macOS 26+ and a recent Ghostty.

With Homebrew:

brew install vukkt/tap/iglass
iglass install

Or with the install script, which downloads the latest release (puts iglass in ~/.local/bin):

curl -fsSL https://raw.githubusercontent.com/vukkt/iglass/main/install.sh | bash
iglass install

Or from source:

git clone https://github.com/vukkt/iglass.git
cd iglass && ./install.sh --local
iglass install

iglass install sets up the terminal you run it in. Use --terminal iterm2, ghostty or all to choose. In iTerm2, open a window with iglass preview or pick Profiles › iglass Frosted. In Ghostty, quit and reopen it (Ghostty reads transparency only at launch).

Without the CLI

iTerm2: copy themes/iglass.json into ~/Library/Application Support/iTerm2/DynamicProfiles/. iTerm2 picks it up immediately. Plain color presets are in themes/ too (iTerm2 › Settings › Profiles › Colors › Color Presets › Import), but they carry colors only, not the glass settings.

Ghostty: copy the files in themes/ghostty/themes to ~/.config/ghostty/themes/, then add to your Ghostty config:

theme = light:iglass-frosted-light,dark:iglass-frosted-dark

Usage

iglass install                          # all four variants, blue accent
iglass install --accent purple          # pick an accent
iglass install --contrast high          # stronger colors
iglass install --terminal all           # iTerm2 and Ghostty
iglass install --app-settings           # iTerm2: native title bar + roomier padding (restarts iTerm2)
iglass install --variant tinted --default   # iTerm2: make a variant your default profile

iglass preview --variant clear          # open a window to try a variant
iglass list                             # variants and accents
iglass status                           # what's installed
iglass doctor                           # check for problems (changes nothing)
iglass uninstall                        # remove everything, restore settings

Fine-tuning

iglass install --opacity 0.8 --blur 18      # adds an "iglass Custom" profile / theme
iglass install --cursor box                  # bar (default), box, underline, keep
iglass install --window no-titlebar          # native (default), no-titlebar, keep
iglass install --font sf-mono                # keep (default), sf-mono, or "PostScriptName 14"
iglass install --glass blur                  # Ghostty: classic blur instead of real glass
iglass export --accent green > my.json       # print the iTerm2 profiles file instead

Opacity below the readable minimum (0.66) asks for --force.

What iglass changes in Ghostty

  • Theme files in ~/.config/ghostty/themes/iglass-*, one per variant and appearance, with the colors, opacity and glass.
  • ~/.config/ghostty/iglass.ghostty: which theme to use, padding and cursor.
  • Two lines, after a blank line, at the end of your Ghostty config (the one Ghostty loads last): a comment and an optional config-file include. Your config is backed up first, symlinked dotfiles stay symlinks, and iglass uninstall restores the file exactly.

App-wide settings (iTerm2)

Some of the native feel comes from iTerm2 settings that apply to every window, not just a profile: iTerm2's Automatic theme, which lets macOS draw the title bar and tabs the way it draws them for its own apps, and generous padding. Apple's Liquid Glass guidance asks apps to let the system draw bars rather than custom ones. --app-settings turns these on. Because iTerm2 saves its settings when it quits, iglass has to change them while iTerm2 is closed:

  1. iglass records the current values and backs up your iTerm2 preferences.
  2. A small helper quits iTerm2 (it asks first if programs are running), applies the change and reopens it. If you cancel the quit, nothing is written.
  3. iglass uninstall restores the exact previous values and removes keys that didn't exist.

Backups live in ~/Library/Application Support/iglass/backups.

How it works

One contrast-checked palette drives both terminals:

  1. design/palettes.json holds Apple's system colors, the variants and the contrast targets.
  2. tools/build_palettes.py blends each window background over black, white and grey desktops at each variant's transparency, checks every color against the worst case, and nudges lightness (in OKLCH, keeping hue) only where a color falls short.
  3. The result ships as data/palette.json, and every decision is listed in the contrast report.

For iTerm2, iglass installs a dynamic profile. A dynamic profile inherits everything it doesn't set from your default profile, so iglass sets every color and every setting iTerm2 keeps separately for light and dark mode (a test enforces this), and nothing about how you work. Files are validated with Apple's parser first, because one unreadable file stops iTerm2 from loading any dynamic profile.

For Ghostty, iglass writes theme files and checks them with Ghostty's own validator before anything touches your config. It asks Ghostty whether it supports macos-glass rather than guessing from version numbers.

The CLI is plain bash plus the jq, plutil and defaults that ship with macOS, so there is nothing else to install. More detail, including what was verified in iTerm2's and Ghostty's behavior: docs/research-notes.md.

FAQ

Is this real Liquid Glass?

In Ghostty, yes, on macOS 26 and later: iglass uses Ghostty's macos-glass-regular and macos-glass-clear, which are Apple's own glass material.

In iTerm2, no, and no theme can change that. iTerm2 hasn't shipped Liquid Glass for terminal windows: a pull request adding it was closed because glass breaks window resizing in a terminal. iglass gets as close as iTerm2 allows with transparency, blur and a matching palette, and will use real glass if iTerm2 adds it.

Isn't glass behind text against Apple's own advice?

Partly. Apple reserves glass for controls and navigation and keeps content clear. Terminal text is content, which is why Frosted is the default, Tinted and Solid exist, and every variant is contrast-checked. Choose the level that suits you; Tinted is the most Apple-like for long work.

Ghostty didn't change.

Quit and reopen Ghostty: it reads transparency only at launch. If it still looks the same, run iglass doctor; another config file loading after yours can override iglass.

My prompt icons disappeared.

iglass keeps your font unless you pass --font. If you did, reinstall without it (iglass install) to go back to your own (e.g. a Nerd Font).

Text is hard to read on my wallpaper.

Use a lower glass level (iglass preview --variant tinted), or --contrast high.

iglass profiles don't show up in iTerm2.

Run iglass doctor. The most common cause is another broken file in the dynamic profiles folder, which stops iTerm2 from loading all of them.

Uninstall

iglass uninstall            # removes iglass from every terminal; asks to restore iTerm2 settings
brew uninstall iglass       # or: curl -fsSL …/install.sh | bash -s -- --uninstall

Development

make palettes          # rebuild colors after editing design/palettes.json
make themes            # rebuild the prebuilt themes/ files
make check             # shellcheck, generated-file check, palette tests, bats suite
tools/screenshots.sh   # README screenshots over a generated backdrop (needs Screen Recording)
tools/record-gif.sh    # docs/demo.gif (needs ffmpeg)
osascript -l JavaScript tools/social-card.js BACKDROP.png SHOT.png docs/social-preview.png

Tests run in a sandbox with stand-ins for iTerm2, Ghostty and system commands, so they never touch your real settings. See CONTRIBUTING.md.


iglass is an independent project, not affiliated with or endorsed by Apple Inc., iTerm2 or Ghostty. Liquid Glass, macOS and SF Mono are trademarks of Apple Inc.

MIT · built by @vukkt · sponsor

cli
dynamic-profiles
ghostty
ghostty-theme
gnome
iterm2
iterm2-theme
kde
linux
liquid-glass
macos
terminal-theme