WeeChat DevCenter

Tuesday, January 3 2012

Support of Python 3

WeeChat can now compile with Python 3.x (successfully tested with Python 3.1 and 3.2).
This is still experimental and recommended Python for WeeChat remains version 2.7.

Some scripts (including weeget.py) have been updated for Python 3.x, they have tag "py3k-ok" on the scripts page: http://weechat.org/scripts/stable/tag/py3k-ok/

Python versions supported by WeeChat:

  • 2.5: many scripts require at least 2.6 - NOT recommended
  • 2.6: all scripts should work fine
  • 2.7: recommended version (all scripts are guaranteed to work with this version)
  • 3.x: experimental, should be used only for tests

Note that "python" plugin in WeeChat can support only one version, so it can be a 2.x or 3.x, not both at same time.

Sunday, December 25 2011

QWeeChat - Python/Qt GUI

Christmas gift: "QWeeChat", the first remote interface for WeeChat. It is written in Python, using Qt toolkit.

This is an alpha version of this interface, only some features are implemented, but it's usable as-is.

The source code is available on download page, and requires latest development version of WeeChat.
New versions will follow, as well as interfaces for other systems like mobile devices (first should be Android).

A screenshot of QWeeChat in action (click for full size):


Merry Christmas and happy new year 2012 with WeeChat and QWeeChat!

Tuesday, November 1 2011

So many ways to go to first buffer...

  1. key alt+1
  2. key alt+j, then 0, then 1
  3. key F5 *
  4. key F6 *
  5. key ctrl-p *
  6. key ctrl-n *
  7. key alt+left *
  8. key alt+right *
  9. key alt+up *
  10. key alt+down *
  11. key alt+a (if buffer #1 is first in hotlist)
  12. left mouse button with long gesture to the left (with mouse enabled)
  13. command /buffer 1
  14. command /buffer core.weechat (if core buffer is #1)
  15. command /buffer close 2-99999 (joke! - this will destroy all buffers and keep only buffer(s) with number 1)
  16. command /buffer move 1 (joke! - current buffer will become #1)

There are other ways with scripts, but it's cheating!

* : press key many times until you reach buffer #1.

Monday, October 31 2011

Shorten URLs with own HTTP server

Don't panic with long URLs and don't give your private URLs any more to shortening services!
A new script urlserver.py has been added. This script shortens URLs displayed and serve them using own HTTP server, which can be used to display a list of all URLs as well.

Many options are available to customize shortening of URLs, display in WeeChat and HTML page (see /help urlserver and /set plugins.var.python.urlserver.*).

The URLs are saved into ~/.weechat/urlserver_list.txt when script is unloaded, so that URLs are persistent when you restart WeeChat.

A screenshot of HTML page with list of URLs (click for full size):


Friday, October 28 2011

Change short name of buffers

The short name of buffers can be changed with /buffer set short_name <new_name> command. This might be useful for long channel names displayed in the buffers bar (with script buffers.pl).

For example on channel #weechat:

/buffer set short_name #wee

New value is used immediately, but is not saved in config file. To make it persistent, you have to use script buffer_autoset.py:

/autosetbuffer add irc.freenode.#weechat short_name #wee

Note1: it's not recommended to set short name of query buffers, because WeeChat will change name of buffer when nick changes.

Note2: you should use command /buffer set with precautions, it is not recommended to change other buffer properties if you're not sure about what you do. This could lead to weird behaviour or a crash.

Thursday, October 27 2011

New plugin Guile

A new plugin called "guile" has been added to WeeChat. You can now load and execute Scheme scripts in WeeChat!

WeeChat now supports Python, Perl, Ruby, Lua, Tcl and Guile!

To load/unload scheme scripts, command is /guile with same syntax as other script languages:

/guile load /path/to/example.scm
/guile reload example
/guile unload example

An example of script:

;; example.scm
(weechat:register "example" "FlashCode" "0.1" "GPL3" "Scheme script" "" "")
(weechat:print "" "Hey, I'm a scheme script for WeeChat!")

Saturday, October 22 2011

Version 0.3.6

Version 0.3.6 is available!

As usual, many new features and bug fixes, see ChangeLog for detail.

Important: please read the release notes if you are upgrading to this version (from any other version).

New major features in this release:

  • mouse support (see this post)
  • cursor mode (free movement of cursor on screen)
  • contexts for keys (default, search, cursor, mouse)
  • hdata in API (direct access to WeeChat data)
  • "inactive" colors for inactive windows and lines in merged buffers (see this post)
  • support of merged buffers in /layout, save layout of buffers/windows on /upgrade (see this post)
  • horizontal scrolling in buffers with free content
  • split of outgoing IRC messages
  • options for "more" chars in bars
  • bold not used any more for basic colors (if terminal has more than 16 colors)
  • automatic zoom on current window when terminal becomes too small for windows
  • new command /repeat
  • local variable "highlight_regex" in buffers

New options:

  • weechat.look.bar_more_down
  • weechat.look.bar_more_left
  • weechat.look.bar_more_right
  • weechat.look.bar_more_up
  • weechat.look.color_basic_force_bold
  • weechat.look.color_inactive_buffer
  • weechat.look.color_inactive_message
  • weechat.look.color_inactive_prefix
  • weechat.look.color_inactive_prefix_buffer
  • weechat.look.color_inactive_time
  • weechat.look.color_inactive_window
  • weechat.look.eat_newline_glitch
  • weechat.look.item_buffer_filter
  • weechat.look.mouse
  • weechat.look.mouse_timer_delay
  • weechat.look.separator_horizontal
  • weechat.look.separator_vertical
  • weechat.color.chat_inactive_buffer
  • weechat.color.chat_inactive_window
  • weechat.color.chat_prefix_buffer_inactive_buffer
  • weechat.color.chat_tags
  • logger.file.flush_delay

New keys:

  • alt + "m": toggle mouse (/mouse toggle)

New keys have been added for context "cursor" and "mouse", please see documentation.

Note: to add missing keys, you can use command /key missing

Sunday, October 2 2011

Game Minesweeper

A new script minesweeper.py is now available, the famous Minesweeper game!

If you are using weeget, just do: /weeget install minesweeper.py

256 colors mode is highly recommended, and mouse support (with WeeChat >= 0.3.6). If you have 16 colors or less, you can do: /minesweeper 16col

For help: /help minesweeper.

Screenshot (click for full size):



Friday, September 23 2011

Inactive colors

New "inactive" colors have been added, to use a different text color for inactive windows or inactive lines (lines from merged buffer which is not selected).

Some options have been added to control display of inactive color, and of course inactive color themselves.

The first two options control wheter inactive colors are used for inactive windows or inactive lines in merged buffers:

  • /set weechat.look.color_inactive_window (default: off)
  • /set weechat.look.color_inactive_buffer (default: off)

Some options are used to specify if time/prefix_buffer/prefix/message will use inactive colors or not:

  • /set weechat.look.color_inactive_time (default: off)
  • /set weechat.look.color_inactive_prefix_buffer (default: on)
  • /set weechat.look.color_inactive_prefix (default: on)
  • /set weechat.look.color_inactive_message (default: on)

And finally, the three new colors used for inactive windows and inactive lines in merged buffers:

  • /set weechat.color.chat_inactive_window (default: darkgray, suggested: 245)
  • /set weechat.color.chat_inactive_buffer (default: darkgray, suggested: 245)
  • /set weechat.color.chat_prefix_buffer_inactive_buffer (default: darkgray, suggested: 58)

Sunday, August 28 2011

Beautify your WeeChat

Some tips to beautify your WeeChat, using unicode chars and some colors.

Unicode chars (your locale must be UTF-8)

A full line for separator between prefix (usually nick) and messages:

/set weechat.look.prefix_suffix "│"

Full line for read marker:

/set weechat.look.read_marker_string "─"

Arrows for join/quit (be careful, impact on log files):

/set weechat.look.prefix_join "▬▬▶"
/set weechat.look.prefix_quit "◀▬▬"

String for bar item "buffer_filter" (WeeChat >= 0.3.6):

/set weechat.look.item_buffer_filter "•"

"More" indicators in bars (WeeChat >= 0.3.6):

/set weechat.look.bar_more_down "▼"
/set weechat.look.bar_more_left "◀"
/set weechat.look.bar_more_right "▶"
/set weechat.look.bar_more_up "▲"

Colors (for WeeChat >= 0.3.5 with a terminal supporting 256 colors)

Time with gray shading, and no colon separator (WeeChat >= 0.3.5):

/set weechat.look.buffer_time_format "${252}%H${245}%M${240}%S"

Note: updated in WeeChat 0.4.2, the syntax is now:

/set weechat.look.buffer_time_format "${color:252}%H${color:245}%M${color:240}%S"

Another "blue" for background of title and status bars:

/set weechat.bar.title.color_bg 60
/set weechat.bar.status.color_bg 60

Some dark colors for delimiters, host,...:

/set weechat.color.chat_delimiters 29
/set weechat.color.chat_host 24
/set weechat.color.chat_prefix_suffix 24
/set weechat.color.nicklist_away 244
/set weechat.color.separator 60
/set irc.color.reason_quit  244
/set irc.color.topic_new  36
/set irc.color.topic_old 244

More nick colors: add for example "31,35,38,40,49,63,70,80,92,99,112,126,130,138,142,148,160,162,167,169,174,176,178,184,186,210,212,215,247" to nick colors:

/set weechat.color.chat_nick_colors "cyan,magenta,green,brown,lightblue,default,lightcyan,lightmagenta,lightgreen,blue,31,35,38,40,49,63,70,80,92,99,112,126,130,138,142,148,160,162,167,169,174,176,178,184,186,210,212,215,247"

Saturday, August 20 2011

Game Flood'it

A new script floodit.py is now available! You can now play to Flood'it inside WeeChat, with following features:

  • single mode
  • versus mode (play vs computer)
  • demo mode
  • 3 different board sizes.

If you are using weeget, just do: /weeget install floodit.py

For help: /help floodit.

Note: mouse is supported with latest devel version of WeeChat (0.3.6-dev).

Screenshot (click for full size):



Saturday, August 6 2011

New features for layout

The layout has improved, here is the list of new features and a bug fixed:

  • merged buffers are now supported in layout: WeeChat will auto merge buffers when they are opened and on /layout apply
  • the layout for windows and buffers is automatically restored after /upgrade (not the layout saved, but the layout you had immediately before doing /upgrade)
  • an old bug was causing bad order of buffers when connecting to many servers at same time, and then /layout apply was required after starting WeeChat


Tuesday, July 26 2011

Mouse support and free movement of cursor

Mouse support has been added to WeeChat, and a "cursor" mode: a mode when you can move cursor everywhere and do actions with keys on focused area.

New commands added:


Before using mouse, add missing keys:

/key missing

Mouse events (clicks on buttons, gestures) are caught as special "keys", in context "mouse". For a list of default events, you can look at documentation (default keys) or output of this command in WeeChat:

/key list mouse

Mouse is not enabled by default. To enable it (at startup and now), do:

/set weechat.look.mouse on
/mouse enable

When mouse is enabled, you can use shift+selection or shift+buttons to select/paste text (like when mouse is disabled). Note that on some terminals like iTerm, you may have to use alt instead of shift.
New key alt+m will toggle mouse on/off.

Finally, thanks to Nei for his scripts, the mouse support in WeeChat is partially based on them.

Mouse support will be improved in near future, for example interactions with words/messages in chat area (select text, click on URLs, ..).
Stay tuned!

Wednesday, June 15 2011

Highlight with regex in specific buffers

A local variable "highlight_regex" has been added in buffers.

It is recommended to use script buffer_autoset.py to set it, so that it's saved and set at any time when buffer is created.

However, it's still possible to set it manually (for testing) with command: /buffer set highlight_regex XXX.

For example, to highlight all messages on server freenode, channel #test:

/autosetbuffer add irc.freenode.#test highlight_regex .*

Monday, May 16 2011

Script cmd_help.py

A new script cmd_help.py is now available. It displays contextual help on command line like:

  • commands:
    • list of commands if you type a non-complete command name, for example: /serv
    • help about command arguments if you type command (and optionally arguments), for example with /server add you'll see arguments for adding an IRC server
  • options:
    • list of options if you type a non-complete option name with command /set, for example: /set weechat
    • help about option if you type a complete or unique option name with command /set, for example: /set weechat.look.command_chars

Note: this script requires version 0.3.5 of WeeChat.

Screenshot (click for full size):


Sunday, May 15 2011

Version 0.3.5

Version 0.3.5 is available!

As usual, many new features and bug fixes, see ChangeLog for detail.

Important: please read the release notes if you are upgrading to this version (from any other version).

New major features in this release:

  • 256 colors support improved (dynamic allocation of colors) (see this post)
  • attributes for colors (bold/reverse/underline) (see this post)
  • better scroll of input (with long text)
  • output of /help improved for list of commands and their arguments (see this post)
  • remember scroll position of buffers in windows
  • list of buffers in filters (see this post)
  • count of messages in hotlist buffers (see this post)
  • swap buffers of windows
  • balance of windows
  • new API function to set help on plugin/script options
  • speller options in aspell plugin (see this post)
  • option for SSL priorities in IRC servers
  • color nicks in nicklist and output of /names

New options:

  • weechat.look.hotlist_add_buffer_if_away
  • weechat.look.hotlist_buffer_separator
  • weechat.look.hotlist_count_max
  • weechat.look.hotlist_count_min_msg
  • weechat.color.status_count_msg
  • weechat.color.status_count_private
  • weechat.color.status_count_highlight
  • weechat.color.status_count_other
  • weechat.look.highlight_tags
  • weechat.look.read_marker_string
  • weechat.look.input_cursor_scroll
  • weechat.look.color_pairs_auto_reset
  • irc.color.topic_old
  • irc.color.topic_new
  • irc.color.nick_prefixes
  • irc.look.buffer_switch_autojoin
  • irc.look.buffer_switch_join
  • irc.look.smart_filter_nick
  • irc.look.color_nicks_in_nicklist
  • irc.look.color_nicks_in_names

New keys:

  • alt + "w", alt + "b": balance the sizes of all windows (/window balance)
  • alt + "w", alt + "s": swap buffers of two windows (/window swap)

Note: to add missing keys, you can use command /key missing

Friday, April 15 2011

Options for aspell spellers

An "option" section has been added to aspell.conf file, to set options for aspell speller.

A commonly used option is "ignore-case" to ignore case in speller. To enable it, just do:

/set aspell.option.ignore-case "true"

For a list of aspell options, do in your shell:

aspell config

Monday, April 11 2011

Count of messages in hotlist

Count of messages (by priority) has been added to hotlist.

New options:

  • /set weechat.look.hotlist_buffer_separator (default: ", ")
  • /set weechat.look.hotlist_count_max (default: 2)
  • /set weechat.look.hotlist_count_min_msg (default: 2)
  • /set weechat.color.status_count_msg (default: "brown")
  • /set weechat.color.status_count_private (default: "green")
  • /set weechat.color.status_count_highlight (default: "magenta")
  • /set weechat.color.status_count_other (default: "default")

Example with default config:

Count of messages in hotlist

(2 highlights and 5 messages on #test, 1 highlight and 1 private message from FlashCode)

Wednesday, March 9 2011

List of buffers in filters

It is now possible to use a list of buffers in filters. Exclusion of buffers is allowed using prefix "!".

Example: add IRC smart filter on all freenode channels, but not channels beginning with "#private":

/filter add irc_smart irc.freenode.*,!*#private* irc_smart_filter *

Thursday, February 17 2011

Attributes for colors

Attributes have been added for color options. List of supported attributes:

  • "*": bold
  • "!": reverse
  • "_": underline

Attributes are optional and can be added before color name/number/alias.

For self nick as white underlined:

/set weechat.color.chat_nick_self _white

For time in status bar as orange underlined with bold:

/set weechat.color.status_time *_214

Wednesday, February 9 2011

Help of commands improved

The list of commands in /help commands has been improved.

By default it's now a short list (only names of commands), and long list is possible with option -listfull. Moreover, it is possible to list commands for one plugin (or core) only.

Example of short list for irc plugin: /help -list irc

  admin      deop       join       mode       part       samode     stats      voice
  allchan    devoice    kick       motd       ping       sanick     summon     wallchops
  allserv    die        kickban    msg        pong       sapart     time       wallops
  ban        disconnect kill       names      query      saquit     topic      who
  connect    halfop     links      nick       quote      server     trace      whois
  ctcp       ignore     list       notice     reconnect  service    unban      whowas
  cycle      info       lusers     notify     rehash     servlist   userhost
  dcc        invite     map        op         restart    squery     users
  dehalfop   ison       me         oper       sajoin     squit      version

Example of long list for core commands: /help -listfull irc

  admin - find information about the administrator of the server
  allchan - execute a command on all channels of all connected servers
  allserv - execute a command on all connected servers
  ban - ban nicks or hosts
  connect - connect to IRC server(s)
  ctcp - send a CTCP message (Client-To-Client Protocol)
  cycle - leave and rejoin a channel
  dcc - start a DCC (file transfer or direct chat)
  dehalfop - remove channel half-operator status from nick(s)
  deop - remove channel operator status from nick(s)
  devoice - remove voice from nick(s)

Moreover, display of command arguments in /help <command> has been improved.

Old version: /help server

[irc]  /server  [list [servername]] | [listfull [servername]] | [add servername hostname[/port] [-temp] ...

New version: /help server

[irc]  /server  list|listfull [<server>]
                add <server> <hostname>[/<port>] [-temp] [-<option>[=<value>]] [-no<option>]
                copy|rename <server> <new_name>
                del|keep <server>

Thursday, February 3 2011

Dynamic color pairs

WeeChat now creates color pairs dynamically: when a color (foreground + background) is used on screen, a pair is created if it does not yet exist in pairs table.

Therefore, it's not needed any more to use /color add to add colors to use them in options. It is possible to use any terminal color by number in options. However, you can still create an alias on number with command /color alias.

Sunday, January 16 2011

Version 0.3.4

Version 0.3.4 is available!

As usual, many new features and bug fixes, see ChangeLog for detail.

Important: please read the release notes if you are upgrading to this version (from any other version).

New major features in this release:

  • 256 colors support, with unlimited number of nick colors (see this post)
  • irc proxy (relay plugin)
  • redirection of IRC commands (see this post)
  • new irc command /notify
  • rmodifier plugin (see this post)
  • regular expressions for highlights
  • color support for timestamp in chat buffer (see this post)
  • irc option to force color for some nicks
  • share input line between buffers

New options:

  • weechat.color.chat_nick_colors
  • weechat.look.highlight_regex
  • weechat.look.hotlist_unique_numbers
  • weechat.look.input_share
  • weechat.look.input_share_overwrite
  • weechat.look.prefix_align_min
  • irc.look.notify_tags_ison
  • irc.look.notify_tags_whois
  • irc.network.notify_check_ison
  • irc.network.notify_check_whois
  • option "notify" in irc servers
  • irc.look.nick_color_force
  • irc.look.item_away_message
  • irc.color.nick_prefix
  • irc.color.nick_suffix

Sunday, January 9 2011

256 colors

WeeChat now supports 256 colors!

Using new command /color you can browse WeeChat and terminal colors, and define custom pairs. See documentation for more information.

Screenshot (click for full size):

256 colors

Tuesday, December 7 2010

Colored time for messages

It is now possible to add color in time displayed for each line in formated buffers.

Option weechat.look.buffer_time_format now supports colors with format: "${xxx}" where "xxx" is a color name (lightblue, red, ...) or a number (for example: "214" for orange).

Note: updated in 0.4.2, the syntax is now: "${color:xxx}".

Screenshot of colored time, with french flag colors:

French time

Thursday, December 2 2010

Max hotlist level for some nicks

It is now possible to set max hotlist level for some nicks, per buffer, or per group of buffers (like IRC servers).

A new buffer property "hotlist_max_level_nicks" has been added. It can be set easily with script buffer_autoset.py, see /help autosetbuffer for example.

Possible levels are (default is -1):

  • -1: no hotlist changes for nick
  • 0: low priority (like join/part messages)
  • 1: message
  • 2: private
  • 3: highlight (in fact useless, since it's default max for all messages)

If you have already opened buffer, then script option will not apply immediately to buffers. Then you can use /buffer command to manually set this property on a buffer, for example, to disable highlights from "joe" and "mike" on current buffer:

/buffer set hotlist_max_level_nicks_add joe:2,mike:2

Monday, November 8 2010

Redirection of IRC commands

It is now possible to redirect IRC commands to a callback, in plugins/scripts.

First you have to add a hsignal with callback, to receive command output. Then, add redirection by sending a hsignal, and send your command to IRC server. It will automatically use your redirection.

Each redirection uses a pattern, which defines start/stop/extra commands. Default patterns are: ison, list, mode_channel, mode_channel_ban, mode_channel_ban_exception, mode_channel_invite, mode_user, names, ping, time, topic, userhost, who, whois, whowas.

You can create your own pattern with signal "irc_redirect_pattern".

Examples of redirection and pattern creation are available in WeeChat devel doc.

Monday, October 11 2010

Disable highlights from some nicks

It is now possible to disable highlights from some nicks, per buffer, or per group of buffers (like IRC servers).

A new buffer property "no_highlight_nicks" has been added. It can be set easily with script buffer_autoset.py, see /help autosetbuffer for example.

If you have already opened buffer, then script option will not apply immediately to buffers. Then you can use /buffer command to manually set this property on a buffer, for example, to disable highlights from "joe" and "mike" on current buffer:

/buffer set no_highlight_nicks_add joe,mike

Update on 2010-12-02: this option has been replaced by "hotlist_max_level_nicks", see Max hotlist level for some nicks.

Wednesday, October 6 2010

New plugin rmodifier

A new plugin called "rmodifier" (for "Regex modifier") has been added.

It's designed to change some strings using regex, for example to hide passwords in commands (input displayed on screen) or in history. By default, password in following commands are hidden by this plugin:

  • /msg nickserv identify ****** (input and history)
  • /msg nickserv ghost ****** (input and history)
  • /oper nick ****** (input and history)
  • /set file.section.password ****** (history only)

Of course you can add your own regex, just look at /help rmodifier.

Saturday, August 7 2010

Version 0.3.3

Version 0.3.3 is available!

As usual, many new features and bug fixes, see ChangeLog for detail.

Important: please read the release notes if you are upgrading to this version (from any other version).

New major features in this release:

  • keys to undo/redo changes on command line
  • better lag indicator
  • new irc command /wallchops
  • display message in irc private buffer when nick is back on server after a /quit
  • reverse regex in a filter (with leading "!")
  • new option to confirm /quit
  • new option to align end of lines
  • hashtables in plugin API

New options:

  • weechat.look.align_end_of_lines
  • weechat.look.confirm_quit
  • weechat.look.input_undo_max
  • weechat.color.status_name_ssl
  • irc.look.display_host_join
  • irc.look.display_host_join_local
  • irc.look.display_host_quit
  • irc.look.display_pv_back
  • irc.look.nick_color_stop_chars
  • irc.network.autoreconnect_delay_growing
  • irc.network.autoreconnect_delay_max
  • irc.color.item_lag_counting
  • irc.color.item_lag_finished
  • irc.color.reason_quit

New keys:

  • ctrl + "_": undo (command line)
  • alt + "_" (or ctrl + ":" under putty): redo (command line)

Note: to add missing keys, you can use command /key missing

Wednesday, August 4 2010

Script jabber.py

A new script jabber.py is now available. You can connect to jabber servers and chat with buddies.

Quick start:

  • add server: /jabber add jabberfr myname@jabber.fr mypassword
  • connect: /jabber connect jabberfr
  • chat: /jchat nick

Commands provided by script:

  • /jabber
  • /jchat
  • /jmsg

Configuration file is jabber.conf.

Currently, MUCs are not supported, and you can't manage your account, like create/update account, add/remove buddies in roster (nicklist).

Enjoy Jabber!

Monday, July 26 2010

Script cron.py

A new script cron.py is now available. It can schedule jobs or message like system commands cron and at.

Two commands are provided by this script:

  • /cron: schedule job like system command 'cron'
  • /at: schedule job for only one execution, in near future, like system command 'at'.

You can get more help with /help cron and /help at.

You can setup some options with /set:

  • /set plugins.var.python.cron.auto_reload on/off (default: on)
  • /set plugins.var.python.cron.auto_save on/off (default: on)
  • /set plugins.var.python.cron.filename "path" (default: "%h/cron.txt")
  • /set plugins.var.python.cron.quiet_exec on/off (default: off)
  • /set plugins.var.python.cron.quiet_load on/off (default: off)
  • /set plugins.var.python.cron.quiet_save on/off (default: on)

Sunday, April 18 2010

Version 0.3.2

Version 0.3.2 is available!

As usual, many new features and bug fixes, see ChangeLog for detail.

Important: please read the release notes if you are upgrading to this version (from any other version).

Monday, March 22 2010

Custom completion for aliases

It is now possible to have custom completion for aliases, for example to complete with another command completion, or with your own completion.


  • create alias /forcejoin with completion of /sajoin: /alias -completion %%sajoin forcejoin /quote forcejoin
  • create alias /mybuf with custom completion: /alias -completion #weechat|#weechat-fr mybuf /buffer

You can change completion if alias is already created:

/set alias.completion.forcejoin "%%sajoin"

You can use empty string to prevent any completion for command (default is to complete using target command):

/set alias.completion.forcejoin ""

And you can remove a completion:

/unset alias.completion.forcejoin

Completion is automatically removed when you remove an alias with /unalias.

Friday, February 19 2010

SASL authentication with IRC server

It is now possible to use SASL authentication with IRC server, using two mechanisms: "plain" (default) or "dh-blowfish" (crypted password).

New options have been added to servers:

  • sasl_mechanism: mechanism to use ("plain" or "dh-blowfish")
  • sasl_timeout: timeout (in seconds) for authentication
  • sasl_username: username
  • sasl_password: password

You just have to setup username (your nick) and password (password of nick) and then connect to server, you'll be identified with SASL if all is ok.

If you want to set "dh-blowfish" by default for all servers:

/set irc.server_default.sasl_mechanism dh-blowfish

Monday, February 1 2010

Date in log filenames

It is now possible to use date formaters in log filenames (in mask options).

For example to have log by year and month in separate directories, you can do :

/set logger.file.mask "%Y/%m/$plugin.$name.weechatlog"

You'll have a tree like that:

    |- logs/
        |- 2009/
            |- 12/
                |  irc.server.freenode.weechatlog
                |  irc.freenode.#weechat.weechatlog
        |- 2010/
            |- 01/
                |  irc.server.freenode.weechatlog
                |  irc.freenode.#weechat.weechatlog

Sunday, January 31 2010


Version is available!

This version fixes crashes with SSL connection and purge of old DCC chats. It is recommended to upgrade from 0.3.1 to for all users.

Saturday, January 23 2010

Version 0.3.1

Version 0.3.1 is available!

As usual, many new features and bug fixes, see ChangeLog for detail.

Important: please read the release notes if you are upgrading to this version (from any other version).

Sunday, January 17 2010

New IRC output queue with high priority

A new IRC output queue has been added in irc plugin, with high priority. There are now two queues for messages sent to IRC server:

  • queue for user messages or commands, with high priority
  • queue for other messages, with low priority.

Low priority queue is used to send automatic messages, like replies to CTCP messages. So if you are spamed with CTCP messages, WeeChat will first send your messages (queue with high priority), and then CTCP replies (queue with low priority).

Accordingly, anti-flood option has been split into two options:

  • irc.network.anti_flood_prio_high: delay between two user messages/commands
  • irc.network.anti_flood_prio_low: delay between two other messages

Friday, January 8 2010

New IRC commands allchan and allserv

New commands have been added to IRC plugin: /allchan and /allserv.
These commands can execute a command on all buffer of all channels or all servers, with optional exclusion of some channels/servers.

Old commands /amsg and /ame are now replaced by aliases. If you're upgrading from recent version (>= 0.3.0), you have to manually create alias, see page with release notes.

Friday, January 1 2010

Target buffer for IRC messages

New options have been added to choose target buffer for IRC messages.

More info and examples in documentation: http://weechat.org/files/doc/devel/weechat_user.en.html#irc_target_buffer

Monday, December 7 2009

SSL certificates

New options have been added to check SSL certificates when connecting to IRC servers, thanks to kolter's patch:

  • weechat.network.gnutls_ca_file: path to file with certificate authorities (by default: "%h/ssl/CAs.pem")
  • irc.server.xxx.ssl_cert: ssl certificate file used to automatically identify your nick (CertFP on oftc for example, see below)
  • irc.server.xxx.ssl_dhkey_size: replaces old option weechat.network.gnutls_dh_prime_bitsmax_lines, new default value is 2048 (safer than old default value which was 512)
  • irc.server.xxx.ssl_verify: check that the ssl connection is fully trusted (on by default)

Please note that ssl_verify is on by default, so verification is now stricter, and may fail even if it was ok with previous versions of WeeChat.

First example: connect to oftc and check certificate:

  • import certificate:
    • mkdir ~/.weechat/ssl
    • wget -O ~/.weechat/ssl/CAs.pem http://www.spi-inc.org/ca/spi-cacert.crt
  • in weechat:
    • /connect oftc

Note: it is possible to concatenate many CAs in file CAs.pem.

Second example: connect to oftc using CertFP (certificate to auto identify your nick):

  • create certificate:
    • openssl req -nodes -newkey rsa:2048 -keyout nick.key -x509 -days 365 -out nick.cer
    • cat nick.cer nick.key > ~/.weechat/ssl/nick.pem
  • in weechat:
    • /set irc.server.oftc.ssl_cert "%h/ssl/nick.pem"
    • /connect oftc
    • /msg nickserv cert add

For more information, please look at http://www.oftc.net/oftc/NickServ/CertFP.

Thursday, October 15 2009

Script translate.py

A new script translate.py is now available. It can translate words with a command or in input (whole input or last word).

Base and target languages can be customized and given as argument of command, or at beginning of input if you're using a key calling command.

Example of keys you can bind to use script:

  • translate input with alt-t + alt-t (using default from_to): /key bind meta-tmeta-t /translate
  • translate input with alt-t + alt-r (reverse of from_to): /key bind meta-tmeta-r /translate !
  • translate last word in input with alt-t + alt-w (using default from_to): /key bind meta-tmeta-w /translate +
  • restore input as it was before last translation with alt-t + alt-u: /key bind meta-tmeta-u /translate <

Other examples:

  • reverse languages (english to french by default): /translate ! this is a test
  • english to italian: /translate en_it I want this string in italian

Recommended alias:

/alias tr /translate

You can get more help with /help translate.

Monday, October 5 2009

Script hlpvitem.py

A new script hlpvitem.py is now available. It displays item in a bar (like status) with highlight or private message, from an hidden buffer. So you will see content of message before switching to that buffer.

You must add item in a bar, like status, with this command:

/set weechat.bar.status.items

then press "Tab" and complete string by adding for example (without quotes): ",[hlpv]"

Screenshot: WeeChat hlpvitem

You can setup some options with /set:

  • /set plugins.var.python.hlpvitem.show_all_buffers on/off (default: off)
  • /set plugins.var.python.hlpvitem.buffer_number on/off (default: on)
  • /set plugins.var.python.hlpvitem.buffer_short_name on/off (default: on)
  • /set plugins.var.python.hlpvitem.highlight on/off (default: on)
  • /set plugins.var.python.hlpvitem.private on/off (default: on)
  • /set plugins.var.python.hlpvitem.string_highlight "string" (default: empty)
  • /set plugins.var.python.hlpvitem.string_private "string" (default: empty)
  • /set plugins.var.python.hlpvitem.string_delimiter "string" (default: " > ")
  • /set plugins.var.python.hlpvitem.color_string_highlight color (default: empty)
  • /set plugins.var.python.hlpvitem.color_string_private color (default: empty)
  • /set plugins.var.python.hlpvitem.color_buffer_number color (default: empty)
  • /set plugins.var.python.hlpvitem.color_buffer_name color (default: "default")
  • /set plugins.var.python.hlpvitem.color_prefix color (default: "white")
  • /set plugins.var.python.hlpvitem.color_delimiter color (default: "cyan")
  • /set plugins.var.python.hlpvitem.color_message color (default: "default")
  • /set plugins.var.python.hlpvitem.visible_seconds N (default: 7)

Tuesday, September 15 2009

IRC CTCP replies

It is now possible to customize CTCP replies, or block some CTCP queries (do not reply).

For example, to customize reply to CTCP "VERSION", use following command:

/set irc.ctcp.version "I'm running WeeChat $version, it rocks!"

If you want to block CTCP "VERSION" (do not reply to a query), then set empty string:

/set irc.ctcp.version ""

Even unknown CTCP can be customized, for example you can reply to CTCP "BLABLA":

/set irc.ctcp.blabla "This is my answer to CTCP BLABLA"

It is possible to customize CTCP for one server only, using its internal name before CTCP name:

/set irc.ctcp.freenode.version "WeeChat $version (for freenode)"

If you want to restore standard CTCP reply, then remove option:

/unset irc.ctcp.version

Some codes are automatically expanded by WeeChat when replying to CTCP, please read documentation for more information (User's guide, chapter: Plugins / IRC plugin / CTCP replies).

Sunday, September 6 2009

Version 0.3.0

Version 0.3.0 is released, after 2 years of work and more than 1000 commits!

This is a major upgrade since last stable, please read files UPGRADE_0.3 and ChangeLog for list of changes: configuration files and plugin API are not compatible with previous versions.

For this important release, site has moved to weechat.org, with a new look!

Enjoy WeeChat!

Wednesday, June 10 2009

Merge of buffers

It is now possible to merge buffers with command /buffer merge (or unmerge). IRC plugin uses that feature to merge server buffers, with the new option irc.look.server_buffer (merge_with_core, merge_without_core, independent).

When a buffer is merged to one or more other buffers, they will have same number, and chat area will display mixed lines (short name of buffer is displayed on each line, to know to which buffer line belongs). Bars still display content for current selected buffer.

New key ctrl-x has been added to swtich current active buffer when many buffers are merged (old key alt-s has been removed).

For devel users: it's not possible to upgrade from previous versions to this one, and you should do /key missing to add missing key.

Saturday, May 2 2009

Data for callbacks in script API

Major changes were done in script API: data string was added to all callbacks. C plugin API is already ok (there is data pointer for callbacks).
Therefore, all scripts for development version are incompatible with this new version. All official scripts have been updated on plugins page.

This data string must be added after each callback function in arguments of functions. For example in python :

weechat.hook_command("go", "Quick jump to buffers", "", "", "", "go_cmd")
def go_cmd(buffer, args):


weechat.hook_command("go", "Quick jump to buffers", "", "", "", "go_cmd", "")
def go_cmd(data, buffer, args):

Friday, April 24 2009

Easy switch between two buffers

A new feature has been added recently to easily switch to another buffer, then come back to current one.
For example if you are on buffer #2, you press alt-1 twice: you'll come back to buffer #2.

This new feature can be disabled, if you think old behaviour was better (really?):
/set weechat.look.jump_current_to_previous_buffer off

Saturday, April 11 2009

Completion improved for command arguments

Completion has been improved for command arguments. Now many templates are allowed for one command, and WeeChat will automatically choose and use the better template according to arguments you give on command line.

Let's take an example: the /proxy command. Completion template is this string:

add %(proxies_names) http|socks4|socks5 || del %(proxies_names) || set %(proxies_names) %(proxies_options) || list

The single pipe is still used to add many possible items for one argument. Now a double pipe has been added to separate many templates. WeeChat will choose template according to arguments you give before completion location in command line.
Example 1: if you enter: "/proxy add [+tab]", then WeeChat will use first template ("add %(proxies_names) http|socks4|socks5").
Example 2: if you enter: "/proxy set [+tab]", WeeChat will used third template ("set %(proxies_names) %(proxies_options)").

Now, you'll ask: but how to complete first argument of command? WeeChat can't know which template to use!
Hey, good question! I was sure you would ask that ;)
The answer is very simple: for first argument, WeeChat will make a "or" between first argument of each template (so it will use a fictive template which is: "add|del|set").

It's recommended to use plain words for first argument of each template (when using many templates). If you use many words (separated by single pipe), or items (%(xxx)), then WeeChat will not know which template to use, and may not complete at all.

Another thing you should know, default completion items (defined by WeeChat core) have been renamed. Old name was something like "%x", new name is"%(xxx)". For example %n has been renamed to %(nicks). Some new completions have been added too. Please read doc for new names (and now that includes names of completion items defined by plugins).

If you are using old development version, nick completion will be broken, so you'll have to issue following command: /unset weechat.completion.default_template

Happy completion party!

- page 2 of 3 -