From a2009f8af586817d6a03f9537ca8d1d14ec728fd Mon Sep 17 00:00:00 2001 From: Bert Peters Date: Mon, 23 Dec 2019 20:52:45 +0100 Subject: [PATCH] Import hexchat config. --- .../.config/hexchat/addons/smart_filter.py | 95 ++++ hexchat/.config/hexchat/colors.conf | 42 ++ hexchat/.config/hexchat/pevents.conf | 456 ++++++++++++++++++ install.sh | 2 +- 4 files changed, 594 insertions(+), 1 deletion(-) create mode 100644 hexchat/.config/hexchat/addons/smart_filter.py create mode 100644 hexchat/.config/hexchat/colors.conf create mode 100644 hexchat/.config/hexchat/pevents.conf diff --git a/hexchat/.config/hexchat/addons/smart_filter.py b/hexchat/.config/hexchat/addons/smart_filter.py new file mode 100644 index 0000000..337fd47 --- /dev/null +++ b/hexchat/.config/hexchat/addons/smart_filter.py @@ -0,0 +1,95 @@ +__module_name__ = 'SmartFilter' +__module_version__ = '1.0' +__module_description__ = 'Filters join/part messages' + +import hexchat +from time import time + +last_seen = {} # For each entry: the key is the user's nickname, the entry + # is a list: element 0: last seen time + # element 1: 0 if the user never spoke, 1 otherwise +user_timeout = 600 # If the user hasn't spoken for this amount of seconds, his + # join/part messages won't be shown +halt = False + +def human_readable(s): + deltas = [ + ("seconds", int(s)%60), + ("minutes", int(s/60)%60), + ("hours", int(s/60/60)%24), + ("days", int(s/24/60/60)%30), + ("months", int(s/30/24/60/60)%12), + ("years", int(s/12/30/24/60/60)) + ] + tarr = ['%d %s' % (d[1], d[1] > 1 and d[0] or d[0][:-1]) + for d in reversed(deltas) if d[1]] + return " ".join(tarr[:2]) + +def new_msg(word, word_eol, event, attrs): + """Handles normal messages. + + Unless this is the first user's message since he joined, the message will + not be altered. Otherwise, a '(logged in Xs ago)' message will be appended. + + """ + global halt + if halt is True: + return + user = hexchat.strip(word[0]) + # If the user logged in before we did (which means the Join part of + # filter_msg didn't take effect), add him to the dict. + if user not in last_seen: + last_seen[user]= [time(), 1] + # If the user has never spoken before, let us know when he logged in. + if last_seen[user][1] == 0: + time_diff = time() - last_seen[user][0] + word[1] += " \00307(logged in %s ago)" % human_readable(time_diff) + halt = True + hexchat.emit_print(event, *word) + halt = False + last_seen[user]= [time(), 1] + return hexchat.EAT_ALL + else: + last_seen[user]= [time(), 1] + +def filter_msg(word, word_eol, event, attrs): + """Filters join and part messages""" + user = hexchat.strip(word[0]) + # If the user just joined, add him to the dict and mark him as such + #if 'Join' in userdata: + if event == "Join": + if user not in last_seen: + last_seen[user] = [time(), 0] + return hexchat.EAT_ALL + # If the user changed his nick, check if we've been tracking him before + # and transfer his stats if so. Otherwise, add him to the dict. + #elif 'Nick' in userdata: + elif event == "Change Nick": + user = hexchat.strip(word[1]) + old = hexchat.strip(word[0]) + if old in last_seen: + last_seen[user] = last_seen[old] + del last_seen[old] + else: + last_seen[user] = [time(), 0] + # If the user logged in before we did (no entry of him yet), don't display + # his part messages + if user not in last_seen: + return hexchat.EAT_ALL + # If the user has never spoken, or has spoken too long ago, eat his part + # or join messages. + if last_seen[user][1] == 0 or last_seen[user][0] + user_timeout < time(): + return hexchat.EAT_ALL + + +hooks_new = ["Your Message", "Channel Message", "Channel Msg Hilight", + "Your Action", "Channel Action", "Channel Action Hilight"] +hooks_filter = ["Join", "Change Nick", "Part", "Part with Reason", "Quit"] +# hook_print_attrs is used for compatibility with my other scripts, +# since priorities are hook specific +for hook in hooks_new: + hexchat.hook_print_attrs(hook, new_msg, hook, hexchat.PRI_HIGH) +for hook in hooks_filter: + hexchat.hook_print_attrs(hook, filter_msg, hook, hexchat.PRI_HIGH) + +print("\00304", __module_name__, "successfully loaded.\003") diff --git a/hexchat/.config/hexchat/colors.conf b/hexchat/.config/hexchat/colors.conf new file mode 100644 index 0000000..fa92391 --- /dev/null +++ b/hexchat/.config/hexchat/colors.conf @@ -0,0 +1,42 @@ +color_0 = ffff ffff ffff +color_1 = 4949 4848 3e3e +color_2 = 6666 d9d9 efef +color_3 = 6b6b c7c7 2b2b +color_4 = f9f9 2626 7272 +color_5 = 7777 5454 3e3e +color_6 = 94bc 5925 ffff +color_7 = fdfd 9797 1f1f +color_8 = e6e6 dbdb 7474 +color_9 = a6a6 e2e2 2e2e +color_10 = 3542 b072 9155 +color_11 = 6666 efef d566 +color_12 = 6666 d9d9 efef +color_13 = aeae 8181 ffff +color_14 = 7575 7171 5e5e +color_15 = cfcf cfcf c2c2 +color_16 = ffff ffff ffff +color_17 = 4949 4848 3e3e +color_18 = 6666 d9d9 efef +color_19 = 6b6b c7c7 2b2b +color_20 = f9f9 2626 7272 +color_21 = 770d 53e1 3e1f +color_22 = 94bc 5925 ffff +color_23 = fdfd 9797 1f1f +color_24 = e6e6 dbdb 7474 +color_25 = a6a6 e2e2 2e2e +color_26 = 3542 b072 9155 +color_27 = 6666 efef d566 +color_28 = 6666 d9d9 efef +color_29 = aeae 8181 ffff +color_30 = 7575 7171 5e5e +color_31 = cfcf cfcf c2c2 +color_256 = f8f8 f8f8 f2f2 +color_257 = 4949 4848 3e3e +color_258 = cfcf cfcf c2c2 +color_259 = 2727 2828 2222 +color_260 = e6e6 dbdb 7474 +color_261 = fdfd 9797 1f1f +color_262 = a6a6 e2e2 2e2e +color_263 = 6666 d9d9 efef +color_264 = 7575 7171 5e5e +color_265 = f9f9 2626 7272 diff --git a/hexchat/.config/hexchat/pevents.conf b/hexchat/.config/hexchat/pevents.conf new file mode 100644 index 0000000..8bfd96a --- /dev/null +++ b/hexchat/.config/hexchat/pevents.conf @@ -0,0 +1,456 @@ +event_name=Add Notify +event_text=%C18*%O$t%C18$1%O added to notify list. + +event_name=Ban List +event_text=%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O + +event_name=Banned +event_text=%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O). + +event_name=Beep +event_text= + +event_name=Capability Acknowledgement +event_text=%C29*%O$tCapabilities acknowledged: %C29$2%O + +event_name=Capability Deleted +event_text=%C29*%O$tCapabilities removed: %C29$2%O + +event_name=Capability List +event_text=%C23*%O$tCapabilities supported: %C29$2%O + +event_name=Capability Request +event_text=%C23*%O$tCapabilities requested: %C29$1%O + +event_name=Change Nick +event_text=%C24*%O$t%C28$1%O is now known as %C18$2%O + +event_name=Channel Action +event_text=%C18*$t%B$1%O $2 + +event_name=Channel Action Hilight +event_text=%C19*$t%B$1%B $2%O + +event_name=Channel Ban +event_text=%C22*%O$t%C26$1%O sets ban on %C18$2%O + +event_name=Channel Creation +event_text=%C22*%O$tChannel %C22$1%O created on %C24$2%O + +event_name=Channel DeHalfOp +event_text=%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O + +event_name=Channel DeOp +event_text=%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O + +event_name=Channel DeVoice +event_text=%C22*%O$t%C26$1%O removes voice from %C18$2%O + +event_name=Channel Exempt +event_text=%C22*%O$t%C26$1%C sets exempt on %C18$2%O + +event_name=Channel Half-Operator +event_text=%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O + +event_name=Channel INVITE +event_text=%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O + +event_name=Channel List +event_text=%UChannel Users Topic + +event_name=Channel Message +event_text=%C18%H<%H$4$1%C18%H>%H%O$t$2 + +event_name=Channel Mode Generic +event_text=%C22*%O$t%C26$1%O sets mode %C24$2$3%O on %C22$4%O + +event_name=Channel Modes +event_text=%C22*%O$tChannel %C22$1%O modes: %C24$2 + +event_name=Channel Msg Hilight +event_text=%C19%H<%H$4%B$1%B%H>%H$t$2%O + +event_name=Channel Notice +event_text=%C18$1%C%C$t%C3Notice: %O$3%O + +event_name=Channel Operator +event_text=%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O + +event_name=Channel Quiet +event_text=%C22*%O$t%C26$1%O sets quiet on %C18$2%O + +event_name=Channel Remove Exempt +event_text=%C22*%O$t%C26$1%O removes exempt on %C18$2%O + +event_name=Channel Remove Invite +event_text=%C22*%O$t%C26$1%O removes invite exempt on %C18$2%O + +event_name=Channel Remove Keyword +event_text=%C22*%O$t%C26$1%O removes channel keyword + +event_name=Channel Remove Limit +event_text=%C22*%O$t%C26$1%O removes user limit + +event_name=Channel Set Key +event_text=%C22*%O$t%C26$1%O sets channel keyword to %C24$2%O + +event_name=Channel Set Limit +event_text=%C22*%O$t%C26$1%O sets channel limit to %C24$2%O + +event_name=Channel UnBan +event_text=%C22*%O$t%C26$1%O removes ban on %C18$2%O + +event_name=Channel UnQuiet +event_text=%C22*%O$t%C26$1%O removes quiet on %C18$2%O + +event_name=Channel Url +event_text=%C22*%O$tChannel %C22$1%O url: %C24$2 + +event_name=Channel Voice +event_text=%C22*%O$t%C26$1%O gives voice to %C18$2%O + +event_name=Connected +event_text=%C23*%O$tConnected. Now logging in. + +event_name=Connecting +event_text=%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O) + +event_name=Connection Failed +event_text=%C20*%O$tConnection failed (%C20$1%O) + +event_name=CTCP Generic +event_text=%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O + +event_name=CTCP Generic to Channel +event_text=%C24*%C$tReceived a CTCP %C24$1%C from %C18$2%C (to %C22$3%C)%O + +event_name=CTCP Send +event_text=>%C18$1%C<$tCTCP %C24$2%O + +event_name=CTCP Sound +event_text=%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%O + +event_name=CTCP Sound to Channel +event_text=%C24*%O$tReceived a CTCP Sound %C24$1%C from %C18$2%C (to %C22$3%O) + +event_name=DCC CHAT Abort +event_text=%C23*%O$tDCC CHAT to %C18$1%O aborted. + +event_name=DCC CHAT Connect +event_text=%C24*%O$tDCC CHAT connection established to %C18$1%C %C30[%C24$2%C30]%O + +event_name=DCC CHAT Failed +event_text=%C20*%O$tDCC CHAT to %C18$1%O lost (%C20$4%O) + +event_name=DCC CHAT Offer +event_text=%C24*%O$tReceived a DCC CHAT offer from %C18$1%O + +event_name=DCC CHAT Offering +event_text=%C24*%O$tOffering DCC CHAT to %C18$1%O + +event_name=DCC CHAT Reoffer +event_text=%C24*%O$tAlready offering CHAT to %C18$1%O + +event_name=DCC Conection Failed +event_text=%C20*%O$tDCC $1 connect attempt to %C18$2%O failed (%C20$3%O) + +event_name=DCC Generic Offer +event_text=%C23*%O$tReceived '%C23$1%C' from %C18$2%O + +event_name=DCC Header +event_text=%C16,17 Type To/From Status Size Pos File + +event_name=DCC Malformed +event_text=%C20*%O$tReceived a malformed DCC request from %C18$1%O.$a010%C23*%O$tContents of packet: %C23$2%O + +event_name=DCC Offer +event_text=%C24*%O$tOffering '%C24$1%O' to %C18$2%O + +event_name=DCC Offer Not Valid +event_text=%C23*%O$tNo such DCC offer. + +event_name=DCC RECV Abort +event_text=%C23*%O$tDCC RECV '%C23$2%O' to %C18$1%O aborted. + +event_name=DCC RECV Complete +event_text=%C24*%O$tDCC RECV '%C23$1%O' from %C18$3%O complete %C30[%C24$4%O cps%C30]%O + +event_name=DCC RECV Connect +event_text=%C24*%O$tDCC RECV connection established to %C18$1 %C30[%O%C24$2%C30]%O + +event_name=DCC RECV Failed +event_text=%C20*%O$tDCC RECV '%C23$1%O' from %C18$3%O failed (%C20$4%O) + +event_name=DCC RECV File Open Error +event_text=%C20*%O$tDCC RECV: Cannot open '%C23$1%C' for writing (%C20$2%O) + +event_name=DCC Rename +event_text=%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' instead. + +event_name=DCC RESUME Request +event_text=%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O. + +event_name=DCC SEND Abort +event_text=%C23*%O$tDCC SEND '%C23$2%C' to %C18$1%O aborted. + +event_name=DCC SEND Complete +event_text=%C24*%O$tDCC SEND '%C23$1%C' to %C18$2%C complete %C30[%C24$3%C cps%C30]%O + +event_name=DCC SEND Connect +event_text=%C24*%O$tDCC SEND connection established to %C18$1 %C30[%O%C24$2%C30]%O + +event_name=DCC SEND Failed +event_text=%C20*%O$tDCC SEND '%C23$1%C' to %C18$2%C failed (%C20$3%O) + +event_name=DCC SEND Offer +event_text=%C24*%O$t%C18$1%C has offered '%C23$2%C' (%C24$3%O bytes) + +event_name=DCC Stall +event_text=%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O stalled, aborting. + +event_name=DCC Timeout +event_text=%C20*%O$tDCC $1 '%C23$2%C' to %C18$3%O timed out, aborting. + +event_name=Delete Notify +event_text=%C24*%O$t%C18$1%O deleted from notify list. + +event_name=Disconnected +event_text=%C20*%O$tDisconnected (%C20$1%O) + +event_name=Found IP +event_text=%C24*%O$tFound your IP: %C30[%C24$1%C30]%O + +event_name=Generic Message +event_text=$1$t$2 + +event_name=Ignore Add +event_text=%O%C18$1%O added to ignore list. + +event_name=Ignore Changed +event_text=%OIgnore on %C18$1%O changed. + +event_name=Ignore Footer +event_text=%C16,17 + +event_name=Ignore Header +event_text=%C16,17 Hostmask PRIV NOTI CHAN CTCP DCC INVI UNIG + +event_name=Ignore Remove +event_text=%O%C18$1%O removed from ignore list. + +event_name=Ignorelist Empty +event_text=%OIgnore list is empty. + +event_name=Invite +event_text=%C20*%O$tCannot join %C22$1%C (%C20Channel is invite only%O) + +event_name=Invited +event_text=%C24*%O$tYou have been invited to %C22$1%O by %C18$2%O (%C29$3%O) + +event_name=Join +event_text=%C23*$t$1 ($3%C23) has joined + +event_name=Keyword +event_text=%C20*%O$tCannot join %C22$1%C (%C20Requires keyword%O) + +event_name=Kick +event_text=%C22*%O$t%C26$1%C has kicked %C18$2%C from %C22$3%C (%C24$4%O) + +event_name=Killed +event_text=%C19*%O$t%C19You have been killed by %C26$1%C (%C20$2%O) + +event_name=Message Send +event_text=%O>%C18$1%C<%O$t$2 + +event_name=Motd +event_text=%C29*%O$t%C29$1%O + +event_name=MOTD Skipped +event_text=%C29*%O$t%C29MOTD Skipped%O + +event_name=Nick Clash +event_text=%C23*%O$t%C28$1%C is already in use. Retrying with %C18$2%O... + +event_name=Nick Erroneous +event_text=%C23*%O$t%C28$1%C is errorneous. Retrying with %C18$2%O... + +event_name=Nick Failed +event_text=%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another. + +event_name=No DCC +event_text=%C20*%O$tNo such DCC. + +event_name=No Running Process +event_text=%C23*%O$tNo process is currently running + +event_name=Notice +event_text=%O-%C18$1%O-$t$2 + +event_name=Notice Send +event_text=%O->%C18$1%O<-$t$2 + +event_name=Notify Away +event_text=%C23*%O$tNotify: %C18$1%C is away (%C24$2%O) + +event_name=Notify Back +event_text=%C23*%O$tNotify: %C18$1%C is back + +event_name=Notify Empty +event_text=$tNotify list is empty. + +event_name=Notify Header +event_text=%C16,17 Notify List + +event_name=Notify Number +event_text=%C23*%O$t%C23$1%O users in notify list. + +event_name=Notify Offline +event_text=%C23*%O$tNotify: %C18$1%C is offline (%C29$3%O) + +event_name=Notify Online +event_text=%C23*%O$tNotify: %C18$1%C is online (%C29$3%O) + +event_name=Open Dialog +event_text= + +event_name=Part +event_text=%C24*$t$1 ($2%C24) has left + +event_name=Part with Reason +event_text=%C24*$t$1 ($2%C24) has left ($4) + +event_name=Ping Reply +event_text=%C24*%O$tPing reply from %C18$1%C: %C24$2%O second(s) + +event_name=Ping Timeout +event_text=%C20*%O$tNo ping reply for %C24$1%O seconds, disconnecting. + +event_name=Private Action +event_text=%C18**$t$3$1%O $2 %C18** + +event_name=Private Action to Dialog +event_text=%C18*$t$3$1%O $2 + +event_name=Private Message +event_text=%C18*%C18$3$1*%O$t$2 + +event_name=Private Message to Dialog +event_text=%C18%H<%H$3$1%H>%H%O$t$2 + +event_name=Process Already Running +event_text=%C24*%O$tA process is already running + +event_name=Quit +event_text=%C24*$t$1 has quit ($2) + +event_name=Raw Modes +event_text=%C24*%O$t%C26$1%C sets modes %C30[%C24$2%C30]%O + +event_name=Receive Wallops +event_text=%O-%C29$1/Wallops%O-$t$2 + +event_name=Resolving User +event_text=%C24*%O$tLooking up IP number for %C18$1%O... + +event_name=SASL Authenticating +event_text=%C23*%O$tAuthenticating via SASL as %C18$1%O (%C24$2%O) + +event_name=SASL Response +event_text=%C29*%O$t$4 + +event_name=Server Connected +event_text=%C29*%O$tConnected. + +event_name=Server Error +event_text=%C29*%O$t%C20$1%O + +event_name=Server Lookup +event_text=%C29*%O$tLooking up %C29$1%O + +event_name=Server Notice +event_text=%C29*%O$t$1 + +event_name=Server Text +event_text=%C29*%O$t$1 + +event_name=SSL Message +event_text=%C29*%O$t$1 + +event_name=Stop Connection +event_text=%C23*%O$tStopped previous connection attempt (%C24$1%O) + +event_name=Topic +event_text=%C22*%O$tTopic for %C22$1%C is: $2%O + +event_name=Topic Change +event_text=%C22*%O$t%C26$1%C has changed the topic to: $2%O + +event_name=Topic Creation +event_text=%C22*%O$tTopic for %C22$1%C set by %C26$2%C (%C24$3%O) + +event_name=Unknown Host +event_text=%C20*%O$tUnknown host. Maybe you misspelt it? + +event_name=User Limit +event_text=%C20*%O$tCannot join %C22$1%C (%C20User limit reached%O) + +event_name=Users On Channel +event_text=%C22*%O$tUsers on %C22$1%C: %C24$2%O + +event_name=WhoIs Authenticated +event_text=%C23*%O$t%C28[%C18$1%C28]%O $2 %C18$3%O + +event_name=WhoIs Away Line +event_text=%C23*%O$t%C28[%C18$1%C28]%C is away %C30(%C23$2%O%C30)%O + +event_name=WhoIs Channel/Oper Line +event_text=%C23*%O$t%C28[%C18$1%C28]%O $2 + +event_name=WhoIs End +event_text=%C23*%O$t%C28[%C18$1%C28] %OEnd of WHOIS list. + +event_name=WhoIs Identified +event_text=%C23*%O$t%C28[%C18$1%C28]%O $2 + +event_name=WhoIs Idle Line +event_text=%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O + +event_name=WhoIs Idle Line with Signon +event_text=%C23*%O$t%C28[%C18$1%C28]%O idle %C23$2%O, signon: %C23$3%O + +event_name=WhoIs Name Line +event_text=%C23*%O$t%C28[%C18$1%C28] %C30(%C24$2@$3%C30)%O: %C18$4%O + +event_name=WhoIs Real Host +event_text=%C23*%O$t%C28[%C18$1%C28]%O Real Host: %C23$2%O, Real IP: %C30[%C23$3%C30]%O + +event_name=WhoIs Server Line +event_text=%C23*%O$t%C28[%C18$1%C28]%O %C29$2%O + +event_name=WhoIs Special +event_text=%C23*%O$t%C28[%C18$1%C28]%O $2 + +event_name=You Join +event_text=%C19*%O$tNow talking on %C22$2%O + +event_name=You Kicked +event_text=%C19*%O$tYou have been kicked from %C22$2%C by %C26$3%O (%C20$4%O) + +event_name=You Part +event_text=%C19*%O$tYou have left channel %C22$3%O + +event_name=You Part with Reason +event_text=%C19*%O$tYou have left channel %C22$3%C (%C24$4%O) + +event_name=Your Action +event_text=%C20*$t%B$1%B %C30$2%O + +event_name=Your Invitation +event_text=%C20*%O$tYou've invited %C18$1%O to %C22$2%O (%C24$3%O) + +event_name=Your Message +event_text=%C20%H<%H$4$1%H>%H%O%C30$t$2%O + +event_name=Your Nick Changing +event_text=%C20*%O$tYou are now known as %C18$2%O + diff --git a/install.sh b/install.sh index 80e0124..02b37ce 100755 --- a/install.sh +++ b/install.sh @@ -52,9 +52,9 @@ installIfAvailable git installIfAvailable latexmk installIfAvailable ruby installIfAvailable npm -installIfAvailable Xorg installIfAvailable awesome installIfAvailable sakura +installIfAvailable hexchat if commandAvailable weechat; then echo "Setting up weechat settings…"