WeeChat DevCenter

Sunday, May 10 2015

Version 1.2

Version 1.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:

  • add options to customize word chars (for detecting word boundaries)
  • add a welcome message on first WeeChat run
  • add options to customize quoted messages (in cursor mode)
  • add support of environment variables in evaluated expressions
  • add support of IRC SASL mechanism "ecdsa-nist256p-challenge"
  • add support of SHA-256 and SHA-512 algorithms in IRC server option "ssl_fingerprint"
  • add support of IRC capability "account-notify"
  • remove "freenode" server from default config
  • new script plugin for javascript
  • many bugs fixed.

New options:

  • irc.server_default.sasl_key (and same option in servers)
  • plugins.var.javascript.check_license
  • weechat.look.quote_nick_prefix
  • weechat.look.quote_nick_suffix
  • weechat.look.quote_time_format
  • weechat.look.word_chars_highlight
  • weechat.look.word_chars_input

Sunday, May 3 2015

Ubuntu repositories

Starting from today, 8 new chroots have been added for automatic builds of weechat-devel on Ubuntu (and some manual builds of stable version).

Here's the full list of repositories (amd64/i386 for Debian/Ubuntu, armhf for Raspbian):

  • Debian sid (unstable): devel
  • Debian stretch (testing): devel
  • Debian jessie (stable): devel + 1.1.1
  • Debian wheezy (oldstable): devel + 1.1.1
  • Debian squeeze (oldoldstable): devel + 1.1.1
  • Ubuntu vivid (15.04) (new): devel
  • Ubuntu utopic (14.10) (new): devel + 1.1.1
  • Ubuntu trusty (14.04) (new): devel + 1.1.1
  • Ubuntu precise (12.04) (new): devel + 1.1.1
  • Raspbian wheezy (oldstable): devel + 1.1.1

Repositories are visible on: https://weechat.org/download/debian/

Saturday, March 14 2015

New plugin Javascript

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

This plugin uses Google's v8 engine.

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

To load/unload JS scripts, you can use the /script or /javascript command.

An example of script is available here: https://weechat.org/files/temp/scripts/example.js.

Sunday, February 8 2015

SASL ECDSA-NIST256P-CHALLENGE

The support of a new SASL mechanism called "ecdsa-nist256p-challenge" has been added three weeks ago.
This new mechanism uses a challenge with public/private key, so no password is required to connect.

Instructions to configure and use this mechanism are in user's guide: https://weechat.org/doc/devel/user/en/#irc_sasl_authentication.

Important notes:

  • GnuTLS ≥ 3.0.21 is required.
  • This mechanism can only be used on servers supporting it (for example servers using atheme, like freenode).

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) (see this post)
  • plugin "exec": execute external commands (replaces script "shell.py") (see this post)
  • bare display: easy click on long URLs and text selection with mouse (see this post)
  • 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):

weechat_bare_display.png

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 (see this post)
  • 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 (see this post)
  • auto check CRC32 of files received with DCC (see this post)

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!

Enjoy!

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!

weechat_search_emphasis_regex.png

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:
  mobile:
    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

Sunday, February 17 2013

The IRC smart filter... even smarter!

A new option has been added for the IRC smart filter: irc.look.smart_filter_join_unmask, with default value 30 (in minutes).

IRC plugin will automatically unmask a filtered join of a nick, if he spoke within N minutes after the join (N being the value of new option irc.look.smart_filter_join_unmask). Moreover, nick changes are tracked, and will be unmasked with the join.

Events triggering the unmask of join are: a message (can be CTCP), a notice or an update of topic.

Wednesday, February 13 2013

Debian/Raspbian repositories

A Raspbian repository has been added for Raspberry Pi (thanks to Nils G. for building the packages every night).

The existing Debian repositories are being moved from flashtux.org to weechat.org, like the new Raspbian one. Repositories on weechat.org are already available, therefore it is recommended to use them now.

IMPORTANT: the WeeChat packages on debian.flashtux.org are still built every night, but they will be definitely removed on 2013-03-01.

A new section has been added on download page with a summary of all repositories: http://weechat.org/download/debian/.

weechat_debian_repositories.png

Sunday, February 10 2013

WebSocket in relay plugin

Websocket has been added in relay plugin, for IRC and WeeChat protocols.

It is an experimental and partial implementation of RFC 6455: fragmentation and control frames are not yet supported.

The relay plugin automatically detects WebSocket handshake and if everything is OK (origin allowed and required headers received), an answer to handshake is sent and then socket is ready to send/receive WebSocket frames.

Text and binary data are supported, so IRC (text/text) and WeeChat (text/binary) protocols are supported.

Screenshot (click for full size):

relay_websocket.png

Tuesday, February 5 2013

Test script for relay protocol

A test script called testproto.py has been added in QWeeChat to test the relay protocol with WeeChat. This script runs in terminal and does not require Qt.

Script is located in path src/qweechat/weechat/testproto.py of QWeeChat repository.

Screenshot (click for full size):

testproto.png

Sunday, January 20 2013

Version 0.4.0

Version 0.4.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:

  • add option "diff" for command /set, display default values in output of /set
  • add color support in prefix options
  • add command /eval, use expression in conditions for bars
  • connect by default with IPv6 to servers with fallback to IPv4
  • add aspell suggestions
  • add support of tags in irc messages and "server-time" capability (see this post)
  • add irc command /quiet
  • add support of IPv6 in relay plugin
  • add backlog for irc protocol in relay plugin (see this post)
  • display remote IP address for DCC chat/file in xfer plugin
  • add git version in build (see this post)

New options:

  • aspell.check.suggestions
  • irc.network.alternate_nick
  • irc.network.whois_double_nick
  • relay.network.ipv6
  • relay.irc.backlog_minutes
  • relay.irc.backlog_max_number
  • relay.irc.backlog_since_last_disconnect
  • relay.irc.backlog_tags
  • relay.irc.backlog_time_format

Monday, December 24 2012

Backlog for irc protocol in relay

Backlog has been added for irc protocol in relay plugin.

The relay plugin now supports server capability "server-time", to include the messages time as tag (not in the message itself).

5 new options have been added:

  • relay.irc.backlog_max_minutes
  • relay.irc.backlog_max_number
  • relay.irc.backlog_since_last_disconnect
  • relay.irc.backlog_tags
  • relay.irc.backlog_time_format

Enjoy, and merry Christmas!

Wednesday, December 19 2012

Git version in build

The git version (output of "git describe") has been added to WeeChat build. This version is displayed in /version (or /v), and is returned in IRC CTCP ("version" and "finger").

Note: the git version is set only when building a development version (not a stable release).

This is useful if you help people and want to know the exact version.

Screenshot:

weechat_version_git.png

Tuesday, November 27 2012

Tags in IRC messages

Tags in IRC messages are now supported (in development version, planned for version 0.4.0), following this specification: http://ircv3.atheme.org/specification/message-tags-3.2.

The tag "time" is now read and is used to set the time for the message displayed.

The "znc" IRC bouncer is using this tag with the capability "znc.in/server-time-iso" (name should change in the next release). For example if you are using a server called "znc" in WeeChat, you can do:

/set irc.server.znc.capabilities "znc.in/server-time-iso"

Note: with znc 1.0, the server capability was "znc.in/server-time". With znc git > 1.0, the capability is "znc.in/server-time-iso".

Some info about capability "server-time": https://github.com/atheme/ircv3-specifications/blob/master/extensions/server-time-3.2.

Sunday, November 18 2012

Version 0.3.9.2

Version 0.3.9.2 is available, it fixes a security problem: untrusted command for function hook_process could lead to execution of commands, because of shell expansions.

Upgrade is highly recommended for all users.

Friday, November 9 2012

Version 0.3.9.1

Version 0.3.9.1 is available, it fixes a security problem (buffer overflow when decoding IRC colors in strings).

Upgrade is recommended for all users.

Saturday, September 29 2012

Version 0.3.9

Version 0.3.9 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:

  • add plugin "script" (replacement of weeget.py and script.pl) (see this post)
  • add support of SSL in relay plugin (see this post)
  • add color for offline nicks
  • add system resource limits for WeeChat process
  • add zoom on merged buffer (default key: alt+"x")
  • add "Day changed to" in logger backlog
  • add command line option "-r" (or "--run-command") to run command(s) after startup of WeeChat
  • add option "swap" for command /buffer
  • generate alternate IRC nicks dynamically (when all nicks are already in use)
  • fix rejoin of password protected IRC channels
  • fix freeze in irc and relay plugins with sockets
  • fix color of long lines (displayed on more than one line on screen) under FreeBSD
  • allow update for some variables of hdata
  • add japanese user's guide, scripting guide and tester's guide

New options:

  • weechat.startup.sys_rlimit
  • weechat.look.jump_smart_back_to_buffer
  • weechat.look.window_separator_horizontal
  • weechat.look.window_separator_vertical
  • weechat.look.color_nick_offline
  • weechat.color.chat_nick_offline_highlight
  • weechat.color.chat_nick_offline_highlight_bg
  • aspell.check.enabled
  • irc.look.ctcp_time_format
  • relay.network.ssl_cert_key
  • relay.color.client

Options changed:

  • weechat.look.nickmode renamed as irc.look.nick_mode (new type: integer with values: none/prefix/action/both)
  • weechat.look.nickmode_empty renamed as irc.look.nick_mode_empty

Options removed:

  • irc.look.item_channel_modes

New keys:

  • meta-x = "/input zoom_merged_buffer" (zoom on merged buffer)
  • meta-s = "/mute aspell toggle" (toggle aspell)

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

Tuesday, August 14 2012

Scripts manager

A new scripts manager has been added, the plugin is called "script" and provides the /script command.

This plugin will replace two scripts: weeget.py (the current scripts manager) and script.pl (providing a /script command to load/unload/reload scripts for any language).

The new /script command is similar to command /weeget with some minor differences (see /help script for more info).

The plugin provides a buffer with list of scripts in repository, which makes installation or removal of scripts very fast: just press alt+i on this buffer, and the script is installed! Not satisfied with the script? Key alt+r and the script is gone!

The buffer allows you to search string in scripts (description, tags, ...) and to sort scripts with many keys. Columns displayed can be fully customized (order, columns displayed), as well as colors.

For list of options, just do: /set script.*

List of scripts (click for full size):

Script plugin: list of scripts

Detail of a script (click for full size): Script plugin: detail of a script

Enjoy!

Friday, July 27 2012

SSL in Relay plugin

SSL support has been added in Relay plugin, for irc and weechat protocols.

A new option has been added to set the certificate and private key to use:

  • relay.network.ssl_cert_key: path to file with certificate and private key (default: ~/.weechat/ssl/relay.pem)

The file can be created with following commands:

$ mkdir -p ~/.weechat/ssl
$ cd ~/.weechat/ssl
$ openssl req -nodes -newkey rsa:2048 -keyout relay.pem -x509 -days 365 -out relay.pem

In WeeChat :

/relay sslcertkey

And add relays with SSL, for example:

/relay add ssl.irc.freenode 8001
/relay add ssl.weechat 9001

And now WeeChat will serve clients on these ports using SSL, enjoy!

Sunday, June 3 2012

Version 0.3.8

Version 0.3.8 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:

  • add terminal "bracketed paste mode" (see this post)
  • add IRC "external" SASL mechanism
  • improve parsing of IRC channel modes (do not send extra command "MODE" to server)
  • follow symbolic links for configuration files (*.conf)
  • new option weechat.look.prefix_same_nick (hide same prefix for multiple consecutive messages from same nick)
  • add colors for backlog lines
  • redirect IRC messages from clients to hide output (relay plugin, IRC protocol)
  • add a connection timeout for child process in hook_connect
  • fix display bugs and crashs with small windows
  • fix truncated configuration files (zero-length) after system crash

New options:

  • logger.color.backlog_line
  • logger.color.backlog_end
  • weechat.look.paste_bracketed
  • weechat.look.paste_bracketed_timer_delay
  • weechat.look.prefix_same_nick
  • weechat.network.connection_timeout

Options changed:

  • weechat.look.prefix_align_more (from boolean to string)
  • weechat.look.prefix_buffer_align_more (from boolean to string)

New keys:

  • meta2-200~ = "/input paste_start" (start of bracketed paste)
  • meta2-201~ = "/input paste_stop" (end of bracketed paste)

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

Sunday, March 25 2012

4000 commits

I just made the 4000th commit for WeeChat, which is also the 600th commit for the past 12 months!

Commits by range: month: 56 year: 600 total: 4000

New page with statistics about Git repositories (core and scripts): http://weechat.org/dev/stats

Friday, March 16 2012

SameGame

A new script samegame.py is now available! More info about this game is available at http://en.wikipedia.org/wiki/SameGame.

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

Mouse is required, so you must have WeeChat >= 0.3.6.

For help: /help samegame.

Screenshot (click for full size):

SameGame

Enjoy!

Saturday, March 10 2012

Bracketed paste mode

The support for terminal bracketed paste mode has been added. In this mode, pasted text is bracketed with control sequences so that WeeChat can differentiate pasted text from typed-in text (ESC[200~, followed by the pasted text, followed by ESC[201~).

New options:

  • weechat.look.paste_bracketed: enable terminal "bracketed paste mode" (off by default)
  • weechat.look.paste_bracketed_timer_delay: force end of bracketed paste after this delay (in seconds) if control sequence for end of bracketed paste was not received in time (10 seconds by default)

Changes on option weechat.look.paste_max_lines: now -1 is used to disable option (and new default value is 1 instead of 3). According to value, you have following behaviour:

  • value -1: paste detection disabled (any paste is immediately inserted in input, without confirmation)
  • value 0: WeeChat will ask confirmation for any paste (even one char)
  • value N (>= 1): WeeChat will ask for at least N+1 lines

When pasting one line with newline in bracketed paste mode, the newline at the end of paste is automatically removed (regardless the value of option weechat.look.paste_max_lines).

According to my tests the "bracketed paste mode" works fine with:

  • terminals: rxvt-unicode (9.15), xterm (276), mintty (1.0.3)
  • multiplexer: screen (4.00.03)

According to my tests it currently does not work with:

  • terminals: putty like (planned, committed recently)
  • multiplexer: tmux (1.6) (planned, committed recently)

Please comment this post if you have info about other terminals (supported or not).

Sunday, February 26 2012

Version 0.3.7

Version 0.3.7 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:

  • support of Scheme scripts (new plugin "guile") (see this post)
  • support of Python 3.x (but version 2.x still recommended) (see this post)
  • add "weechat" protocol in relay plugin for remote interfaces, like QWeeChat (see this post)
  • new option irc.color.mirc_remap to remap mirc colors in irc messages
  • new options irc.look.highlight_{server|channel|pv} to customize or disable default nick highlight
  • new option "capabilities" in irc servers (to enable some client capabilities on connection)
  • new option weechat.history.max_buffer_lines_minutes to limit buffer history by time
  • use extended regex in /filter, /ignore and /list
  • add support of flags in regular expressions and highlight options
  • add URL transfer in plugin API (with hook_process) (see this post)
  • add translations in japanese
  • add doc for relay protocol
  • add developer's guide

New options:

  • irc.look.highlight_server
  • irc.look.highlight_channel
  • irc.look.highlight_pv
  • irc.look.mirc_remap
  • irc.server.xxx.capabilities
  • relay.network.allowed_ips
  • relay.network.compression_level
  • weechat.look.scroll_bottom_after_switch
  • weechat.completion.base_word_until_cursor
  • weechat.history.max_buffer_lines_minutes
  • weechat.history.max_buffer_lines_number (old name was weechat.history.max_lines)

New default alias:

  • /umode --> /mode $nick

New keys:

  • alt + "/": jump to last buffer displayed (/input jump_last_buffer_displayed)

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

Wednesday, January 18 2012

URL transfer in API

URL transfer has been added in API for plugins and scripts (using libcurl).

A new function has been added: "hook_process_hashtable". Behaviour is the same as "hook_process", but with an extra "options" (a hashtable). To download URL content (html page or file), the syntax is (example is python):

weechat.hook_process_hashtable('url:http://weechat.org/download/',
                               { 'file_out': '/tmp/url.txt' },
                               10000, 'my_process_cb', '')

This code will download URL in file "/tmp/url.txt" and call function "my_process_cb" when done, with return code:

  • 0: transfer ok
  • 1: invalid URL
  • 2: transfer error
  • 3: not enough memory
  • 4: error with a file

It is possible to download URL without any option, then the output is on standard output of process (received as "out" in callback, possibly in many chunks, depending on page size):

weechat.hook_process('url:http://weechat.org/download/', 10000, 'my_process_cb', '')

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):

Urlserver

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):

Urlserver

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 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

- page 1 of 3