WeeChat DevCenter

Sunday, January 25 2015

Version 1.1.1

Version 1.1.1 is available!

This is a bug fix and maintenance release, see ChangeLog for detail.

Sunday, January 11 2015

Version 1.1

Version 1.1 is available!

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

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

New major features in this release:

  • complete inline commands in input
  • allow incomplete commands if unambiguous
  • improve speed of completions
  • add bar item and signals for mouse status
  • use bar conditions on root bars
  • add option "reorder" in command /server
  • open irc channel buffers before the join is received from server
  • add server option "sasl_fail"
  • add support for color codes 16-99 in IRC messages
  • disable SSLv3 by default
  • add support of IRC capability "extended-join"
  • add options "stop" and "start" in command /relay
  • use HTTPS by default in script plugin for downloads
  • add option "restore" in command /trigger
  • evaluate and replace regex groups at same time in trigger (new and incompatible format)
  • many bugs fixed.

New options:

  • irc.look.buffer_open_before_autojoin
  • irc.look.buffer_open_before_join
  • irc.look.temporary_servers
  • irc.server_default.sasl_fail
  • relay.network.ssl_priorities
  • script.scripts.url_force_https
  • weechat.look.command_incomplete
  • weechat.look.item_mouse_status
  • weechat.color.status_mouse
  • weechat.completion.command_inline

Sunday, September 28 2014

Version 1.0.1

Version 1.0.1 is available!

This is a bug fix and maintenance release, see ChangeLog for detail.

Friday, August 15 2014

Version 1.0

Yay, version 1.0 is available!

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

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

New major features in this release:

  • plugin "trigger": Swiss Army knife for WeeChat (replaces "rmodifier" plugin)
  • plugin "exec": execute external commands (replaces script "shell.py")
  • bare display: easy click on long URLs and text selection with mouse
  • support of environment variables in /set command
  • hidden buffers
  • negated tags in filters
  • toggle of filters in specific buffers
  • flexible conditions for adding/removing buffers in hotlist
  • text search in buffers with free content
  • support of wildcard "*" inside masks
  • support of nested variables in evaluated expressions
  • tag with host in IRC messages displayed
  • support of "away-notify" IRC capability
  • IRC commands: /allpv, /remove, /unquiet
  • bar items: buffer_short_name, irc_nick_modes
  • unit tests

New options:

  • irc.color.item_nick_modes
  • irc.look.join_auto_add_chantype
  • relay.network.clients_purge_delay
  • weechat.color.status_nicklist_count
  • weechat.look.bare_display_exit_on_input
  • weechat.look.bare_display_time_format
  • weechat.look.hotlist_add_conditions (replaces weechat.look.hotlist_add_buffer_if_away)
  • weechat.look.hotlist_remove

Options changed:

  • irc.look.item_channel_modes_hide_key renamed to irc.look.item_channel_modes_hide_args

New keys:

  • alt-"-": toggle filters in current buffer
  • alt-"l" (L): bare display
  • alt-"j", alt-"f": jump to first buffer

Friday, March 28 2014

Source code of weechat.org

The source code of weechat.org is now available on GitHub: https://github.com/weechat/weechat.org.

It is written in Python and uses Django, and gettext for translations.

Designers, Python/Django developers and especially translators are welcome!

Saturday, March 15 2014

Exec plugin

A new plugin called "exec" has been added, with command /exec.

The command /exec can execute external commands and display output in WeeChat.

It is similar to /shell (script shell.py), with major improvements:

  • run many commands at once,
  • send signals to commands,
  • send data on stdin of a command,
  • line numbers in output,
  • ANSI color support,
  • command timeout.

Other features coming soon: pipe output to WeeChat command or hsignal (to use in a trigger).

Monday, March 3 2014

Git repositories moved to GitHub

WeeChat git repositories (weechat, scripts, qweechat) have been moved to GitHub, in WeeChat organization: http://github.com/weechat.
The git repositories on savannah are not updated any more (and will be removed in near future).

The GitHub issue tracker can now be used to report bugs and ask for feature requests.
If the bug/task already exists in Savannah, you can complete/discuss it on Savannah, no need to open a new one on GitHub.

Pull requests are welcome in all repositories, including scripts (except for adding a script, the form on weechat.org must be used).

A page with examples of triggers has been added in weechat wiki.

Sunday, February 16 2014

Bare display

A "bare" display mode has been added. This special mode displays only the current buffer, and no bars around (no title, nicklist, status, input, ...).
It is designed for easy selection of text and click on long URLs (which are not broken at the end of lines, because ncurses is disabled in this mode).

A new key has been added: alt-"l" (use /key missing to add the key), or this command: /key bind meta-l /window bare.
You can also use a delay in seconds with command /window bare, for example 5 seconds: /window bare 5.

Two options have been added:

  • weechat.look.bare_display_exit_on_input (default: on): by default any changes in input will return to standard display
  • weechat.look.bare_display_time_format (default: "%H:%M"): the format of time used in bare display.

Bare display looks like this (click for full size):


Monday, February 10 2014

Trigger plugin

A new plugin called "trigger" has been added.

This plugin can hook many things:

  • signal
  • hsignal
  • modifier
  • print
  • command
  • command_run
  • timer
  • config
  • focus

When the callback is called, trigger can:

  • check some conditions (to execute the trigger or not), which are evaluated (see /help eval)
  • replace some text using regular expression(s)
  • execute command(s)
  • have a custom return code.

Example of things you can do with trigger:

  • notification, for example beep on highlight/private message (it can replace script beep.pl or other scripts)
  • hide passwords in commands/messages (it will replace rmodifier plugin)
  • change content of messages displayed
  • change things displayed (nicklist, ...) when terminal becomes small
  • regularly save config files (with a timer)
  • ...

Help is available with /help trigger.

Some examples of triggers can be found on GitHub WeeChat wiki.

Sunday, February 9 2014

Version 0.4.3

Version 0.4.3 is available!

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

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

New major features in this release:

  • new command /print
  • logical and/or for tags in /filter and hook_print
  • gaps in buffer numbers
  • support of italic text
  • new options to customize default text search in buffers
  • use of IRC monitor command for /notify (if available on server)
  • new IRC server option "ssl_fingerprint"
  • new option to smart-filter IRC mode messages
  • new option for default IRC ban mask
  • support of IPv6 for DCC chat/file
  • auto check CRC32 of files received with DCC

New options:

  • irc.look.notice_welcome_tags
  • irc.look.smart_filter_mode
  • irc.network.ban_mask_default
  • irc.network.lag_max
  • irc.server.xxx.default_msg_kick
  • irc.server.xxx.ssl_fingerprint
  • weechat.look.buffer_auto_renumber
  • weechat.look.buffer_position
  • weechat.look.buffer_search_case_sensitive
  • weechat.look.buffer_search_force_default
  • weechat.look.buffer_search_regex
  • weechat.look.buffer_search_where
  • weechat.look.item_buffer_zoom
  • weechat.look.tab_width
  • weechat.look.window_auto_zoom
  • xfer.file.auto_check_crc32

Options changed:

  • irc.look.highlight_tags renamed to irc.look.highlight_tags_restrict
  • weechat.look.set_title renamed to weechat.look.window_title

New keys:

  • ctrl-C, "v": reverse video (replaces ctrl-C, "r")
  • ctrl-C, "_": underlined text (replaces ctrl-C, "u")

Thursday, January 9 2014

CRC32 and IPv6 in xfer plugin

CRC32 and IPv6 are now supported in xfer plugin!

For CRC32, a new option has been added:

  • xfer.file.auto_check_crc32 (boolean, off by default): when enabled, if the filename has a CRC32 (8 hexadecimal chars with delimiters around), the CRC32 of file content is checked and the result is displayed in xfer buffer (with error in core buffer if the CRC32 is wrong).

For IPv6, everything is automatic; it works for DCC file and chat.

Note for C plugin developers: the function "weechat_network_connect_to" has been modified to be used with IPv6. See the plugin API reference for more info.

A big thanks to Andrew Potter for the patches!


Wednesday, December 11 2013

Auto renumber of buffers

Auto renumber of buffers can now be disabled.

Two options have been added:

  • weechat.look.buffer_auto_renumber
  • weechat.look.buffer_position

A bar item has beed added as well:

  • buffer_last_number

When auto renumber is disabled, gaps between buffer numbers are allowed and the first buffer can have a number greater than 1.

Following options for command /buffer are affected when auto renumber is off:

  • move:
    • the current number will be left free for use, and the target number can be any number >= 1 (possibly higher than the current last buffer number)
    • the value can be "-" (which moves the buffer to number 1) or "+" (which moves the buffer to the end, ie last number + 1)
  • swap:
    • now the buffers are swapped in the list without being "moved"
  • +/-N:
    • it is now working with gaps in buffer numbers
  • merge:
    • it can now merge a group of merged buffers into another buffer (or buffers merged themselves)

Sunday, October 6 2013

Version 0.4.2

Version 0.4.2 is available!

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

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

New major features in this release:

  • rename binary from "weechat-curses" to "weechat" (with symbolic link "weechat-curses" for compatibility) (see this post)
  • add secured data (encryption of passwords or private data), new command /secure, new file sec.conf (see this post)
  • search of regular expression in buffer with text emphasis, in prefixes, messages or both (see this post)
  • add option "scroll_beyond_end" for command /window
  • add optional buffer context in bar items (for example to display bitlbee nicklist in a root bar)
  • new options weechat.look.hotlist_{prefix|suffix}
  • new option weechat.look.key_bind_safe to prevent any key binding error from user
  • new option weechat.network.proxy_curl to use a proxy when downloading URLs with curl
  • display day change message dynamically
  • support of wildcards in IRC commands (de)op/halfop/voice
  • new option irc.look.notice_welcome_redirect to redirect channel welcome notices to the channel buffer
  • new option irc.look.nick_color_hash: new hash algorithm to find nick colors (variant of djb2)
  • add info about things defined by a script in the detailed view of script (/script show)
  • support of enchant library in aspell plugin

New options:

  • aspell.color.suggestions
  • irc.look.nick_color_hash
  • irc.look.notice_welcome_redirect
  • irc.look.pv_tags
  • sec.crypt.cipher
  • sec.crypt.hash_algo
  • sec.crypt.passphrase_file
  • sec.crypt.salt
  • weechat.color.chat_day_change
  • weechat.color.emphasized
  • weechat.color.emphasized_bg
  • weechat.look.emphasized_attributes
  • weechat.look.hotlist_prefix
  • weechat.look.hotlist_suffix
  • weechat.look.key_bind_safe
  • weechat.network.proxy_curl
  • xfer.look.pv_tags

Options changed:

  • aspell.look.color renamed to aspell.color.misspelled
  • weechat.look.day_change_time_format split into two options: weechat.look.day_change_message_1date and weechat.look.day_change_message_2dates

New keys:

  • in search context (ctrl-R):
    • ctrl-I (tab): search in prefixes, messages or both
    • ctrl-R: search text/regex
    • alt-c: case (in)sensitive search

Saturday, August 17 2013

Search with regex and text emphasis

When searching text in buffer (with ctrl-R), the matching text in lines is now emphasized, even if there are color codes in the line.

The search has been improved: it is now possible to search with a regular expression, and select where to search: in messages (default), prefixes or prefixes+messages.

The default key for search is still ctrl+R and keys have been added/changed in the search context:

  • ctrl-R: switch search type: string/regex
  • alt-c: switch exact case for search
  • tab: switch search in messages/prefixes

The new search prompt in input bar looks like this: [Search (~ str,msg)]

Short description of content:

  • ~: case insensitive search (default)
  • ==: case sensitive search
  • str: search string (default)
  • regex: search regular expression
  • msg: search in messages (default)
  • pre: search in prefixes
  • pre|msg: search in prefixes and messages

Happy search!


Sunday, August 4 2013

Secured data

Secured data has been added to WeeChat: you can now encrypt your passwords or private data in a new configuration file called "sec.conf".

This configuration file is read before any other file, and the values stored inside can be used in various WeeChat or plugins/scripts options.

To add secured data, you just have to set a passphrase (not mandatory, but recommended: this will encrypt data in sec.conf instead of plain text), and then add data, for example :

/secure passphrase this is my passphrase
/secure set freenode mypassword

And then you can use that in a server password, for example :

/set irc.server.freenode.sasl_password "${sec.data.freenode}"

For more info, see /help secure.

Options for encryption

You can use different cipher/hash algorithms, by setting following options:

  • sec.crypt.hash_algo: algorithm for hash: sha224, sha256 (default), sha384, sha512
  • sec.crypt.cipher: cipher: aes128, aes192, aes256 (default)
  • sec.crypt.salt: use salt (recommended for maximum security)
  • sec.crypt.passphrase_file: file with the passphrase (optional)

Note: the cipher block mode is CFB.

The encryption

It is done in 3 steps:

  1. derive a key from the passphrase (with optional salt)
  2. compute hash of data to encrypt
  3. encrypt the hash + data (output is: salt + encrypted hash/data)

The result is put as hexadecimal string in file sec.conf.

The decryption

It is done in 3 steps:

  1. derive a key using salt and passphrase
  2. decrypt hash + data
  3. check that decrypted hash == hash of data

Friday, August 2 2013

Binary and man page renamed

WeeChat binary and man page have been renamed from "weechat-curses" to "weechat".

You can read important info about that in release notes.

Wednesday, June 26 2013

Happy birthday WeeChat!

Happy birthday WeeChat, 10 years old!

I would like to thank all contributors for the help with translations, patches and ideas of features.
All contributions and donations are much appreciated!

Monday, May 20 2013

Version 0.4.1

Version 0.4.1 is available!

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

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

New major features in this release:

  • multiple layouts support (see this post)
  • nick prefix/suffix are now dynamic (and managed by core instead of irc plugin) (see this post)
  • unmask irc join if nick speaks some minutes after the join (see this post)
  • new option irc.look.display_join_message to disable some messages after joining a channel
  • new option irc.look.pv_buffer to automatically merge private buffers
  • add support of UHNAMES
  • add DH-AES encryption method for SASL
  • multiple irc servers allowed on same port for irc protocol in relay plugin
  • add WebSocket server support (RFC 6455) in relay plugin (for irc and weechat protocols) (see this post)
  • send nicklist diff in relay plugin (weechat protocol)
  • add control of autoload for scripts
  • optimizations in aspell plugin

New options:

  • irc.look.display_join_message
  • irc.look.nicks_hide_password (old option: irc.look.hide_nickserv_pwd)
  • irc.look.pv_buffer
  • irc.look.smart_filter_join_unmask
  • irc.network.lag_reconnect (old option: irc.network.lag_disconnect)
  • logger.file.nick_prefix
  • logger.file.nick_suffix
  • relay.network.websocket_allowed_origins
  • script.scripts.autoload
  • weechat.color.chat_nick_prefix
  • weechat.color.chat_nick_suffix
  • weechat.look.nick_prefix
  • weechat.look.nick_suffix
  • weechat.look.prefix_align_more_after
  • weechat.look.prefix_buffer_align_more_after
  • xfer.file.auto_accept_nicks

Wednesday, May 1 2013

Dynamic nick prefix/suffix

The prefix and suffix for nicks are now dynamic and not specific to irc plugin.

IRC options have been moved to core:

  • irc.look.nick_prefix moved to weechat.look.nick_prefix
  • irc.look.nick_suffix moved to weechat.look.nick_suffix
  • irc.color.nick_prefix moved to weechat.color.chat_nick_prefix
  • irc.color.nick_suffix moved to weechat.color.chat_nick_suffix

The prefix/suffix and colors are now applied on messages already displayed (because they are not stored any more in prefix of lines).

Two options have been added in logger plugin, to use a prefix/suffix for nicks (optional, empty by default):

  • logger.file.nick_prefix
  • logger.file.nick_suffix

You can find more information in release notes.

Sunday, March 17 2013

Multiple layouts

Support of multiple layouts has been added.

The command /layout now supports a name for actions save/apply/reset.

New options have been added:

  • leave: leave current layout (it will not update any layout)
  • rename: rename a layout

The output of /layout has been improved, especially the tree of windows:

Saved layouts:
    1. core.weechat
    1. irc.server.local
    2. irc.local.#test
    3. irc.local.#test2
  desktop (current layout):
    1. core.weechat
    1. irc.server.local
    2. irc.local.#test
    3. irc.local.#test2
    \== 40% (splith)
      |-- irc.local.#test
      |== 50% (splitv)
        |-- irc.server.local
        |-- irc.local.#test2

- page 1 of 2