diff --git a/fish/.config/fish/fish_variables b/fish/.config/fish/fish_variables index b3140f9..51e536c 100644 --- a/fish/.config/fish/fish_variables +++ b/fish/.config/fish/fish_variables @@ -34,4 +34,5 @@ SETUVAR fish_pager_color_completion:normal SETUVAR fish_pager_color_description:B3A06D\x1eyellow SETUVAR fish_pager_color_prefix:white\x1e\x2d\x2dbold\x1e\x2d\x2dunderline SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan +SETUVAR fish_pager_color_selected_background:\x2dr SETUVAR fisher_dependency_count:bass\x1edone\x1egetopts\x1egitignore\x1ehumanize_duration\x1envm\x1espin diff --git a/git/.gitconfig b/git/.gitconfig index becf13d..32b93e7 100644 --- a/git/.gitconfig +++ b/git/.gitconfig @@ -52,3 +52,5 @@ conflictstyle = diff3 [mergetool] prompt = false +[core] + excludesfile = /home/ben/.gitignore diff --git a/git/.gitignore b/git/.gitignore new file mode 100644 index 0000000..224e7f0 --- /dev/null +++ b/git/.gitignore @@ -0,0 +1 @@ +.pc/ diff --git a/vim/.vim/bundle/vim-airline b/vim/.vim/bundle/vim-airline index be5bda1..c465570 160000 --- a/vim/.vim/bundle/vim-airline +++ b/vim/.vim/bundle/vim-airline @@ -1 +1 @@ -Subproject commit be5bda1f1dbfa4e36b2adabaf3f423adfa66c336 +Subproject commit c4655701431a9c79704c827fd88a4783ec946879 diff --git a/vim/.vim/bundle/vim-fugitive b/vim/.vim/bundle/vim-fugitive index b7287bd..f529ace 160000 --- a/vim/.vim/bundle/vim-fugitive +++ b/vim/.vim/bundle/vim-fugitive @@ -1 +1 @@ -Subproject commit b7287bd5421da62986d9abf9131509b2c9f918e4 +Subproject commit f529acef74b4266d94f22414c60b4a8930c1e0f3 diff --git a/vim/.vim/bundle/vim-gitgutter b/vim/.vim/bundle/vim-gitgutter index 988a6db..719d4ec 160000 --- a/vim/.vim/bundle/vim-gitgutter +++ b/vim/.vim/bundle/vim-gitgutter @@ -1 +1 @@ -Subproject commit 988a6dbad9a9777cd94aab18ba7821a41068685b +Subproject commit 719d4ec06a0fb0aa9f1dfaebcf4f9691e8dc3f73 diff --git a/weechat/.weechat/irc.conf b/weechat/.weechat/irc.conf index 8d2716d..df5e2f7 100644 --- a/weechat/.weechat/irc.conf +++ b/weechat/.weechat/irc.conf @@ -127,6 +127,7 @@ anti_flood_prio_high = 2 anti_flood_prio_low = 2 autoconnect = on autojoin = "" +autojoin_dynamic = on autoreconnect = on autoreconnect_delay = 10 autorejoin = off @@ -149,7 +150,7 @@ nicks_alternate = on notify = "" password = "" proxy = "" -realname = "Ben Harris" +realname = "ben" sasl_fail = continue sasl_key = "" sasl_mechanism = plain @@ -197,7 +198,8 @@ tilde.local_hostname tilde.usermode tilde.command = "/msg operserv login ${sec.data.pass};/msg idlerpg_bot login wowbagger ${sec.data.idlerpgpass}" tilde.command_delay = 25 -tilde.autojoin = "#.tilde,#ZfA,#allhandsactive,#anelki,#ascii.town,#aussie,#bots,#bungame,#cactus,#club,#cosmic,#counting-meta,#ctrl-c,#deutsch,#downgrade,#envs_german,#espanol,#factorio,#fr,#gemini,#gopher,#helpdesk,#idlerpg,#institute,#linux,#meta,#minecraft,#music,#netnews,#nsfw,#opers,#politics,#programming,#projects,#remotes.club,#secret-sudoers,#sus,#team,#texto-plano,#theasylum,#thunix,#tilde.zone-admin,#tildebot,#tilderadio,#tilderadio-djs,#tildetel,#tildeverse,#town,#vim,#wiki,#zfa" +tilde.autojoin = "#.tilde,#ZfA,#adventofcode,#allhandsactive,#anelki,#ascii.town,#aussie,#binary-counting,#bots,#club,#cosmic,#counting,#covid19,#ctrl-c,#dotnet,#earthward,#espanol,#fr,#gemini,#gopher,#helpdesk,#linux,#math,#meta,#minecraft,#netnews,#nsfw,#opers,#rw.rs,#secret-sudoers,#southlondon,#team,#thunix,#tilde.zone-admin,#tildebot,#tildenet,#tilderadio,#tilderadio-djs,#tildetel,#topm,#town,#vim,#wiki,#xinu,#zfa" +tilde.autojoin_dynamic tilde.autorejoin tilde.autorejoin_delay tilde.connection_timeout @@ -241,7 +243,8 @@ hashbang.local_hostname hashbang.usermode hashbang.command hashbang.command_delay -hashbang.autojoin = "#!opers,#!social" +hashbang.autojoin = "#!,#!opers,#!social" +hashbang.autojoin_dynamic hashbang.autorejoin hashbang.autorejoin_delay hashbang.connection_timeout @@ -285,7 +288,8 @@ town.local_hostname town.usermode town.command town.command_delay -town.autojoin = "#admins,#announcements,#bots,#counting,#counting-meta,#tildetown" +town.autojoin = "#admins,#adventofcode,#announcements,#bots,#counting,#tildetown" +town.autojoin_dynamic town.autorejoin town.autorejoin_delay town.connection_timeout @@ -374,6 +378,7 @@ sdf.usermode sdf.command sdf.command_delay sdf.autojoin = "#sdf,#spanish" +sdf.autojoin_dynamic sdf.autorejoin sdf.autorejoin_delay sdf.connection_timeout @@ -418,6 +423,7 @@ darwin.usermode darwin.command darwin.command_delay darwin.autojoin = "#darwin" +darwin.autojoin_dynamic darwin.autorejoin = on darwin.autorejoin_delay darwin.connection_timeout @@ -461,7 +467,8 @@ oftc.local_hostname oftc.usermode oftc.command oftc.command_delay -oftc.autojoin = "#bitlbee,#debian-devel,#fish" +oftc.autojoin = "#bitlbee,#debian-devel,#fish,#salsa" +oftc.autojoin_dynamic oftc.autorejoin oftc.autorejoin_delay oftc.connection_timeout @@ -506,6 +513,7 @@ blinkenshell.usermode blinkenshell.command blinkenshell.command_delay blinkenshell.autojoin = "#blinkenshell" +blinkenshell.autojoin_dynamic blinkenshell.autorejoin blinkenshell.autorejoin_delay blinkenshell.connection_timeout @@ -550,6 +558,7 @@ inspircd.usermode inspircd.command inspircd.command_delay inspircd.autojoin = "#inspircd" +inspircd.autojoin_dynamic inspircd.autorejoin inspircd.autorejoin_delay inspircd.connection_timeout @@ -594,6 +603,7 @@ slashnet.usermode slashnet.command = "/ns identify ${sec.data.slashnetpass}" slashnet.command_delay slashnet.autojoin = "#gtlug" +slashnet.autojoin_dynamic slashnet.autorejoin slashnet.autorejoin_delay slashnet.connection_timeout @@ -652,50 +662,6 @@ bitlbee.notify bitlbee.split_msg_max_length bitlbee.charset_message bitlbee.default_chantypes -pine.addresses = "irc.pine64.org" -pine.proxy -pine.ipv6 -pine.ssl -pine.ssl_cert -pine.ssl_password -pine.ssl_priorities -pine.ssl_dhkey_size -pine.ssl_fingerprint -pine.ssl_verify -pine.password -pine.capabilities -pine.sasl_mechanism -pine.sasl_username = "ben" -pine.sasl_password = "${sec.data.pinepass}" -pine.sasl_key -pine.sasl_timeout -pine.sasl_fail -pine.autoconnect -pine.autoreconnect -pine.autoreconnect_delay -pine.nicks -pine.nicks_alternate -pine.username -pine.realname -pine.local_hostname -pine.usermode -pine.command -pine.command_delay -pine.autojoin = "#Pine64" -pine.autorejoin -pine.autorejoin_delay -pine.connection_timeout -pine.anti_flood_prio_high -pine.anti_flood_prio_low -pine.away_check -pine.away_check_max_nicks -pine.msg_kick -pine.msg_part -pine.msg_quit -pine.notify -pine.split_msg_max_length -pine.charset_message -pine.default_chantypes libera.addresses = "irc.us.libera.chat/6697" libera.proxy libera.ipv6 @@ -769,7 +735,8 @@ ergo.local_hostname ergo.usermode ergo.command ergo.command_delay -ergo.autojoin = "#chat,#ergo" +ergo.autojoin = "#ergo" +ergo.autojoin_dynamic ergo.autorejoin ergo.autorejoin_delay ergo.connection_timeout @@ -814,6 +781,7 @@ pisslocal.usermode pisslocal.command = "/oper ben ${sec.data.pissnetoper}" pisslocal.command_delay pisslocal.autojoin = "#opers,#pissnet,#services" +pisslocal.autojoin_dynamic pisslocal.autorejoin pisslocal.autorejoin_delay pisslocal.connection_timeout diff --git a/weechat/.weechat/plugins.conf b/weechat/.weechat/plugins.conf index f6c286a..c24c677 100644 --- a/weechat/.weechat/plugins.conf +++ b/weechat/.weechat/plugins.conf @@ -57,7 +57,6 @@ python.apply_corrections.message_limit = "2" python.apply_corrections.print_format = "[nick]: [corrected]" python.apply_corrections.print_limit = "1" python.autojoin.autosave = "off" -python.autojoinem.sorted = "on" python.autosavekey.add = "on" python.autosavekey.mute = "off" python.autosavekey.secure = "on" @@ -65,7 +64,7 @@ python.buffer_autoclose.age_limit = "30" python.buffer_autoclose.ignore = "bitlbee.maddie" python.buffer_autoclose.interval = "1" python.check_license = "off" -python.completion.replace_values = "shrug=>¯\_(ツ)_/¯;;wiki=>https://tilde.team/wiki/;;sword=>o()xxxx[{::::::::::::::::::::::::::::::::::>;;lenny=>( ͡° ͜ʖ ͡°);;byobu=>https://superuser.com/a/423397/866501;;fg=>(☞゚ヮ゚)☞;;huh=>(-_-)ゞ゛;;tablefix=>┬─┬ノ( º _ ºノ);;weedoc=>https://weechat.org/files/doc/stable/weechat_user.en.html;;weekeys=>https://weechat.org/files/doc/stable/weechat_user.en.html#key_bindings;;denko=>(´・ω・`);;yuno=>ლ(́ಠ◞益◟ಠ‵ლ);;tf=>(ノಥ益ಥ)ノ彡┻━┻;;tb=>┬─┬ノ( º _ ºノ);;ducc=>・゜゜・。。・゜゜\_o< QUACK!;;wat=>https://bhh.sh/wat.jpg;;matrix=>https://www.moparisthebest.com/images/xmpp-vs-matrix.jpg;;servers=>https://tilde.wiki/wiki/User:Ben/Servers" +python.completion.replace_values = "shrug=>¯\_(ツ)_/¯;;wiki=>https://tilde.team/wiki/;;sword=>o()xxxx[{::::::::::::::::::::::::::::::::::>;;lenny=>( ͡° ͜ʖ ͡°);;byobu=>https://superuser.com/a/423397/866501;;fg=>(☞゚ヮ゚)☞;;huh=>(-_-)ゞ゛;;tablefix=>┬─┬ノ( º _ ºノ);;weedoc=>https://weechat.org/files/doc/stable/weechat_user.en.html;;weekeys=>https://weechat.org/files/doc/stable/weechat_user.en.html#key_bindings;;denko=>(´・ω・`);;yuno=>ლ(́ಠ◞益◟ಠ‵ლ);;tf=>(ノಥ益ಥ)ノ彡┻━┻;;tb=>┬─┬ノ( º _ ºノ);;ducc=>・゜゜・。。・゜゜\_o< QUACK!;;wat=>https://bhh.sh/wat.jpg;;matrix=>https://www.moparisthebest.com/images/xmpp-vs-matrix.jpg;;servers=>https://tilde.wiki/wiki/User:Ben/Servers;;nft=>https://youtu.be/YQ_xWvX1n9g" python.go.auto_jump = "off" python.go.buffer_number = "on" python.go.color_name = "black,cyan" diff --git a/weechat/.weechat/python/autojoinem.py b/weechat/.weechat/python/autojoinem.py deleted file mode 100644 index a32eb2e..0000000 --- a/weechat/.weechat/python/autojoinem.py +++ /dev/null @@ -1,401 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (c) 2013-2020 by nils_2 -# -# add/del channel(s) to/from autojoin option -# -# This program 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. -# -# This program 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 this program. If not, see . -# -# idea by azizLIGHTS -# -# 2020-10-20: nils_2, (freenode.#weechat) -# 0.7 : fix problem with empty fields (reported by MutantMummy: https://github.com/weechat/scripts/issues/438) -# 2017-01-06: nils_2, (freenode.#weechat) -# 0.6 : fix problem with non existing server (reported by Niols) -# 2016-12-19: nils_2, (freenode.#weechat) -# 0.5 : fix problem with empty autojoin (reported by Caelum) -# 2016-06-05: nils_2, (freenode.#weechat) -# 0.4 : make script python3 compatible -# 2015-11-14: nils_2, (freenode.#weechat) -# 0.3 : fix: problem with (undef) option -# 2014-01-19: nils_2, (freenode.#weechat) -# 0.2 : fix: adding keys to already existing keys failed -# 2013-12-22: nils_2, (freenode.#weechat) -# 0.1 : initial release -# -# requires: WeeChat version 0.3.x -# -# Development is currently hosted at -# https://github.com/weechatter/weechat-scripts - -try: - import weechat,re - -except Exception: - print("This script must be run under WeeChat.") - print("Get WeeChat now at: http://www.weechat.org/") - quit() - -SCRIPT_NAME = "autojoinem" -SCRIPT_AUTHOR = "nils_2 " -SCRIPT_VERSION = "0.7" -SCRIPT_LICENSE = "GPL" -SCRIPT_DESC = "add/del channel(s) to/from autojoin option" - -OPTIONS = { 'sorted' : ('off','channels will be sorted in autojoin-option. if autojoin-option contains channel-keys, this option will be ignored.'), - } - -def add_autojoin_cmd_cb(data, buffer, args): - if args == "": # no args given. quit - return weechat.WEECHAT_RC_OK - - argv = args.strip().split(' ') - - # remove empty fields - argv2 = [feld for feld in argv if feld != ''] - argv = argv2 - -# if (len(argv) <= 1): -# weechat.prnt(buffer,"%s%s: too few arguments." % (weechat.prefix('error'),SCRIPT_NAME)) -# return weechat.WEECHAT_RC_OK - - server = weechat.buffer_get_string(buffer, 'localvar_server') # current server - channel = weechat.buffer_get_string(buffer, 'localvar_channel') # current channel - buf_type = weechat.buffer_get_string(buffer, 'localvar_type') - - # only "add " given by user - if (len(argv) == 2): - weechat.prnt(buffer,"%s%s: invalid number of arguments." % (weechat.prefix('error'),SCRIPT_NAME)) - return weechat.WEECHAT_RC_OK - - # '-key' keyword in command line? - if '-key' in argv: - found_key_word = argv.index('-key') - key_words = argv[int(found_key_word)+1:] - # don't use "-key" in argv - argv = argv[:int(found_key_word)] - - # ADD argument - if (argv[0].lower() == 'add'): - # add current channel to autojoin. Only option "add" was given.. - if (len(argv) == 1): - if server == "" or channel == "" or server == channel or buf_type == "" or buf_type != 'channel': - weechat.prnt(buffer,"%s%s: current buffer is not a channel buffer." % (weechat.prefix('error'),SCRIPT_NAME)) - return weechat.WEECHAT_RC_OK - list_of_channels, list_of_current_keys = get_autojoin_list(buffer,server) - # no channels in option! - if list_of_channels == 1 and list_of_current_keys == 1: - ptr_config_autojoin = weechat.config_get('irc.server.%s.autojoin' % server) - rc = weechat.config_option_set(ptr_config_autojoin,channel,1) - return weechat.WEECHAT_RC_OK - if channel in list_of_channels: - weechat.prnt(buffer,"%s%s: channel '%s' already in autojoin for server '%s'" % (weechat.prefix("error"),SCRIPT_NAME,channel,server)) - else: - # first char of channel '#' ? - if channel[0] == '#': - if '-key' in args and len(key_words) > 1: - weechat.prnt(buffer,"%s%s: too many key(s) for given channel(s) " % (weechat.prefix('error'),SCRIPT_NAME)) - return weechat.WEECHAT_RC_OK - elif '-key' in args and len(key_words) == 1: - list_of_channels.insert(0,channel) - list_of_current_keys = ','.join(key_words) - # strip leading ',' - if list_of_current_keys[0] == ',': - list_of_current_keys = list_of_current_keys.lstrip(',') - else: - list_of_channels.append(channel) - - if not set_autojoin_list(server,list_of_channels, list_of_current_keys): - weechat.prnt(buffer,"%s%s: set new value for option failed..." % (weechat.prefix('error'),SCRIPT_NAME)) - # server and channels given by user - elif (len(argv) >= 3): - server = argv[1] - list_of_channels = argv[2:] - if '-key' in args and len(list_of_channels) < len(key_words): - weechat.prnt(buffer,"%s%s: too many key(s) for given channel(s) " % (weechat.prefix('error'),SCRIPT_NAME)) - return weechat.WEECHAT_RC_OK - - list_of_current_channels,list_of_current_keys = get_autojoin_list(buffer,server) - # autojoin option is empty - if list_of_current_channels == 1: - # no channel -> no key! - list_of_current_keys = "" - if '-key' in args: - list_of_current_keys = ','.join(key_words) - # strip leading ',' - if list_of_current_keys[0] == ',': - list_of_current_keys = list_of_current_keys.lstrip(',') - if not set_autojoin_list(server,list_of_channels, list_of_current_keys): - weechat.prnt(buffer,"%s%s: set new value for option failed..." % (weechat.prefix('error'),SCRIPT_NAME)) - else: - if '-key' in args: - j = 0 - new_keys = [] - list_of_new_keys = [] - for i in list_of_channels: - if i not in list_of_current_channels and j <= len(key_words): -# weechat.prnt(buffer,"channel: %s, channel key is: '%s'" % (i,key_words[j])) - list_of_current_channels.insert(j,i) - new_keys.insert(j,key_words[j]) - j += 1 - missing_channels = list_of_current_channels - list_of_new_keys = ','.join(new_keys) - if list_of_current_keys: - list_of_current_keys = list_of_new_keys + ',' + list_of_current_keys - else: - list_of_current_keys = list_of_new_keys - # strip leading ',' - if list_of_current_keys[0] == ',': - list_of_current_keys = list_of_current_keys.lstrip(',') - else: - # check given channels with channels already set in option - missing_channels = get_difference(list_of_channels,list_of_current_channels) - missing_channels = list_of_current_channels + missing_channels - - if not set_autojoin_list(server,missing_channels, list_of_current_keys): - weechat.prnt(buffer,"%s%s: set new value for option failed..." % (weechat.prefix('error'),SCRIPT_NAME)) - return weechat.WEECHAT_RC_OK - - # DEL argument - if (argv[0].lower() == 'del'): - # del current channel from autojoin. Only option "del" was given.. - if (len(argv) == 1): - if server == "" or channel == "" or server == channel or buf_type == "" or buf_type != 'channel': - weechat.prnt(buffer,"%s%s: current buffer is not a channel buffer." % (weechat.prefix('error'),SCRIPT_NAME)) - return weechat.WEECHAT_RC_OK - list_of_channels, list_of_keys = get_autojoin_list(buffer,server) - # no channels in option, nothing to delete - if list_of_channels == 1 and list_of_current_keys == 1: - return weechat.WEECHAT_RC_OK - if channel not in list_of_channels: - weechat.prnt(buffer,"%s%s: channel '%s' not found in autojoin for server '%s'" % (weechat.prefix("error"),SCRIPT_NAME,channel,server)) - return weechat.WEECHAT_RC_OK - else: - # first char of channel '#' ? - if channel[0] == '#': - channel_key_index = list_of_channels.index(channel) - if not list_of_keys: - list_of_channels.remove(list_of_channels[channel_key_index]) - list_of_current_keys = '' - else: - list_of_keys_tup = list_of_keys.split(",") - list_of_current_keys = list_of_keys - # channel does not have a key (position of channel > number of keys!) - if channel_key_index + 1 > len(list_of_keys_tup): - list_of_channels.remove(list_of_channels[channel_key_index]) - # remove channel and key from autjoin option - else: - list_of_channels.remove(list_of_channels[channel_key_index]) - list_of_keys_tup.remove(list_of_keys_tup[channel_key_index]) - # does a key exists, after removing? - if len(list_of_keys_tup) > 0: - list_of_current_keys = ','.join(list_of_keys_tup) - # strip leading ',' - if list_of_current_keys[0] == ',': - list_of_current_keys = list_of_current_keys.lstrip(',') - else: # all keys deleted - list_of_current_keys = '' - - # unset option if everything is gone. - if not list_of_channels and not list_of_current_keys: - ptr_config_autojoin = weechat.config_get('irc.server.%s.autojoin' % server) - if ptr_config_autojoin: - rc = weechat.config_option_unset(ptr_config_autojoin) - return weechat.WEECHAT_RC_OK - - if not set_autojoin_list(server,list_of_channels, list_of_current_keys): - weechat.prnt(buffer,"%s%s: set new value for option failed..." % (weechat.prefix('error'),SCRIPT_NAME)) - - # server and channels given by user - elif (len(argv) >= 3): - server = argv[1] - list_of_current_channels,list_of_current_keys = get_autojoin_list(buffer,server) - - # autojoin option is empty - if list_of_current_channels == 1: - weechat.prnt(buffer,"%s%s: nothing to delete..." % (weechat.prefix('error'),SCRIPT_NAME)) - return weechat.WEECHAT_RC_OK - else: - list_of_channels = args.split(" ")[2:] - if list_of_current_keys: - list_of_current_keys_tup = list_of_current_keys.split(",") - else: - list_of_current_keys_tup = '' - - for i in list_of_channels: - # check if given channel is in list of options - if not i in list_of_current_channels: - continue - channel_key_index = list_of_current_channels.index(i) - # channel does not have a key (position of channel > number of keys!) - if channel_key_index + 1 > len(list_of_current_keys_tup): - list_of_current_channels.remove(i) -# if len(list_of_current_channels) <= 0: -# list_of_current_channels = '' - else: # remove channel and key from autjoin option - list_of_current_channels.remove(i) - list_of_current_keys_tup.remove(list_of_current_keys_tup[channel_key_index]) - # does an key exists, after removing? - if len(list_of_current_keys_tup) > 0: - list_of_current_keys = ','.join(list_of_current_keys_tup) - # strip leading ',' - if list_of_current_keys[0] == ',': - list_of_current_keys = list_of_current_keys.lstrip(',') - else: # all keys deleted - list_of_current_keys = '' - -# for j in list_of_current_channels: -# weechat.prnt(buffer,"chan:%s" % j) -# for j in list_of_current_keys_tup: -# weechat.prnt(buffer,"key :%s" % j) - - # unset option if everything is gone. - if not list_of_current_channels and not list_of_current_keys: - ptr_config_autojoin = weechat.config_get('irc.server.%s.autojoin' % server) - if ptr_config_autojoin: - rc = weechat.config_option_unset(ptr_config_autojoin) - return weechat.WEECHAT_RC_OK - - if not set_autojoin_list(server,list_of_current_channels, list_of_current_keys): - weechat.prnt(buffer,"%s%s: set new value for option failed..." % (weechat.prefix('error'),SCRIPT_NAME)) - - return weechat.WEECHAT_RC_OK - -def get_difference(list1, list2): - return list(set(list1).difference(set(list2))) - -# returns a list of channels and a list of keys -# 1 = something failed, 0 = channel found -def get_autojoin_list(buffer,server): - ptr_config_autojoin = weechat.config_get('irc.server.%s.autojoin' % server) - # option not found! server does not exist - if not ptr_config_autojoin: - weechat.prnt("","%s%s: server '%s' does not exist." % (weechat.prefix('error'),SCRIPT_NAME,server)) - return 1,1 - - # get value from autojoin option - channels = weechat.config_string(ptr_config_autojoin) - if not channels: - return 1,1 - - # check for keys - if len(re.findall(r" ", channels)) == 0: - list_of_channels = channels.split(",") - list_of_keys = [] - elif len(re.findall(r" ", channels)) == 1: - list_of_channels2,list_of_keys = channels.split(" ") - list_of_channels = list_of_channels2.split(",") - else: - weechat.prnt("","%s%s: irc.server.%s.autojoin not valid..." % (weechat.prefix('error'),SCRIPT_NAME,server)) - return 1,1 - - return list_of_channels, list_of_keys - -def set_autojoin_list(server,list_of_channels, list_of_keys): - ptr_config_autojoin = weechat.config_get('irc.server.%s.autojoin' % server) - if not ptr_config_autojoin: - return 0 - - if OPTIONS['sorted'].lower() == 'on' and not list_of_keys: - # no keys, sort the channel-list - channels = '%s' % ','.join(sorted(list_of_channels)) - else: - # don't sort channel-list with given key - channels = '%s' % ','.join(list_of_channels) - - # strip leading ',' - if channels[0] == ',': - channels = channels.lstrip(',') - - # add keys to list of channels - if list_of_keys: - channels = '%s %s' % (channels,list_of_keys) - - rc = weechat.config_option_set(ptr_config_autojoin,channels,1) - if not rc: - return 0 - return 1 - -def autojoinem_completion_cb(data, completion_item, buffer, completion): -# server = weechat.buffer_get_string(buffer, 'localvar_server') # current buffer - input_line = weechat.buffer_get_string(buffer, 'input') - - # get information out of the input_line - argv = input_line.strip().split(" ",3) - if (len(argv) >= 3 and argv[1] == 'del'): - server = argv[2] - - list_of_channels,list_of_keys = get_autojoin_list(buffer,server) - if list_of_channels == 1: - return weechat.WEECHAT_RC_OK - - if (len(argv) >= 4 and argv[1] == 'del'): - list_of_current_channels = argv[3].split(' ') - missing_channels = get_difference(list_of_channels,list_of_current_channels) - if not missing_channels: - return weechat.WEECHAT_RC_OK - list_of_channels = missing_channels - - for i, elem in enumerate(list_of_channels): - weechat.hook_completion_list_add(completion, list_of_channels[i], 0, weechat.WEECHAT_LIST_POS_END) - return weechat.WEECHAT_RC_OK -# ================================[ weechat options & description ]=============================== -def init_options(): - for option,value in OPTIONS.items(): - weechat.config_set_desc_plugin(option, '%s (default: "%s")' % (value[1], value[0])) - if not weechat.config_is_set_plugin(option): - weechat.config_set_plugin(option, value[0]) - OPTIONS[option] = value[0] - else: - OPTIONS[option] = weechat.config_get_plugin(option) - -def toggle_refresh(pointer, name, value): - global OPTIONS - option = name[len('plugins.var.python.' + SCRIPT_NAME + '.'):] # get optionname - OPTIONS[option] = value # save new value - return weechat.WEECHAT_RC_OK -# ================================[ main ]=============================== -if __name__ == "__main__": - if weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, SCRIPT_LICENSE, SCRIPT_DESC, '', ''): - version = weechat.info_get("version_number", "") or 0 - weechat.hook_command(SCRIPT_NAME,SCRIPT_DESC, - 'add [[ ...]] | [-key [...]] ||' - 'del [[ ...]]', - 'add : add channel to irc.server..autojoin\n' - ' -key : name of channelkey\n' - 'del : del channel from irc.server..autojoin\n' - '\n' - 'Examples:\n' - ' add current channel to corresponding server option:\n' - ' /' + SCRIPT_NAME + ' add\n' - ' add all channels from all server to corresponding server option:\n' - ' /allchan /' + SCRIPT_NAME + ' add\n' - ' add channel #weechat to autojoin option on server freenode:\n' - ' /' + SCRIPT_NAME + ' add freenode #weechat\n' - ' add channel #weechat and #weechat-de to autojoin option on server freenode, with channel key for channel #weechat:\n' - ' /' + SCRIPT_NAME + ' add freenode #weechat #weechat-de -key my_channel_key\n' - ' del channels #weechat and #weechat-de from autojoin option on server freenode:\n' - ' /' + SCRIPT_NAME + ' del freenode #weechat #weechat-de', - 'add %(irc_servers) %(irc_server_channels)|%*||' - 'del %(irc_servers) %(plugin_autojoinem)|%*', - 'add_autojoin_cmd_cb', '') - - init_options() - weechat.hook_completion('plugin_autojoinem', 'autojoin_completion', 'autojoinem_completion_cb', '') - weechat.hook_config('plugins.var.python.' + SCRIPT_NAME + '.*', 'toggle_refresh', '') - -# if int(version) >= 0x00030600: -# else: -# weechat.prnt("","%s%s %s" % (weechat.prefix("error"),SCRIPT_NAME,": needs version 0.3.6 or higher")) -# weechat.command("","/wait 1ms /python unload %s" % SCRIPT_NAME) diff --git a/weechat/.weechat/python/autoload/autojoinem.py b/weechat/.weechat/python/autoload/autojoinem.py deleted file mode 120000 index 26c508c..0000000 --- a/weechat/.weechat/python/autoload/autojoinem.py +++ /dev/null @@ -1 +0,0 @@ -../autojoinem.py \ No newline at end of file diff --git a/weechat/.weechat/python/autoload/weestats.py b/weechat/.weechat/python/autoload/weestats.py new file mode 120000 index 0000000..203f3ad --- /dev/null +++ b/weechat/.weechat/python/autoload/weestats.py @@ -0,0 +1 @@ +../weestats.py \ No newline at end of file diff --git a/weechat/.weechat/python/weestats.py b/weechat/.weechat/python/weestats.py new file mode 100644 index 0000000..ab21135 --- /dev/null +++ b/weechat/.weechat/python/weestats.py @@ -0,0 +1,156 @@ +# -*- coding: utf-8 -*- +# +# weestats.py, version 0.2 for WeeChat version 0.3 +# Latest development version: https://github.com/FiXato/weechat_scripts +# +# Inserts some statistics into your input field about the buffers/windows +# you have open. +# Example: 151 buffers (46 merged): 135 channels, 9 servers, 3 queries, +# 1 script, 1 python, 1 perl, 1 core; 3 windows +# +## History: +# +### 2012-03-29: FiXato: +# * version 0.1: initial release. +# * Display a count of all the different buffers you have open. +# * Display a count of all the open windows. +# * version 0.2: Getting the splits. +# * Displays the how many vertical and horizontal windows. +# (not quite sure if my approximation is correct though..) +# * Fixed possible memleak (forgot to free an infolist) +### 2015-05-02: arza: +# * version 0.3: +# * handle non-#-channels +# * numerical sort for buffer info +# * moved window split info to option -split +# * simplified the output +### 2019-07-05: Sébastien Helleu: +# * version 0.4: +# * make script compatible with Python 3 +# +## Acknowledgements: +# * Sebastien "Flashcode" Helleu, for developing the kick-ass chat/IRC +# client WeeChat +# +## TODO: +# - Add more statistics, such as: +# - average and total history lines. +# - average and total topic/title lengths +# - how many are displayed in a window +# +## Copyright (c) 2012 Filip H.F. "FiXato" Slagter, +# +# https://google.com/profiles/FiXato +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# + +from __future__ import print_function + +SCRIPT_NAME = "weestats" +SCRIPT_AUTHOR = "Filip H.F. 'FiXato' Slagter " +SCRIPT_VERSION = "0.4" +SCRIPT_LICENSE = "MIT" +SCRIPT_DESC = "Useless statistics about your open buffers and windows" +SCRIPT_COMMAND = "weestats" +SCRIPT_CLOSE_CB = "close_cb" + +import_ok = True + +try: + import weechat as w +except ImportError: + print("This script must be run under WeeChat.") + import_ok = False + +def close_cb(*kwargs): + return w.WEECHAT_RC_OK + +def command_main(data, buffer, args): + infolist = w.infolist_get("buffer", "", "") + buffer_groups = {} + results = [] + buffer_count = 0 + merge_count = 0 + numbers = set() + while w.infolist_next(infolist): + bplugin = w.infolist_string(infolist, "plugin_name") + bname = w.infolist_string(infolist, "name") + bpointer = w.infolist_pointer(infolist, "pointer") + bnumber = w.infolist_integer(infolist, "number") + btype = w.buffer_get_string(bpointer, 'localvar_type') + if not bnumber in numbers: + numbers.add(bnumber) + else: + merge_count += 1 + + if btype == 'server': + bdesc = 'servers' + elif btype == 'channel': + bdesc = 'channels' + elif btype == 'private': + bdesc = 'queries' + else: + bdesc = bplugin + + buffer_groups.setdefault(bdesc,[]).append({'name': bname, 'pointer': bpointer}) + + w.infolist_free(infolist) + + infolist = w.infolist_get("window", "", "") + windows_v = set() + windows_h = set() + windows = set() + while w.infolist_next(infolist): + window = w.infolist_pointer(infolist, "pointer") + window_w = w.infolist_integer(infolist, "width_pct") + window_h = w.infolist_integer(infolist, "height_pct") + windows.add(window) + if window_h == 100 and window_w != 100: + windows_v.add(window) + elif window_w == 100 and window_h != 100: + windows_h.add(window) + #else: #both 100%, thus no splits + w.infolist_free(infolist) + + window_count = len(windows) + + for desc, buffers in buffer_groups.items(): + buffer_count += len(buffers) + results.append('%i %s' % (len(buffers), desc)) + + buffer_stats = ', '.join(sorted(results, key = lambda item: (int(item.partition(' ')[0]) if item[0].isdigit() else float('inf'), item),reverse=True)) # descending numerical sort of strings + stats_string = '%i buffers (%i merged): %s; %i windows' % (buffer_count, merge_count, buffer_stats, window_count) + if '-split' in args: + stats_string += ": %i vertically / %i horizontally split" % (len(windows_v), len(windows_h)) + w.command("", "/input insert %s" % stats_string) + return w.WEECHAT_RC_OK + +if __name__ == "__main__" and import_ok: + if w.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, + SCRIPT_LICENSE, SCRIPT_DESC, SCRIPT_CLOSE_CB, ""): + + w.hook_command(SCRIPT_COMMAND, + SCRIPT_DESC, + "-split", + "Inserts useless statistics about your open buffers and windows into your input line.\n" + "-split: Include information about window splits.", + "-split", + "command_main", "") diff --git a/weechat/.weechat/relay.conf b/weechat/.weechat/relay.conf index c44c952..c80263c 100644 --- a/weechat/.weechat/relay.conf +++ b/weechat/.weechat/relay.conf @@ -30,7 +30,7 @@ allowed_ips = "" auth_timeout = 60 bind_address = "" clients_purge_delay = 0 -compression_level = 6 +compression = 20 ipv6 = on max_clients = 5 nonce_size = 16 @@ -55,7 +55,6 @@ backlog_time_format = "[%H:%M] " commands = "" [port] -ipv4.irc = 6666 [path] unix.weechat = "%h/relay_socket" diff --git a/weechat/.weechat/trigger.conf b/weechat/.weechat/trigger.conf index b07e4ee..1a30c24 100644 --- a/weechat/.weechat/trigger.conf +++ b/weechat/.weechat/trigger.conf @@ -25,22 +25,6 @@ trigger = green trigger_disabled = red [trigger] -autojoin.arguments = "*,irc_in_join" -autojoin.command = "/autojoinem add ${server} ${channel};/mute save" -autojoin.conditions = "" -autojoin.enabled = on -autojoin.hook = signal -autojoin.post_action = none -autojoin.regex = "" -autojoin.return_code = ok -autopart.arguments = "*,irc_in_part" -autopart.command = "/autojoinem del ${server} ${channel};/mute save" -autopart.conditions = "" -autopart.enabled = on -autopart.hook = signal -autopart.post_action = none -autopart.regex = "" -autopart.return_code = ok beep.arguments = "" beep.command = "/print -beep" beep.conditions = "${tg_highlight} || ${tg_msg_pv}" @@ -55,8 +39,16 @@ cmd_pass.conditions = "" cmd_pass.enabled = on cmd_pass.hook = modifier cmd_pass.post_action = none -cmd_pass.regex = "==^((/(msg|m|quote) +nickserv +(id|identify|register|ghost +[^ ]+|release +[^ ]+|regain +[^ ]+) +)|/oper +[^ ]+ +|/quote +pass +|/set +[^ ]*password[^ ]* +|/secure +(passphrase|decrypt|set +[^ ]+) +)(.*)==${re:1}${hide:*,${re:+}}" +cmd_pass.regex = "==^((/(msg|m|quote) +(-server +[^ ]+ +)?nickserv +(id|identify|set +password|ghost +[^ ]+|release +[^ ]+|regain +[^ ]+|recover +[^ ]+|setpass +[^ ]+) +)|/oper +[^ ]+ +|/quote +pass +|/secure +(passphrase|decrypt|set +[^ ]+) +)(.*)==${re:1}${hide:*,${re:+}}" cmd_pass.return_code = ok +cmd_pass_register.arguments = "5000|input_text_display;5000|history_add;5000|irc_command_auth" +cmd_pass_register.command = "" +cmd_pass_register.conditions = "" +cmd_pass_register.enabled = on +cmd_pass_register.hook = modifier +cmd_pass_register.post_action = none +cmd_pass_register.regex = "==^(/(msg|m|quote) +(-server +[^ ]+ +)?nickserv +register +)([^ ]+)(.*)==${re:1}${hide:*,${re:4}}${re:5}" +cmd_pass_register.return_code = ok greentext.arguments = "weechat_print" greentext.command = "" greentext.conditions = "${tg_message_nocolor} =~ ^>[^:._]" diff --git a/weechat/.weechat/weechat.conf b/weechat/.weechat/weechat.conf index 498e243..b3baefb 100644 --- a/weechat/.weechat/weechat.conf +++ b/weechat/.weechat/weechat.conf @@ -243,7 +243,6 @@ proxy_curl = "" [plugin] autoload = "*" -debug = off extension = ".so,.dll" path = "%h/plugins" save_config_on_unload = on @@ -371,6 +370,7 @@ default.window = "3;1;0;0;core;weechat" default.current = on [notify] +irc.server.liberta.casa = highlight irc.server.pisslocal = none irc.server.tilde = highlight perl.highmon = none