mirror of https://tildegit.org/ben/dotfiles
a bunch of random stuff
parent
96eb5a5cc2
commit
f5d04cb608
|
@ -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
|
||||
|
|
|
@ -52,3 +52,5 @@
|
|||
conflictstyle = diff3
|
||||
[mergetool]
|
||||
prompt = false
|
||||
[core]
|
||||
excludesfile = /home/ben/.gitignore
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
.pc/
|
|
@ -1 +1 @@
|
|||
Subproject commit be5bda1f1dbfa4e36b2adabaf3f423adfa66c336
|
||||
Subproject commit c4655701431a9c79704c827fd88a4783ec946879
|
|
@ -1 +1 @@
|
|||
Subproject commit b7287bd5421da62986d9abf9131509b2c9f918e4
|
||||
Subproject commit f529acef74b4266d94f22414c60b4a8930c1e0f3
|
|
@ -1 +1 @@
|
|||
Subproject commit 988a6dbad9a9777cd94aab18ba7821a41068685b
|
||||
Subproject commit 719d4ec06a0fb0aa9f1dfaebcf4f9691e8dc3f73
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -1,401 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (c) 2013-2020 by nils_2 <weechatter@arcor.de>
|
||||
#
|
||||
# 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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# 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 <weechatter@arcor.de>"
|
||||
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 <servername>" 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 <server> [<channel1>[ <channel2>...]] | [-key <channelkey> [<channelkey>...]] ||'
|
||||
'del <server> [<channel1>[ <channel2>...]]',
|
||||
'add <server> <channel>: add channel to irc.server.<servername>.autojoin\n'
|
||||
' -key <channelkey>: name of channelkey\n'
|
||||
'del <server> <channel>: del channel from irc.server.<servername>.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)
|
|
@ -1 +0,0 @@
|
|||
../autojoinem.py
|
|
@ -0,0 +1 @@
|
|||
../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,
|
||||
# <FiXato+WeeChat [at] Gmail [dot] com>
|
||||
# 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 <fixato [at] gmail [dot] com>"
|
||||
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", "")
|
|
@ -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"
|
||||
|
|
|
@ -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} =~ ^>[^:._]"
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue