IAMB(5)
π IAMB(5) β File Formats Manual π
okay bestie, gather round π«Ά this is the manual page for config.toml, the config file for iamb. It's giving βtiny file, huge personalityβ and we're gonna go through every single bit together. No cap, by the end you'll know this file like the back of your hand. π
πΈ NAME πΈ
config.toml β configuration file for iamb
π¦ DESCRIPTION π¦
Configuration must be placed under ~/.config/iamb/ and named config.toml. (If $XDG_CONFIG_HOME is set, then iamb will look for a directory named iamb there instead.)
Example configuration usually comes bundled with your installation and can typically be found in /usr/share/iamb.
As implied by the filename, the configuration is formatted in TOML. Its structure and fields are described below.
β¨ CONFIGURATION β¨
These options are sections at the top-level of the file.
profilesβ A map of profile names containing per-account information. See βPROFILESβ.default_profileβ The name of the default profile to connect to, unless overwritten by a commandline switch. It should be one of the names defined in theprofilessection.settingsβ Overwrite general settings for iamb. See βSETTINGSβ for a description of possible values.layoutβ Configure the default window layout to use when starting iamb. See βSTARTUP LAYOUTβ for more information on how to configure this object.macrosβ Map keybindings to other keybindings. See βCUSTOM KEYBINDINGSβ for how to configure this object.dirsβ Configure the directories to use for data, logs, and more. See βDIRECTORIESβ for the possible values you can set in this object.
π PROFILES π
These options are configured as fields in the profiles object.
user_idβ The user ID to use when connecting to the server. For example"user"in"@user:matrix.org".urlβ The URL of the user's server. (For example"https://matrix.org"for"@user:matrix.org".) This is only needed when the server does not have a/.well-known/matrix/cliententry.
In addition to the above fields, you can also reuse the following fields to set per-profile overrides of their global values:
dirslayoutmacrossettings
β¨ Example 1: A single profile β¨
[profiles.personal]
user_id = "@user:matrix.org"
π Example 2: Two profiles with a default π
In the following example, there are two profiles, βpersonalβ (set to be the default) and βworkβ. The βworkβ profile has an explicit URL set for its homeserver.
default_profile = "personal"
[profiles.personal]
user_id = "@user:matrix.org"
[profiles.work]
user_id = "@user:example.com"
url = "https://matrix.example.com"
π SETTINGS π
These options are configured as an object under the settings key and can be overridden as described in βPROFILESβ. Lowkey this is where most of the personalization lives.
external_edit_file_suffixβ Suffix to append to temporary file names when using the:editorcommand. Defaults to.md.default_roomβ The room to show by default instead of the:welcomewindow.image_previewβ Enable image previews and configure it. An empty object will enable the feature with default settings; omitting it will disable the feature. The available fields in this object are:sizeβ An optional object withwidthandheightfields to specify the preview size in cells. Defaults to66and10.protocolβ An optional object to override settings that will normally be guessed automatically:typeβ An optional string set to one of the protocol types:"sixel","kitty", and"halfblocks".font_sizeβ An optional list of two numbers representing font width and height in pixels.
log_levelβ Specifies the lowest log level that should be shown. Possible values are:"trace","debug","info","warn", and"error".message_shortcode_displayβ Defines whether or not Emoji characters in messages should be replaced by their respective shortcodes.message_user_colorβ Defines whether or not the message body is colored like the username.normal_after_sendβ Defines whether to reset input to Normal mode after sending a message.notificationsβ When this subsection is present, you can enable and configure push notifications. See βNOTIFICATIONSβ for more details.open_commandβ Defines a custom command and its arguments to run when opening downloads instead of the default. (For example,["my-open", "--file"].)reaction_displayβ Defines whether or not reactions should be shown.reaction_shortcode_displayβ Defines whether or not reactions should be shown as their respective shortcode.read_receipt_sendβ Defines whether or not read confirmations are sent.read_receipt_displayβ Defines whether or not read confirmations are displayed.request_timeoutβ Defines the maximum time per request in seconds.sortβ Configures how to sort the lists shown in windows like:roomsor:members. See βSORTING LISTSβ for more details.state_event_displayβ Defines whether the state events like joined or left are shown.typing_notice_sendβ Defines whether or not the typing state is sent.typing_notice_displayβ Defines whether or not the typing state is displayed.userβ Overrides values for the specified user. See βUSER OVERRIDESβ for details on the format.username_displayβ Defines how usernames are shown for message senders. Possible values are"username","localpart", or"displayname".user_gutter_widthβ Specify the width of the column where usernames are displayed in a room. Usernames that are too long are truncated. Defaults to30.tabstopβ Number of spaces that a<Tab>counts for. Defaults to4.
π Example 1: Avoid showing Emojis (useful for terminals w/o support) π
[settings]
username = "username"
message_shortcode_display = true
reaction_shortcode_display = true
β Example 2: Increase request timeout to 2 minutes for a slow homeserver β
[settings]
request_timeout = 120
π¦ NOTIFICATIONS π¦
The settings.notifications subsection allows configuring how notifications for new messages behave. It's giving push notification central, iykyk.
The available fields in this subsection are:
enabledβ Defaults tofalse. Setting this field totrueenables notifications.viaβ Defaults to"desktop"to use the desktop mechanism (default). Setting this field to"bell"will use the terminal bell instead. Both can be used via"desktop|bell".show_messageβ controls whether to show the message in the desktop notification, and defaults totrue. Messages are truncated beyond a small length. The notification rules are stored server side, loaded once at startup, and are currently not configurable in iamb. In other words, you can simply change the rules with another client.
π Example 1: Enable notifications with default options π
[settings]
notifications = {}
π Example 2: Enable notifications using terminal bell π
[settings.notifications]
via = "bell"
show_message = false
π« SORTING LISTS π«
The settings.sort subsection allows configuring how different windows have their contents sorted. Vibe check: sorted.
Fields available within this subsection are:
roomsβ How to sort the:roomswindow. Defaults to["favorite", "lowpriority", "unread", "name"].chatsβ How to sort the:chatswindow. Defaults to theroomsvalue.dmsβ How to sort the:dmswindow. Defaults to theroomsvalue.spacesβ How to sort the:spaceswindow. Defaults to theroomsvalue.membersβ How to sort the:memberswindow. Defaults to["power", "id"].
The available values are:
favoriteβ Put favorite rooms before other rooms.lowpriorityβ Put lowpriority rooms after other rooms.nameβ Sort rooms by alphabetically ascending room name.aliasβ Sort rooms by alphabetically ascending canonical room alias.idβ Sort rooms by alphabetically ascending Matrix room identifier.unreadβ Put unread rooms before other rooms.recentβ Sort rooms by most recent message timestamp.inviteβ Put invites before other rooms.
π Example 1: Group room members by their server first π
[settings.sort]
members = ["server", "localpart"]
π USER OVERRIDES π
The settings.users subsections allows overriding how specific senders are displayed. Overrides are mapped onto Matrix User IDs such as @user:matrix.org, and are typically written as inline tables containing the following keys:
nameβ Change the display name of the user.colorβ Change the color the user is shown as. Possible values are:"black","blue","cyan","dark-gray","gray","green","light-blue","light-cyan","light-green","light-magenta","light-red","light-yellow","magenta","none","red","white", and"yellow".
πΈ Example 1: Override how @ada:example.com appears in chat πΈ
[settings.users]
"@ada:example.com" = { name = "Ada Lovelace", color = "light-red" }
β¨ STARTUP LAYOUT β¨
Okay so the layout section is literally the βwhat tabs and windows do I wake up to?β zone β it configures the initial set of tabs and windows to show when starting the client. π
styleβ Specifies what window layout to load when starting. Valid values are"restore"to restore the layout from the last time the client was exited,"new"to open a single window (uses the value ofdefault_roomif set), or"config"to open the layout described undertabs.tabsβ Ifstyleis set toconfig, then this value will be used to open a set of tabs and windows at startup. Each object can contain either awindowkey specifying a username, room identifier or room alias to show, or asplitkey specifying an array of window objects.
Example 1: Show a single room every startup
[settings]
default_room = "#iamb-users:0x.badd.cafe"
[layout]
style = "new"
Example 2: Show a specific layout every startup
[layout]
style = "config"
[[layout.tabs]]
window = "iamb://dms"
[[layout.tabs]]
window = "iamb://rooms"
[[layout.tabs]]
split = [
{ "window" = "#iamb-users:0x.badd.cafe" },
{ "window" = "#iamb-dev:0x.badd.cafe" }
]
π CUSTOM KEYBINDINGS π
The macros subsections allow configuring custom keybindings. Available subsections are:
insert,iβ Map the key sequences in this section in Insert mode.normal,nβ Map the key sequences in this section in Normal mode.visual,vβ Map the key sequences in this section in Visual mode.selectβ Map the key sequences in this section in Select mode.command,cβ Map the key sequences in this section in Visual mode.operator-pendingβ Map the key sequences in this section in Operator Pending mode.
Multiple modes can be given together by separating their names with "|".
Example 1: Use jj to exit Insert mode
[macros.insert]
"jj" = "<Esc>"
Example 2: Use V for switching between message bar and room history
[macros."normal|visual"]
"V" = "<C-W>m"
π DIRECTORIES π
Specifies the directories to save data in. Configured as an object under the key dirs.
cacheβ Specifies where to store assets and temporary data in. (For example,image_previewandlogswill also go in here by default.) Defaults to$XDG_CACHE_HOME/iamb.dataβ Specifies where to store persistent data in, such as E2EE room keys. Defaults to$XDG_DATA_HOME/iamb.downloadsβ Specifies where to store downloaded files. Defaults to$XDG_DOWNLOAD_DIR.image_previewsβ Specifies where to store automatically downloaded image previews. Defaults to${cache}/image_preview_downloads.logsβ Specifies where to store log files. Defaults to${cache}/logs.
π FILES π
~/.config/iamb/config.tomlβ The TOML configuration file that iamb loads by default.~/.config/iamb/config.jsonβ A JSON configuration file that iamb will load if the TOML one is not found./usr/share/iamb/config.example.tomlβ A sample configuration file with examples of how to set different values.
π REPORTING BUGS π
Please report bugs in iamb or its manual pages at https://github.com/ulyssa/iamb/issues π
π SEE ALSO π
Extended documentation is available online at https://iamb.chat π
kiss kiss, signed off by the Debian IAMB(5) page, dated Mar 24, 2024 π«Άβ¨
π¦ where this page comes from
- alpine 3.24: iamb-doc 0.0.11-r1 Β· Apache-2.0
- nixos 26.05: iamb 0.0.11
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms