Skip to main content

Themes

Make the chat look exactly the way you want — every theme in Simple IRC Client is just CSS you can edit

How Themes Work

Simple IRC Client ships with two built-in themes: Classic, a traditional one-line-per-message IRC layout, and Modern, an avatar-based layout with message grouping like contemporary chat apps. Under the hood a theme is nothing more than a CSS stylesheet — every chat message renders the same HTML, and the active theme's CSS decides which parts are visible and how they are arranged.

To switch themes:

  1. Click your avatar in the toolbar and choose Profile Settings
  2. Pick a theme from the Theme dropdown — it applies immediately

Theme Creator — No CSS Required

The Edit and New theme buttons next to the theme dropdown open the Theme Creator, which builds the stylesheet for you from simple controls:

Everything previews live in the chat while you adjust it. Themes made with the Creator can be re-opened in the Creator later — and they are still plain CSS underneath, so you can switch to the CSS editor for the finishing touches at any time.

Editing Theme CSS

For full control, click Edit CSS inside the Creator — it switches to a CSS editor for the same theme (any unsaved Creator tweaks carry over):

Themes are stored locally in your browser or app — nothing is uploaded anywhere. The same themes work in the web app and the desktop builds.

Theming Reference

Each chat message renders a fixed structure of elements with stable class names. Your CSS shows, hides, and arranges them:

.sic-msg

The message row. Carries data attributes you can style on: data-category (default, join, part, quit, kick, mode, notice, info, me, error, motd), data-content (present on default/me/notice messages), data-grouped (consecutive message from the same nick) and data-highlight (message mentions your nick).

.sic-msg-gutter / .sic-msg-avatar

The avatar column and the avatar itself. Hide the gutter for single-line layouts.

.sic-msg-header

Header row with the sender (.sic-msg-nick), a bot icon and a right-side timestamp (.sic-msg-time-header).

.sic-msg-line

The message line: an inline timestamp (.sic-msg-time-inline, with seconds in a nested .sic-msg-time-seconds), an inline nick (.sic-msg-nick-inline — bare text, add brackets with ::before/::after), the message text (.sic-msg-body) and a trailing timestamp (.sic-msg-time-trailing).

.sic-msg-embeds

Link previews: YouTube thumbnails, images and social embeds.

Theme CSS is injected globally, so you can also restyle the whole app by overriding CSS variables such as --background, --primary and the message palette (--msg-time, --msg-body, --msg-default, --msg-join, …). Prefix rules with .dark to target dark mode. The Debug and Status channels keep a fixed monospace style that themes do not override.

For example, to recolor join and part messages without touching anything else, add this to any theme's CSS (light-mode values on :root, dark-mode values on .dark):

/* Recolor join/part messages - light and dark mode */
:root {
  --msg-join: #0a7d32;
  --msg-part: #b3261e;
}

.dark {
  --msg-join: #4cd07d;
  --msg-part: #ff6b5e;
}

The full message-color palette with the shipped default values — these are exactly the colors the Theme Creator's color pickers edit (no CSS needed if you prefer the UI), and every built-in theme's CSS ends with these variables ready to tweak:

Variable Colors Light default Dark default
--msg-time Timestamps #666666 #444466
--msg-default System messages #000000 #b8b8d0
--msg-body Message text #3a3a47 #b8b8d0
--msg-join Join messages #009300 #5a8a5a
--msg-part Part messages #4733ff #7a6a8a
--msg-quit Quit messages #00007f #6a6a8a
--msg-kick Kick messages #00007f #8a5a5a
--msg-mode Mode changes #009300 #6a8a6a
--msg-notice Notices #0066ff #6e9ecf
--msg-info Informational messages #666666 #55557a
--msg-me Actions (/me) #800080 #c47ea0
--msg-error Errors #ff0000 #b05555

Example Themes

These themes are not shipped with the app — copy one, open Profile Settings → New theme → Edit CSS, replace the pre-filled CSS with the example and save. Use them as they are or as a starting point for your own design.

Terminal

Green-on-dark monospace, one message per line, timestamps with seconds — like chatting from a phosphor terminal.

/* Terminal - green phosphor, single-line messages */
:root, .dark {
  --background: #0a0f0a;
  --foreground: #33ff66;
  --msg-time: #1f9944;
  --msg-default: #33ff66;
  --msg-body: #33ff66;
  /* category colors readable on the dark background */
  --msg-join: #27c46f;
  --msg-part: #1f9944;
  --msg-quit: #1f9944;
  --msg-kick: #d9c15a;
  --msg-mode: #27c46f;
  --msg-notice: #4dd0e1;
  --msg-info: #1f9944;
  --msg-me: #cf9fff;
  --msg-error: #ff5f5f;
}

.sic-msg {
  display: block;
  padding: 0.125rem 1rem;
  font-family: ui-monospace, 'Cascadia Mono', Consolas, monospace;
}

.sic-msg[data-highlight] {
  background-color: rgba(51, 255, 102, 0.12);
}

/* single-line layout: no avatars, no header row */
.sic-msg-gutter,
.sic-msg-header,
.sic-msg-time-trailing {
  display: none;
}

.sic-msg-time {
  color: var(--msg-time);
}

.sic-msg-time-inline {
  margin-right: 0.75rem;
}

.sic-msg-nick-inline::before { content: '<'; }
.sic-msg-nick-inline::after { content: '>'; }

.sic-msg-body {
  margin-left: 0.5rem;
  color: var(--msg-default);
}

.sic-msg[data-category='join'] .sic-msg-body,
.sic-msg[data-category='part'] .sic-msg-body,
.sic-msg[data-category='quit'] .sic-msg-body,
.sic-msg[data-category='kick'] .sic-msg-body {
  font-style: italic;
  opacity: 0.7;
}

Compact

Maximum density for busy channels: no avatars, no link previews, a fixed-width right-aligned nick column and tight line spacing.

/* Compact - maximum density, aligned nick column */
.sic-msg {
  display: block;
  padding: 0 0.75rem;
  line-height: 1.4;
}

.sic-msg[data-highlight] {
  border-left: 2px solid var(--primary);
  background-color: color-mix(in oklab, var(--primary) 8%, transparent);
}

/* hide everything except the message line */
.sic-msg-gutter,
.sic-msg-header,
.sic-msg-time-trailing,
.sic-msg-time-seconds,
.sic-msg-embeds {
  display: none;
}

.sic-msg-line {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
}

.sic-msg-time {
  color: var(--msg-time);
  font-size: 0.7rem;
  flex-shrink: 0;
}

.sic-msg-nick-inline {
  flex-shrink: 0;
  width: 7rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-align: right;
  font-weight: 600;
}

.sic-msg-body {
  flex: 1;
  min-width: 0;
  color: var(--msg-default);
}

.sic-msg[data-category='join'] .sic-msg-body,
.sic-msg[data-category='part'] .sic-msg-body,
.sic-msg[data-category='quit'] .sic-msg-body,
.sic-msg[data-category='kick'] .sic-msg-body {
  font-style: italic;
}

High Contrast

Not a full theme but an accessibility tweak: open Edit CSS on the Modern theme and paste this at the end of its stylesheet. It strengthens text colors in both light and dark mode and makes mentions much harder to miss.

/* High contrast - paste at the END of the Modern theme CSS */
:root {
  --msg-time: #3d3d3d;
  --msg-default: #1a1a1a;
  --msg-body: #000000;
}

.dark {
  --msg-time: #c0c0c0;
  --msg-default: #f0f0f0;
  --msg-body: #ffffff;
}

.sic-msg-body {
  font-weight: 500;
}

.sic-msg[data-highlight] {
  border-left: 4px solid var(--primary);
  background-color: color-mix(in oklab, var(--primary) 18%, transparent);
}

Try It Yourself

Open Simple IRC Client, head to Profile Settings and make the chat yours — it is just CSS.