Giter Club home page Giter Club logo

weechat's Introduction

weechat logo large

Mastodon Diaspora* Twitter Devel blog Slant Donate

CI Code coverage

WeeChat (Wee Enhanced Environment for Chat) is a free chat client, fast and light, designed for many operating systems. It is highly customizable and extensible with scripts.

Features

  • Modular chat client: WeeChat has a lightweight core and optional plugins. All plugins (including IRC) are independent and can be unloaded.

  • Multi-platform: WeeChat runs on GNU/Linux, *BSD, GNU/Hurd, Haiku, macOS and Windows (Bash/Ubuntu and Cygwin).

  • Multi-protocols: WeeChat is designed to support multiple protocols by plugins, like IRC.

  • Standards-compliant: the IRC plugin is compliant with RFCs 1459, 2810, 2811, 2812, 2813 and 7194.

  • Small, fast, and very light: the core is and should stay as light and fast as possible.

  • Customizable and extensible: there are a lot of options to customize WeeChat, and it is extensible with C plugins and scripts (Perl, Python, Ruby, Lua, Tcl, Scheme, JavaScript and PHP).

  • Fully documented: there is comprehensive documentation, which is translated into several languages.

  • Developed from scratch: WeeChat was built from scratch and is not based on any other client.

  • Free software: WeeChat is released under GPLv3.

weechat 2013 04 27 phlux shadow

On WeeChat’s website you can find more screenshots.

Installation

WeeChat can be installed using your favorite package manager (recommended) or by compiling it yourself.

For detailed instructions, please check the WeeChat user’s guide.

Semantic versioning

WeeChat is following a "practical" semantic versioning, see file Contributing.adoc.

Copyright © 2003-2024 Sébastien Helleu <[email protected]>

This file is part of WeeChat, the extensible chat client.

WeeChat is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

WeeChat is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with WeeChat. If not, see https://www.gnu.org/licenses/.

weechat's People

Contributors

adsr avatar advantageous-overtake avatar arza-zara avatar bitigchi avatar eevan78 avatar eli-schwartz avatar fixato avatar flashcode avatar golemj avatar k0lter avatar luk1337 avatar m4v avatar mapolone avatar mario-campos avatar maxteufel avatar mikaela avatar mimi1vx avatar msiism avatar nomis avatar obsdler avatar pbos avatar sim642 avatar soltysek avatar stfnm avatar sunder67 avatar talisein avatar torhve avatar trygveaa avatar weechatter avatar zarthus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

weechat's Issues

CAP Away-notify

I believe adding this would help cut-down on unneeded spam for networks that support away-notify.

irc.server_default.away_check
description: interval between two checks for away (in minutes, 0 = never check)
type: integer
values: 0 .. 10080 (default value: 0)

With away-notify the only time you would need to check for away status is on-join, after that any future away messages would be sent to you.

irc.server_default.away_check_max_nicks
description: do not check away nicks on channels with high number of nicks (0 = unlimited)
type: integer
values: 0 .. 1000000 (default value: 25)

Away-notify would also make checking the away status on channels with a high number of users less strenuous since we would only be checking it once at join time.

The away-notify spec: http://ircv3.org/extensions/away-notify-3.1

Non-Working script (weatherbot.py)

WeatherUnderground's login page is broken, so no new users are able to login, unless someone has found out a way, as when I try to login to my account on wu it just switches @ with %40 and then it says my stuff is incorrect, because of itself >_<

Hide mode parameters in buffer_modes?

Would it be possible to add an option which causes the parameters for modes to not be displayed in buffer_modes? Some ircds (particularly unreal) have potentially very long parameters, which severely reduces screen real-estate for bars in which they appear.

0.4.3 broke DCC on Mac

Accepting incoming files fails with "unable to connect to sender". Same transfer works with 0.4.2. Reproduced using current source code on OS X 10.8.5 and 10.9.2 with IPv4 addresses.

Unable to set different colors for nick modes in input_prompt and input_text in input bar

Version: WeeChat 0.4.3 [compiled on Mar 14 2014 17:21:02]
OS: FreeBSD 9.2-RELEASE amd64

I'd like to have everything in the input bar dark gray, except for input text, which should use the default term color. It looks like this is not possible right now.

WeeChat doesn't allow you to choose a color for the nick/user mode displayed in the input bar. The only way to change it appears to be by changing the weechat.bar.input.color_fg option which changes the input_text color as well.

Screenshot showing problem here

There should be an option to change the color of nick modes in the client, in the same way you can change the colors for channel modes. Since the option for channel modes is irc.color.item_channel_modes, it looks like irc.color.item_nick_modes would be a reasonable name for this new option.

Issuing command /buffer close twice at the same time with multiline.ok causes WeeChat to crash.

Backtrace:

#0  0x00000229dd952475 in *__GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
        pid = <optimized out>
        selftid = <optimized out>
#1  0x00000229dd9556f0 in *__GI_abort () at abort.c:92
        act = {__sigaction_handler = {sa_handler = 0x1, sa_sigaction = 0x1}, sa_mask = {__val = {2378834754332, 57023536, 2378837945952, 0, 0, 2378834275232, 2378859544576, 1, 4294967295, 56855296, 5, 7115648, 0, 150357184, 1, 0}}, sa_flags = -554345998, sa_restorer = 0x5}
        sigs = {__val = {32, 0 <repeats 15 times>}}
#2  0x000000000045e740 in weechat_shutdown (return_code=1, crash=1) at /home/users/mkaysi/src/git/weechat/weechat/src/core/weechat.c:407
No locals.
#3  <signal handler called>
No symbol table info available.
#4  gui_line_prefix_is_same_nick_as_previous (line=0x8b010c0) at /home/users/mkaysi/src/git/weechat/weechat/src/gui/gui-line.c:141
        nick = <optimized out>
        nick_previous = <optimized out>
        prev_line = <optimized out>
#5  0x0000000000452ae4 in gui_line_get_prefix_for_display (line=line@entry=0x8b010c0, prefix=prefix@entry=0x0, length=length@entry=0x38c7e3b7ff8, color=color@entry=0x0, prefix_is_nick=prefix_is_nick@entry=0x38c7e3b7ffc) at /home/users/mkaysi/src/git/weechat/weechat/src/gui/gui-line.c:194
        tag_prefix_nick = 0x36206f0 "\340{a\003"
#6  0x00000000004533c1 in gui_line_remove_from_list (buffer=buffer@entry=0x58ae9a0, lines=0x8f644c0, line=0x8b010c0, free_data=free_data@entry=1) at /home/users/mkaysi/src/git/weechat/weechat/src/gui/gui-line.c:969
        ptr_win = 0x0
        ptr_scroll = <optimized out>
        prefix_length = <optimized out>
        prefix_is_nick = <optimized out>
#7  0x0000000000453638 in gui_line_free (buffer=buffer@entry=0x58ae9a0, line=<optimized out>) at /home/users/mkaysi/src/git/weechat/weechat/src/gui/gui-line.c:1105
        ptr_line = <optimized out>
#8  0x0000000000453668 in gui_line_free_all (buffer=buffer@entry=0x58ae9a0) at /home/users/mkaysi/src/git/weechat/weechat/src/gui/gui-line.c:1117
No locals.
#9  0x0000000000440b10 in gui_buffer_close (buffer=buffer@entry=0x58ae9a0) at /home/users/mkaysi/src/git/weechat/weechat/src/gui/gui-buffer.c:2559
        ptr_window = <optimized out>
        ptr_buffer = <optimized out>
        ptr_back_to_buffer = 0x0
        ptr_buffer_visited_buffer = <optimized out>
        index = 0
        i = <optimized out>
        ptr_buffer_visited = 0x38c7e3b7ff8
#10 0x0000000000463d15 in command_buffer (data=<optimized out>, buffer=0x58ae9a0, argc=2, argv=0x8d6e280, argv_eol=0x3baf550) at /home/users/mkaysi/src/git/weechat/weechat/src/core/wee-command.c:807
        ptr_buffer = <optimized out>
        ptr_buffer2 = <optimized out>
        ptr_prev_buffer = <optimized out>
        weechat_buffer = 0x3ba3a80
        number = <optimized out>
        number1 = <optimized out>
        number2 = <optimized out>
        numbers = {144628272, 4798781, 98}
        error = <optimized out>
        value = <optimized out>
        pos = <optimized out>
        str_number1 = <optimized out>
        pos_number2 = <optimized out>
        error_main_buffer = <optimized out>
        num_buffers = <optimized out>
        count = <optimized out>
        prev_number = <optimized out>
#11 0x0000000000480529 in hook_command_exec (buffer=buffer@entry=0x58ae9a0, any_plugin=any_plugin@entry=1, plugin=plugin@entry=0x8900230, string=string@entry=0x588c8f0 "/buffer close") at /home/users/mkaysi/src/git/weechat/weechat/src/core/wee-hook.c:777
        ptr_hook = 0x35ef8d0
        next_hook = 0x0
        hook_plugin = <optimized out>
        hook_other_plugin = 0x35ef8d0
        hook_other_plugin2 = 0x0
        argv = 0x8d6e280
        argv_eol = 0x3baf550
        ptr_command_name = 0x8f41711 "buffer"
        argc = 2
        rc = -1
        count_other_plugin = 1
#12 0x0000000000486ae8 in input_exec_command (buffer=buffer@entry=0x58ae9a0, any_plugin=any_plugin@entry=1, plugin=0x8900230, string=string@entry=0x8c68d10 "/buffer close") at /home/users/mkaysi/src/git/weechat/weechat/src/core/wee-input.c:100
        command = 0x588c8f0 "/buffer close"
        command_name = 0x8aaf8e0 "/buffer"
        pos = <optimized out>
#13 0x0000000000486e6c in input_data (buffer=buffer@entry=0x58ae9a0, data=data@entry=0x8ed2e50 "/buffer close") at /home/users/mkaysi/src/git/weechat/weechat/src/core/wee-input.c:209
        pos = 0x0
        buf = <optimized out>
        str_buffer = "0x58ae9a0\000\331\b\000\000\000\000\001\000\000\000\000\000\000\000\000˝\b\000\000\000\000`n\312\335)\002\000\000\016\000\000\000\000\000\000\000\240\315\303\b\000\000\000\000`\303\331\b\000\000\000\000\240\320\311\b\000\000\000\000\000\274\231\335)\002", '\000' <repeats 11 times>, "˝\b\000\000\000\000\016\000\000\000\000\000\000\000\000˝\b\000\000\000\000\240\315\303\b\000\000\000\000B\f\232\335)\002\000"
        new_data = 0x8c68d10 "/buffer close"
        ptr_data = <optimized out>
        ptr_data_for_buffer = 0x0
        length = <optimized out>
        char_size = <optimized out>
#14 0x000000000045cf1c in plugin_api_command (plugin=<optimized out>, buffer=0x58ae9a0, command=0x89dcb00 "/buffer close") at /home/users/mkaysi/src/git/weechat/weechat/src/plugins/plugin-api.c:275
        command2 = 0x8ed2e50 "/buffer close"
#15 0x00000229d821c875 in alias_run_command (buffer=buffer@entry=0x38c7e3b8398, command=0x8d9c360 "/buffer close") at /home/users/mkaysi/src/git/weechat/weechat/src/plugins/alias/alias.c:314
        string = 0x89dcb00 "/buffer close"
        old_current_buffer = 0x8c3cda0
        new_current_buffer = <optimized out>
#16 0x00000229d821cb2d in alias_cb (data=0x6f3ca10, buffer=0x0, argc=2, argv=<optimized out>, argv_eol=0x588f180) at /home/users/mkaysi/src/git/weechat/weechat/src/plugins/alias/alias.c:397
        ptr_alias = 0x6f3ca10
        commands = 0x8f27b70
        ptr_cmd = 0x8f27b70
        ptr_next_cmd = 0x8f27b78
        args_replaced = 0x8d9de70 "/buffer"
        alias_command = <optimized out>
        some_args_replaced = 0
        length1 = <optimized out>
        length2 = <optimized out>
#17 0x0000000000480529 in hook_command_exec (buffer=buffer@entry=0x58ae9a0, any_plugin=any_plugin@entry=1, plugin=plugin@entry=0x8900230, string=string@entry=0x8a0e130 "/b close") at /home/users/mkaysi/src/git/weechat/weechat/src/core/wee-hook.c:777
        ptr_hook = 0x6b9ef10
        next_hook = 0x0
        hook_plugin = <optimized out>
        hook_other_plugin = 0x6b9ef10
        hook_other_plugin2 = 0x0
        argv = 0x8ae7d00
        argv_eol = 0x588f180
        ptr_command_name = 0x8ca64a1 "b"
        argc = 2
        rc = -1
        count_other_plugin = 1
#18 0x0000000000486ae8 in input_exec_command (buffer=buffer@entry=0x58ae9a0, any_plugin=any_plugin@entry=1, plugin=0x8900230, string=string@entry=0x8ed1709 "/b close") at /home/users/mkaysi/src/git/weechat/weechat/src/core/wee-input.c:100
        command = 0x8a0e130 "/b close"
        command_name = 0x8b296b0 "/b"
        pos = <optimized out>
#19 0x0000000000486e6c in input_data (buffer=0x58ae9a0, data=data@entry=0x8f715b0 "/b close\n/b close") at /home/users/mkaysi/src/git/weechat/weechat/src/core/wee-input.c:209
        pos = 0x0
        buf = <optimized out>
        str_buffer = "0x58ae9a0\000D\000\000\000\000\000\260\031\273\b\000\000\000\000\372\246D\000\000\000\000\000\060x58ae9a0\000\367\b\000\000\000\000\267\025\367\b\000\000\000\000p\343\212\005\000\000\000\000`n\312\335)\002\000\000`n\312\335)\002\000\000\240\351\212\005\000\000\000\000\240\351\212\005\000\000\000\000\200\063\363\b\000\000\000\000\060\002\220\b", '\000' <repeats 12 times>, "\034\273\231\335)\002\000"
        new_data = 0x8ed1700 "/b close\n/b close"
        ptr_data = <optimized out>
        ptr_data_for_buffer = 0x0
        length = <optimized out>
        char_size = <optimized out>
#20 0x000000000044c04e in gui_input_return (buffer=buffer@entry=0x58ae9a0) at /home/users/mkaysi/src/git/weechat/weechat/src/gui/gui-input.c:440
        window = 0x3ba6700
        command = 0x8f715b0 "/b close\n/b close"
#21 0x0000000000461b28 in command_input (data=<optimized out>, buffer=0x58ae9a0, argc=2, argv=0x588c040, argv_eol=0x8f33380) at /home/users/mkaysi/src/git/weechat/weechat/src/core/wee-command.c:2709
No locals.
#22 0x0000000000480529 in hook_command_exec (buffer=buffer@entry=0x58ae9a0, any_plugin=any_plugin@entry=1, plugin=plugin@entry=0x8900230, string=string@entry=0x590c4e0 "/input return") at /home/users/mkaysi/src/git/weechat/weechat/src/core/wee-hook.c:777
        ptr_hook = 0x35f62b0
        next_hook = 0x0
        hook_plugin = <optimized out>
        hook_other_plugin = 0x35f62b0
        hook_other_plugin2 = 0x0
        argv = 0x588c040
        argv_eol = 0x8f33380
        ptr_command_name = 0x8ab6a61 "input"
        argc = 2
        rc = -1
        count_other_plugin = 1
#23 0x0000000000486ae8 in input_exec_command (buffer=buffer@entry=0x58ae9a0, any_plugin=any_plugin@entry=1, plugin=0x8900230, string=string@entry=0x8f28a60 "/input return") at /home/users/mkaysi/src/git/weechat/weechat/src/core/wee-input.c:100
        command = 0x590c4e0 "/input return"
        command_name = 0x7848980 "/input"
        pos = <optimized out>
#24 0x0000000000486e6c in input_data (buffer=0x58ae9a0, data=<optimized out>) at /home/users/mkaysi/src/git/weechat/weechat/src/core/wee-input.c:209
        pos = 0x0
        buf = <optimized out>
        str_buffer = "0x58ae9a0\000;~\214\003\000\000\070\207;~\214\003\000\000<\207;~\214\003\000\000\060\207;~\214\003\000\000\230\363\031\336)\002\000\000\060#\241\b", '\000' <repeats 12 times>, "\030\000\000\000\000\000\000\000`\207;~\214\003\000\000\020\207;~\214\003\000\000\000\000\000\000\000\000\000\000\260\242\306\b\000\000\000\000\020ī\b\000\000\000\000@\207;~\214\003\000\000\021X\026\337)\002\000"
        new_data = 0x8f28a60 "/input return"
        ptr_data = <optimized out>
        ptr_data_for_buffer = 0x0
        length = <optimized out>
        char_size = <optimized out>
#25 0x000000000045f85e in command_wait_timer_cb (data=0x8d9b130, remaining_calls=<optimized out>) at /home/users/mkaysi/src/git/weechat/weechat/src/core/wee-command.c:6026
        timer_args = 0x8d9b130
        i = <optimized out>
        ptr_buffer = <optimized out>
#26 0x0000000000483d5f in hook_timer_exec () at /home/users/mkaysi/src/git/weechat/weechat/src/core/wee-hook.c:1147
        tv_time = {tv_sec = 1395135098, tv_usec = 368856}
        ptr_hook = 0x8e22ec0
        next_hook = 0x0
#27 0x000000000042e37f in gui_main_loop () at /home/users/mkaysi/src/git/weechat/weechat/src/gui/curses/gui-curses-main.c:469
        hook_fd_keyboard = 0x8a12330
        tv_timeout = {tv_sec = 0, tv_usec = 0}
        read_fds = {fds_bits = {0 <repeats 16 times>}}
        write_fds = {fds_bits = {0 <repeats 16 times>}}
        except_fds = {fds_bits = {0 <repeats 16 times>}}
        max_fd = <optimized out>
        ready = <optimized out>
#28 0x00000000004250f1 in main (argc=5, argv=0x38c7e3b8a78) at /home/users/mkaysi/src/git/weechat/weechat/src/core/weechat.c:477
No locals.

Make /allchan execute on current server only

I think this use case might be more common. For example, I've just executed /allchan part in an attempt to part all channels on the current server because I forgot about -current.

If you really want to execute a command in all channels on all servers, you can use /allserv allchan COMMAND.

Add support for /knock command

From Wikipedia:

Syntax:

KNOCK <channel> [<message>]

Sends a NOTICE to an invitation-only with an optional , requesting an invite.

This command is not formally defined by an RFC, but is supported by most major IRC daemons. Support is indicated in a RPL_ISUPPORT reply (numeric 005) with the KNOCK keyword.

irc.server.*.ssl_fingerprint Allow a list of fingerprints

Currently irc.server_default.ssl_fingerprint only allows one fingerprint to be specified, it would be cool if it allowed a list:

irc.example.com

--> a.example.com 40f5ccae2c382c9ca3d9d38b9ed1e0440a5bad27
--> b.example.com 76d9d1d7abc04d1631fb06f112f8c761dcc09243

All use self-singed certs

Thus in Weechat would be nice to do,

/set irc.server.example.ssl_fingerprint 40f5ccae2c382c9ca3d9d38b9ed1e0440a5bad27,76d9d1d7abc04d1631fb06f112f8c761dcc09243

Other thoughts: With ssl_verify on, maybe prompt a user to add that ssl fingerprint as trusted on connect.

Another way would be to still have weechat.network.gnutls_ca_file for system certs and then go back to allowing a per server file for certs, kinda like how we have the one now for CertFP, e.g., irc.server.freenode.ssl_cert. Or let us specify two paths in weechat.network.gnutls_ca_file, one for system and one for our locally kept custom ones. Which would probably be ideal, as just two files is more than enough, and this way you don't have to add that line for each new server, as you just add the PEM files to your one big custom CA file.


Reasoning: A lot of IRC networks use their own certs or use signing agencies that aren't very well known and not in the system ca file. This way we could take care of those without turning off ssl_verify and still have the convenience of the system ones when we connect to better known IRC networks as well as the nicety of the system ones being updated and revoked.

VerdeP in #weechat @ chat.freenode.net

Add support for away-notify CAP

…possibly with a new option to go with it. The old options (away_check and away_check_max_nicks) could be used on servers that don't support away-notify.

Allow for flexible filtering/redirecting messages to a buffer

I'm trying to collect messages from different sources (several irc bots over different networks) into a single buffer, maybe like this:

banned user badspammer for ... on ...
banned user someidiot for ... on ...

This could be also nice to redirect all services' messages to a single buffer, like server.services collecting all messaged from *@services.server - NickServ, ChanServ, OperServ, ...

Responding to these messages will probably be easy, because there's no way to address the target.

It'd also be nice if filtering/redirecting messages can be chosen to either duplicate the messages to that buffer or redirect it alltogether.

in bash syntax: "cat sometext > buffer" VS "cat sometext | tee -a buffer"

Xfer/DCC: Weechat crashes when sending empty file to yourself

This only happens when sending an empty file to yourself. When sending to another weechat instance, the transfer never even starts (at least in my tests).

Maybe sending of empty files should be disallowed completely?

Steps to reproduce:
/exec touch /tmp/foo
/dcc send <yournick> /tmp/foo

Then accept the incoming transfer.

Add a command to send messages through a buffer

We seem to be missing a way to send text to a buffer through regular commands

e.g. there's nothing corresponding to /msg -server SERVER =nick text (sends text to DCC CHAT with that nick on that server).

I used to have an irssi alias /botsay /msg =$1 .say $channel $2-.
Doing "/botsay botnick hello too" would then make the bot speak to the current channel I'm in.

^C without color resets bold in topic bar

Example:

^BThis ^C7entire ^Cline should be bold.

Expected representation (without color):

This entire line should be bold.

Actual representation (without color):

This entire line should be bold.

The topic is displayed correctly in topic and topic change messages.

Don't write options to disk when they're at their default values

Or, at least, have an option for configuring this. Currently, WeeChat writes out every single configuration option to the various .conf files, even those that are set at their defaults; this is rather a lot of cruft, it makes storing the WeeChat config in version control somewhat messier, and it has the unfortunate effect that when options change in new WeeChat versions, users do not automatically get their options updated (since they're loaded from disk).

It would therefore be valuable to have an option, something like weechat.look.save_include_defaults = on, that may be changed such that only the options not set to their defaults are written out. (Essentially, it would write the output of /set diff instead of the output of /set.)

This has already been discussed on freenode/#weechat and @flashcode expressed some interest, so this issue's here to track progress and/or allow for further discussion.

Prevent accidental /join 0

@nyuszika7h asked me to report this at IRC.

22:37:11 <nyuszika7h> Mikaela: can you open an issue on weechat/weechat for me?
22:37:21 <Mikaela> nyuszika7h: What about?
22:37:27 <Mikaela> I think, I can.
22:37:43 <nyuszika7h> 'Prevent accidental /join 0'
22:37:47 <nyuszika7h> with something along the lines of
22:37:54 <nyuszika7h> either require -yes, or make it join #0
22:38:00 <nyuszika7h> /join 10 joins #10 for comparison
22:38:07 <nyuszika7h> and /join 1 joins #1
22:38:12 <nyuszika7h> but /join 0 works as a part-all
22:38:20 <nyuszika7h> if the ircd supports it
22:39:09 <nyuszika7h> to be consistent probably having it use #0 would be best
22:39:16 <nyuszika7h> if you insist, you can always /quote join 0
22:39:35 <nyuszika7h> or, there should be a /part -all maybe ;)

DCC and ipv6 vs ipv4 (and debugging thereof)

The original problem is independent of weechat, but needs consideration within the implementations.

The syntax of DCC CHAT is "DCC CHAT < port>", with ip and port being chosen by the local client.

DCC CHAT may fail when the IRC server is dual-stack and the local client and the remote target don't use the same IP protocol.

Example: I'm connecting to the IRC server with IPv6, trying to DCC to an IPv4-only target.

The target won't be able to connect to me as it doesn't have a valid IPv6 route.

Unfortunately the local client cannot safely figure out which IP to use in DCC CHAT.

Suggested workaround: Allow the user to specify -4/-6 for /DCC, maybe have a config setting irc.default_server.dcc.protocol with "undefined", "ipv4", "ipv6" - with undefined resembling current behaviour.

PS: It'd probably make sense to also show the LOCALly chosen ip in xfer.list for better debugging.

Scrolling doesn't work in "view script" in /script

When you try to scroll up/down with either mouse or arrow keys, you will get errors like the following:

17:29:06     weechat       =!= | Error with command "/script down 5" (help on command: /help script)
17:29:06     weechat       =!= | Error with command "/script down 5" (help on command: /help script)
17:29:06     weechat       =!= | Error with command "/script down 5" (help on command: /help script)
17:29:06     weechat       =!= | Error with command "/script down 5" (help on command: /help script)
17:29:07     weechat       =!= | Error with command "/script down 5" (help on command: /help script)
17:29:07     weechat       =!= | Error with command "/script down 5" (help on command: /help script)
17:29:07     weechat       =!= | Error with command "/script down 5" (help on command: /help script)
17:29:07     weechat       =!= | Error with command "/script down 5" (help on command: /help script)
17:29:07     weechat       =!= | Error with command "/script down 5" (help on command: /help script)
17:29:07     weechat       =!= | Error with command "/script down 5" (help on command: /help script)
17:29:07     weechat       =!= | Error with command "/script up 5" (help on command: /help script)
17:29:07     weechat       =!= | Error with command "/script up 5" (help on command: /help script)
17:29:07     weechat       =!= | Error with command "/script up 5" (help on command: /help script)
17:29:07     weechat       =!= | Error with command "/script up 5" (help on command: /help script)
17:29:07     weechat       =!= | Error with command "/script up 5" (help on command: /help script)

Additional information:

/v

17:39:46     weechat           | WeeChat 0.4.4-dev (git: v0.4.3-227-g62d3c4e) [compiled on Mar  7 2014 11:15:01]
17:39:46     weechat           | Upgraded 4 times, first start: ma, 03 maalis 2014 12:19:03

lsb_release -a

Distributor ID: Debian
Description:    Debian GNU/Linux 7.4 (wheezy)
Release:        7.4
Codename:       wheezy

No longer builds on SmartOS

The last time I compiled weechat on smartos it was build 0.3.8 (http://lightsandshapes.com/weechat-on-smartos.html)
A lot has changed since then. It no longer seems to build.

[root@host ~/src/weechat-0.4.3/build]# make
File config-git.h is up-to-date (git version: "")
[  0%] Built target version_git
[  0%] Building C object src/core/CMakeFiles/weechat_core.dir/wee-command.o
In file included from /root/src/weechat-0.4.3/src/core/wee-command.c:49:0:
/root/src/weechat-0.4.3/src/core/wee-hook.h:188:20: error: field 'last_exec' has incomplete type
/root/src/weechat-0.4.3/src/core/wee-hook.h:189:20: error: field 'next_exec' has incomplete type
/root/src/weechat-0.4.3/src/core/wee-hook.h:465:25: error: unknown type name 'fd_set'
/root/src/weechat-0.4.3/src/core/wee-hook.h:465:43: error: unknown type name 'fd_set'
/root/src/weechat-0.4.3/src/core/wee-hook.h:466:25: error: unknown type name 'fd_set'
/root/src/weechat-0.4.3/src/core/wee-hook.h:467:27: error: unknown type name 'fd_set'
/root/src/weechat-0.4.3/src/core/wee-hook.h:467:45: error: unknown type name 'fd_set'
/root/src/weechat-0.4.3/src/core/wee-hook.h:468:27: error: unknown type name 'fd_set'
In file included from /root/src/weechat-0.4.3/src/core/wee-command.c:68:0:
/root/src/weechat-0.4.3/src/core/../gui/gui-hotlist.h:41:20: error: field 'creation_time' has incomplete type
/root/src/weechat-0.4.3/src/core/wee-command.c: In function 'command_bar_list':
/root/src/weechat-0.4.3/src/core/wee-command.c:107:13: error: implicit declaration of function 'snprintf' [-Werror=implicit-function-declaration]
/root/src/weechat-0.4.3/src/core/wee-command.c:107:13: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c: In function 'command_bar':
/root/src/weechat-0.4.3/src/core/wee-command.c:231:13: error: implicit declaration of function 'strdup' [-Werror=implicit-function-declaration]
/root/src/weechat-0.4.3/src/core/wee-command.c:231:24: warning: incompatible implicit declaration of built-in function 'strdup' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c:344:20: warning: incompatible implicit declaration of built-in function 'strdup' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c: In function 'command_buffer':
/root/src/weechat-0.4.3/src/core/wee-command.c:821:35: warning: incompatible implicit declaration of built-in function 'strdup' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c: In function 'command_color':
/root/src/weechat-0.4.3/src/core/wee-command.c:1236:9: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c:1283:9: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c: In function 'command_command':
/root/src/weechat-0.4.3/src/core/wee-command.c:1344:17: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c: In function 'command_help_list_plugin_commands':
/root/src/weechat-0.4.3/src/core/wee-command.c:2119:17: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c:2123:17: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c:2141:33: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c: In function 'command_help':
/root/src/weechat-0.4.3/src/core/wee-command.c:2234:13: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c: In function 'command_layout_display_tree':
/root/src/weechat-0.4.3/src/core/wee-command.c:3330:13: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c:3341:13: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c: In function 'command_layout':
/root/src/weechat-0.4.3/src/core/wee-command.c:3518:24: warning: incompatible implicit declaration of built-in function 'strdup' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c: In function 'command_mute':
/root/src/weechat-0.4.3/src/core/wee-command.c:3756:21: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c: In function 'command_print':
/root/src/weechat-0.4.3/src/core/wee-command.c:4256:25: error: implicit declaration of function 'strptime' [-Werror=implicit-function-declaration]
/root/src/weechat-0.4.3/src/core/wee-command.c:4266:25: error: implicit declaration of function 'localtime_r' [-Werror=implicit-function-declaration]
/root/src/weechat-0.4.3/src/core/wee-command.c:4326:16: warning: incompatible implicit declaration of built-in function 'strdup' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c: In function 'command_repeat':
/root/src/weechat-0.4.3/src/core/wee-command.c:4729:19: warning: incompatible implicit declaration of built-in function 'strdup' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c:4735:13: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c: In function 'command_secure':
/root/src/weechat-0.4.3/src/core/wee-command.c:4903:33: warning: incompatible implicit declaration of built-in function 'strdup' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c:4948:33: warning: incompatible implicit declaration of built-in function 'strdup' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c: In function 'command_set_display_option':
/root/src/weechat-0.4.3/src/core/wee-command.c:5053:21: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c:5085:25: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c: In function 'command_set_display_option_list':
/root/src/weechat-0.4.3/src/core/wee-command.c:5253:21: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c: In function 'command_unset':
/root/src/weechat-0.4.3/src/core/wee-command.c:5520:25: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c: In function 'command_upgrade':
/root/src/weechat-0.4.3/src/core/wee-command.c:5635:22: warning: incompatible implicit declaration of built-in function 'strdup' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c:5688:9: error: implicit declaration of function 'setenv' [-Werror=implicit-function-declaration]
/root/src/weechat-0.4.3/src/core/wee-command.c: In function 'command_uptime':
/root/src/weechat-0.4.3/src/core/wee-command.c:5734:9: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c:5747:9: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c: In function 'command_version_display':
/root/src/weechat-0.4.3/src/core/wee-command.c:5801:13: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c:5821:13: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
/root/src/weechat-0.4.3/src/core/wee-command.c: In function 'command_wait':
/root/src/weechat-0.4.3/src/core/wee-command.c:5975:26: warning: incompatible implicit declaration of built-in function 'strdup' [enabled by default]
cc1: some warnings being treated as errors
make[2]: *** [src/core/CMakeFiles/weechat_core.dir/wee-command.o] Error 1
make[1]: *** [src/core/CMakeFiles/weechat_core.dir/all] Error 2
make: *** [all] Error 2

Add irc_401 and irc_402 to 'whois' msgbuffer alias

IRC raw numeric 401 (No such nick or No such nick/channel) or 402 (No such server) is received from most IRC servers when doing a /whois on a non existing user:

-> /whois NonExistingUser
-- NonExistingUser: No such server [irc_402,log3] (UnrealIRCd, charybdis, ircnet, ircd-seven, hybrid, ircd-ratbox
-- NonExistingUser: No such nick/channel [irc_401,log3] (InspIRCd, snircd)
-- NonExistingUser: Nick does not exist [irc_401,log3] (bitlbee)

Currently http://www.weechat.org/files/doc/stable/weechat_user.en.html#irc_target_buffer does not seem to include these in the whois alias.

Unless there's a good reason not to include them, I think it would be nice to have these included.

Wrapped lines not aligned correctly with prefix_buffer_align=none

If I have a window with multiple buffers, weechat.look.prefix_buffer_align set to none, long wrapped lines are misaligned for inactive buffers.

Compare these screenshots:

eelluip

48thvhx

All settings:

weechat.look.align_end_of_lines = message
weechat.look.prefix_align = none  (default: right)
weechat.look.prefix_align_max = 14  (default: 0)
weechat.look.prefix_align_min = 0
weechat.look.prefix_align_more = "+"
weechat.look.prefix_align_more_after = on
weechat.look.prefix_buffer_align = none  (default: right)
weechat.look.prefix_buffer_align_max = 10  (default: 0)
weechat.look.prefix_buffer_align_more = "+"
weechat.look.prefix_buffer_align_more_after = on

IRC:

18:35 (@FlashCode) grawity: ah, then I understand
18:35 (@FlashCode) I think it uses the max buffer length
18:35 (@FlashCode) for the new lines
18:35 (@FlashCode) even if you set alignment to none

error "xfer: cannot find available port for xfer" when own_ip set

Weechat gives the error: "xfer: cannot find available port for xfer" when xfer.network.own_ip is set to a non-local-machine address.

My network router address is 192.168.1.1
My local machine address is 192.168.1.24
I have a port range set on my router and in weechat for 30000-31000 which does not affect the issue when set or unset in weechat.
Setting xfer.network.own_ip to 192.168.1.24: No error
Setting xfer.network.own_ip to 127.0.0.1: No error
Setting xfer.network.own_ip to <EXTERNAL_IP>: xfer: cannot find available port for xfer
Setting xfer.network.own_ip to 192.168.1.1: xfer: cannot find available port for xfer

Error started in 0.4.3 and continues to 0.4.4-dev
Error is not present in 0.4.2

Highlights and unbreakable spaces

When receiving a message containing mynick\xa0? (\xa0 is the unbreakable space), weechat does not detect it as a highlight.

Some informations, as ask in Contributing.asciidoc:

  • Version: WeeChat 0.4.4-dev (git: v0.4.3-336-gb09fbea) [compilé le Mar 19 2014 18:54:24]
  • OS: Debian Sid
  • How to reproduce: ask someone (or a bot) to write your name followed by an unbreakable space (some keyboard layouts map unbreakable spaces to AltGr+Space). For instance, with a Supybot you could do: @echo "test $nick\xa0?"

Make lag_reconnect server-specific

Different networks often have different ping timeouts. Moving irc.network.lag_reconnect to irc.server_default.lag_reconnect and irc.server.*.lag_reconnect would allow users to set it on a per-network basis.

Highlights state for relays

How are relay clients supposed to handle highlights in a stateful way? Meaning user explicitly marks highlight as read on relay client.

The end result should be that if relay reconnects, unread highlights are still visible. Is that something weechat provides or should the state be kept somehow on relay?

Case-sensitive highlighting doesn't work with Capital letters.

I have (?-i)Suomalainen in weechat.look.highlight which according to the help for that configuration variable should highlight when someone says Suomalainen with capital letter.

What happens instead is that only suomalainen with small letter is highlighted and I am not highlighted by Suomalainen.

Background information: my last name is Suomalainen and suomalainen with small letter means finn or finnish, so I am getting many false highlights when someone talks about finnish corporation/app/whatever.

14:29:30 WeeChat 0.4.4-dev (git: v0.4.3-252-g1a30be3) [compiled on Mar 13 2014 08:51:04]
14:29:30 Upgraded 2 times, first start: ti, 11 maalis 2014 09:08:10

Is /summon still meaningful to have?

EDITED (2014-03-09 10:35 UTC)


Most modern IRC servers don't have a summon module, some have a dummy one. It's listed under the Optionals section in RFC 1459, which by the way only seems to require servers to implement commands, not clients.

As it was pointed out in the comments, it's actually never used. I suspected that, but I was tired yesterday.

After AKICK (kban on join by ChanServ) WeeChat continues to send who requests.

This spams core buffer with messages telling me

21:14:39 -- [#channel] End of /WHO list.
21:16:11 -- [#channel] End of /WHO list.
21:17:43 -- [#channel] End of /WHO list.
21:19:17 -- [#channel] End of /WHO list.
21:21:25 -- [#channel] End of /WHO list.
21:23:19 -- [#channel] End of /WHO list.
21:24:51 -- [#channel] End of /WHO list.
21:26:25 -- [#channel] End of /WHO list.
21:27:55 -- [#channel] End of /WHO list.
21:29:27 -- [#channel] End of /WHO list.

And these aren't even all of them. This has continued for hours.

21:31:37 WeeChat 0.4.4-dev (git: v0.4.3-366-g8deb0d3) [compiled on Mar 25 2014 10:36:32]

When monitored user changes their nick, WeeChat says that they have quit.

  1. Weibef changes their nick to Weibeftest
    17:06:50 -- notify: Weibef has quit
  2. Weibef changes their nick back to Weibef
17:06:56 -- notify: Weibef (~limnoria@unaffiliated/mikaela/bot/yvzabevn) has connected

I am using WeeChat 0.4.4-dev (git: v0.4.3-462-gc7a9e4b) [compiled on Apr 13 2014 16:17:25] on

Distributor ID: Debian      
Description:    Debian GNU/Linux 7.4 (wheezy)
Release:        7.4         
Codename:       wheezy      

This is annoying, because some people on my monitor use away nicks and they appear as disconnected when they aren't. It could temporarily monitor the changed nick until it quits or changes back to normal or something.

They will stop it soon... znc/znc#530

WeeChat doesn't support CAP account-notify

When /cap req account-notify is issued and people change their accounts, core buffer starts to fill with messages like "ACCOUNT: unknown command."

18:06:29 WeeChat 0.4.4-dev (git: v0.4.3-232-g1589e54) [compiled on Mar  8 2014 15:34:04]

Documentation on account-notify can be found here.

Possibly related issues: #8 , #10 .

Smarter ban_mask_default

irc.network.ban_mask_default currently supports variables like $user or $host. It would be nice if it had a "smarter" version of $user that matched only people with verified Ident – let's say an $ident variable.

In other words: if $user starts with a ~, then $ident would expand to *, otherwise to the same value as $user.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.