Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Themes

Example

# Static single
theme = "ferra"

# Static multiple (random selection)
theme = ["ferra", "booberry"]

# Dynamic single
theme = { light = "ferra-light", dark = "ferra" }

# Dynamic multiple (random selection)
theme = { light = ["ferra-light", "booberry-light"], dark = ["ferra", "booberry"] }

Configuration

⚠️ theme is a root key, so it must be placed before every section.

theme

Specify the theme name(s) to use. The theme must correspond to a file in the themes folder of your Halloy configuration directory. For more details, see the configuration overview. The default theme in Halloy is Ferra.

When multiple themes are specified, Halloy will randomly select one each time the application starts. When a dynamic theme is used, Halloy will match the appearance of the OS.

  • type: string, array of strings, or object
  • values: "<string>", ["<string>", "<string>"], { light = "<string>", dark = "<string>" }, { light = ["<string>", "<string>"], dark = ["<string>", "<string>"] }
  • default: "ferra"

💡 See all community created themes and base16 themes.

Custom themes

To create a custom theme for Halloy, simply place a theme file (with a .toml extension) inside the themes folder within the configuration directory.

# Consider we have a theme called "foobar.toml" inside the themes folder.
# Theme is a root key, so it has to be placed before any sections in your config file.

theme = "foobar"
# .. rest of the configuration file.

💡 Halloy has a built in theme editor which makes theme creation easier

Each "<color string>" is expected to be a valid hex color. If invalid, or if the key is removed, the color will fall back to transparent.

Each <text style> is expected to be either a valid hex color string ("<color string>"), or table (“{ color = "<color string>", font_style = "<font style string>" }”) with entries for color (valid hex color string) and font_style (valid font style string; "normal", "italic", "bold", or "italic-bold").

A custom theme is structured as follows:

[general]
background = "<color string>"
border = "<color string>"
horizontal_rule = "<color string>"
scrollbar = "<color string>"
unread_indicator = "<color string>"
highlight_indicator = "<color string>"

[text]
primary = <text style>
secondary = <text style>
tertiary = <text style>
success = <text style>
error = <text style>
warning = <text style>
info = <text style>
debug = <text style>
trace = <text style>

[buttons.primary]
background = "<color string>"
background_hover = "<color string>"
background_selected = "<color string>"
background_selected_hover = "<color string>"

[buttons.secondary]
background = "<color string>"
background_hover = "<color string>"
background_selected = "<color string>"
background_selected_hover = "<color string>"

[buffer]
action = <text style>
background = "<color string>"
background_text_input = "<color string>"
background_title_bar = "<color string>"
border = "<color string>"
border_selected = "<color string>"
code = <text style>
highlight = "<color string>"
nickname = <text style>
nickname_offline = <text style>
selection = "<color string>"
timestamp = <text style>
topic = <text style>
url = <text style>

[buffer.server_messages]
# Set below if you want to have a unique color for each.
# Otherwise simply set `default` to use that for all server messages.
#
# change_host = <text style>
# change_mode = <text style>
# change_nick = <text style>
# change_topic = <text style>
# join = <text style>
# kick = <text style>
# part = <text style>
# quit = <text style>
# topic = <text style>
# monitored_online = <text style>
# monitored_offline = <text style>
# standard_reply_fail = <text style>
# standard_reply_warn = <text style>
# standard_reply_note = <text style>
# wallops = <text style>
default = <text style>

[formatting]
# Set below if you want override the default color used in formatted messages.
#
# white = "<color string>"
# black = "<color string>"
# blue = "<color string>"
# green = "<color string>"
# red = "<color string>"
# brown = "<color string>"
# magenta = "<color string>"
# orange = "<color string>"
# yellow = "<color string>"
# lightgreen = "<color string>"
# cyan = "<color string>"
# lightcyan = "<color string>"
# lightblue = "<color string>"
# pink = "<color string>"
# grey = "<color string>"
# lightgrey = "<color string>"

More information on formatting colors is available in the text formatting guide.

💡 The default Ferra theme toml file can be viewed on GitHub.

Community

Community created themes for Halloy

Base16

Community collection of base16 themes