weechat/doc/en/includes/autogen_user_commands.en.adoc

3003 lines
107 KiB
Plaintext

//
// This file is auto-generated by script docgen.py.
// DO NOT EDIT BY HAND!
//
// tag::irc_commands[]
[[command_irc_admin]]
* `+admin+`: find information about the administrator of the server
----
/admin [<target>]
target: server name
----
[[command_irc_allchan]]
* `+allchan+`: execute a command on all channels of all connected servers
----
/allchan [-current] [-exclude=<channel>[,<channel>...]] <command>
[-current] -include=<channel>[,<channel>...] <command>
-current: execute command for channels of current server only
-exclude: exclude some channels (wildcard "*" is allowed)
-include: include only some channels (wildcard "*" is allowed)
command: command to execute (or text to send to buffer if command does not start with '/')
Command and arguments are evaluated (see /help eval), the following variables are replaced:
$server server name
$channel channel name
$nick nick on server
${irc_server.xxx} variable xxx in server
${irc_channel.xxx} variable xxx in channel
Examples:
execute '/me is testing' on all channels:
/allchan /me is testing
say 'hello' everywhere but not on #weechat:
/allchan -exclude=#weechat hello
say 'hello' everywhere but not on #weechat and channels beginning with #linux:
/allchan -exclude=#weechat,#linux* hello
say 'hello' on all channels beginning with #linux:
/allchan -include=#linux* hello
----
[[command_irc_allpv]]
* `+allpv+`: execute a command on all private buffers of all connected servers
----
/allpv [-current] [-exclude=<nick>[,<nick>...]] <command>
[-current] -include=<nick>[,<nick>...] <command>
-current: execute command for private buffers of current server only
-exclude: exclude some nicks (wildcard "*" is allowed)
-include: include only some nicks (wildcard "*" is allowed)
command: command to execute (or text to send to buffer if command does not start with '/')
Command and arguments are evaluated (see /help eval), the following variables are replaced:
$server server name
$channel channel name
$nick nick on server
${irc_server.xxx} variable xxx in server
${irc_channel.xxx} variable xxx in channel
Examples:
execute '/me is testing' on all private buffers:
/allpv /me is testing
say 'hello' everywhere but not for nick foo:
/allpv -exclude=foo hello
say 'hello' everywhere but not for nick foo and nicks beginning with bar:
/allpv -exclude=foo,bar* hello
say 'hello' for all nicks beginning with bar:
/allpv -include=bar* hello
close all private buffers:
/allpv /close
----
[[command_irc_allserv]]
* `+allserv+`: execute a command on all connected servers
----
/allserv [-exclude=<server>[,<server>...]] <command>
-include=<server>[,<server>...] <command>
-exclude: exclude some servers (wildcard "*" is allowed)
-include: include only some servers (wildcard "*" is allowed)
command: command to execute (or text to send to buffer if command does not start with '/')
Command and arguments are evaluated (see /help eval), the following variables are replaced:
$server server name
$nick nick on server
${irc_server.xxx} variable xxx in server
Examples:
change nick on all servers:
/allserv /nick newnick
set away on all servers:
/allserv /away I'm away
do a whois on my nick on all servers:
/allserv /whois $nick
----
[[command_irc_ban]]
* `+ban+`: ban nicks or hosts
----
/ban [<channel>] [<nick> [<nick>...]]
channel: channel name
nick: nick or host
Without argument, this command displays the ban list for current channel.
----
[[command_irc_cap]]
* `+cap+`: client capability negotiation
----
/cap ls
list
req|ack [<capability> [<capability>...]]
end
ls: list the capabilities supported by the server
list: list the capabilities currently enabled
req: request a capability
ack: acknowledge capabilities which require client-side acknowledgement
end: end the capability negotiation
Without argument, "ls" and "list" are sent.
Capabilities supported by WeeChat are: account-notify, away-notify, cap-notify, chghost, extended-join, invite-notify, multi-prefix, server-time, userhost-in-names.
The capabilities to automatically enable on servers can be set in option irc.server_default.capabilities (or by server in option irc.server.xxx.capabilities).
Examples:
/cap
/cap req multi-prefix away-notify
----
[[command_irc_connect]]
* `+connect+`: connect to IRC server(s)
----
/connect [<server> [<server>...]] [-<option>[=<value>]] [-no<option>] [-nojoin] [-switch]
-all|-auto|-open [-nojoin] [-switch]
server: server name, which can be:
- internal server name (added by /server add, recommended usage)
- hostname/port or IP/port, port is 6667 by default
- URL with format: irc[6][s]://[nickname[:password]@]irc.example.org[:port][/#channel1][,#channel2[...]]
Note: for an address/IP/URL, a temporary server is added (NOT SAVED), see /help irc.look.temporary_servers
option: set option for server (for boolean option, value can be omitted)
nooption: set boolean option to 'off' (for example: -nossl)
-all: connect to all servers defined in configuration
-auto: connect to servers with autoconnect enabled
-open: connect to all opened servers that are not currently connected
-nojoin: do not join any channel (even if autojoin is enabled on server)
-switch: switch to next server address
To disconnect from a server or stop any connection attempt, use command /disconnect.
Examples:
/connect freenode
/connect irc.oftc.net/6667
/connect irc6.oftc.net/6667 -ipv6
/connect irc6.oftc.net/6697 -ipv6 -ssl
/connect my.server.org/6697 -ssl -password=test
/connect irc://nick@irc.oftc.net/#channel
/connect -switch
----
[[command_irc_ctcp]]
* `+ctcp+`: send a CTCP message (Client-To-Client Protocol)
----
/ctcp [-server <server>] <target>[,<target>...] <type> [<arguments>]
server: send to this server (internal name)
target: nick or channel ('*' = current channel)
type: CTCP type (examples: "version", "ping", etc.)
arguments: arguments for CTCP
Examples:
/ctcp toto time
/ctcp toto version
/ctcp * version
----
[[command_irc_cycle]]
* `+cycle+`: leave and rejoin a channel
----
/cycle [<channel>[,<channel>...]] [<message>]
channel: channel name
message: part message (displayed to other users)
----
[[command_irc_dcc]]
* `+dcc+`: start a DCC (file transfer or direct chat)
----
/dcc chat <nick>
send <nick> <file>
nick: nick
file: filename (on local host)
Examples:
chat with nick "toto":
/dcc chat toto
send file "/home/foo/bar.txt" to nick "toto":
/dcc send toto /home/foo/bar.txt
----
[[command_irc_dehalfop]]
* `+dehalfop+`: remove channel half-operator status from nick(s)
----
/dehalfop <nick> [<nick>...]
nick: nick or mask (wildcard "*" is allowed)
*: remove channel half-operator status from everybody on channel except yourself
----
[[command_irc_deop]]
* `+deop+`: remove channel operator status from nick(s)
----
/deop <nick> [<nick>...]
* -yes
nick: nick or mask (wildcard "*" is allowed)
*: remove channel operator status from everybody on channel except yourself
----
[[command_irc_devoice]]
* `+devoice+`: remove voice from nick(s)
----
/devoice <nick> [<nick>...]
* -yes
nick: nick or mask (wildcard "*" is allowed)
*: remove voice from everybody on channel
----
[[command_irc_die]]
* `+die+`: shutdown the server
----
/die [<target>]
target: server name
----
[[command_irc_disconnect]]
* `+disconnect+`: disconnect from one or all IRC servers
----
/disconnect [<server>|-all|-pending [<reason>]]
server: internal server name
-all: disconnect from all servers
-pending: cancel auto-reconnection on servers currently reconnecting
reason: reason for the "quit"
----
[[command_irc_halfop]]
* `+halfop+`: give channel half-operator status to nick(s)
----
/halfop <nick> [<nick>...]
* -yes
nick: nick or mask (wildcard "*" is allowed)
*: give channel half-operator status to everybody on channel
----
[[command_irc_ignore]]
* `+ignore+`: ignore nicks/hosts from servers or channels
----
/ignore list
add [re:]<nick> [<server> [<channel>]]
del <number>|-all
list: list all ignores
add: add an ignore
nick: nick or hostname (can be a POSIX extended regular expression if "re:" is given or a mask using "*" to replace zero or more chars)
del: delete an ignore
number: number of ignore to delete (look at list to find it)
-all: delete all ignores
server: internal server name where ignore is working
channel: channel name where ignore is working
Note: the regular expression can start with "(?-i)" to become case sensitive.
Examples:
ignore nick "toto" everywhere:
/ignore add toto
ignore host "toto@domain.com" on freenode server:
/ignore add toto@domain.com freenode
ignore host "toto*@*.domain.com" on freenode/#weechat:
/ignore add toto*@*.domain.com freenode #weechat
----
[[command_irc_info]]
* `+info+`: get information describing the server
----
/info [<target>]
target: server name
----
[[command_irc_invite]]
* `+invite+`: invite a nick on a channel
----
/invite <nick> [<nick>...] [<channel>]
nick: nick
channel: channel name
----
[[command_irc_ison]]
* `+ison+`: check if a nick is currently on IRC
----
/ison <nick> [<nick>...]
nick: nick
----
[[command_irc_join]]
* `+join+`: join a channel
----
/join [-noswitch] [-server <server>] [<channel1>[,<channel2>...]] [<key1>[,<key2>...]]
-noswitch: do not switch to new buffer
server: send to this server (internal name)
channel: channel name to join
key: key to join the channel (channels with a key must be the first in list)
Examples:
/join #weechat
/join #protectedchan,#weechat key
/join -server freenode #weechat
/join -noswitch #weechat
----
[[command_irc_kick]]
* `+kick+`: kick a user out of a channel
----
/kick [<channel>] <nick> [<reason>]
channel: channel name
nick: nick
reason: reason (special variables $nick, $channel and $server are replaced by their value)
----
[[command_irc_kickban]]
* `+kickban+`: kick a user out of a channel and ban the host
----
/kickban [<channel>] <nick> [<reason>]
channel: channel name
nick: nick
reason: reason (special variables $nick, $channel and $server are replaced by their value)
It is possible to kick/ban with a mask, nick will be extracted from mask and replaced by "*".
Example:
ban "*!*@host.com" and then kick "toto":
/kickban toto!*@host.com
----
[[command_irc_kill]]
* `+kill+`: close client-server connection
----
/kill <nick> [<reason>]
nick: nick
reason: reason
----
[[command_irc_links]]
* `+links+`: list all server names which are known by the server answering the query
----
/links [[<target>] <server_mask>]
target: this remote server should answer the query
server_mask: list of servers must match this mask
----
[[command_irc_list]]
* `+list+`: list channels and their topic
----
/list [-server <server>] [-re <regex>] [<channel>[,<channel>...]] [<target>]
server: send to this server (internal name)
regex: POSIX extended regular expression used to filter results (case insensitive, can start by "(?-i)" to become case sensitive)
channel: channel to list
target: server name
Examples:
list all channels on server (can be very slow on large networks):
/list
list channel #weechat:
/list #weechat
list all channels beginning with "#weechat" (can be very slow on large networks):
/list -re #weechat.*
----
[[command_irc_lusers]]
* `+lusers+`: get statistics about the size of the IRC network
----
/lusers [<mask> [<target>]]
mask: servers matching the mask only
target: server for forwarding request
----
[[command_irc_map]]
* `+map+`: show a graphical map of the IRC network
----
----
[[command_irc_me]]
* `+me+`: send a CTCP action to the current channel
----
/me <message>
message: message to send
----
[[command_irc_mode]]
* `+mode+`: change channel or user mode
----
/mode [<channel>] [+|-]o|p|s|i|t|n|m|l|b|e|v|k [<arguments>]
<nick> [+|-]i|s|w|o
channel modes:
channel: channel name to modify (default is current one)
o: give/take channel operator privileges
p: private channel flag
s: secret channel flag
i: invite-only channel flag
t: topic settable by channel operator only flag
n: no messages to channel from clients on the outside
m: moderated channel
l: set the user limit to channel
b: set a ban mask to keep users out
e: set exception mask
v: give/take the ability to speak on a moderated channel
k: set a channel key (password)
user modes:
nick: nick to modify
i: mark a user as invisible
s: mark a user for receive server notices
w: user receives wallops
o: operator flag
List of modes is not comprehensive, you should read documentation about your server to see all possible modes.
Examples:
protect topic on channel #weechat:
/mode #weechat +t
become invisible on server:
/mode nick +i
----
[[command_irc_motd]]
* `+motd+`: get the "Message Of The Day"
----
/motd [<target>]
target: server name
----
[[command_irc_msg]]
* `+msg+`: send message to a nick or channel
----
/msg [-server <server>] <target>[,<target>...] <text>
server: send to this server (internal name)
target: nick or channel (may be mask, '*' = current channel)
text: text to send
----
[[command_irc_names]]
* `+names+`: list nicks on channels
----
/names [<channel>[,<channel>...]]
channel: channel name
----
[[command_irc_nick]]
* `+nick+`: change current nick
----
/nick [-all] <nick>
-all: set new nick for all connected servers
nick: new nick
----
[[command_irc_notice]]
* `+notice+`: send notice message to user
----
/notice [-server <server>] <target> <text>
server: send to this server (internal name)
target: nick or channel name
text: text to send
----
[[command_irc_notify]]
* `+notify+`: add a notification for presence or away status of nicks on servers
----
/notify add <nick> [<server> [-away]]
del <nick>|-all [<server>]
add: add a notification
nick: nick
server: internal server name (by default current server)
-away: notify when away message is changed (by doing whois on nick)
del: delete a notification
-all: delete all notifications
Without argument, this command displays notifications for current server (or all servers if command is issued on core buffer).
Examples:
notify when "toto" joins/quits current server:
/notify add toto
notify when "toto" joins/quits freenode server:
/notify add toto freenode
notify when "toto" is away or back on freenode server:
/notify add toto freenode -away
----
[[command_irc_op]]
* `+op+`: give channel operator status to nick(s)
----
/op <nick> [<nick>...]
* -yes
nick: nick or mask (wildcard "*" is allowed)
*: give channel operator status to everybody on channel
----
[[command_irc_oper]]
* `+oper+`: get operator privileges
----
/oper <user> <password>
user: user
password: password
----
[[command_irc_part]]
* `+part+`: leave a channel
----
/part [<channel>[,<channel>...]] [<message>]
channel: channel name to leave
message: part message (displayed to other users)
----
[[command_irc_ping]]
* `+ping+`: send a ping to server
----
/ping <target1> [<target2>]
target1: server
target2: forward ping to this server
----
[[command_irc_pong]]
* `+pong+`: answer to a ping message
----
/pong <daemon> [<daemon2>]
daemon: daemon who has responded to Ping message
daemon2: forward message to this daemon
----
[[command_irc_query]]
* `+query+`: send a private message to a nick
----
/query [-noswitch] [-server <server>] <nick>[,<nick>...] [<text>]
-noswitch: do not switch to new buffer
server: send to this server (internal name)
nick: nick
text: text to send
----
[[command_irc_quiet]]
* `+quiet+`: quiet nicks or hosts
----
/quiet [<channel>] [<nick> [<nick>...]]
channel: channel name
nick: nick or host
Without argument, this command displays the quiet list for current channel.
----
[[command_irc_quote]]
* `+quote+`: send raw data to server without parsing
----
/quote [-server <server>] <data>
server: send to this server (internal name)
data: raw data to send
----
[[command_irc_reconnect]]
* `+reconnect+`: reconnect to server(s)
----
/reconnect <server> [<server>...] [-nojoin] [-switch]
-all [-nojoin] [-switch]
server: server to reconnect (internal name)
-all: reconnect to all servers
-nojoin: do not join any channel (even if autojoin is enabled on server)
-switch: switch to next server address
----
[[command_irc_rehash]]
* `+rehash+`: tell the server to reload its config file
----
/rehash [<option>]
option: extra option, for some servers
----
[[command_irc_remove]]
* `+remove+`: force a user to leave a channel
----
/remove [<channel>] <nick> [<reason>]
channel: channel name
nick: nick
reason: reason (special variables $nick, $channel and $server are replaced by their value)
----
[[command_irc_restart]]
* `+restart+`: tell the server to restart itself
----
/restart [<target>]
target: server name
----
[[command_irc_sajoin]]
* `+sajoin+`: force a user to join channel(s)
----
/sajoin <nick> <channel>[,<channel>...]
nick: nick
channel: channel name
----
[[command_irc_samode]]
* `+samode+`: change mode on channel, without having operator status
----
/samode [<channel>] <mode>
channel: channel name
mode: mode for channel
----
[[command_irc_sanick]]
* `+sanick+`: force a user to use another nick
----
/sanick <nick> <new_nick>
nick: nick
new_nick: new nick
----
[[command_irc_sapart]]
* `+sapart+`: force a user to leave channel(s)
----
/sapart <nick> <channel>[,<channel>...]
nick: nick
channel: channel name
----
[[command_irc_saquit]]
* `+saquit+`: force a user to quit server with a reason
----
/saquit <nick> <reason>
nick: nick
reason: reason
----
[[command_irc_server]]
* `+server+`: list, add or remove IRC servers
----
/server list|listfull [<name>]
add <name> <hostname>[/<port>] [-temp] [-<option>[=<value>]] [-no<option>]
copy|rename <name> <new_name>
reorder <name> [<name>...]
open <name>|-all [<name>...]
del|keep <name>
deloutq|jump
raw [<filter>]
list: list servers (without argument, this list is displayed)
listfull: list servers with detailed info for each server
add: add a new server
name: server name, for internal and display use; this name is used to connect to the server (/connect name) and to set server options: irc.server.name.xxx
hostname: name or IP address of server, with optional port (default: 6667), many addresses can be separated by a comma
-temp: add a temporary server (not saved)
option: set option for server (for boolean option, value can be omitted)
nooption: set boolean option to 'off' (for example: -nossl)
copy: duplicate a server
rename: rename a server
reorder: reorder list of servers
open: open the server buffer without connecting
keep: keep server in config file (for temporary servers only)
del: delete a server
deloutq: delete messages out queue for all servers (all messages WeeChat is currently sending)
jump: jump to server buffer
raw: open buffer with raw IRC data
filter: set a new filter to see only matching messages (this filter can be used as input in raw IRC data buffer as well); allowed formats are:
* show all messages (no filter)
xxx show only messages containing "xxx"
s:xxx show only messages for server "xxx"
f:xxx show only messages with a flag: recv (message received), sent (message sent), modified (message modified by a modifier), redirected (message redirected)
m:xxx show only IRC command "xxx"
c:xxx show only messages matching the evaluated condition "xxx", using following variables: output of function irc_message_parse (like nick, command, channel, text, etc., see function info_get_hashtable in plugin API reference for the list of all variables), date (format: "yyyy-mm-dd hh:mm:ss"), server, recv, sent, modified, redirected
Examples:
/server listfull
/server add freenode chat.freenode.net
/server add freenode chat.freenode.net/6697 -ssl -autoconnect
/server add chatspike irc.chatspike.net/6667,irc.duckspike.net/6667
/server copy freenode freenode-test
/server rename freenode-test freenode2
/server reorder freenode2 freenode
/server del freenode
/server deloutq
/server raw
/server raw s:freenode
/server raw c:${recv} && ${command}==PRIVMSG && ${nick}==foo
----
[[command_irc_service]]
* `+service+`: register a new service
----
/service <nick> <reserved> <distribution> <type> <reserved> <info>
distribution: visibility of service
type: reserved for future usage
----
[[command_irc_servlist]]
* `+servlist+`: list services currently connected to the network
----
/servlist [<mask> [<type>]]
mask: list only services matching this mask
type: list only services of this type
----
[[command_irc_squery]]
* `+squery+`: deliver a message to a service
----
/squery <service> <text>
service: name of service
text: text to send
----
[[command_irc_squit]]
* `+squit+`: disconnect server links
----
/squit <target> <comment>
target: server name
comment: comment
----
[[command_irc_stats]]
* `+stats+`: query statistics about server
----
/stats [<query> [<target>]]
query: c/h/i/k/l/m/o/y/u (see RFC1459)
target: server name
----
[[command_irc_summon]]
* `+summon+`: give users who are on a host running an IRC server a message asking them to please join IRC
----
/summon <user> [<target> [<channel>]]
user: username
target: server name
channel: channel name
----
[[command_irc_time]]
* `+time+`: query local time from server
----
/time [<target>]
target: query time from specified server
----
[[command_irc_topic]]
* `+topic+`: get/set channel topic
----
/topic [<channel>] [<topic>|-delete]
channel: channel name
topic: new topic
-delete: delete channel topic
----
[[command_irc_trace]]
* `+trace+`: find the route to specific server
----
/trace [<target>]
target: server name
----
[[command_irc_unban]]
* `+unban+`: unban nicks or hosts
----
/unban [<channel>] <nick>|<number> [<nick>|<number>...]
channel: channel name
nick: nick or host
number: ban number (as displayed by command /ban)
----
[[command_irc_unquiet]]
* `+unquiet+`: unquiet nicks or hosts
----
/unquiet [<channel>] <nick>|<number> [<nick>|<number>...]
channel: channel name
nick: nick or host
number: quiet number (as displayed by command /quiet)
----
[[command_irc_userhost]]
* `+userhost+`: return a list of information about nicks
----
/userhost <nick> [<nick>...]
nick: nick
----
[[command_irc_users]]
* `+users+`: list of users logged into the server
----
/users [<target>]
target: server name
----
[[command_irc_version]]
* `+version+`: give the version info of nick or server (current or specified)
----
/version [<target>|<nick>]
target: server name
nick: nick
----
[[command_irc_voice]]
* `+voice+`: give voice to nick(s)
----
/voice <nick> [<nick>...]
nick: nick or mask (wildcard "*" is allowed)
*: give voice to everybody on channel
----
[[command_irc_wallchops]]
* `+wallchops+`: send a notice to channel ops
----
/wallchops [<channel>] <text>
channel: channel name
text: text to send
----
[[command_irc_wallops]]
* `+wallops+`: send a message to all currently connected users who have set the 'w' user mode for themselves
----
/wallops <text>
text: text to send
----
[[command_irc_who]]
* `+who+`: generate a query which returns a list of information
----
/who [<mask> [o]]
mask: only information which match this mask
o: only operators are returned according to the mask supplied
----
[[command_irc_whois]]
* `+whois+`: query information about user(s)
----
/whois [<target>] [<nick>[,<nick>...]]
target: server name
nick: nick (may be a mask)
Without argument, this command will do a whois on:
- your own nick if buffer is a server/channel
- remote nick if buffer is a private.
If option irc.network.whois_double_nick is enabled, two nicks are sent (if only one nick is given), to get idle time in answer.
----
[[command_irc_whowas]]
* `+whowas+`: ask for information about a nick which no longer exists
----
/whowas <nick>[,<nick>...] [<count> [<target>]]
nick: nick
count: number of replies to return (full search if negative number)
target: reply should match this mask
----
// end::irc_commands[]
// tag::alias_commands[]
[[command_alias_alias]]
* `+alias+`: list, add or remove command aliases
----
/alias list [<alias>]
add <alias> [<command>[;<command>...]]
addcompletion <completion> <alias> [<command>[;<command>...]]
del <alias> [<alias>...]
list: list aliases (without argument, this list is displayed)
add: add an alias
addcompletion: add an alias with a custom completion
del: delete an alias
completion: completion for alias: by default completion is done with target command
note: you can use %%command to use completion of an existing command
alias: name of alias
command: command name with arguments (many commands can be separated by semicolons)
Note: in command, special variables are replaced:
$n: argument 'n' (between 1 and 9)
$-m: arguments from 1 to 'm'
$n-: arguments from 'n' to last
$n-m: arguments from 'n' to 'm'
$*: all arguments
$~: last argument
$var: where "var" is a local variable of buffer (see /buffer localvar)
examples: $nick, $channel, $server, $plugin, $name
Examples:
alias /split to split window horizontally:
/alias add split /window splith
alias /hello to say "hello" on all channels but not on #weechat:
/alias add hello /allchan -exclude=#weechat hello
alias /forcejoin to send IRC command "forcejoin" with completion of /sajoin:
/alias addcompletion %%sajoin forcejoin /quote forcejoin
----
// end::alias_commands[]
// tag::weechat_commands[]
[[command_weechat_away]]
* `+away+`: set or remove away status
----
/away [-all] [<message>]
-all: set or remove away status on all connected servers
message: message for away (if no message is given, away status is removed)
----
[[command_weechat_bar]]
* `+bar+`: manage bars
----
/bar list|listfull|listitems
add <name> <type>[,<conditions>] <position> <size> <separator> <item1>[,<item2>...]
default [input|title|status|nicklist]
del <name>|-all
set <name> <option> <value>
hide|show|toggle <name>
scroll <name> <window> <scroll_value>
list: list all bars
listfull: list all bars (verbose)
listitems: list all bar items
add: add a new bar
name: name of bar (must be unique)
type: root: outside windows,
window: inside windows, with optional conditions (see below)
conditions: the conditions to display the bar:
active: on active window
inactive: on inactive windows
nicklist: on windows with nicklist
other condition: see /help weechat.bar.xxx.conditions and /help eval
without conditions, the bar is always displayed
position: bottom, top, left or right
size: size of bar (in chars)
separator: 1 for using separator (line), 0 or nothing means no separator
item1,...: items for this bar (items can be separated by comma (space between items) or "+" (glued items))
default: create a default bar (all default bars if no bar name is given)
del: delete a bar (or all bars with -all)
set: set a value for a bar property
option: option to change (for options list, look at /set weechat.bar.<barname>.*)
value: new value for option
hide: hide a bar
show: show an hidden bar
toggle: hide/show a bar
scroll: scroll bar
window: window number (use '*' for current window or for root bars)
scroll_value: value for scroll: 'x' or 'y' (optional), followed by '+', '-', 'b' (beginning) or 'e' (end), value (for +/-), and optional % (to scroll by % of width/height, otherwise value is number of chars)
Examples:
create a bar with time, buffer number + name, and completion:
/bar add mybar root bottom 1 0 [time],buffer_number+:+buffer_name,completion
hide a bar:
/bar hide mybar
scroll nicklist 10 lines down on current buffer:
/bar scroll nicklist * y+10
scroll to end of nicklist on current buffer:
/bar scroll nicklist * ye
----
[[command_weechat_buffer]]
* `+buffer+`: manage buffers
----
/buffer list
add [-free] [-switch] <name>
clear [<number>|<name>|-merged|-all [<number>|<name>...]]
move <number>|-|+
swap <number1>|<name1> [<number2>|<name2>]
cycle <number>|<name> [<number>|<name>...]
merge <number>|<name>
unmerge [<number>|-all]
hide [<number>|<name>|-all [<number>|<name>...]]
unhide [<number>|<name>|-all [<number>|<name>...]]
renumber [<number1> [<number2> [<start>]]]
close [<n1>[-<n2>]|<name>...]
notify [<level>]
localvar [<number>|<name>]
set <property> [<value>]
get <property>
<number>|-|+|<name>
list: list buffers (without argument, this list is displayed)
add: add a new buffer (it can be closed with "/buffer close" or input "q")
clear: clear buffer content (number for a buffer, -merged for merged buffers, -all for all buffers, or nothing for current buffer)
move: move buffer in the list (may be relative, for example -1); "-" = move to first buffer number, "+" = move to last buffer number + 1
swap: swap two buffers (swap with current buffer if only one number/name given)
cycle: jump loop between a list of buffers
merge: merge current buffer to another buffer (chat area will be mix of both buffers)
(by default ctrl-x switches between merged buffers)
unmerge: unmerge buffer from other buffers which have same number
hide: hide the buffer
unhide: unhide the buffer
renumber: renumber buffers (works only if option weechat.look.buffer_auto_renumber is off)
close: close buffer (number/range or name is optional)
notify: display or set notify level for current buffer: this level determines whether buffer will be added to hotlist or not:
none: never
highlight: for highlights only
message: for messages from users + highlights
all: all messages
reset: reset to default value (all)
localvar: display local variables for the buffer
set: set a property for current buffer
get: display a property of current buffer
number: jump to buffer by number, possible prefix:
'+': relative jump, add number to current
'-': relative jump, sub number to current
'*': jump to number, using option "weechat.look.jump_current_to_previous_buffer"
-: jump to first buffer number
+: jump to last buffer number
name: jump to buffer by (partial) name
Examples:
clear current buffer:
/buffer clear
move buffer to number 5:
/buffer move 5
swap buffer 1 with 3:
/buffer swap 1 3
swap buffer #weechat with current buffer:
/buffer swap #weechat
jump on #chan1, #chan2, #chan3 and loop:
/buffer cycle #chan1 #chan2 #chan3
merge with core buffer:
/buffer merge 1
merge with #weechat buffer:
/buffer merge #weechat
unmerge buffer:
/buffer unmerge
close current buffer:
/buffer close
close buffers 5 to 7:
/buffer close 5-7
jump to #weechat:
/buffer #weechat
jump to next buffer:
/buffer +1
jump to last buffer number:
/buffer +
----
[[command_weechat_color]]
* `+color+`: define color aliases and display palette of colors
----
/color alias <color> <name>
unalias <color>
reset
term2rgb <color>
rgb2term <rgb> [<limit>]
-o
alias: add an alias for a color
unalias: delete an alias
color: color number (greater than or equal to 0, max depends on terminal, commonly 63 or 255)
name: alias name for color (for example: "orange")
reset: reset all color pairs (required when no more color pairs are available if automatic reset is disabled, see option "weechat.look.color_pairs_auto_reset")
term2rgb: convert a terminal color (0-255) to RGB color
rgb2term: convert a RGB color to terminal color (0-255)
limit: number of colors to use in terminal table (starting from 0); default is 256
-o: send terminal/colors info to current buffer as input
Without argument, this command displays colors in a new buffer.
Examples:
add alias "orange" for color 214:
/color alias 214 orange
delete color 214:
/color unalias 214
----
[[command_weechat_command]]
* `+command+`: launch explicit WeeChat or plugin command
----
/command [-buffer <name>] <plugin> <command>
-buffer: execute the command on this buffer
plugin: execute the command from this plugin; 'core' for a WeeChat command, '*' for automatic plugin (it depends on the buffer where the command is executed)
command: command to execute (a '/' is automatically added if not found at beginning of command)
----
[[command_weechat_cursor]]
* `+cursor+`: free movement of cursor on screen to execute actions on specific areas of screen
----
/cursor go chat|<bar>|<x>,<y>
move up|down|left|right|area_up|area_down|area_left|area_right
stop
go: move cursor to chat area, a bar (using bar name) or coordinates "x,y"
move: move cursor with direction
stop: stop cursor mode
Without argument, this command toggles cursor mode.
When mouse is enabled (see /help mouse), by default a middle click will start cursor mode at this point.
Default keys in cursor mode on chat messages:
m quote message
q quote prefix + message
Q quote time + prefix + message
Default keys in cursor mode on nicklist:
b ban nick (/ban)
k kick nick (/kick)
K kick and ban nick (/kickban)
q open query with nick (/query)
w query information about user (/whois)
Other default keys in cursor mode:
arrow move cursor
alt+arrow move cursor to the next area
enter exit cursor mode
Examples:
go to nicklist:
/cursor go nicklist
go to coordinates x=10, y=5:
/cursor go 10,5
----
[[command_weechat_debug]]
* `+debug+`: debug functions
----
/debug list
set <plugin> <level>
dump [<plugin>]
buffer|color|infolists|memory|tags|term|windows
mouse|cursor [verbose]
hdata [free]
time <command>
list: list plugins with debug levels
set: set debug level for plugin
plugin: name of plugin ("core" for WeeChat core)
level: debug level for plugin (0 = disable debug)
dump: save memory dump in WeeChat log file (same dump is written when WeeChat crashes)
buffer: dump buffer content with hexadecimal values in log file
color: display infos about current color pairs
cursor: toggle debug for cursor mode
dirs: display directories
hdata: display infos about hdata (with free: remove all hdata in memory)
hooks: display infos about hooks
infolists: display infos about infolists
libs: display infos about external libraries used
memory: display infos about memory usage
mouse: toggle debug for mouse
tags: display tags for lines
term: display infos about terminal
windows: display windows tree
time: measure time to execute a command or to send text to the current buffer
----
[[command_weechat_eval]]
* `+eval+`: evaluate expression
----
/eval [-n|-s] [-d] <expression>
[-n] [-d] -c <expression1> <operator> <expression2>
-n: display result without sending it to buffer (debug mode)
-s: split expression before evaluating it (many commands can be separated by semicolons)
-d: display debug output after evaluation
-c: evaluate as condition: use operators and parentheses, return a boolean value ("0" or "1")
expression: expression to evaluate, variables with format ${variable} are replaced (see below); many commands can be separated by semicolons
operator: a logical or comparison operator:
- logical operators:
&& boolean "and"
|| boolean "or"
- comparison operators:
== equal
!= not equal
<= less or equal
< less
>= greater or equal
> greater
=~ is matching POSIX extended regex
!~ is NOT matching POSIX extended regex
==* is matching mask, case sensitive (wildcard "*" is allowed)
!!* is NOT matching mask, case sensitive (wildcard "*" is allowed)
=* is matching mask, case insensitive (wildcard "*" is allowed)
!* is NOT matching mask, case insensitive (wildcard "*" is allowed)
==- is included, case sensitive
!!- is NOT included, case sensitive
=- is included, case insensitive
!- is NOT included, case insensitive
An expression is considered as "true" if it is not NULL, not empty, and different from "0".
The comparison is made using floating point numbers if the two expressions are valid numbers, with one of the following formats:
- integer (examples: 5, -7)
- floating point number (examples: 5.2, -7.5, 2.83e-2)
- hexadecimal number (examples: 0xA3, -0xA3)
To force a string comparison, you can add double quotes around each expression, for example:
50 > 100 ==> 0
"50" > "100" ==> 1
Some variables are replaced in expression, using the format ${variable}, variable can be, by order of priority:
1. an evaluated sub-string (format: "eval:xxx")
2. a string with escaped chars (format: "esc:xxx" or "\xxx")
3. a string with chars to hide (format: "hide:char,string")
4. a string with max chars (format: "cut:max,suffix,string" or "cut:+max,suffix,string")
or max chars displayed on screen (format: "cutscr:max,suffix,string" or "cutscr:+max,suffix,string")
5. a reversed string (format: "rev:xxx" or "revscr:xxx")
6. a repeated string (format: "repeat:count,string")
7. length of a string (format: "length:xxx" or "lengthscr:xxx")
8. a color (format: "color:xxx", see "Plugin API reference", function "color")
9. a modifier (format: "modifier:name,data,string")
10. an info (format: "info:name,arguments", arguments are optional)
11. a base 16/32/64 encoded/decoded string (format: "base_encode:base,xxx" or "base_decode:base,xxx")
12. current date/time (format: "date" or "date:format")
13. an environment variable (format: "env:XXX")
14. a ternary operator (format: "if:condition?value_if_true:value_if_false")
15. result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx")
16. an option (format: "file.section.option")
17. a local variable in buffer
18. a hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer.
Format for hdata can be one of following:
hdata.var1.var2...: start with a hdata (pointer must be known), and ask variables one after one (other hdata can be followed)
hdata[list].var1.var2...: start with a hdata using a list, for example:
${buffer[gui_buffers].full_name}: full name of first buffer in linked list of buffers
${plugin[weechat_plugins].name}: name of first plugin in linked list of plugins
hdata[pointer].var1.var2...: start with a hdata using a pointer, for example:
${buffer[0x1234abcd].full_name}: full name of the buffer with this pointer (can be used in triggers)
For name of hdata and variables, please look at "Plugin API reference", function "weechat_hdata_get".
Examples (simple strings):
/eval -n ${info:version} ==> 0.4.3
/eval -n ${env:HOME} ==> /home/user
/eval -n ${weechat.look.scroll_amount} ==> 3
/eval -n ${sec.data.freenode_password} ==> secret
/eval -n ${window} ==> 0x2549aa0
/eval -n ${window.buffer} ==> 0x2549320
/eval -n ${window.buffer.full_name} ==> core.weechat
/eval -n ${window.buffer.number} ==> 1
/eval -n ${\t} ==> <tab>
/eval -n ${hide:-,${relay.network.password}} ==> --------
/eval -n ${cut:3,+,test} ==> tes+
/eval -n ${cut:+3,+,test} ==> te+
/eval -n ${date:%H:%M:%S} ==> 07:46:40
/eval -n ${if:${info:term_width}>80?big:small} ==> big
/eval -n ${rev:Hello} ==> olleH
/eval -n ${repeat:5,-} ==> -----
/eval -n ${length:test} ==> 4
/eval -n ${calc:(5+2)*3} ==> 21
/eval -n ${base_encode:64,test} ==> dGVzdA==
/eval -n ${base_decode:64,dGVzdA==} ==> test
Examples (conditions):
/eval -n -c ${window.buffer.number} > 2 ==> 0
/eval -n -c ${window.win_width} > 100 ==> 1
/eval -n -c (8 > 12) || (5 > 2) ==> 1
/eval -n -c (8 > 12) && (5 > 2) ==> 0
/eval -n -c abcd =~ ^ABC ==> 1
/eval -n -c abcd =~ (?-i)^ABC ==> 0
/eval -n -c abcd =~ (?-i)^abc ==> 1
/eval -n -c abcd !~ abc ==> 0
/eval -n -c abcd =* a*d ==> 1
/eval -n -c abcd =- bc ==> 1
----
[[command_weechat_filter]]
* `+filter+`: filter messages in buffers, to hide/show them according to tags or regex
----
/filter list
enable|disable|toggle [<name>|@]
add|addreplace <name> <buffer>[,<buffer>...] <tags> <regex>
rename <name> <new_name>
del <name>|-all
list: list all filters
enable: enable filters (filters are enabled by default)
disable: disable filters
toggle: toggle filters
name: filter name ("@" = enable/disable all filters in current buffer)
add: add a filter
addreplace: add or replace an existing filter
rename: rename a filter
del: delete a filter
-all: delete all filters
buffer: comma separated list of buffers where filter is active:
- this is full name including plugin (example: "irc.freenode.#weechat" or "irc.server.freenode")
- "*" means all buffers
- a name starting with '!' is excluded
- wildcard "*" is allowed
tags: comma separated list of tags, for example "irc_join,irc_part,irc_quit"
- logical "and": use "+" between tags (for example: "nick_toto+irc_action")
- wildcard "*" is allowed
- if tag starts with '!', then it is excluded and must NOT be in message
regex: POSIX extended regular expression to search in line
- use '\t' to separate prefix from message, special chars like '|' must be escaped: '\|'
- if regex starts with '!', then matching result is reversed (use '\!' to start with '!')
- two regular expressions are created: one for prefix and one for message
- regex are case insensitive, they can start by "(?-i)" to become case sensitive
The default key alt+'=' toggles filtering on/off globally and alt+'-' toggles filtering on/off in the current buffer.
Tags most commonly used:
no_filter, no_highlight, no_log, log0..log9 (log level),
notify_none, notify_message, notify_private, notify_highlight,
self_msg, nick_xxx (xxx is nick in message), prefix_nick_ccc (ccc is color of nick),
host_xxx (xxx is username + host in message),
irc_xxx (xxx is command name or number, see /server raw or /debug tags),
irc_numeric, irc_error, irc_action, irc_ctcp, irc_ctcp_reply, irc_smart_filter, away_info.
To see tags for lines in buffers: /debug tags
Examples:
use IRC smart filter on all buffers:
/filter add irc_smart * irc_smart_filter *
use IRC smart filter on all buffers except those with "#weechat" in name:
/filter add irc_smart *,!*#weechat* irc_smart_filter *
filter all IRC join/part/quit messages:
/filter add joinquit * irc_join,irc_part,irc_quit *
filter nicks displayed when joining channels or with /names:
/filter add nicks * irc_366 *
filter nick "toto" on IRC channel #weechat:
/filter add toto irc.freenode.#weechat nick_toto *
filter IRC join/action messages from nick "toto":
/filter add toto * nick_toto+irc_join,nick_toto+irc_action *
filter lines containing "weechat sucks" on IRC channel #weechat:
/filter add sucks irc.freenode.#weechat * weechat sucks
filter lines that are strictly equal to "WeeChat sucks" on all buffers:
/filter add sucks2 * * (?-i)^WeeChat sucks$
----
[[command_weechat_help]]
* `+help+`: display help about commands and options
----
/help -list|-listfull [<plugin> [<plugin>...]]
<command>
<option>
-list: list commands, by plugin (without argument, this list is displayed)
-listfull: list commands with description, by plugin
plugin: list commands for this plugin
command: a command name
option: an option name (use /set to see list)
----
[[command_weechat_history]]
* `+history+`: show buffer command history
----
/history clear
<value>
clear: clear history
value: number of history entries to show
----
[[command_weechat_input]]
* `+input+`: functions for command line
----
/input <action> [<arguments>]
list of actions:
return: simulate key "enter"
complete_next: complete word with next completion
complete_previous: complete word with previous completion
search_text_here: search text in buffer at current position
search_text: search text in buffer
search_switch_case: switch exact case for search
search_switch_regex: switch search type: string/regular expression
search_switch_where: switch search in messages/prefixes
search_previous: search previous line
search_next: search next line
search_stop_here: stop search at current position
search_stop: stop search
delete_previous_char: delete previous char
delete_next_char: delete next char
delete_previous_word: delete previous word
delete_next_word: delete next word
delete_beginning_of_line: delete from beginning of line until cursor
delete_end_of_line: delete from cursor until end of line
delete_line: delete entire line
clipboard_paste: paste from the internal clipboard
transpose_chars: transpose two chars
undo: undo last command line action
redo: redo last command line action
move_beginning_of_line: move cursor to beginning of line
move_end_of_line: move cursor to end of line
move_previous_char: move cursor to previous char
move_next_char: move cursor to next char
move_previous_word: move cursor to previous word
move_next_word: move cursor to next word
history_previous: recall previous command in current buffer history
history_next: recall next command in current buffer history
history_global_previous: recall previous command in global history
history_global_next: recall next command in global history
jump_smart: jump to next buffer with activity
jump_last_buffer_displayed: jump to last buffer displayed (before last jump to a buffer)
jump_previously_visited_buffer: jump to previously visited buffer
jump_next_visited_buffer: jump to next visited buffer
hotlist_clear: clear hotlist (optional argument: "lowest" to clear only lowest level in hotlist, "highest" to clear only highest level in hotlist, or level mask: integer which is a combination of 1=join/part, 2=message, 4=private, 8=highlight)
grab_key: grab a key (optional argument: delay for end of grab, default is 500 milliseconds)
grab_key_command: grab a key with its associated command (optional argument: delay for end of grab, default is 500 milliseconds)
grab_mouse: grab mouse event code
grab_mouse_area: grab mouse event code with area
set_unread: set unread marker for all buffers
set_unread_current_buffer: set unread marker for current buffer
switch_active_buffer: switch to next merged buffer
switch_active_buffer_previous: switch to previous merged buffer
zoom_merged_buffer: zoom on merged buffer
insert: insert text in command line (escaped chars are allowed, see /help print)
send: send text to the buffer
paste_start: start paste (bracketed paste mode)
paste_stop: stop paste (bracketed paste mode)
This command is used by key bindings or plugins.
----
[[command_weechat_key]]
* `+key+`: bind/unbind keys
----
/key list|listdefault|listdiff [<context>]
bind <key> [<command> [<args>]]
bindctxt <context> <key> [<command> [<args>]]
unbind <key>
unbindctxt <context> <key>
reset <key>
resetctxt <context> <key>
resetall -yes [<context>]
missing [<context>]
list: list all current keys (without argument, this list is displayed)
listdefault: list default keys
listdiff: list differences between current and default keys (keys added, redefined or deleted)
context: name of context ("default" or "search")
bind: bind a command to a key or display command bound to key (for context "default")
bindctxt: bind a command to a key or display command bound to key, for given context
command: command (many commands can be separated by semicolons)
unbind: remove a key binding (for context "default")
unbindctxt: remove a key binding for given context
reset: reset a key to default binding (for context "default")
resetctxt: reset a key to default binding, for given context
resetall: restore bindings to the default values and delete ALL personal bindings (use carefully!)
missing: add missing keys (using default bindings), useful after installing new WeeChat version
When binding a command to a key, it is recommended to use key alt+k (or Esc then k), and then press the key to bind: this will insert key code in command line.
For context "mouse" (possible in context "cursor" too), key has format: "@area:key" or "@area1>area2:key" where area can be:
*: any area on screen
chat: chat area (any buffer)
chat(xxx): chat area for buffer with name "xxx" (full name including plugin)
bar(*): any bar
bar(xxx): bar "xxx"
item(*): any bar item
item(xxx): bar item "xxx"
Wildcard "*" is allowed in key to match many mouse events.
A special value for command with format "hsignal:name" can be used for context mouse, this will send the hsignal "name" with the focus hashtable as argument.
Another special value "-" can be used to disable key (it will be ignored when looking for keys).
Examples:
key alt-t to toggle nicklist bar:
/key bind meta-t /bar toggle nicklist
key alt-r to jump to #weechat IRC channel:
/key bind meta-r /buffer #weechat
restore default binding for key alt-r:
/key reset meta-r
key "tab" to stop search in buffer:
/key bindctxt search ctrl-I /input search_stop
middle button of mouse on a nick to retrieve info on nick:
/key bindctxt mouse @item(buffer_nicklist):button3 /msg nickserv info ${nick}
----
[[command_weechat_layout]]
* `+layout+`: manage buffers/windows layouts
----
/layout store [<name>] [buffers|windows]
apply [<name>] [buffers|windows]
leave
del [<name>] [buffers|windows]
rename <name> <new_name>
store: store current buffers/windows in a layout
apply: apply stored layout
leave: leave current layout (does not update any layout)
del: delete buffers and/or windows in a stored layout
(if neither "buffers" nor "windows" is given after the name, the layout is deleted)
rename: rename a layout
name: name for stored layout (default is "default")
buffers: store/apply only buffers (order of buffers)
windows: store/apply only windows (buffer displayed by each window)
Without argument, this command displays stored layouts.
The current layout can be saved on /quit command with the option "weechat.look.save_layout_on_exit".
----
[[command_weechat_mouse]]
* `+mouse+`: mouse control
----
/mouse enable|disable|toggle [<delay>]
enable: enable mouse
disable: disable mouse
toggle: toggle mouse
delay: delay (in seconds) after which initial mouse state is restored (useful to temporarily disable mouse)
The mouse state is saved in option "weechat.look.mouse".
Examples:
enable mouse:
/mouse enable
toggle mouse for 5 seconds:
/mouse toggle 5
----
[[command_weechat_mute]]
* `+mute+`: execute a command silently
----
/mute [-core | -current | -buffer <name>] <command>
-core: no output on WeeChat core buffer
-current: no output on current buffer
-buffer: no output on specified buffer
name: full buffer name (examples: "irc.server.freenode", "irc.freenode.#weechat")
command: command to execute silently (a '/' is automatically added if not found at beginning of command)
If no target is specified (-core, -current or -buffer), then default is to mute all buffers.
Examples:
config save:
/mute save
message to current IRC channel:
/mute -current msg * hi!
message to #weechat channel:
/mute -buffer irc.freenode.#weechat msg #weechat hi!
----
[[command_weechat_plugin]]
* `+plugin+`: list/load/unload plugins
----
/plugin list|listfull [<name>]
load <filename> [<arguments>]
autoload [<arguments>]
reload [<name>|* [<arguments>]]
unload [<name>]
list: list loaded plugins
listfull: list loaded plugins (verbose)
load: load a plugin
autoload: autoload plugins in system or user directory
reload: reload a plugin (if no name given, unload all plugins, then autoload plugins)
unload: unload a plugin (if no name given, unload all plugins)
filename: plugin (file) to load
name: a plugin name
arguments: arguments given to plugin on load
Without argument, this command lists loaded plugins.
----
[[command_weechat_print]]
* `+print+`: display text on a buffer
----
/print [-buffer <number>|<name>] [-newbuffer <name>] [-free] [-switch] [-core|-current] [-y <line>] [-escape] [-date <date>] [-tags <tags>] [-action|-error|-join|-network|-quit] [<text>]
-stdout|-stderr [<text>]
-beep
-buffer: display text in this buffer (default: buffer where command is executed)
-newbuffer: create a new buffer and display text in this buffer
-free: create a buffer with free content (with -newbuffer only)
-switch: switch to the buffer
-core: alias of "-buffer core.weechat"
-current: display text on current buffer
-y: display on a custom line (for buffer with free content only)
line: line number for buffer with free content (first line is 0, a negative number displays after last line: -1 = after last line, -2 = two lines after last line, etc.)
-escape: interpret escaped chars (for example \a, \07, \x07)
-date: message date, format can be:
-n: 'n' seconds before now
+n: 'n' seconds in the future
n: 'n' seconds since the Epoch (see man time)
date/time (ISO 8601): yyyy-mm-ddThh:mm:ss, example: 2014-01-19T04:32:55
time: hh:mm:ss (example: 04:32:55)
-tags: comma-separated list of tags (see /help filter for a list of tags most commonly used)
text: text to display (prefix and message must be separated by "\t", if text starts with "-", then add a "\" before)
-stdout: display text on stdout (escaped chars are interpreted)
-stderr: display text on stderr (escaped chars are interpreted)
-beep: alias of "-stderr \a"
The options -action ... -quit use the prefix defined in options "weechat.look.prefix_*".
Following escaped chars are supported:
\" \\ \a \b \e \f \n \r \t \v \0ooo \xhh \uhhhh \Uhhhhhhhh
Examples:
display a reminder on core buffer with a highlight:
/print -core -tags notify_highlight Reminder: buy milk
display an error on core buffer:
/print -core -error Some error here
display message on core buffer with prefix "abc":
/print -core abc\tThe message
display a message on channel #weechat:
/print -buffer irc.freenode.#weechat Message on #weechat
display a snowman (U+2603):
/print -escape \u2603
send alert (BEL):
/print -beep
----
[[command_weechat_proxy]]
* `+proxy+`: manage proxies
----
/proxy list
add <name> <type> <address> <port> [<username> [<password>]]
del <name>|-all
set <name> <option> <value>
list: list all proxies
add: add a new proxy
name: name of proxy (must be unique)
type: http, socks4 or socks5
address: IP or hostname
port: port
username: username (optional)
password: password (optional)
del: delete a proxy (or all proxies with -all)
set: set a value for a proxy property
option: option to change (for options list, look at /set weechat.proxy.<proxyname>.*)
value: new value for option
Examples:
add a http proxy, running on local host, port 8888:
/proxy add local http 127.0.0.1 8888
add a http proxy using IPv6 protocol:
/proxy add local http ::1 8888
/proxy set local ipv6 on
add a socks5 proxy with username/password:
/proxy add myproxy socks5 sample.host.org 3128 myuser mypass
delete a proxy:
/proxy del myproxy
----
[[command_weechat_quit]]
* `+quit+`: quit WeeChat
----
/quit [-yes] [<arguments>]
-yes: required if option "weechat.look.confirm_quit" is enabled
arguments: text sent with signal "quit"
(for example irc plugin uses this text to send quit message to server)
By default when quitting the configuration files are saved (see option "weechat.look.save_config_on_exit") and the current layout can be saved (see option "weechat.look.save_layout_on_exit").
----
[[command_weechat_reload]]
* `+reload+`: reload configuration files from disk
----
/reload [<file> [<file>...]]
file: configuration file to reload (without extension ".conf")
Without argument, all files (WeeChat and plugins) are reloaded.
----
[[command_weechat_repeat]]
* `+repeat+`: execute a command several times
----
/repeat [-interval <delay>[<unit>]] <count> <command>
delay: delay between execution of commands
unit: optional, values are:
ms: milliseconds
s: seconds (default)
m: minutes
h: hours
count: number of times to execute command
command: command to execute (or text to send to buffer if command does not start with '/')
Note: the command is executed on buffer where /repeat was executed (if the buffer does not exist any more, the command is not executed).
Example:
scroll 2 pages up:
/repeat 2 /window page_up
----
[[command_weechat_save]]
* `+save+`: save configuration files to disk
----
/save [<file> [<file>...]]
file: configuration file to save (without extension ".conf")
Without argument, all files (WeeChat and plugins) are saved.
By default all configuration files are saved to disk on /quit command (see option "weechat.look.save_config_on_exit").
----
[[command_weechat_secure]]
* `+secure+`: manage secured data (passwords or private data encrypted in file sec.conf)
----
/secure passphrase <passphrase>|-delete
decrypt <passphrase>|-discard
set <name> <value>
del <name>
passphrase: change the passphrase (without passphrase, data is stored as plain text in file sec.conf)
-delete: delete passphrase
decrypt: decrypt data still encrypted (it happens only if passphrase was not given on startup)
-discard: discard all data still encrypted
set: add or change secured data
del: delete secured data
Without argument, this command displays secured data in a new buffer.
Keys on secure buffer:
alt+v toggle values
When a passphrase is used (data encrypted), it is asked by WeeChat on startup.
It is possible to set environment variable "WEECHAT_PASSPHRASE" to prevent the prompt (this same variable is used by WeeChat on /upgrade), or to set option sec.crypt.passphrase_file to read the passphrase from a file (see /help sec.crypt.passphrase_file).
Secured data with format ${sec.data.xxx} can be used in:
- command /eval
- command line argument "--run-command"
- options weechat.startup.command_{before|after}_plugins
- other options that may contain a password or sensitive data (for example proxy, irc server and relay); see /help on the options to check if they are evaluated.
Examples:
set a passphrase:
/secure passphrase this is my passphrase
encrypt freenode SASL password:
/secure set freenode mypassword
/set irc.server.freenode.sasl_password "${sec.data.freenode}"
encrypt oftc password for nickserv:
/secure set oftc mypassword
/set irc.server.oftc.command "/msg nickserv identify ${sec.data.oftc}"
alias to ghost the nick "mynick":
/alias add ghost /eval /msg -server freenode nickserv ghost mynick ${sec.data.freenode}
----
[[command_weechat_set]]
* `+set+`: set config options and environment variables
----
/set [<option> [<value>]]
diff [<option> [<option>...]]
env [<variable> [<value>]]
option: name of an option (wildcard "*" is allowed to list options, if no value is specified)
value: new value for option, according to type:
boolean: on, off or toggle
integer: number, ++number or --number
string: any string ("" for empty string)
color: color name, ++number or --number
Note: for all types, you can use null to remove option value (undefined value). This works only for some special plugin variables.
diff: display only changed options
env: display or set an environment variable (use value "" to unset a variable)
Examples:
display options about highlight:
/set *highlight*
add a word to highlight:
/set weechat.look.highlight "word"
display changed options:
/set diff
display changed options in irc plugin:
/set diff irc.*
display value of environment variable LANG:
/set env LANG
set environment variable LANG and use it:
/set env LANG fr_FR.UTF-8
/upgrade
unset environment variable ABC:
/set env ABC ""
----
[[command_weechat_unset]]
* `+unset+`: unset/reset config options
----
/unset <option>
-mask <option>
option: name of an option
-mask: use a mask in option (wildcard "*" is allowed to mass-reset options, use carefully!)
According to option, it's reset (for standard options) or removed (for optional settings, like server values).
Examples:
reset one option:
/unset weechat.look.item_time_format
reset all color options:
/unset -mask weechat.color.*
----
[[command_weechat_upgrade]]
* `+upgrade+`: reload the WeeChat binary without disconnecting from servers
----
/upgrade [-yes] [<path_to_binary>|-quit]
-yes: required if option "weechat.look.confirm_upgrade" is enabled
path_to_binary: path to WeeChat binary (default is current binary)
-dummy: do nothing (option used to prevent accidental completion with "-quit")
-quit: close *ALL* connections, save session and quit WeeChat, which makes possible a delayed restoration (see below)
This command upgrades and reloads a running WeeChat session. The new WeeChat binary must have been compiled or installed with a package manager before running this command.
Note: SSL connections are lost during upgrade, because reload of SSL sessions is currently not possible with GnuTLS. There is automatic reconnection after upgrade.
Upgrade process has 4 steps:
1. save session into files for core and plugins (buffers, history, ..)
2. unload all plugins (configuration files (*.conf) are written on disk)
3. save WeeChat configuration (weechat.conf)
4. execute new WeeChat binary and reload session.
With option "-quit", the process is slightly different:
1. close *ALL* connections (irc, xfer, relay, ...)
2. save session into files (*.upgrade)
3. unload all plugins
4. save WeeChat configuration
5. quit WeeChat
Then later you can restore session with command: weechat --upgrade
IMPORTANT: you must restore the session with exactly same configuration (files *.conf).
It is possible to restore WeeChat session on another machine if you copy the content of directory "~/.weechat".
----
[[command_weechat_uptime]]
* `+uptime+`: show WeeChat uptime
----
/uptime [-o|-ol]
-o: send uptime to current buffer as input (English string)
-ol: send uptime to current buffer as input (translated string)
----
[[command_weechat_version]]
* `+version+`: show WeeChat version and compilation date
----
/version [-o|-ol]
-o: send version to current buffer as input (English string)
-ol: send version to current buffer as input (translated string)
The default alias /v can be used to execute this command on all buffers (otherwise the irc command /version is used on irc buffers).
----
[[command_weechat_wait]]
* `+wait+`: schedule a command execution in future
----
/wait <number>[<unit>] <command>
number: amount of time to wait (integer number)
unit: optional, values are:
ms: milliseconds
s: seconds (default)
m: minutes
h: hours
command: command to execute (or text to send to buffer if command does not start with '/')
Note: the command is executed on buffer where /wait was executed (if the buffer does not exist any more, the command is not executed).
Examples:
join channel in 10 seconds:
/wait 10 /join #test
set away in 15 minutes:
/wait 15m /away -all I'm away
say 'hello' in 2 minutes:
/wait 2m hello
----
[[command_weechat_window]]
* `+window+`: manage windows
----
/window list
-1|+1|b#|up|down|left|right [-window <number>]
<number>
splith|splitv [-window <number>] [<pct>]
resize [-window <number>] [h|v][+|-]<pct>
balance
merge [-window <number>] [all]
close [-window <number>]
page_up|page_down [-window <number>]
refresh
scroll [-window <number>] [+|-]<value>[s|m|h|d|M|y]
scroll_horiz [-window <number>] [+|-]<value>[%]
scroll_up|scroll_down|scroll_top|scroll_bottom|scroll_beyond_end|scroll_previous_highlight|scroll_next_highlight|scroll_unread [-window <number>]
swap [-window <number>] [up|down|left|right]
zoom [-window <number>]
bare [<delay>]
list: list opened windows (without argument, this list is displayed)
-1: jump to previous window
+1: jump to next window
b#: jump to next window displaying buffer number #
up: switch to window above current one
down: switch to window below current one
left: switch to window on the left
right: switch to window on the right
number: window number (see /window list)
splith: split current window horizontally (to undo: /window merge)
splitv: split current window vertically (to undo: /window merge)
resize: resize window size, new size is <pct> percentage of parent window
if "h" or "v" is specified, the resize affects the nearest parent window with a split of this type (horizontal/vertical)
balance: balance the sizes of all windows
merge: merge window with another (all = keep only one window)
close: close window
page_up: scroll one page up
page_down: scroll one page down
refresh: refresh screen
scroll: scroll a number of lines (+/-N) or with time: s=seconds, m=minutes, h=hours, d=days, M=months, y=years
scroll_horiz: scroll horizontally a number of columns (+/-N) or percentage of window size (this scrolling is possible only on buffers with free content)
scroll_up: scroll a few lines up
scroll_down: scroll a few lines down
scroll_top: scroll to top of buffer
scroll_bottom: scroll to bottom of buffer
scroll_beyond_end: scroll beyond the end of buffer
scroll_previous_highlight: scroll to previous highlight
scroll_next_highlight: scroll to next highlight
scroll_unread: scroll to unread marker
swap: swap buffers of two windows (with optional direction for target window)
zoom: zoom on window
bare: toggle bare display (with optional delay in seconds for automatic return to standard display mode)
For splith and splitv, pct is a percentage which represents size of new window, computed with current window as size reference. For example 25 means create a new window with size = current_size / 4
Examples:
jump to window displaying buffer #1:
/window b1
scroll 2 lines up:
/window scroll -2
scroll 2 days up:
/window scroll -2d
scroll to beginning of current day:
/window scroll -d
zoom on window #2:
/window zoom -window 2
split window horizontally using 30% of space for the window on top:
/window splith 30
resize window to 75% of the parent window size:
/window resize 75
resize vertical split, add 10% in size:
/window resize v+10
remove the split, keep the current window:
/window merge
close the current window:
/window close
enable bare display for 2 seconds:
/window bare 2
----
// end::weechat_commands[]
// tag::buflist_commands[]
[[command_buflist_buflist]]
* `+buflist+`: bar item with list of buffers
----
/buflist enable|disable|toggle
bar
refresh
enable: enable buflist
disable: disable buflist
toggle: toggle buflist
bar: add the "buflist" bar
refresh: force the refresh of the bar items (buflist, buflist2 and buflist3)
The lines with buffers are displayed using string evaluation (see /help eval for the format), with these options:
- buflist.look.display_conditions: conditions to display a buffer in the list
- buflist.format.buffer: format for a buffer which is not current buffer
- buflist.format.buffer_current: format for the current buffer
The following variables can be used in these options:
- bar item data (see hdata "bar_item" in API doc for a complete list), for example:
- ${bar_item.name}
- window data, where the bar item is displayed (there's no window in root bars, see hdata "window" in API doc for a complete list), for example:
- ${window.number}
- ${window.buffer.full_name}
- buffer data (see hdata "buffer" in API doc for a complete list), for example:
- ${buffer.number}
- ${buffer.name}
- ${buffer.full_name}
- ${buffer.short_name}
- ${buffer.nicklist_nicks_count}
- irc_server: IRC server data, defined only on an IRC buffer (see hdata "irc_server" in API doc)
- irc_channel: IRC channel data, defined only on an IRC channel buffer (see hdata "irc_channel" in API doc)
- extra variables added by buflist for convenience:
- ${format_buffer}: the evaluated value of option buflist.format.buffer; this can be used in option buflist.format.buffer_current to just change the background color for example
- ${current_buffer}: a boolean ("0" or "1"), "1" if this is the current buffer; it can be used in a condition: ${if:${current_buffer}?...:...}
- ${merged}: a boolean ("0" or "1"), "1" if the buffer is merged with at least another buffer; it can be used in a condition: ${if:${merged}?...:...}
- ${format_number}: indented number with separator (evaluation of option buflist.format.number)
- ${number}: indented number, for example " 1" if there are between 10 and 99 buffers; for merged buffers, this variable is set with number for the first buffer and spaces for the next buffers with same number
- ${number2}: indented number, for example " 1" if there are between 10 and 99 buffers
- ${number_displayed}: "1" if the number is displayed, otherwise "0"
- ${indent}: indentation for name (channel and private buffers are indented) (evaluation of option buflist.format.indent)
- ${format_nick_prefix}: colored nick prefix for a channel (evaluation of option buflist.format.nick_prefix)
- ${color_nick_prefix}: color of nick prefix for a channel (set only if the option buflist.look.nick_prefix is enabled)
- ${nick_prefix}: nick prefix for a channel (set only if the option buflist.look.nick_prefix is enabled)
- ${format_name}: formatted name (evaluation of option buflist.format.name)
- ${name}: the short name (if set), with a fallback on the name
- ${color_hotlist}: the color depending on the highest hotlist level for the buffer (evaluation of option buflist.format.hotlist_xxx where xxx is the level)
- ${format_hotlist}: the formatted hotlist (evaluation of option buflist.format.hotlist)
- ${hotlist}: the raw hotlist
- ${hotlist_priority}: "none", "low", "message", "private" or "highlight"
- ${format_lag}: the lag for an IRC server buffer, empty if there's no lag (evaluation of option buflist.format.lag)
----
// end::buflist_commands[]
// tag::charset_commands[]
[[command_charset_charset]]
* `+charset+`: change charset for current buffer
----
/charset decode|encode <charset>
reset
decode: change decoding charset
encode: change encoding charset
charset: new charset for current buffer
reset: reset charsets for current buffer
----
// end::charset_commands[]
// tag::exec_commands[]
[[command_exec_exec]]
* `+exec+`: execute external commands
----
/exec -list
[-sh|-nosh] [-bg|-nobg] [-stdin|-nostdin] [-buffer <name>] [-l|-o|-n|-nf] [-cl|-nocl] [-sw|-nosw] [-ln|-noln] [-flush|-noflush] [-color ansi|auto|irc|weechat|strip] [-rc|-norc] [-timeout <timeout>] [-name <name>] [-pipe <command>] [-hsignal <name>] <command>
-in <id> <text>
-inclose <id> [<text>]
-signal <id> <signal>
-kill <id>
-killall
-set <id> <property> <value>
-del <id>|-all [<id>...]
-list: list commands
-sh: use the shell to execute the command, many commands can be piped (WARNING: use this option ONLY if all arguments are safe, see option -nosh)
-nosh: do not use the shell to execute the command (required if the command has some unsafe data, for example the content of a message from another user) (default)
-bg: run process in background: do not display process output neither return code (not compatible with options -o/-oc/-n/-nf/-pipe/-hsignal)
-nobg: catch process output and display return code (default)
-stdin: create a pipe for sending data to the process (with /exec -in/-inclose)
-nostdin: do not create a pipe for stdin (default)
-buffer: display/send output of command on this buffer (if the buffer is not found, a new buffer with name "exec.exec.xxx" is created)
-l: display locally output of command on buffer (default)
-o: send output of command to the buffer without executing commands (not compatible with options -bg/-pipe/-hsignal)
-oc: send output of command to the buffer and execute commands (lines starting with "/" or another custom command char) (not compatible with options -bg/-pipe/-hsignal)
-n: display output of command in a new buffer (not compatible with options -bg/-pipe/-hsignal)
-nf: display output of command in a new buffer with free content (no word-wrap, no limit on number of lines) (not compatible with options -bg/-pipe/-hsignal)
-cl: clear the new buffer before displaying output
-nocl: append to the new buffer without clear (default)
-sw: switch to the output buffer (default)
-nosw: don't switch to the output buffer
-ln: display line numbers (default in new buffer only)
-noln: don't display line numbers
-flush: display output of command in real time (default)
-noflush: display output of command after its end
-color: action on ANSI colors in output:
ansi: keep ANSI codes as-is
auto: convert ANSI colors to WeeChat/IRC (default)
irc: convert ANSI colors to IRC colors
weechat: convert ANSI colors to WeeChat colors
strip: remove ANSI colors
-rc: display return code (default)
-norc: don't display return code
-timeout: set a timeout for the command (in seconds)
-name: set a name for the command (to name it later with /exec)
-pipe: send the output to a WeeChat/plugin command (line by line); if there are spaces in command/arguments, enclose them with double quotes; variable $line is replaced by the line (by default the line is added after the command, separated by a space) (not compatible with options -bg/-o/-oc/-n/-nf)
-hsignal: send the output as a hsignal (to be used for example in a trigger) (not compatible with options -bg/-o/-oc/-n/-nf)
command: the command to execute; if beginning with "url:", the shell is disabled and the content of URL is downloaded and sent as output
id: command identifier: either its number or name (if set with "-name xxx")
-in: send text on standard input of process
-inclose: same as -in, but stdin is closed after (and text is optional: without text, the stdin is just closed)
-signal: send a signal to the process; the signal can be an integer or one of these names: hup, int, quit, kill, term, usr1, usr2
-kill: alias of "-signal <id> kill"
-killall: kill all running processes
-set: set a hook property (see function hook_set in plugin API reference)
property: hook property
value: new value for hook property
-del: delete a terminated command
-all: delete all terminated commands
Default options can be set in the option exec.command.default_options.
Examples:
/exec -n ls -l /tmp
/exec -sh -n ps xu | grep weechat
/exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx
/exec -nf -noln links -dump https://weechat.org/files/doc/devel/weechat_user.en.html
/exec -o uptime
/exec -pipe "/print Machine uptime:" uptime
/exec -n tail -f /var/log/messages
/exec -kill 0
----
// end::exec_commands[]
// tag::fifo_commands[]
[[command_fifo_fifo]]
* `+fifo+`: fifo plugin configuration
----
/fifo enable|disable|toggle
enable: enable FIFO pipe
disable: disable FIFO pipe
toggle: toggle FIFO pipe
FIFO pipe is used as remote control of WeeChat: you can send commands or text to the FIFO pipe from your shell.
By default the FIFO pipe is in ~/.weechat/weechat_fifo
The expected format is one of:
plugin.buffer *text or command here
*text or command here
For example to change your freenode nick:
echo 'irc.server.freenode */nick newnick' >~/.weechat/weechat_fifo
Please read the user's guide for more info and examples.
Examples:
/fifo toggle
----
// end::fifo_commands[]
// tag::fset_commands[]
[[command_fset_fset]]
* `+fset+`: fast set WeeChat and plugins options
----
/fset -bar
-refresh
-up|-down [<number>]
-left|-right [<percent>]
-go <line>|end
-toggle
-add [<value>]
-reset
-unset
-set
-setnew
-append
-mark
-format
-export [-help|-nohelp] <filename>
<filter>
-bar: add the help bar
-refresh: refresh list of options, then whole screen (command: /window refresh)
-up: move the selected line up by "number" lines
-down: move the selected line down by "number" lines
-left: scroll the fset buffer by "percent" of width on the left
-right: scroll the fset buffer by "percent" of width on the right
-go: select a line by number, first line number is 0 ("end" to select the last line)
-toggle: toggle the boolean value
-add: add "value" (which can be a negative number) for integers and colors, set/append to value for other types (set for a negative value, append for a positive value)
-reset: reset the value of option
-unset: unset the option
-set: add the /set command in input to edit the value of option (move the cursor at the beginning of value)
-setnew: add the /set command in input to edit a new value for the option
-append: add the /set command to append something in the value of option (move the cursor at the end of value)
-mark: toggle mark
-format: switch to the next available format
-export: export the options and values displayed in a file (each line has format: "/set name value" or "/unset name")
-help: force writing of help on options in exported file (see /help fset.look.export_help_default)
-nohelp: do not write help on options in exported file (see /help fset.look.export_help_default)
filter: set a new filter to see only matching options (this filter can be used as input in fset buffer as well); allowed formats are:
* show all options (no filter)
xxx show only options with "xxx" in name
f:xxx show only configuration file "xxx"
t:xxx show only type "xxx" (bool/int/str/col)
d show only changed options
d:xxx show only changed options with "xxx" in name
d=xxx show only changed options with "xxx" in value
d==xxx show only changed options with exact value "xxx"
h=xxx show only options with "xxx" in description (translated)
he=xxx show only options with "xxx" in description (in English)
=xxx show only options with "xxx" in value
==xxx show only options with exact value "xxx"
c:xxx show only options matching the evaluated condition "xxx", using following variables: file, section, option, name, parent_name, type, type_en, type_short (bool/int/str/col), type_tiny (b/i/s/c), default_value, default_value_undef, value, quoted_value, value_undef, value_changed, parent_value, min, max, description, description2, description_en, description_en2, string_values
The lines with options are displayed using string evaluation (see /help eval for the format), with these options:
- fset.format.option1: first format for an option
- fset.format.option2: second format for an option
The following variables can be used in these options:
- option data, with color and padded by spaces on the right:
- ${file}: configuration file (for example "weechat" or "irc")
- ${section}: section
- ${option}: option name
- ${name}: full option name (file.section.option)
- ${parent_name}: parent option name
- ${type}: option type (translated)
- ${type_en}: option type (in English)
- ${type_short}: short option type (bool/int/str/col)
- ${type_tiny}: tiny option type (b/i/s/c)
- ${default_value}: option default value
- ${default_value_undef}: "1" if default value is null, otherwise "0"
- ${value}: option value
- ${value_undef}: "1" if value is null, otherwise "0"
- ${value_changed}: "1" if value is different from default value, otherwise "0"
- ${value2}: option value, with inherited value if null
- ${parent_value}: parent option value
- ${min}: min value
- ${max}: max value
- ${description}: option description (translated)
- ${description2}: option description (translated), "(no description)" (translated) if there's no description
- ${description_en}: option description (in English)
- ${description_en2}: option description (in English), "(no description)" if there's no description
- ${string_values}: string values allowed for set of an integer option using strings
- ${marked}: "1" if option is marked, otherwise "0"
- ${index}: index of option in list
- option data, with color but no spaces:
- same names prefixed by underscore, for example: ${_name}, ${_type}, ...
- option data, raw format (no colors/spaces):
- same names prefixed by two underscores, for example: ${__name}, ${__type}, ...
- option data, only spaces:
- same names prefixed with "empty_", for example: ${empty_name}, ${empty_type}
- other data:
- ${selected_line}: "1" if the line is selected, otherwise "0"
- ${newline}: insert a new line at point, so the option is displayed on multiple lines
Keys and input to move in on fset buffer:
up move one line up
down move one line down
pgup move one page up
pgdn move one page down
alt-home << move to first line
alt-end >> move to last line
F11 < scroll horizontally on the left
F12 > scroll horizontally on the right
Keys and input to set options on fset buffer:
alt+space t toggle boolean value
alt+'-' - subtract 1 from value for integer/color, set value for other types
alt+'+' + add 1 to value for integer/color, append to value for other types
alt+f, alt+r r reset value
alt+f, alt+u u unset value
alt+enter s set value
alt+f, alt+n n set new value
alt+f, alt+a a append to value
alt+',' , mark/unmark option
shift+up move one line up and mark/unmark option
shift+down mark/unmark option and move one line down
m:xxx mark options displayed that are matching filter "xxx" (any filter on option or value is allowed, see filters above)
u:xxx unmark options displayed that are matching filter "xxx" (any filter on option or value is allowed, see filters above)
Other keys and input on fset buffer:
ctrl+L refresh options and whole screen (command: /fset -refresh)
$ refresh options (keep marked options)
$$ refresh options (unmark all options)
alt+p p toggle plugin description options (plugins.desc.*)
alt+v v toggle help bar
s:x,y sort options by fields x,y (see /help fset.look.sort)
s: reset sort to its default value (see /help fset.look.sort)
w:xxx export options in file "xxx"
w-:xxx export options in file "xxx" without help
w+:xxx export options in file "xxx" with help
ctrl+X x switch the format used to display options
q close fset buffer
Mouse actions on fset buffer:
wheel up/down move line up/down
left button move line here
right button toggle boolean (on/off) or edit the option value
right button + drag left/right increase/decrease value for integer/color, set/append to value for other types
right button + drag up/down mark/unmark multiple options
Note: if input has one or more leading spaces, the following text is interpreted as a filter, without the spaces. For example " q" searches all options with "q" inside name while "q" closes the fset buffer.
Examples:
show IRC options changed:
/fset d:irc.*
show all options with "nicklist" in name:
/fset nicklist
show all values which contain "red":
/fset =red
show all values which are exactly "red":
/fset ==red
show all integer options in irc plugin:
/fset c:${file} == irc && ${type_en} == integer
----
// end::fset_commands[]
// tag::guile_commands[]
[[command_guile_guile]]
* `+guile+`: list/load/unload scripts
----
/guile list|listfull [<name>]
load [-q] <filename>
autoload
reload|unload [-q] [<name>]
eval [-o|-oc] <code>
version
list: list loaded scripts
listfull: list loaded scripts (verbose)
load: load a script
autoload: load all scripts in "autoload" directory
reload: reload a script (if no name given, unload all scripts, then load all scripts in "autoload" directory)
unload: unload a script (if no name given, unload all scripts)
filename: script (file) to load
-q: quiet mode: do not display messages
name: a script name (name used in call to "register" function)
eval: evaluate source code and display result on current buffer
-o: send evaluation result to the buffer without executing commands
-oc: send evaluation result to the buffer and execute commands
code: source code to evaluate
version: display the version of interpreter used
Without argument, this command lists all loaded scripts.
----
// end::guile_commands[]
// tag::javascript_commands[]
[[command_javascript_javascript]]
* `+javascript+`: list/load/unload scripts
----
/javascript list|listfull [<name>]
load [-q] <filename>
autoload
reload|unload [-q] [<name>]
eval [-o|-oc] <code>
version
list: list loaded scripts
listfull: list loaded scripts (verbose)
load: load a script
autoload: load all scripts in "autoload" directory
reload: reload a script (if no name given, unload all scripts, then load all scripts in "autoload" directory)
unload: unload a script (if no name given, unload all scripts)
filename: script (file) to load
-q: quiet mode: do not display messages
name: a script name (name used in call to "register" function)
eval: evaluate source code and display result on current buffer
-o: send evaluation result to the buffer without executing commands
-oc: send evaluation result to the buffer and execute commands
code: source code to evaluate
version: display the version of interpreter used
Without argument, this command lists all loaded scripts.
----
// end::javascript_commands[]
// tag::logger_commands[]
[[command_logger_logger]]
* `+logger+`: logger plugin configuration
----
/logger list
set <level>
flush
disable
list: show logging status for opened buffers
set: set logging level on current buffer
level: level for messages to be logged (0 = logging disabled, 1 = a few messages (most important) .. 9 = all messages)
flush: write all log files now
disable: disable logging on current buffer (set level to 0)
Options "logger.level.*" and "logger.mask.*" can be used to set level or mask for a buffer, or buffers beginning with name.
Log levels used by IRC plugin:
1: user message (channel and private), notice (server and channel)
2: nick change
3: server message
4: join/part/quit
9: all other messages
Examples:
set level to 5 for current buffer:
/logger set 5
disable logging for current buffer:
/logger disable
set level to 3 for all IRC buffers:
/set logger.level.irc 3
disable logging for main WeeChat buffer:
/set logger.level.core.weechat 0
use a directory per IRC server and a file per channel inside:
/set logger.mask.irc "$server/$channel.weechatlog"
----
// end::logger_commands[]
// tag::lua_commands[]
[[command_lua_lua]]
* `+lua+`: list/load/unload scripts
----
/lua list|listfull [<name>]
load [-q] <filename>
autoload
reload|unload [-q] [<name>]
eval [-o|-oc] <code>
version
list: list loaded scripts
listfull: list loaded scripts (verbose)
load: load a script
autoload: load all scripts in "autoload" directory
reload: reload a script (if no name given, unload all scripts, then load all scripts in "autoload" directory)
unload: unload a script (if no name given, unload all scripts)
filename: script (file) to load
-q: quiet mode: do not display messages
name: a script name (name used in call to "register" function)
eval: evaluate source code and display result on current buffer
-o: send evaluation result to the buffer without executing commands
-oc: send evaluation result to the buffer and execute commands
code: source code to evaluate
version: display the version of interpreter used
Without argument, this command lists all loaded scripts.
----
// end::lua_commands[]
// tag::xfer_commands[]
[[command_xfer_me]]
* `+me+`: send a CTCP action to remote host
----
/me <message>
message: message to send
----
[[command_xfer_xfer]]
* `+xfer+`: xfer control
----
/xfer [list|listfull]
list: list xfer
listfull: list xfer (verbose)
Without argument, this command opens buffer with xfer list.
----
// end::xfer_commands[]
// tag::perl_commands[]
[[command_perl_perl]]
* `+perl+`: list/load/unload scripts
----
/perl list|listfull [<name>]
load [-q] <filename>
autoload
reload|unload [-q] [<name>]
eval [-o|-oc] <code>
version
list: list loaded scripts
listfull: list loaded scripts (verbose)
load: load a script
autoload: load all scripts in "autoload" directory
reload: reload a script (if no name given, unload all scripts, then load all scripts in "autoload" directory)
unload: unload a script (if no name given, unload all scripts)
filename: script (file) to load
-q: quiet mode: do not display messages
name: a script name (name used in call to "register" function)
eval: evaluate source code and display result on current buffer
-o: send evaluation result to the buffer without executing commands
-oc: send evaluation result to the buffer and execute commands
code: source code to evaluate
version: display the version of interpreter used
Without argument, this command lists all loaded scripts.
----
// end::perl_commands[]
// tag::php_commands[]
[[command_php_php]]
* `+php+`: list/load/unload scripts
----
/php list|listfull [<name>]
load [-q] <filename>
autoload
reload|unload [-q] [<name>]
eval [-o|-oc] <code>
version
list: list loaded scripts
listfull: list loaded scripts (verbose)
load: load a script
autoload: load all scripts in "autoload" directory
reload: reload a script (if no name given, unload all scripts, then load all scripts in "autoload" directory)
unload: unload a script (if no name given, unload all scripts)
filename: script (file) to load
-q: quiet mode: do not display messages
name: a script name (name used in call to "register" function)
eval: evaluate source code and display result on current buffer
-o: send evaluation result to the buffer without executing commands
-oc: send evaluation result to the buffer and execute commands
code: source code to evaluate
version: display the version of interpreter used
Without argument, this command lists all loaded scripts.
----
// end::php_commands[]
// tag::python_commands[]
[[command_python_python]]
* `+python+`: list/load/unload scripts
----
/python list|listfull [<name>]
load [-q] <filename>
autoload
reload|unload [-q] [<name>]
eval [-o|-oc] <code>
version
list: list loaded scripts
listfull: list loaded scripts (verbose)
load: load a script
autoload: load all scripts in "autoload" directory
reload: reload a script (if no name given, unload all scripts, then load all scripts in "autoload" directory)
unload: unload a script (if no name given, unload all scripts)
filename: script (file) to load
-q: quiet mode: do not display messages
name: a script name (name used in call to "register" function)
eval: evaluate source code and display result on current buffer
-o: send evaluation result to the buffer without executing commands
-oc: send evaluation result to the buffer and execute commands
code: source code to evaluate
version: display the version of interpreter used
Without argument, this command lists all loaded scripts.
----
// end::python_commands[]
// tag::relay_commands[]
[[command_relay_relay]]
* `+relay+`: relay control
----
/relay list|listfull|listrelay
add <name> <port>|<path>
del|start|restart|stop <name>
raw
sslcertkey
list: list relay clients (only active relays)
listfull: list relay clients (verbose, all relays)
listrelay: list relays (name and port)
add: add a relay (listen on a port/path)
del: remove a relay (clients remain connected)
start: listen on port
restart: close the server socket and listen again on port (clients remain connected)
stop: close the server socket (clients remain connected)
name: relay name (see format below)
port: port used for relay
path: path used for relay (for UNIX domain socket only); "%h" at beginning of string is replaced by WeeChat home ("~/.weechat" by default), content is evaluated (see /help eval)
raw: open buffer with raw Relay data
sslcertkey: set SSL certificate/key using path in option relay.network.ssl_cert_key
Relay name is: [ipv4.][ipv6.][ssl.]<protocol.name> or unix.[ssl.]<protocol.name>
ipv4: force use of IPv4
ipv6: force use of IPv6
ssl: enable SSL
unix: use UNIX domain socket
protocol.name: protocol and name to relay:
- protocol "irc": name is the server to share (optional, if not given, the server name must be sent by client in command "PASS", with format: "PASS server:password")
- protocol "weechat" (name is not used)
The "irc" protocol allows any IRC client (including WeeChat itself) to connect on the port.
The "weechat" protocol allows a remote interface to connect on the port, see the list here: https://weechat.org/about/interfaces
Without argument, this command opens buffer with list of relay clients.
Examples:
irc proxy, for server "freenode":
/relay add irc.freenode 8000
irc proxy, for server "freenode", with SSL:
/relay add ssl.irc.freenode 8001
irc proxy, for all servers (client will choose), with SSL:
/relay add ssl.irc 8002
weechat protocol:
/relay add weechat 9000
weechat protocol with SSL:
/relay add ssl.weechat 9001
weechat protocol with SSL, using only IPv4:
/relay add ipv4.ssl.weechat 9001
weechat protocol with SSL, using only IPv6:
/relay add ipv6.ssl.weechat 9001
weechat protocol with SSL, using IPv4 + IPv6:
/relay add ipv4.ipv6.ssl.weechat 9001
weechat protocol over UNIX domain socket:
/relay add unix.weechat %h/relay_socket
----
// end::relay_commands[]
// tag::ruby_commands[]
[[command_ruby_ruby]]
* `+ruby+`: list/load/unload scripts
----
/ruby list|listfull [<name>]
load [-q] <filename>
autoload
reload|unload [-q] [<name>]
eval [-o|-oc] <code>
version
list: list loaded scripts
listfull: list loaded scripts (verbose)
load: load a script
autoload: load all scripts in "autoload" directory
reload: reload a script (if no name given, unload all scripts, then load all scripts in "autoload" directory)
unload: unload a script (if no name given, unload all scripts)
filename: script (file) to load
-q: quiet mode: do not display messages
name: a script name (name used in call to "register" function)
eval: evaluate source code and display result on current buffer
-o: send evaluation result to the buffer without executing commands
-oc: send evaluation result to the buffer and execute commands
code: source code to evaluate
version: display the version of interpreter used
Without argument, this command lists all loaded scripts.
----
// end::ruby_commands[]
// tag::script_commands[]
[[command_script_script]]
* `+script+`: WeeChat script manager
----
/script list [-o|-ol|-i|-il]
search <text>
show <script>
load|unload|reload <script> [<script>...]
autoload|noautoload|toggleautoload <script> [<script>...]
install|remove|installremove|hold [-q] <script> [<script>...]
upgrade
update
list: list loaded scripts (all languages)
-o: send list of loaded scripts to buffer (string in English)
-ol: send list of loaded scripts to buffer (translated string)
-i: copy list of loaded scripts in command line (for sending to buffer) (string in English)
-il: copy list of loaded scripts in command line (for sending to buffer) (translated string)
search: search scripts by tags, language (python, perl, ...), filename extension (py, pl, ...) or text; result is displayed on scripts buffer
show: show detailed info about a script
load: load script(s)
unload: unload script(s)
reload: reload script(s)
autoload: autoload the script
noautoload: do not autoload the script
toggleautoload: toggle autoload
install: install/upgrade script(s)
remove: remove script(s)
installremove: install or remove script(s), depending on current state
hold: hold/unhold script(s) (a script held will not be upgraded any more and cannot be removed)
-q: quiet mode: do not display messages
upgrade: upgrade all installed scripts which are obsolete (new version available)
update: update local scripts cache
Without argument, this command opens a buffer with list of scripts.
On script buffer, the possible status for each script are:
* i a H r N
| | | | | |
| | | | | obsolete (new version available)
| | | | running (loaded)
| | | held
| | autoloaded
| installed
popular script
Keys on script buffer:
alt+i install script
alt+r remove script
alt+l load script
alt+L reload script
alt+u unload script
alt+A autoload script
alt+h (un)hold script
alt+v view script
Input allowed on script buffer:
i/r/l/L/u/A/h/v action on script (same as keys above)
q close buffer
$ refresh buffer
s:x,y sort buffer using keys x and y (see /help script.look.sort)
s: reset sort (use default sort)
word(s) filter scripts: search word(s) in scripts (description, tags, ...)
* remove filter
Mouse actions on script buffer:
wheel scroll list
left button select script
right button install/remove script
Examples:
/script search url
/script install go.py urlserver.py
/script remove go.py
/script hold urlserver.py
/script reload urlserver
/script upgrade
----
// end::script_commands[]
// tag::spell_commands[]
[[command_spell_spell]]
* `+spell+`: spell plugin configuration
----
/spell enable|disable|toggle
listdict
setdict <dict>[,<dict>...]
deldict
addword [<dict>] <word>
enable: enable spell checker
disable: disable spell checker
toggle: toggle spell checker
listdict: show installed dictionaries
setdict: set dictionary for current buffer (multiple dictionaries can be separated by a comma)
deldict: delete dictionary used on current buffer
addword: add a word in personal dictionary
Input line beginning with a '/' is not checked, except for some commands (see /set spell.check.commands).
To enable spell checker on all buffers, use option "default_dict", then enable spell checker, for example:
/set spell.check.default_dict "en"
/spell enable
To display a list of suggestions in a bar, use item "spell_suggest".
Default key to toggle spell checker is alt-s.
----
// end::spell_commands[]
// tag::tcl_commands[]
[[command_tcl_tcl]]
* `+tcl+`: list/load/unload scripts
----
/tcl list|listfull [<name>]
load [-q] <filename>
autoload
reload|unload [-q] [<name>]
eval [-o|-oc] <code>
version
list: list loaded scripts
listfull: list loaded scripts (verbose)
load: load a script
autoload: load all scripts in "autoload" directory
reload: reload a script (if no name given, unload all scripts, then load all scripts in "autoload" directory)
unload: unload a script (if no name given, unload all scripts)
filename: script (file) to load
-q: quiet mode: do not display messages
name: a script name (name used in call to "register" function)
eval: evaluate source code and display result on current buffer
-o: send evaluation result to the buffer without executing commands
-oc: send evaluation result to the buffer and execute commands
code: source code to evaluate
version: display the version of interpreter used
Without argument, this command lists all loaded scripts.
----
// end::tcl_commands[]
// tag::trigger_commands[]
[[command_trigger_trigger]]
* `+trigger+`: manage triggers, the Swiss Army knife for WeeChat
----
/trigger list|listfull|listdefault
add|addoff|addreplace <name> <hook> ["<arguments>" ["<conditions>" ["<regex>" ["<command>" ["<return_code>" ["<post_action>"]]]]]]
addinput [<hook>]
input|output|recreate <name>
set <name> <option> <value>
rename|copy <name> <new_name>
enable|disable|toggle [<name>|-all [<name>...]]
restart <name>|-all [<name>...]
show <name>
del <name>|-all [<name>...]
restore <name> [<name>...]
default -yes
monitor [<filter>]
list: list triggers (without argument, this list is displayed)
listfull: list triggers with detailed info for each trigger
listdefault: list default triggers
add: add a trigger
addoff: add a trigger (disabled)
addreplace: add or replace an existing trigger
name: name of trigger
hook: signal, hsignal, modifier, line, print, command, command_run, timer, config, focus, info, info_hashtable
arguments: arguments for the hook, depending on hook (separated by semicolons):
signal: name(s) of signal (required)
hsignal: name(s) of hsignal (required)
modifier: name(s) of modifier (required)
line: buffer type ("formatted", "free" or "*"), list of buffer masks, tags
print: buffer, tags, message, strip colors
command: command (required), description, arguments, description of arguments, completion (all arguments except command are evaluated, see /help eval)
command_run: command(s) (required)
timer: interval (required), align on second, max calls
config: name(s) of option (required)
focus: name(s) of area (required)
info: name(s) of info (required)
info_hashtable: name(s) of info (required)
conditions: evaluated conditions for the trigger
regex: one or more regular expressions to replace strings in variables
command: command to execute (many commands can be separated by ";")
return_code: return code in callback (ok (default), ok_eat, error)
post_action: action to take after execution (none (default), disable, delete)
addinput: set input with default arguments to create a trigger
input: set input with the command used to create the trigger
output: send the command to create the trigger on the buffer
recreate: same as "input", with option "addreplace" instead of "add"
set: set an option in a trigger
option: name of option: name, hook, arguments, conditions, regex, command, return_code
(for help on option, you can type: /help trigger.trigger.<name>.<option>)
value: new value for the option
rename: rename a trigger
copy: copy a trigger
enable: enable trigger(s) (without arguments: enable triggers globally)
disable: disable trigger(s) (without arguments: disable triggers globally)
toggle: toggle trigger(s) (without arguments: toggle triggers globally)
restart: restart trigger(s) (recreate the hooks)
show: show detailed info on a trigger (with some stats)
del: delete a trigger
-all: do action on all triggers
restore: restore trigger(s) with the default values (works only for default triggers)
default: delete all triggers and restore default ones
monitor: open the trigger monitor buffer, with optional filter:
filter: filter hooks/triggers to display (a hook must start with "@", for example "@signal"), many filters can be separated by commas; wildcard "*" is allowed in each trigger name
When a trigger callback is called, following actions are performed, in this order:
1. check conditions; if false, exit
2. replace text using POSIX extended regular expression(s) (if defined in trigger)
3. execute command(s) (if defined in trigger)
4. exit with a return code (except for modifier, line, focus, info and info_hashtable)
5. perform post action
Examples (you can also look at default triggers with /trigger listdefault):
add text attributes *bold*, _underline_ and /italic/ (only in user messages):
/trigger add effects modifier weechat_print "${tg_tag_nick}" "==\*([^ ]+)\*==*${color:bold}${re:1}${color:-bold}*== ==_([^ ]+)_==_${color:underline}${re:1}${color:-underline}_== ==/([^ ]+)/==/${color:italic}${re:1}${color:-italic}/"
hide nicklist bar on small terminals:
/trigger add resize_small signal signal_sigwinch "${info:term_width} < 100" "" "/bar hide nicklist"
/trigger add resize_big signal signal_sigwinch "${info:term_width} >= 100" "" "/bar show nicklist"
silently save config each hour:
/trigger add cfgsave timer 3600000;0;0 "" "" "/mute /save"
open trigger monitor and show only modifiers and triggers whose name starts with "resize":
/trigger monitor @modifier,resize*
----
// end::trigger_commands[]