diff --git a/doc/README.md b/doc/README.md new file mode 100644 index 00000000..531bdf23 --- /dev/null +++ b/doc/README.md @@ -0,0 +1,7 @@ +# glirc Documentation + +For auto-generated Haddock documentation, see `docs`. + +The command documentation is written in a subset of AsciiDoc, +and is added back into glirc at compile time. +Please consult `#glirc` on Libera.Chat before modifying it. diff --git a/doc/cmds_chanop.adoc b/doc/cmds_chanop.adoc new file mode 100644 index 00000000..eea2f40b --- /dev/null +++ b/doc/cmds_chanop.adoc @@ -0,0 +1,67 @@ += Channel Management Commands +:toc: + +== /invite + +Invite a user to the current channel. + +== /kick + +Kick a user from the current channel. + +See also: kickban, remove + +== /kickban + +Ban and kick a user from the current channel. + +Users are banned by hostname match. + +See also: kick, remove + +== /masks + +Show mask lists for current channel. + +The `mode` argument is typically one of the following: + +`b`: bans + +`i`: invite exemptions (op view only) + +`e`: ban exemptions (op view only) + +`q`: quiets (on Charybdis/Solanum-based networks) + +== /mode + +Set IRC modes. + +When executed in a channel window, mode changes are applied to the channel. +When executed in a network window, mode changes are applied to your user. + +This command has parameter sensitive tab-completion. + +See also: masks, channelinfo + +=== Examples + +Removing the topic lock: `+/mode -t+` + +Setting a ban: `+/mode +b *!*@hostname+` + +Removing a quiet: `+/mode -q *!*@hostname+` + +Voicing two users: `+/mode +vv user1 user2+` + +Demoting an op to voice: `+/mode +v-o user1 user1+` + +== /remove + +Remove a user from the current channel. + +Remove works like /kick except it results in a PART. + +Not all servers support removal in this manner. +Refer to your server/network's documentation. + +See also: kick, kickban + +== /topic + +View or set the topic of the current channel. + +Tab-completion with no `message` specified will load the current topic for editing. diff --git a/doc/cmds_chat.adoc b/doc/cmds_chat.adoc new file mode 100644 index 00000000..a3a39b7b --- /dev/null +++ b/doc/cmds_chat.adoc @@ -0,0 +1,203 @@ += Chat Commands +:toc: + +== /join + +Join the given channels. + +Multiple channels and keys may be provided as comma-separated lists. + +When keys are provided, they should occur in the same order as the channels. + +=== Examples + +`+/join #friends+` + +`+/join #secret thekey+` + +`+/join #secret1,#secret2,#public key1,key2+` + +See also: channel, clear, part + +== /me + +Sends an action message to the currently focused channel. +Most clients will render these messages prefixed with +only your nickname as though describing an action. + +=== Examples + +`+/me shrugs+` + +See also: notice, msg, say + +== /msg + +Send a chat message to a user or a channel. + +Multiple targets may be provided as a comma-separated list. + +On servers with STATUSMSG support, +the channel name can be prefixed with a sigil to +restrict the recipients to those with the given mode. + +=== Examples + +`+/msg buddy I'm sending you a message.+` + +`+/msg #friends This message is for the whole channel.+` + +`+/msg him,her I'm chatting with two people.+` + +`+/msg @#users This message is only for ops!+` + +See also: notice, me, say + +== /part + +Leave the currently-focused channel, +optionally with the provided message. + +=== Examples + +`+/part+` + +`+/part It's not me, it's you+` + +See also: clear, join, quit + +== /query + +Switch the client focus to the given +target and optionally send a message to that target. + +=== Examples + +`+/q libera:#haskell+` + +`+/q #haskell+` + +`+/q lambdabot @messages+` + +`+/q irc_friend How are you?+` + +See also: msg channel focus + +== /say + +Send a message to the current chat window. + +This can be useful for sending a chat message with +a leading '/' to the current chat window. + +=== Examples + +`+/say /help is the right place to start!+` + +See also: notice, me, msg + +== /away + +Mark yourself as away. +The away message is used by the server to update +status in /whois and to provide automated responses. + +Omit the `message` parameter to clear your away status. + +=== Examples + +`+/away Out getting some sun+` + +`+/away+` + +== /channelinfo + +Show information about the current channel. +Information includes topic, creation time, URL, and modes. + +See also: masks, mode, topic, users + +== /ctcp + +Client-to-client protocol (CTCP) commands can be used +to query information from another user's client application +directly. Common CTCP commands include: ACTION, PING, VERSION, +USERINFO, CLIENTINFO, and TIME. + +glirc does not automatically respond to CTCP commands. + +=== Parameters + +`target` - Comma-separated list of nicknames and channels + +`command` - CTCP command name + +`arguments` - CTCP command arguments + +=== Examples + +`+/ctcp myfriend VERSION+` + +`+/ctcp myfriend TIME+` + +== /knock + +Request entry to an invite-only channel. + +== /monitor + +Monitor is a protocol for getting server-side notifications +when users become online/offline. + +=== Subcommands + +`+/monitor + target[,target2]*+` - Add nicknames to monitor list + +`+/monitor - target[,target2]*+` - Remove nicknames to monitor list + +`+/monitor C+` - Clear monitor list + +`+/monitor L+` - Show monitor list + +`+/monitor S+` - Show status of nicknames on monitor list + +== /names + +Show the user list for the current channel. +Detailed view (default key F2) shows full hostmask. + +See also: channelinfo, masks + +== /nick + +Change your nickname. + +=== Examples + +`+/nick guest123+` + +`+/nick better_nick+` + +== /notice + +Send a chat notice to a user or a channel. + +Notice messages were originally intended to be used by bots. +Different clients will render these in different ways. + +Multiple targets may be provided as a comma-separated list. + +On servers with STATUSMSG support, +the channel name can be prefixed with a sigil to +restrict the recipients to those with the given mode. + +=== Examples + +`+/notice buddy I'm sending you a notice.+` + +`+/notice #friends This notice is for the whole channel.+` + +`+/notice him,her I'm informing two people.+` + +`+/notice @#users This notice is only for ops!+` + +See also: me, msg, say + +== /operwall + +Send a network-wide WALLOPS message to opers only. + +See also: me, msg, say + +== /wallops + +Send a network-wide WALLOPS message. +These messages go out to users who have the 'w' usermode set. + +See also: me, msg, say + +== /quote + +Send a raw IRC command. + +The argument to this command is sent as-is. +No additional word-splitting is done. diff --git a/doc/cmds_integration.adoc b/doc/cmds_integration.adoc new file mode 100644 index 00000000..23d815e4 --- /dev/null +++ b/doc/cmds_integration.adoc @@ -0,0 +1,21 @@ += Integrations +:toc: + +== /znc + +Send command directly to ZNC. + +The advantage of this over `+/msg+` is that responses are not broadcast to call clients. + +== /znc-playback + +Request playback from the ZNC `playback` module. +Note that the playback module is not installed in ZNC by default! + +When `date` is omitted, uses the most recent date in the past that makes sense. +When both `time` and `date` are omitted, all playback is requested. + +Time format: `HOURS:MINUTES` (example: 7:00) + +Date format: `YEAR-MONTH-DAY` (example: 2016-06-16) + diff --git a/doc/cmds_net.adoc b/doc/cmds_net.adoc new file mode 100644 index 00000000..753c97e1 --- /dev/null +++ b/doc/cmds_net.adoc @@ -0,0 +1,34 @@ += Connection Commands +:toc: + +== /connect + +Connect to `network` by name. + +If `network` does not correspond to the name of a server in the config, +it is treated as a hostname. + +== /reconnect + +(Re)connect to the currently-focused server. + +== /quit + +Gracefully disconnect the current network connection, +optionally sending the provided reason. + +See also: disconnect, exit + +== /disconnect + +Immediately terminate the current network connection. + +See also: quit, exit + +== /cert + +Show the TLS certificate for the current connection. + +== /umode + +Apply a user-mode change. diff --git a/doc/cmds_oper.adoc b/doc/cmds_oper.adoc new file mode 100644 index 00000000..84155a57 --- /dev/null +++ b/doc/cmds_oper.adoc @@ -0,0 +1,102 @@ += Operator Commands +:toc: + +== /oper + +Authenticate as a server operator. + +== /kill + +Kill a client connection to the server. + +== /kline + +Ban a client from the server. + +== /unkline + +Unban a client from the server. + +== /undline + +Unban a client from the server. + +== /unxline + +Unban a gecos from the server. + +== /unresv + +Unban a channel or nickname from the server. + +== /testline + +Check matching I/K/D lines for a `[[nick!]user@]host`. + +== /testkline + +Check matching K/D lines for a `[user@]host`. + +== /testgecos + +Check matching X lines for a `gecos`. + +== /testmask + +Test how many local and global clients match a mask. + +== /masktrace + +Outputs a list of local users matching the given masks. + +== /chantrace + +Outputs a list of channel members in etrace format. + +== /trace + +Outputs a list users on a server. + +== /etrace + +Outputs a list users on a server. + +== /map + +Display network map. + +== /sconnect + +Connect two servers together. + +== /squit + +Split a server away from your side of the network. + +== /modload + +Load an IRCd module. + +== /modunload + +Unload an IRCd module. + +== /modlist + +List loaded IRCd modules. + +== /modrestart + +Reload all IRCd modules. + +== /modreload + +Reload an IRCd module. + +== /grant + +Manually assign a privset to a user. + +== /privs + +Check operator privileges of the target. diff --git a/doc/cmds_queries.adoc b/doc/cmds_queries.adoc new file mode 100644 index 00000000..47133cdf --- /dev/null +++ b/doc/cmds_queries.adoc @@ -0,0 +1,95 @@ += Queries +:toc: + +== /who + +Send WHO query to server with given arguments. + +If no query is provided, shows the results of the previous query. + +== /whois + +Send WHOIS query to server with given arguments. + +== /whowas + +Send WHOWAS query to server with given arguments. + +== /ison + +Send ISON query to server with given arguments. + +See also: monitor + +== /userhost + +Send USERHOST query to server with given arguments. + +== /time + +Send TIME query to server with given arguments. + +== /stats + +Send STATS query to server with given arguments. + +== /lusers + +Send LUSERS query to a given server. + +== /users + +Send USERS query to a given server. + +== /motd + +Send MOTD query to server. + +== /admin + +Send ADMIN query to server. + +== /rules + +Send RULES query to server. + +== /info + +Send INFO query to server. + +== /list + +View the list of public channels on the server. + +Sends a LIST query and caches the result; +on larger networks, this may take several seconds to complete. +The view may be exited while loading. + +`clientarg` is an optionally-comma-separated list of options. +A single comma may be used to denote an empty list. + +`serverarg` is sent as-is to the server. +It is generally used as the ELIST parameter to LIST. +glirc does not validate this parameter against the ELIST ISUPPORT token. + +=== Client Options + +`>n`: Show only channels with more than `n` users. + +`99+` - List public channels with at least 100 users. +`+/list >50<1000+` - List public channels with between 51 and 999 users. +`+/list ~ <20+` - List public channels with fewer than 20 users. +`+/list , *-ops+` - List public channels whose names end with "-ops". + +== /links + +Send LINKS query to server with given arguments. + +== /version + +Send VERSION query to server. diff --git a/doc/cmds_toggles.adoc b/doc/cmds_toggles.adoc new file mode 100644 index 00000000..e8beb677 --- /dev/null +++ b/doc/cmds_toggles.adoc @@ -0,0 +1,32 @@ += Toggles +:toc: + +== /toggle-detail + +Toggle detailed message view. + +== /toggle-activity-bar + +Toggle detailed detailed activity information in status bar. + +== /toggle-show-ping + +Toggle visibility of ping round-trip time. + +== /toggle-metadata + +Toggle visibility of metadata in chat windows. + +== /toggle-layout + +Toggle multi-window layout mode. + +== /toggle-editor + +Toggle between single-line and multi-line editor mode. + +== /toggle-edit-lock + +Toggle editor lock mode. + +When the editor is locked, Enter (or C-j) does nothing. diff --git a/doc/cmds_window.adoc b/doc/cmds_window.adoc new file mode 100644 index 00000000..8dc197f0 --- /dev/null +++ b/doc/cmds_window.adoc @@ -0,0 +1,145 @@ += Window Commands +:toc: + +== /channel + +Set the current focused window. + +See also: focus + +=== Examples + +`/c libera:#haskell` + +`/c #haskell` + +`/c libera:` + +== /focus + +Set the current focused window. + +When only `network` is specified this switches to the network status window. +When `network` and `target` are specified this switches to that chat window. + +Nickname and channels can be specified in the `target` parameter. + +See also: query, channel + +== /clear + +Clear a window. + +If no arguments are provided the current window is cleared. +If `network` is provided the that network window is cleared. +If `network` and `channel` are provided that chat window is cleared. +If `network` is provided and `channel` is `*` all windows for that network are cleared. + +If a window is cleared and no longer active that window will be removed from the client. + +== /windows + +Show a list of all windows. + +`kind`, if specified, is one of `networks`, `channels` or `users`, +and limits the list to the type of window specified. + +== /splits + +This command defines the set of focuses that will +always be visible, even when unfocused. +If no focuses are listed, the set will be cleared. + +=== Examples + +`+/splits #haskell #haskell-lens nickserv+` + +`+/splits * libera:#haskell libera:chanserv+` + +`+/splits+` + +See also: splits+, splits- + +== /splits+ + +Add focuses to the splits set. +Omit the list of focuses to add the current window. + +=== Examples + +`+/splits+ #haskell #haskell-lens+` + +`+/splits+ libera:#libera+` + +`+/splits++` + +== /splits- + +Remove focuses from the splits set. +Omit the list of focuses to remove the current window. + +== /ignore + +Toggle the soft-ignore on each of the space-delimited given +nicknames. Ignores can use `*` (many) and `?` (one) wildcards. +Masks can be of the form `nick[[!user]@host]` +and use a case-insensitive comparison. + +If no masks are specified the current ignore list is displayed. + +=== Examples + +`+/ignore+` + +`+/ignore nick1 nick2 nick3+` + +`+/ignore nick@host+` + +`+/ignore nick!user@host+` + +`+/ignore *@host+` + +`+/ignore *!baduser@*+` + +== /grep + +Filter view contents using a regular expression. + +Clear the regular expression by calling this without an argument. + +`/grep` is case-sensitive by default. + +=== Flags + +`-A n` - Show n messages after match +`-B n` - Show n messages before match +`-C n` - Show n messages before and after match +`-F` - Use plain-text match instead of regular expression +`-i` - Case insensitive match +`-v` - Invert pattern match +`-m n` - Limit results to n matches +`--` - Stop processing flags + +== /dump + +Dump the current window's contents to a file. + +This command always outputs as if detailed mode is active. + +== /mentions + +Show a list of all messages that were highlighted as important. + +When using `/grep` the important messages are those matching +the regular expression instead. + +== /setwindow + +Set window property. + +=== Properties + +`louder`: Upgrades normal messages to important. + +`loud`: Uses default message importance. + +`imponly`: Downgrades normal messages to boring. + +`quiet`: Downgrades important messages to normal. + +`quieter`: Downgrades message importance one step. + +`silent`: Downgrades message importance to boring. + +`show` / `hide`: Toggles if window appears in window command shortcuts. + +== /setname + +Set window shortcut letter. If no letter is provided the next available +letter will automatically be assigned. + +Available letters are configured in the `window-names` configuration setting.