Themes
A theme (also called a skin) is a folder of plain files. SwizzinIRC reads it, checks it and applies it. A theme is data: it can change colours, fonts, sizes, animation timing, restyle the toolbar, panels and tabs, and supply pictures. It cannot run code, load anything from the network, read your files or change what the program does.
Where themes live
Section titled “Where themes live”%APPDATA%\com.swizards.swizzinirc\Themes\<theme-name>\The default theme, b0r3d v1.0, is written there the first time SwizzinIRC starts so you have a complete example to copy. The same look is built into the program as a fallback, so deleting or breaking the folder never leaves you without a working interface. Appearance → Import & folder shows the exact path on your computer.
Themes\ my-theme\ theme.json required: name, version, colour and size tokens theme.css optional: extra rules (restyling only) toolbar-map.json optional: toolbar buttons or image-map toolbar Graphics\ optional: PNG, JPEG, WebP or GIF images (max 512 KB each, 32 files)Choosing, previewing and resetting
Section titled “Choosing, previewing and resetting”Open Appearance from the toolbar, the status-bar link, or Ctrl+Shift+A, then choose Themes.
- Preview applies a theme temporarily. Keep saves it; Revert (or closing the dialog) goes back.
- Apply saves your choice.
- Use on b0r3d v1.0 (built-in) returns to the shipped look.
- Reset appearance (the dialog button, the toolbar’s right-click menu, or typing
/theme reset) restores the built-in theme, the default toolbar and default display preferences. It keeps your layout and favourite channels. - Starting with
--safe-theme(orSWIZZIN_SAFE_THEME=1) ignores the saved theme for that session.
The colour scheme (dark, light or follow system) is separate from the theme. A theme supplies colours for both.
theme.json
Section titled “theme.json”{ "format": 1, "name": "My theme", "version": "1.0.0", "author": "You", "description": "One line.", "tokens": { "all": { "--radius": "4px", "--anim-fast": "100ms" }, "dark": { "--accent": "#ff9ecb", "--ribbon-glow": "rgb(255 158 203 / 0.5)" }, "light": { "--accent": "#a02b6a" } }}formatmust be1. Unknown or newer formats are refused with a message.tokens.allapplies to both colour schemes;darkandlightapply only to that scheme.- A token name is
--followed by lowercase letters, digits and dashes. A value is plain CSS value text such as a colour, length, duration, font list, shadow or gradient. It may not containurl(...),;, braces,<,>,\or@, and is at most 300 characters. A theme may have at most 400 tokens.
Token reference
Section titled “Token reference”| Group | Tokens |
|---|---|
| Surfaces | --bg --bg-alt --bg-elev --bg-hover --border |
| Text | --text --text-muted --system --self |
| Accent and state | --accent --accent-contrast --accent-soft --focus --danger --warn --highlight-bg --highlight-bar |
| Nick colours | --nick-0 … --nick-7 |
| mIRC colours | --irc-0 … --irc-15 |
| Type and shape | --font-ui --font-mono --fs --radius |
| Toolbar | --ribbon-bg --ribbon-border --ribbon-btn-hover --ribbon-btn-active --ribbon-glow --ribbon-icon --ribbon-height --ribbon-icon-size --circuit |
| Menus | --menu-bg --menu-hover |
| Motion | --anim-fast --anim-med --glow-size |
Keep text and background pairs at a contrast of 4.5:1 or better.
Your own motion preference always wins: Animation → Off disables transitions and animations whatever a theme says, and the operating system’s “reduce motion” setting is honoured too.
The branding bar
Section titled “The branding bar”The bottom line SwizzinIRC · swizards.net is permanent. No theme or toolbar mapping can hide, replace or restyle it.
Making a theme
Section titled “Making a theme”- Copy
Themes\b0r3d-v1.0to a new folder name. - Edit
theme.json(changename) and optionallytheme.css. - Open Appearance → Import & folder, choose Rescan, then Themes → Preview.
To import a theme someone sent you, unzip it, open Appearance → Import & folder, enter the folder’s full path and choose Import. It is validated first, and only the known files are copied.