Settings

Main | Messages | Chat | Emoticons | Usericons | Usercolors | Highlight | Ignore | Sounds | Notifications | Log to file | Window | Commands | Other | Advanced | Hotkeys | Completion

This page details some of the settings in the Settings Dialog (Main Menu - Settings). Also try hovering over settings in the settings dialog itself, sometimes you can get a tooltip with some additional information. You can open this help in the settings dialog by clicking on the "Help" link on the bottom left.

Main [back to menu]

Chat Font

Change font and font size by clicking on Select font.

Input Font

Input font is restricted to two fonts by default, because other fonts cause issues due to a bug in Java. The number behind the font is the font size. You can manually change this setting via Setting Commands (as with most settings) if you really need another font, but pay attention to the note about the adverse effects it may have.

Startup

You can select what will happen when you start Chatty:

Messages [back to menu]

Deleted Messages (Timeouts/Bans)

This allows you to define how timeouts or bans are displayed in Chatty.

Tip: Click on a username in chat to open the User Info Dialog, which also shows the timeouts/bans and the original messages.

Please Note: The timeout duration/reason is in Beta at Twitch, so stuff may or may not change at some point and break the display in Chatty. Telling the difference between a timeout and permanent ban also depends on this, so if this info isn't available users who were just timed out may be shown as banned.

Other

Timestamp
Whether to show a timestamp in front of chat messages and what format it should have. If you want a different format from the ones provided here, you can use the command /set timestamp <format>. The format can be anything specified by the Java SimpleDateFormat class.
Show mod/unmod messages
Whether to show the MOD/UNMOD messages as they come in from Twitch Chat. These messages are send not only when someone was modded/unmodded but also when a mod joins or leaves the chat.
Show joins/parts
Show joins/parts, which are always kind of delayed, so don't take them too seriously (only works when Advanced - Correct Userlist is enabled).
Show stream status in chat
Outputs the stream status (title and game) in the chat window on join and when it changes (when the stream goes offline or online or changes the title or game).
/me messages colored
Show action messages in the color of the user like in webchat.
Filter combining characters
Replaces certain ranges of Unicode characters. Those characters are used in some languages to combine characters, but can apparently cause errors in some cases. The filter applies to the main chat window and the recent messages in the User Info Dialog (but not e.g. the chatlog written to file).
Off
Do nothing
Lenient
Replaces at least 3 characters in a row with stars (****), which preserves some legitimate use
Strict
Replaces any number of characters in a row with stars (****), use this if you have performance problems when someone posts these kind of characters

Name Capitalization

Names in Twitch Chat are send all-lowercase by default, however there is an IRCv3 tag send with each message with the display name which Chatty can use to show correct capitalization. You have the following settings:

The previous function that requested correctly capitalized names from the Twitch API has been removed. This also means that the associated commands (/refreshCase, /setCase and /getCase) have been removed as well. If you want to customize the capitalization of someone else's name locally, you can now use the Custom Names feature. The names in the userlist will not be correctly capitalized until Chatty has received a message from that user during this session.

Chat [back to menu]

Chat Settings

Pause Chat

The Pause Chat feature stops Chatty from scrolling down when you move the mouse over chat. This can be useful if you want to click specific stuff in a fast moving chat, for example if you are moderating or just want to click on an emote to see what it is.

Please note: This will not work properly until the chat window is filled with text, because only then will Chatty actively scroll down. Also, this only stops Chatty from actively scrolling down, so if e.g. a big message is being timed out and thus shortened, stuff may still move around accordingly (which in that case couldn't really be prevented anyway).

Chat is paused as long as you move the mouse over chat or if you hold Ctrl (and initiated pausing by moving the mouse). A little popup in the top-right will indicate that the chat is paused.

Holding Ctrl basicially acts as if you moved the mouse continuously.

Emoticons [back to menu]

General Settings

Ignored Emotes

Emotes added to this list will not be turned into an image, but instead are just shown as their emote code.

The code added to the list has to be the exact code used internally to find the emote in the messages. Usually this is simply the emote code as you would type it in chat, but some emotes have a special syntax that you might not even know (e.g. :) has \:-?\) as actual code). It is recommended to use the emote context menu (right-click on an emote in chat) to ignore emotes, because then the correct code will automatically be added to the list.

Usericons [back to menu]

Usericon Settings

Custom Usericons

By adding entries to the table you can either replace the default icons (Mod, Turbo, Subscriber, ..) or add additional icons for certain users or addressbook categories. The order of the entries can matter, they are matched from the top, so if more than one icon matches that is supposed to replace a default icon, then the first one is used. If more than one Addon icon matches, then all are used (unless you use the $stop restriction, see section Restriction below).

You have the following options when you add/edit an item:

Type
The type determines whether a default icon will be replaced (if you choose Moderator, Subscriber, Turbo, ..) or if it should be an additional icon added after the default ones (Addon). Currently, you can have as many Addon-Icons as you want and they are all displayed at once (if they match the requirements of course).
Restriction
This is similiar to the Usercolors settings, where you can enter special restrictions the user has to match in order for the icon to be displayed. What makes the most sense in this case is probably just entering a username (e.g. serenity) or an addressbook category (e.g. $cat:vip, which would refer to the category vip). If you keep this empty, then no restriction is applied.
Specifying a Type other than Addon carries an implicit restriction, since e.g. the default moderator icons are only displayed if the user is a moderator.
Normally you can only specify one restriction, but you can also add special restrictions for Addon icons:
Examples: $cat:streamer $first, lotsofs
Channel
This is another requirement that also has to be met in order for the icon to be displayed. You can entere a channel name here, so that the icon will only be displayed in that channel. You can add an exclamation mark in front of the channel name (like !#channel) to have it displayed in all channels except the one you specified. If you keep this empty, then it will be displayed in all channels.
Image File
The image file to use for the icon. Must be a .png and should usually be about 18x18 pixels (because that is the size of the default icons). The image files are looked for in the /img subfolder of the working directory (similiar to the /sounds folder). You can click on Image Folder to show information about it and rescan it to update the list of images in the dropdown menu.
You can add the special Image File name $ffz which will make it use a FrankerFaceZ icon for that, if available (this only really applies if you use the Type Moderator and want to replace the moderator icon in all channels execept the ones that have a FFZ Mod Icon).
You should also be able to specify the full path to an image, if you don't want to use the dedicated image folder. A filename starting with http is interpreted as URL.

Usercolors [back to menu]

This allows you to specify your own usercolors for either certain types of users (mod, subscriber etc.) or specific usernames. There are special items that you can use to specify that (to specify a username, just enter it without anything else):

The order of the entries in the table matters, because it is checked from the top. If you were to put the $all item at the very top, any items below wouldn't do anything, because the first item would already match all users. This e.g. allows you to specify what color a user should have when he is both a subscriber and a moderator (by either putting $mod or $sub first).

If an item is red and has "(error)" appended (e.g. "$color.Blue (error)"), this means the item is invalid. In the example this is because a point has been used instead of a colon, so "$color:Blue" would be correct. This can also happen if it doesn't recognize the given color or the item is just in an invalid format.

Highlight [back to menu]

General settings

Add terms to be highlighted

Add items to the list to make a message highlighted if any one of them match the message. The following two types of prefixes can be used to change highlighting behaviour per item.

Text Matching Prefixes

By default, matching is done case-insensitive and when the word or phrase appears anywhere in the message. However, you can add the following prefixes in front of the text to change this matching behaviour. You can only use one of these prefixes per item, because all text following the prefix is interpreted as text to match.

Meta Prefixes

The following prefixes mostly influence which messages are matched, however they don't change the matching of the text itself, but instead provide other information for the highlight system. They can be placed in front of the Text Matching Prefixes (or the text if you don't have any other prefixes) and you can even use more than one per item. These prefixes have to be seperated from eachother and the text by a space.

Examples

word1 word2
Matches e.g. word1 word2, Word1 word2 anywhere in the message
Does NOT match only word1 or only word2 anywhere in the message
(Each item represents one word or phrase to match as a whole)
w:anna
Matches e.g. Anna?, Anna :D, Anna,
Does NOT match Wanna?, Hannah, annah
(Match on word boundaries to prevent undesired matches)
user:joshimuz cs:Hello
Matches Hello anywhere in the message, if the message was sent by the user named joshimuz
Does NOT match hello
(Combine a Meta Prefix (user-specific highlighting) and a Text Matching Prefix (case-sensitive))
cs:Hello user:joshimuz
Matches Hello user:joshimuz anywhere in the message
Does NOT match Hello, does NOT matter who send the message
(Anything after a Text Matching Prefix is interpreted as text to match, Meta Prefixes must be placed in front of the text)
cs:abc re:\w+
Matches abc re:\w+ anywhere in the message
Does NOT match abc test, but also NOT Abc re:\w+
(Can't combine Text Matching Prefixes)
re:abc \w+
Matches e.g. abc test
Does NOT match aabc test
(All Text Matching prefixes can also be replaced by regex)
re:.*abc \w+.*
Matches e.g. abc test anywhere in the message
(Regex has to match the whole message, so you need to add wildcards to match anywhere in the message)
color:yellow wcs:S
Matches e.g. S:, Hello S! and makes the message display in yellow color
Does NOT match s:, Hello s!, SSSS, ssss
(Define a custom color for this item and match case-sensitive on word boundaries)
chan:lotsofs,joshimuz cs:Hello
Highlight messages that contain Hello, but only if in the channel #lotsofs or #joshimuz
(Restrict matching to one or more channels)
status:s chanCat:vip start:!test
Match any message starting with !test send by subscribers of the channel, but only if the channel is in the Addressbook category vip (e.g. /ab add #joshimuz vip, notice the leading #)
(Restrict matching by user status, channel category and start of message)
More information: Highlight

Ignore [back to menu]

Allows you to ignore chat messages that match the specified text or - using prefixes - that match other properties like ignoring messages of a specific user. Ignored messages get added to a special dialog that can be opened via View - Ignored.

The matching of messages works the same as the Highlights system, please see that help for information on that. For quick reference here just a few examples:

user:name
Ignores the user with the name name in all channels
user:name chan:tirean,gocnak
Ignores the user with the name name in channels #tirean and #gocnak
config:info subscribed to
Ignores the x has subscribed to y info messages that you get when someone subscribes in the channel that is being hosted
cat:ignore !chan:lotsofs,joshimuz
Ignores users in the addressbook category ignore in all channels, except #lotsofs and #joshimuz
chan:joshimuz re:!bet.*
Ignores messages starting with !bet, but only in #joshimuz
!status:smb chanCat:subonly
Ignores any message send by users that are not a subscriber, moderator or broadcaster of the channel, but only if the channel is in the Addressbook category subonly (e.g. /ab add #joshimuz subonly, notice the leading #)

General Options

The Ignored Users list allows you to ignore users in chat or prevent them from whispering you, which is possible via the main ignore list as well, but was added as a separate function to be more convenient. Aside from the settings, you can also ignore/unignore users via the User Context Menu.

Ignored users are independant of the main ignore list, so they also apply if ignore is disabled.

Sounds [back to menu]

General Sound Settings

You can enable or disable all sounds here. Sounds are searched in the displayed folder, which is the current working directory. Any valid sound files in the folder should be selectable as a sound to be played. If you added or removed files, you may have to use Rescan folder to make the files show up in the list. You can open the folder in your standard file browser from here to add files to it more quickly.

Sound Types Settings

You can specify requirements, soundfile, volume and delay for different types of events:

You can set a delay (seconds) so that the same sound won't be played twice during the set number of seconds. So if e.g. 3 highlighted messages come in within 10 seconds and the delay is set to 15 seconds, only one sound will be played.

Each sound has different options for when the sound should be played. See the Notification Settings for help on the options.

Notifications [back to menu]

Notifications

You can show notifications for two kinds of things:

For both these you can select separately if and when they are shown:

In addition, the option Don't notify about "Stream offline" allows you to never show when a stream changes status to offline, so you will only be notified about streams going live or changing title/game.

Notification Type / Options

Select here whether to use the Chatty Notifications or the default System Tray Notifications. This settings DOES NOT enable or disable notifications altogether, just switch between the types.

If you have Chatty Notifications selected, you can change some more options:

Followed Streams

Enable this to make Chatty get a list of your followed streams regulary so it can display notifications if their status changes. This simpy allows Chatty to know about your followed streams, so notifications aren't the only advantage. It also allows it to record the viewer count and status history of followed live streams as long as Chatty is running.

Log to file [back to menu]

If you enable logging, chat messages (and more if enabled) will be written into a seperate textfile for each channel.

Channels

You can specify which channels should be logged:

Messages Types

Normal chat messages are always logged, however you can log additional information:

Window [back to menu]

Dialogs Location/Size

Other

Popout

Commands [back to menu]

Custom Commands

Custom commands allow you to specify aliases for anything you could also enter directly into the inputbox (like chat messages or regular commands), with the exception of other custom commands, which is a limitation implemented to prevent infinite loops. Custom commands you add should be in the following format:

/<commandName> <what the command should do>

Everything until the first space is the name of the comand, and everything after the first space is the text of the command. For example:

/hello Hello World!

If you added that to the custom commands and enter /hello in the inputbox, then it would send Hello World!, just as if you would have written it yourself and pressed Enter.

Custom Command Parameters

You can also specify parameters in the command text, which will be replaced when you execute the custom command. For example:

/permit !permit $$1

When you enter /permit name, then it will replace $$1 with the first word after the command, which in this case would be name, making the actually send text !permit name.

This is the syntax for specifying parameters (word in this context means anything seperated by a space):

$1, $2, $3
First word, second word, third word etc.
$1-
First word, and all the words after it
Equivalently $2-, $3- etc.
$$1
First word, but required, meaning the command result will only be send if all the required commands are actually there
Equivalently $$2, $$3- is also possible
\$1-
Escape any special character (like $) by prepending a backslash \, which means this won't be interpreted as a parameter and not be replaced
If you actually want to use \, you can escape the backslash itself, for example \\$1- will be replaced (leaving one backslash in front of the replaced parameter)

Predefined Parameters

In a context other than entering the command in the inputbox, there are some predefined parameters. For example if you add a command as a context menu entry (see next section), then clicking that entry will execute the command while automatically adding an appropriate parameter.

So you can for example add just /Permit to the menu, but the custom command /permit !permit $$1 will actually be executed as !permit <name of the user>.

Context Parameters
All $chan - the currently active channel (without leading #)
User Context Menu $1 - name of the user
User Dialog $1 - name of the user
Channel Context menu $1 - name of the currently active channel (without leading #)
Hotkey $1 - the currently selected user (if present)

In addition, there is an implicit channel context, which means channel-aware commands like /ban are executed in the appropriate channel.

Customize User/Channel Context Menu and User Dialog

You can add custom commands and regular commands to the User Context Menu (when you right-click on a user in chat), the Channel Context Menu (when you right-click anywhere on the chat that is not otherwise linked) and customize User Dialog Buttons (Custom Commands and Timeout Buttons).

Commands can be added in the following format:

/<commandName1>, /<commandName2>

For example:

/Slap, /Permit

Which means the command with the name slap will be added first, then permit after that. You can use spaces, linebreaks and/or commas as seperators between commands.

This is the syntax for specifying commands in the Context Menus/User Dialog:

/Slap /Permit or Slap, Permit or Slap Permit
Commands can be specified with or without forward slash /, then the name (without parameters) and space, linebreak or comma to seperate to the next command.
Custom Commands in the User Dialog require the / in front.
//Slap
Prepending two forward slashes // will put the command in the special submenu More.. (for Context Menus) or in a second line of buttons (for the User Dialog).
| Slap or |//Slap
Adding | (vertical bar) will add a seperator before the menu item for the next command. The | doesn't have to be directly in front of the command, it simply applies to the following command.
Does not work for custom buttons in the User Dialog.
/Set_color is displayed as Set color
Underscores in command names are replaced with a space for display in a Context Menu or on a button.

In addition, you can define for the User Dialog Buttons:

5, 2m, 10m, 24h
In addition to Custom Commands you can also specify Timeout Buttons in the User Dialog. Times are added just like Custom Commands (seperated by comma/space/linebreak). However they can only be added to the first row of buttons. They are interpreted as seconds by default, unless you add a suffix: s - seconds, m - minutes, h - hours, d - days.
120s, 120 is displayed as 120s and 2m
Both definitions create a button with a 120 seconds timeout, however if you use a suffix, then the definition is used as button label directly, otherwise the label is automatically created based on the time.
/Ban[B], /Unban[U], 2s[P]
You can add keyboard shortcuts to buttons, that can be used while the dialog is open and focused. Add a single button in brackets (uppercase). Everything that is understood by getKeyStroke() can be used. No spaces are allowed, however a plus (+) can be used instead (which will be replaced with a space automatically).
/Slap[NUMPAD1|Np1], /Permit[NUMPAD2|]
Adding a vertical bar (|) after the shortcut will use the text after it up to the closing bracket as label for the shortcut on the button (no spaces are allowed). If you don't specify any text, then no label is used for that shortcut.
nokeylabels
If that text appears anywhere in the definition, then no labels will be displayed on the buttons for the shortcuts, unless they are explicitly defined.

Other [back to menu]

Other

Write Stream Status

You can let Chatty write information (title, game, viewercount) of a certain stream to a file. The file will be written to the subfolder exported of the settings directory (enter /dir to find out where that is). Stream information is only written if Chatty gets that data, so for it to work properly you need to currently have the channel of that stream open in Chatty. (When you change the setting, data will be requested once for testing, but you have to be in the channel for it to be updated regulary.)

To save stream information to a file, you have to define it in the setting. Each line represents one stream/file and the content to write into the file. The format for each line is:

<streamname> <filename> [online/offline] <content>

The optional parameter online/offline defines whether to write the given content to the file when the stream is online or offline. So you could for example define one line for online, which writes the viewercount and another for offline which writes "Offline" or maybe no content at all, which clears the file. If you only define one for online, then the file is not written if the stream is offline, so the previous info will stay in there. If you ommit this parameter, then online is assumed.

The following codes in the content will be replaced with the appropriate data:

Example which will write two files (if joined to #joshimuz):

joshimuz title.txt %title (%viewers Viewers)
joshimuz title.txt offline Stream offline
joshimuz game.txt %game
joshimuz game.txt offline

If the stream is online, it writes the title and viewercount to title.txt and the game to game.txt. If the stream is offline it writes "Stream offline" to title.txt and empties game.txt.

Advanced [back to menu]

These settings should only be changed if you know what you're doing. You can however reset any setting to the default by either deleting the settings file or using setting commands.

Connection

The server/port values are used when connecting, unless the commandline parameters -server and/or -port are used, then the value that is given there is used instead (without it being shown here). You should know if you set a server or port with a commandline parameter, but you can also check that by using /get server and /get port.

Whisper Feature

Help: Whisper Feature

Twitch Client Version

The Twitch Client Version setting has been removed since Twitch Chat was switched over to IRCv3 tags and commands (receiving of joins/parts is now controlled by the Correct Userlist setting).

Hotkeys [back to menu]

You can add hotkeys for certain actions. In general, there are the following types of hotkeys:

With the Enable global hotkeys setting you can enable/disable the currently defined global hotkeys if your Chatty version supports global hotkeys. It does not do anything on it's own, it just toggles global hotkeys you defined on and off, in case you only need them sometimes and they interfer with other programs you use. You can also toggle that setting in the main menu under Extra - Options or use setting commands to change the globalHotkeysEnabled setting directly.

If a dialog pops up that tells you that global hotkeys have not been properly initialized, check out the Troubleshooting page.

Adding/Editing hotkeys

When adding or changing a hotkey you have the following options:

Completion [back to menu]

TAB Completion allows you to write the beginning characters of a nickname in chat and then press TAB to complete it. To learn how to use TAB Completion check out the general help.

TAB Completion

Custom Completion Items

Custom Completion allows you to add terms and their completion, allowing you to not only complete names in chat (TAB) or emotes (Shift-TAB) but also custom stuff you added to the list by prepending the term with a point and using Shift-TAB.

Example: Add chatty as Key and http://chatty.github.io as Value and then in the inputbox type .chatty (notice the dot in front) and press Shift-TAB to complete it to the URL.

Custom Completion items can only have one completion, so you can't have .chatty complete to several things as it could be the case with a nickname.

Besides the Settings Dialog, you can also use the /customCompletion command to modify custom completion items:

Remember that you can also use TAB Completion for commands. Kappab