This knowledge base article contains information that is no longer accurate.
- Textual 5 0 0 – Lightweight Irc Client Download
- Textual 5 0 0 – Lightweight Irc Client Server
- Textual 5 0 0 – Lightweight Irc Client Portal
- Textual 5 0 0 – Lightweight Irc Clients
The following is information related to styling Textual.
Introduction
Styling Textual requires a basic understand of client-side web development.
IRCv3 Client Support. This page lists the IRC clients compatible with and supporting IRCv3 features. Textual is a lightweight IRC client created specifically for OS X. It was designed with simplicity in mind. Textual has taken the best of IRC and built it into a single client. Its easy-to-use functionality combined with scripting support makes it an ideal IRC client for novice to advanced users.
Styles are written in CSS, HTML, and JavaScript. They are rendered using WebKit.
This guide was written to provide an overview of how styles work in Textual. For specific information, such as the name of various CSS selectors that a style can access, use the tools provided by Developer Mode to inspect the raw HTML output that Textual outputs.
Skip to section:
Storage Location
Textual will look at one of two locations to locate custom styles.
A copy of Textual downloaded through the Mac App Store will look at the following path:
Otherwise, Textual will look at the following path:
This path can be easily opened in Finder by bookmarking the following URL: textual://custom-styles-folder
Bundled styles can be copied from the folder:
This folder is read-only. Attempting to modify it will violate the code signature of Textual.
Developer Mode
“Developer Mode” enables several features which can assist greatly in creating or modifying a style.
To enable Developer Mode, follow these steps:
- Open Textual's Help menu in the menu bar (Command Shift Forward Slash)
- Move focus to the Advanced section of the Help menu
- Locate the menu item labeled Enable Developer Mode. If this menu item does not have a check (✓) next to its name, then it's not enabled. Click it to enable this feature.
The following image shows the exact location of the menu items described above.
Once enabled, control click on the centered chat view.
Developer Mode provides several new menu items to assist with developing styles including:
- Copy Log as HTML: Place entire HTML content of the current WebView on the pasteboard
- Force Reload Style: Force Textual to reload the entire style in all WebViews
- Inspect Element: Open the WebKit Web Inspector
File Structure
Each style loaded by Textual is encapsulated within its own folder. The name of the folder is used as the title of the style which is visible to the end user in Preferences.
The internal structure of the folder is as follows:
copyright.txt
The copyright.txt file is never read by Textual. It is considered the de-facto file for inclusion of any license information that may accompany a style. It can be renamed to any filename that is desired.
![Client Client](https://img.creativemark.co.uk/uploads/images/388/14388/img3File.png)
design.css — Required
This file is the Cascading Style Sheet (CSS) file that is used by Textual during the loading of each style. While other CSS files can be specified by editing templates (see below); this is generally the only file that is needed for a lightweight style.
scripts.js — Required
The main JavaScript file that is used by Textual when the style is loaded.
JavaScript definitions in this file have access to the global API of Textual. See the file
Textual.app/Contents/Resources/JavaScript/API/core.js
for more details.Templates
See below for more information
styleSettings.plist
A property list of settings that a style can define.
This property list supports the following settings:
Entry Key | Entry Type | Entry Description |
---|---|---|
Nickname Format | String | Override nickname format used by end user |
Timestamp Format | String | Override timestamp format used by end user |
Override Channel Font | Dictionary | Override font used by end user. The value of this entry is a dictionary with two keys: Font Name (String) — A system readable font name Font Size (Number) — A font size in pixels |
Underlying Window Color | String | Window color expressed in HTML hexadecimal notation to blend with background of style during scroll elasticity. |
Force Invert Sidebars | Boolean | Force dark mode on server and user list |
Template Engine Versions | Dictionary | See below for more information |
Templates
Textual includes a powerful template engine which means a style can edit any part of the rendered HTML.
These templates are opt-in. A style developer does not need to use any of them.
These templates are opt-in. A style developer does not need to use any of them.
The default templates used by Textual can be found in the following folder:
Copying the contents of this folder into a style's “Templates” folder will allow that style to override the HTML.
DO NOT copy the entire folder and only modify one file.Only copy and override files that are necessary to the design of a particular style so that future modifications to these default templates will apply.
Template Versioning
The default templates bundled with Textual are designed in such a way that if an update requires it, more than one setcan exist at a time. To accomplish this, each set of templates is assigned a number which is considered its version. Thisinformation is often referred to as the “template engine version”
Textual 5 0 0 – Lightweight Irc Client Download
Each style must declare what template engine version it supports. If a style does not declare this information, then Textual will warn the end user that the style is incompatible and suggest that they use a different style.
To declare version information, create a new entry in the styleSettings.plist file of a style. Name the new entry “Template Engine Versions” with Dictionary as its data type.
For each entry in the dictionary, the value of the key is the version number of Textual to target (e.g. “5.0.0”). The value associated with the keyis the template engine version to target (e.g. “3”).
To help with forward compatibility, an entry can be created with a key named default. The value associated with this key will be used when a specificversion of Textual is not targeted.
An example entry is as follows:
Key-value Storage Introduction
Starting with version 5 of Textual, each style has access to a key-value store to maintain various values within.For those unfamiliar with a key-value store, it is a very straightforward concept: Given a unique key, a non-unique value is associated with it which can be retrieved at a later time.
The key-value store is designed to maintain simple values such as style-specific user-configured values. The values maintained within a style's key-value store are saved within the preferences file of Textual. Therefore,trying to abuse the provided API to store large chunks of data can degrade the overall performance of the application.
Enabling Access
The key-value store of a style is opt-in as most will never have a need for it. To opt-in, add a key named Key-value Store Nameto the styleSettings.plist file of your style and specify a value. This will be the name used to associate your style with the internal storage mechanism. The name of the style is a good value to use.
Textual does not make an effort to create any sandboxing which means that it is possible that various variants of the same style can access the same key-value store by specifying the same name value.
Data Types
The API provided by Textual is bridged between the public facing JavaScript API and the internal Objective-C storage mechanism. Therefore, type conversion will always occur. In most cases, straightforward conversion will occur such as when dealing with booleans.However, when more complex data structures are assigned, different data types will be used. The following tables provide an incomplete list of the various types of conversion that may occur:
JavaScript | Objective-C |
---|---|
number | NSNumber |
boolean | CFBoolean |
string | NSString |
object | id |
Objective-C | JavaScript |
---|---|
CFBoolean | boolean |
NSNumber | number |
NSString | string |
NSArray | array object |
WebScriptObject | object |
Key-value Storage Access
app.styleSettingsRetrieveValue(key)
Given key, query the key-value store for its value.
app.styleSettingsSetValue(key, value)
Set key to have value of value within the key-value store.
A value of null or undefined will unset key.
Returns true on success or false otherwise.
Textual.styleSettingDidChange(key)
Textual 5 0 0 – Lightweight Irc Client Server
Callback fired for each view that a style is responsible for to inform it that a particularkey-value store entry has changed. This callback receives a single parameter which isthe key that changed.
The following list is a summary of all major additions, changes, and fixes part of version6.0.0 of the Textual IRC Client.
Performance Improvements
Textual 6 delivers performance unmatched by any of its predecessors when running on OS X ElCapitan or later.
This is accomplished by laying out and rendering channel content on separate processes usingWebKit2.
This is accomplished by laying out and rendering channel content on separate processes usingWebKit2.
View Multiple Channels
Command click up to six (6) channels to view them simultaneously.
Quick Select
The keyboard shortcut Command-D can be used to quickly navigate between channels.*
* This feature requires a Mac running OS X Yosemite or later.
Chat Filter Addon
The Chat Filter Addon received a significant overhaul.
![Textual 5 0 0 – lightweight irc clients Textual 5 0 0 – lightweight irc clients](https://i1.wp.com/www.macbed.com/wp-content/uploads/2019/03/31630.png?resize=256%2C256&ssl=1)
Changes
- Filters can now be dragged and dropped to change the order they're matched in.
- Filters can now be exported and imported to allow them to be shared with others.
- Filters can now respond to more events: user joined channel, user left channel, user kicked from channel, user disconnected, channel topic changed, channel mode changed, and much, much more!
- An empty Filter Match value will match any possible value.
Networking
Textual 6 supports Happy Eyeballs, aprotocol for intelligently using IPv6 whenavailable.
A preference to prefer IPv4 has been added to the Network Socket section ofServer Properties.
Other Additions
Textual 5 0 0 – Lightweight Irc Client Portal
- Added the command back which can be used to easily toggle off away status.
- Added the commands quiet and unquiet which can be used to modify the quiet list of the selected channel.
- Added “List of Quiets” window to view and/or remove entries in the quiet list of the selected channel.
- Added support for the monitor IRCv3 capability to the Address Book.
- Added inline image support for .webm files hosted by 4chan and 8chan.
- Added inline image support for lfil.es short URLs.
- Added preference “Only speak channel messages for the selected channel”, which is enabled by default.
Other Changes
- A two second delay now occurs between each join when automatically joining channels. This delay can be modified by navigating to Preferences ➜ Advanced ➜ Flood Control.
- Textual no longer waits for the Internet to be available before reconnecting when waking from sleep. There is no reliable way to determine when we can truly send data, so it's best to keep trying.
- It is no longer possible to select more than eight (8) channels at one time in the “Channel List” window.
- Incomplete file transfers are now resumed when the person sending the file supports this.
- Improved technique for collecting channel information to reduce number of “Max SendQ' disconnects.
- Improved support for connecting to irssi-proxy.
- Improved reliability and speed of playing back messages from previous session.
- The Client Certificate section of Server Properties now includes the SHA-256 fingerprint of the certificate.
- The commands amsg and ame no longer send messages to queries (private messages).
- The commands ctcp and ctcpreply now expect the first parameter to always be the destination.
- The commands gline, gzline, zline, shun, and tempshun no longer modify their input to include the default reason.
- The commands ignore and unignore are no longer silent. They now provide feedback when performed.
- Removed the preference to hide messages that mention an ignored user. This preference never worked correctly and had a noticeable impact on performance.
- When duplicating a connection, its passwords are now duplicated as well.
- Modified list of whitelisted URL schemes to include “gopher”
- Modified list of networks to include GeekShed, MindForge, IdleChat, and LizardIRC.
- Modified list of networks to remove the now defunct networks flux.cd, IRCNode, irc.btri.x10.bz, and ValleyNode.
- Removed inline image support for the now defunct services img.ly, twitgoo.com, tweetphoto.com, and yfrog.com.
Fixes
- Fixed inability to add a channel named “#”
- Fixed almost every misspelling of “Parameter' as “Paramater”
- Fixed inability to navigate Server Properties using the tab key.
- Fixed channel passwords not being censored when they are supposed to be.
- Fixed file transfers failing when sending a file with a name that contains a space.
- Fixed a bug in the Caffeine addon that caused crashes when deleting connections.
Addon Backwards Compatibility
Textual 5 0 0 – Lightweight Irc Clients
Styles
Some custom styles built for Textual 5 will not work correctly with Textual 6without modification.
Permute 2 2 1 9. To view modifications that need to be made, see this knowledge basearticle for more information.
Scripts
All scripts built for Textual 5 will work with Textual 6 without modification.
Plugins
All plugins built for Textual 5 will not work with Textual 6 withoutmodification.
Plugins that are bundled with Textual, such as Blowfish Encryption, Caffeine, and Wiki-styleLink Parser; have already been modified to support Textual 6.
Enter
/getscripts
into the main input textfield to install the latest version of those plugins.Other plugins require modification. To view modifications that need to be made, see this knowledge basearticle.
Filters
All filters added to Textual 5 will work with Textual 6 without modification.