Anatomy of a Dark Theme: Prague

Prague lit its first two hundred gas lamps on 15 September 1847. By 1940 there were close to nine thousand of them, and then the city slowly gave them up: the last ones, on Hradčany Square and Loretánská street up by the castle, were switched to electricity in 1985. In 2002 the gas came back along the Royal Route, the road the Bohemian kings walked to their coronations, and about seven hundred lamps burn on it again today. In Advent the lamps on Charles Bridge are lit by hand at dusk, by a lamplighter carrying a pole from the late nineteenth century.

Codigrate's Prague theme is that walk at dusk. The river and the sky over the castle are deep blue, and against them the gas lamps, the copper roofs and the old gold of the stone come on one at a time. What follows takes it apart color by color. It is the seventh city in this series after Miami, Istanbul, Paris, Rio de Janeiro, Tokyo and Tallinn, and the third premium theme after Ocean and Salda. Tokyo also dresses its night in one blue, but lights it with neon; Prague lights it with fire.

A River And Its Lamps

The theme's own description sets the scene: Prague after dark, the deep blues of the Vltava and the gas lamps glowing along its bridges, midnight navy and castle blue shadows with amber, copper and straw gold accents. The palette names walk across the bridge from one side to the other. Old Town Shadow, Vltava Night, Castle Night, Bohemian Blue, Bridge Blue, Slate Blue, Stone Blue and Moonstone are the night and the water; Pale Vltava and Daylight Blue are the river catching the last of the sky. Candle Gold, Parchment Gold, Straw Gold, Amber Lantern, Rooftop Copper and Brass Shadow are the lamps and the roofs.

The interface leans on both. A bridge blue #5BA0E5 is the accent for links and the small marks that need to stand out, and an amber #C78921 is its second accent. In the code the same split runs through every line: daylight blue #74ADF8 and pale Vltava #89C5F8 for the language, amber lantern #EFBA5A, rooftop copper #DF865B and straw gold #E3CA77 for the warm side.

The Harmony: River Against Lamplight

On a wheel, Prague is a complementary pair in the plainest sense. The blues all gather near 210 degrees: every background, the interface text, the caret, the keywords, the strings and the static members, between 206 and 214. The opposite of 210 is 30, an amber, and that is where the lamps are. Rooftop copper sits at 20, the amber lantern at 39, straw gold at 46 and parchment at 48, a short warm arc straight across from the river.

Two colors step off the axis on purpose. Local variables are a lavender at 256, a little past the blues toward violet, the color the sky turns over the castle just after the sun goes. Global variables are a faded brick at 3, a little past the coppers toward red, like the tiled roofs of the Lesser Town. They keep the theme from being a strict two color poster without breaking its idea: cool for the river, warm for the lamps, and a little dusk and a little brick in between.

Backgrounds, Down To The River

Prague's backgrounds are four blues on the same hue, near 210 degrees:

  • Input #070F17, old town shadow, the darkest well, where you type into search fields and dialogs.
  • Editor #0D1D2E, Vltava night, the river the code is written on.
  • Window #123151, castle night, for the tool windows and panels.
  • Surface #113E6B, Bohemian blue, the outer frame the whole window sits in.

What changes from one to the next is not only lightness. The higher the panel, the more color it holds: the editor sits at about 56 percent saturation, the windows at 64 and the frame at 73. So the code area stays close to a black water, and the panels around it read as a clearer blue sky above it, the way the river at dusk is always darker than the air over the castle. A selected row in the project tree stays in that sky, a deeper blue #18406A edged in bridge blue #1E5FA0.

The lamps are where the window tells you something. Selected text in the editor turns a dark brass #544410. The active editor tab sits on a brass shadow #544723 with an old gold underline #C49D3A, and the progress bar runs in amber #C78921. Search matches glow copper, #DDAE94 on #61351E. Even the word under the caret plays the same game: where it is read it stays in the river, a pale blue #C3D7E3 on #346C8F, and where it is written to it turns gold, #E8E4CB on #857D3D. Reads are water, writes are lamplight.

One Foreground, Several Voices

Code is written in a near white #EBEBEC at about 14:1 against the editor, and class names, function names and constants stay a plain light grey #E0E0E0 at about 13:1. The interface around it uses moonstone #BBC9D7, the pale blue of the moon over the castle, and one level down a slate #89A2BC for hints and secondary labels, both on the same hue as the river.

Comments are a stone blue #92A3B3 set in italics, at about 6.6:1. That is brighter than most comments in this series, and it suits a theme this dark: on a near black page a dim grey would sink out of sight, so Prague keeps its notes readable and lets the italic and the missing color do the stepping back. They sit one rung below the code on the ladder from the readability post.

The gutter is the river itself. Line numbers are a quiet blue #3168A4 at about 3:1, the number on the current line brightens to #4C91D7, and the caret is a pale steel #90B2D1, so your place on the left edge shows as a little more light on the water.

Syntax: River Blues And Lamplight

Open a file and the bridge fills in:

  • Keywords in daylight blue #74ADF8, the most saturated blue in the theme, the most common colored words in any file.
  • Strings, numbers and escapes in pale Vltava #89C5F8, a lighter, softer blue.
  • Static fields and methods in an italic ice blue #A8D4F6, lighter again. Keywords, values and statics climb the same blue toward white, so the language reads as one river at three depths.
  • Local variables in a dusk lavender #BEB2DF, the sky over the castle.
  • Instance fields and methods in amber lantern #EFBA5A, and JavaScript member functions in a deeper amber #F4AA49, the gas lamps on the bridge.
  • Parameters, and HTML and XML tags, in rooftop copper #DF865B.
  • Attributes in straw gold #E3CA77, and annotations in parchment #DCCF9D, the faded paper of an old city archive.
  • Global variables in a faded brick #D88783, the roofs of the Lesser Town.

With the names left a plain grey, a Prague file splits cleanly in two. The blue half is the language and its values, the part you read; the warm half is the members, the parameters and the attributes, the part you follow from one call to the next.

The Final Product

Here is Prague put back together. The deep blue fills a JetBrains IDE and Sublime Text, Slack and Ghostty keep the same river night around the chat and the shell, and in Rhino the viewports turn the navy of the Vltava after dark, with old gold marking the active tab and the switches that are on.

Prague theme in a JetBrains IDE
JetBrains
Prague theme in Sublime Text
Sublime Text
Prague theme in Slack
Slack
Prague theme in Ghostty
Ghostty
Prague theme in Rhino
Rhino

Explore Our Themes

Reading It Back

Taken apart, Prague is a river and its lamps. The backgrounds, the gutter, the interface text and the language itself are all one blue, darkest where the code sits and clearest in the frame above it. The warm colors are rationed to the members, the parameters and the attributes, and to the marks that tell you where you are: the selection, the open tab, the search match and every place a variable is written to. A lavender and a brick step just off that line to keep it from feeling like a diagram.

It is a theme for evening work in a dim room, which is also the hour the real city is at its best, the bridge lit and the river turning black below it. Prague is a premium theme: a paid plugin for JetBrains IDEs on the JetBrains Marketplace and part of the All In One bundle, a one time purchase for Sublime Text, Ghostty, iTerm2, macOS Terminal, Slack and Rhino from the Codigrate store, and a LINE theme in the LINE theme shop, all from its theme page.

Frequently Asked Questions

What is the Prague theme?

Prague is one of Codigrate's premium dark city themes, built around Prague after dark: the Vltava running black and blue under the castle, and the gas lamps of Charles Bridge burning along it. The frame of the editor is the river and the night sky, four deep blues on one hue. The code is split between the two: the language itself in river and daylight blues, and the members, parameters and attributes in the warm colors of the old town, amber lantern, rooftop copper, straw gold and parchment.

Why does Prague mark selections in gold instead of blue?

Because in a window built entirely from blue, gold is the color that reads as light. Selected text turns a dark brass #544410, the active editor tab sits on a brass shadow #544723 with an old gold underline #C49D3A, the progress bar runs in amber and search matches glow copper. Everything that tells you where you are or what you picked looks like a lamp on the river, and it never gets confused with the blue keywords and strings around it.

How are the syntax colors chosen in Prague?

The blues and the golds sit on opposite sides of the color wheel, near 210 and near 30 degrees, and each side gets its own kind of token. The blues carry the language and its values: daylight blue keywords, pale river blue strings and numbers, and an even paler italic blue for static members. The warm side carries what belongs to objects and calls: amber lantern for fields and methods, rooftop copper for parameters and tags, straw gold for attributes and parchment for annotations. A lavender for local variables and a faded brick for globals sit between them.

Where can I get the Prague theme?

Prague is a premium theme. On JetBrains IDEs it is a paid plugin on the JetBrains Marketplace and is also part of the All In One bundle. For Sublime Text, Ghostty, iTerm2, macOS Terminal, Slack and Rhino it is a one time purchase from the Codigrate store, delivered as a download, and the LINE version is sold in the LINE theme shop. All of them are linked from the Prague theme page.

Codigrate

Codigrate