From 079d737e01d71c84294a2b9a2a561ca26455ee3c Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Sat, 11 Aug 2018 01:38:12 -0400 Subject: [PATCH] fix up some fish stuff --- Makefile | 1 + byobu/.byobu/color.tmux | 2 +- fish/.config/fish/completions/fisher.fish | 1 + fish/.config/fish/completions/gitignore.fish | 1 + fish/.config/fish/completions/nvm.fish | 1 + fish/.config/fish/completions/spin.fish | 1 + fish/.config/fish/fishd.slash | 1 + fish/.config/fish/fishfile | 6 +- fish/.config/fish/functions/0x0.fish | 4 + fish/.config/fish/functions/__bass.py | 1 + .../fish/functions/__can_run_command.fish | 1 + fish/.config/fish/functions/__nvm_run.fish | 1 + fish/.config/fish/functions/bass.fish | 1 + .../fish/functions/cp_tilde_index.fish | 10 +- fish/.config/fish/functions/fish_prompt.fish | 1 - .../fish/functions/fzf_key_bindings.fish | 1 - fish/.config/fish/functions/g.fish | 11 +- fish/.config/fish/functions/getopts.fish | 1 + fish/.config/fish/functions/gitignore.fish | 1 + fish/.config/fish/functions/l.fish | 1 + fish/.config/fish/functions/lg.fish | 3 +- fish/.config/fish/functions/longtlds.fish | 3 +- fish/.config/fish/functions/ls.fish | 4 + fish/.config/fish/functions/node.fish | 1 + fish/.config/fish/functions/npm.fish | 1 + fish/.config/fish/functions/npx.fish | 1 + fish/.config/fish/functions/nvm.fish | 1 + .../fish/functions/nvm_alias_command.fish | 1 + .../fish/functions/nvm_alias_function.fish | 1 + fish/.config/fish/functions/owl.fish | 3 - fish/.config/fish/functions/pb.fish | 4 + .../fish/functions/renew_ifd_cert.fish | 0 fish/.config/fish/functions/spin.fish | 1 + fish/.config/fish/functions/tag.fish | 3 +- fish/.config/fish/functions/tildefig.fish | 3 +- fish/.config/fish/functions/vim.fish | 11 +- fish/.config/fish/functions/vz.fish | 3 - fish/.config/fish/functions/yarn.fish | 1 + weechat/.weechat/irc.conf | 41 ++ weechat/.weechat/logger.conf | 2 +- weechat/.weechat/plugins.conf | 2 +- weechat/.weechat/python/anotify.py | 472 ++++++++++++++++++ weechat/.weechat/python/autoload/anotify.py | 1 + weechat/.weechat/python/grep.pyc | Bin 0 -> 45510 bytes weechat/.weechat/weechat.conf | 7 +- 45 files changed, 584 insertions(+), 34 deletions(-) create mode 100644 fish/.config/fish/completions/fisher.fish create mode 120000 fish/.config/fish/completions/gitignore.fish create mode 120000 fish/.config/fish/completions/nvm.fish create mode 120000 fish/.config/fish/completions/spin.fish create mode 100644 fish/.config/fish/functions/0x0.fish create mode 120000 fish/.config/fish/functions/__bass.py create mode 120000 fish/.config/fish/functions/__can_run_command.fish create mode 120000 fish/.config/fish/functions/__nvm_run.fish create mode 120000 fish/.config/fish/functions/bass.fish delete mode 120000 fish/.config/fish/functions/fish_prompt.fish delete mode 120000 fish/.config/fish/functions/fzf_key_bindings.fish create mode 120000 fish/.config/fish/functions/getopts.fish create mode 120000 fish/.config/fish/functions/gitignore.fish mode change 100755 => 100644 fish/.config/fish/functions/l.fish mode change 100755 => 100644 fish/.config/fish/functions/longtlds.fish create mode 100644 fish/.config/fish/functions/ls.fish create mode 120000 fish/.config/fish/functions/node.fish create mode 120000 fish/.config/fish/functions/npm.fish create mode 120000 fish/.config/fish/functions/npx.fish create mode 120000 fish/.config/fish/functions/nvm.fish create mode 120000 fish/.config/fish/functions/nvm_alias_command.fish create mode 120000 fish/.config/fish/functions/nvm_alias_function.fish delete mode 100755 fish/.config/fish/functions/owl.fish create mode 100644 fish/.config/fish/functions/pb.fish mode change 100755 => 100644 fish/.config/fish/functions/renew_ifd_cert.fish create mode 120000 fish/.config/fish/functions/spin.fish mode change 100755 => 100644 fish/.config/fish/functions/tag.fish delete mode 100755 fish/.config/fish/functions/vz.fish create mode 120000 fish/.config/fish/functions/yarn.fish create mode 100644 weechat/.weechat/python/anotify.py create mode 120000 weechat/.weechat/python/autoload/anotify.py create mode 100644 weechat/.weechat/python/grep.pyc diff --git a/Makefile b/Makefile index 53f1c21..89a73d6 100644 --- a/Makefile +++ b/Makefile @@ -39,6 +39,7 @@ bash: fish: @printf "$(YELLOW)--- fish -----------------------------------------------\n$(RESET)" stow -t "$$HOME" fish + fish -c fisher git: @printf "$(YELLOW)--- git ------------------------------------------------\n$(RESET)" diff --git a/byobu/.byobu/color.tmux b/byobu/.byobu/color.tmux index d10f1d5..1b4c59b 100755 --- a/byobu/.byobu/color.tmux +++ b/byobu/.byobu/color.tmux @@ -1,4 +1,4 @@ -BYOBU_DARK="\#b03b5b" +BYOBU_DARK="\#6eb08d" BYOBU_LIGHT=black BYOBU_ACCENT=magenta BYOBU_HIGHLIGHT=red diff --git a/fish/.config/fish/completions/fisher.fish b/fish/.config/fish/completions/fisher.fish new file mode 100644 index 0000000..61a3810 --- /dev/null +++ b/fish/.config/fish/completions/fisher.fish @@ -0,0 +1 @@ +fisher --complete diff --git a/fish/.config/fish/completions/gitignore.fish b/fish/.config/fish/completions/gitignore.fish new file mode 120000 index 0000000..a9ccd3e --- /dev/null +++ b/fish/.config/fish/completions/gitignore.fish @@ -0,0 +1 @@ +/home/ben/.config/fisherman/gitignore/completions/gitignore.fish \ No newline at end of file diff --git a/fish/.config/fish/completions/nvm.fish b/fish/.config/fish/completions/nvm.fish new file mode 120000 index 0000000..693cb44 --- /dev/null +++ b/fish/.config/fish/completions/nvm.fish @@ -0,0 +1 @@ +/home/ben/.config/fisherman/nvm/completions/nvm.fish \ No newline at end of file diff --git a/fish/.config/fish/completions/spin.fish b/fish/.config/fish/completions/spin.fish new file mode 120000 index 0000000..8fa7ba6 --- /dev/null +++ b/fish/.config/fish/completions/spin.fish @@ -0,0 +1 @@ +/home/ben/.config/fisherman/spin/completions/spin.fish \ No newline at end of file diff --git a/fish/.config/fish/fishd.slash b/fish/.config/fish/fishd.slash index 93eb0b8..783de6d 100644 --- a/fish/.config/fish/fishd.slash +++ b/fish/.config/fish/fishd.slash @@ -29,3 +29,4 @@ SET fish_pager_color_completion:\x1d SET fish_pager_color_description:B3A06D\x1eyellow SET fish_pager_color_prefix:white\x1e\x2d\x2dbold\x1e\x2d\x2dunderline SET fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan +SET fisher_dependency_count:bass\x1envm\x1egetopts\x1espin\x1egitignore diff --git a/fish/.config/fish/fishfile b/fish/.config/fish/fishfile index 8b13789..69f6a51 100755 --- a/fish/.config/fish/fishfile +++ b/fish/.config/fish/fishfile @@ -1 +1,5 @@ - +edc/bass +fisherman/getopts +fisherman/gitignore +fisherman/nvm +fisherman/spin diff --git a/fish/.config/fish/functions/0x0.fish b/fish/.config/fish/functions/0x0.fish new file mode 100644 index 0000000..fdba590 --- /dev/null +++ b/fish/.config/fish/functions/0x0.fish @@ -0,0 +1,4 @@ +function 0x0 + curl -F"file=@"$argv[1] https://0x0.tilde.team +end + diff --git a/fish/.config/fish/functions/__bass.py b/fish/.config/fish/functions/__bass.py new file mode 120000 index 0000000..aaa572b --- /dev/null +++ b/fish/.config/fish/functions/__bass.py @@ -0,0 +1 @@ +/home/ben/.config/fisherman/bass/functions/__bass.py \ No newline at end of file diff --git a/fish/.config/fish/functions/__can_run_command.fish b/fish/.config/fish/functions/__can_run_command.fish new file mode 120000 index 0000000..a693299 --- /dev/null +++ b/fish/.config/fish/functions/__can_run_command.fish @@ -0,0 +1 @@ +/home/ben/.config/fisherman/nvm/__can_run_command.fish \ No newline at end of file diff --git a/fish/.config/fish/functions/__nvm_run.fish b/fish/.config/fish/functions/__nvm_run.fish new file mode 120000 index 0000000..839355b --- /dev/null +++ b/fish/.config/fish/functions/__nvm_run.fish @@ -0,0 +1 @@ +/home/ben/.config/fisherman/nvm/__nvm_run.fish \ No newline at end of file diff --git a/fish/.config/fish/functions/bass.fish b/fish/.config/fish/functions/bass.fish new file mode 120000 index 0000000..42c6e65 --- /dev/null +++ b/fish/.config/fish/functions/bass.fish @@ -0,0 +1 @@ +/home/ben/.config/fisherman/bass/functions/bass.fish \ No newline at end of file diff --git a/fish/.config/fish/functions/cp_tilde_index.fish b/fish/.config/fish/functions/cp_tilde_index.fish index 4241c0f..b4572ec 100644 --- a/fish/.config/fish/functions/cp_tilde_index.fish +++ b/fish/.config/fish/functions/cp_tilde_index.fish @@ -1,8 +1,8 @@ # Defined in /tmp/fish.hXQA9y/cp_tilde_index.fish @ line 1 function cp_tilde_index - sudo cp /etc/skel/public_html/index.php /home/$argv[1]/public_html/. -sudo chown $argv[1]:$argv[1] /home/$argv[1]/public_html/index.php -if test -e /home/$argv[1]/public_html/index.html -sudo rm /home/$argv[1]/public_html/index.html -end + sudo cp /etc/skel/public_html/index.php /home/$argv[1]/public_html/. + sudo chown $argv[1]:$argv[1] /home/$argv[1]/public_html/index.php + if test -e /home/$argv[1]/public_html/index.html + sudo rm /home/$argv[1]/public_html/index.html + end end diff --git a/fish/.config/fish/functions/fish_prompt.fish b/fish/.config/fish/functions/fish_prompt.fish deleted file mode 120000 index 05df569..0000000 --- a/fish/.config/fish/functions/fish_prompt.fish +++ /dev/null @@ -1 +0,0 @@ -/home/ben/.local/share/omf/themes/bobthefish/fish_prompt.fish \ No newline at end of file diff --git a/fish/.config/fish/functions/fzf_key_bindings.fish b/fish/.config/fish/functions/fzf_key_bindings.fish deleted file mode 120000 index 38dd2a3..0000000 --- a/fish/.config/fish/functions/fzf_key_bindings.fish +++ /dev/null @@ -1 +0,0 @@ -/home/ben/.fzf/shell/key-bindings.fish \ No newline at end of file diff --git a/fish/.config/fish/functions/g.fish b/fish/.config/fish/functions/g.fish index de04e81..05d6434 100644 --- a/fish/.config/fish/functions/g.fish +++ b/fish/.config/fish/functions/g.fish @@ -1,7 +1,8 @@ function g - if count $argv > /dev/null -git $argv -else -git status -end + if count $argv > /dev/null + git $argv + else + git status + end end + diff --git a/fish/.config/fish/functions/getopts.fish b/fish/.config/fish/functions/getopts.fish new file mode 120000 index 0000000..26b6df0 --- /dev/null +++ b/fish/.config/fish/functions/getopts.fish @@ -0,0 +1 @@ +/home/ben/.config/fisherman/getopts/getopts.fish \ No newline at end of file diff --git a/fish/.config/fish/functions/gitignore.fish b/fish/.config/fish/functions/gitignore.fish new file mode 120000 index 0000000..9769b89 --- /dev/null +++ b/fish/.config/fish/functions/gitignore.fish @@ -0,0 +1 @@ +/home/ben/.config/fisherman/gitignore/gitignore.fish \ No newline at end of file diff --git a/fish/.config/fish/functions/l.fish b/fish/.config/fish/functions/l.fish old mode 100755 new mode 100644 index e373118..96412ab --- a/fish/.config/fish/functions/l.fish +++ b/fish/.config/fish/functions/l.fish @@ -1,3 +1,4 @@ function l ls -lah $argv end + diff --git a/fish/.config/fish/functions/lg.fish b/fish/.config/fish/functions/lg.fish index c8ccd05..2aabb9d 100644 --- a/fish/.config/fish/functions/lg.fish +++ b/fish/.config/fish/functions/lg.fish @@ -1,3 +1,4 @@ function lg - lazygit $argv + lazygit $argv end + diff --git a/fish/.config/fish/functions/longtlds.fish b/fish/.config/fish/functions/longtlds.fish old mode 100755 new mode 100644 index 2c14e48..b404702 --- a/fish/.config/fish/functions/longtlds.fish +++ b/fish/.config/fish/functions/longtlds.fish @@ -1,3 +1,4 @@ function longtlds - wget -qO - http://data.iana.org/TLD/tlds-alpha-by-domain.txt | tail -n+2 | awk '{print length, $0;}' | sort -n $argv + wget -qO - http://data.iana.org/TLD/tlds-alpha-by-domain.txt | tail -n+2 | awk '{print length, $0;}' | sort -n $argv end + diff --git a/fish/.config/fish/functions/ls.fish b/fish/.config/fish/functions/ls.fish new file mode 100644 index 0000000..1797a94 --- /dev/null +++ b/fish/.config/fish/functions/ls.fish @@ -0,0 +1,4 @@ +function ls + command ls --color=auto $argv +end + diff --git a/fish/.config/fish/functions/node.fish b/fish/.config/fish/functions/node.fish new file mode 120000 index 0000000..7831810 --- /dev/null +++ b/fish/.config/fish/functions/node.fish @@ -0,0 +1 @@ +/home/ben/.config/fisherman/nvm/functions/node.fish \ No newline at end of file diff --git a/fish/.config/fish/functions/npm.fish b/fish/.config/fish/functions/npm.fish new file mode 120000 index 0000000..807ba3a --- /dev/null +++ b/fish/.config/fish/functions/npm.fish @@ -0,0 +1 @@ +/home/ben/.config/fisherman/nvm/functions/npm.fish \ No newline at end of file diff --git a/fish/.config/fish/functions/npx.fish b/fish/.config/fish/functions/npx.fish new file mode 120000 index 0000000..611bce1 --- /dev/null +++ b/fish/.config/fish/functions/npx.fish @@ -0,0 +1 @@ +/home/ben/.config/fisherman/nvm/functions/npx.fish \ No newline at end of file diff --git a/fish/.config/fish/functions/nvm.fish b/fish/.config/fish/functions/nvm.fish new file mode 120000 index 0000000..7d7c95c --- /dev/null +++ b/fish/.config/fish/functions/nvm.fish @@ -0,0 +1 @@ +/home/ben/.config/fisherman/nvm/functions/nvm.fish \ No newline at end of file diff --git a/fish/.config/fish/functions/nvm_alias_command.fish b/fish/.config/fish/functions/nvm_alias_command.fish new file mode 120000 index 0000000..4826e6d --- /dev/null +++ b/fish/.config/fish/functions/nvm_alias_command.fish @@ -0,0 +1 @@ +/home/ben/.config/fisherman/nvm/functions/nvm_alias_command.fish \ No newline at end of file diff --git a/fish/.config/fish/functions/nvm_alias_function.fish b/fish/.config/fish/functions/nvm_alias_function.fish new file mode 120000 index 0000000..ed884f2 --- /dev/null +++ b/fish/.config/fish/functions/nvm_alias_function.fish @@ -0,0 +1 @@ +/home/ben/.config/fisherman/nvm/functions/nvm_alias_function.fish \ No newline at end of file diff --git a/fish/.config/fish/functions/owl.fish b/fish/.config/fish/functions/owl.fish deleted file mode 100755 index c90653a..0000000 --- a/fish/.config/fish/functions/owl.fish +++ /dev/null @@ -1,3 +0,0 @@ -function owl - php /home/ben/.owl/bin/owl.php $argv -end diff --git a/fish/.config/fish/functions/pb.fish b/fish/.config/fish/functions/pb.fish new file mode 100644 index 0000000..09febb8 --- /dev/null +++ b/fish/.config/fish/functions/pb.fish @@ -0,0 +1,4 @@ +function pb + nc tilde.team 9999 +end + diff --git a/fish/.config/fish/functions/renew_ifd_cert.fish b/fish/.config/fish/functions/renew_ifd_cert.fish old mode 100755 new mode 100644 diff --git a/fish/.config/fish/functions/spin.fish b/fish/.config/fish/functions/spin.fish new file mode 120000 index 0000000..a7683e3 --- /dev/null +++ b/fish/.config/fish/functions/spin.fish @@ -0,0 +1 @@ +/home/ben/.config/fisherman/spin/spin.fish \ No newline at end of file diff --git a/fish/.config/fish/functions/tag.fish b/fish/.config/fish/functions/tag.fish old mode 100755 new mode 100644 index 4d31cd6..a16359c --- a/fish/.config/fish/functions/tag.fish +++ b/fish/.config/fish/functions/tag.fish @@ -1,3 +1,4 @@ function tag - shuf -n 1 ~/taglines.txt + shuf -n 1 ~/taglines.txt end + diff --git a/fish/.config/fish/functions/tildefig.fish b/fish/.config/fish/functions/tildefig.fish index c6dc6eb..fbff0b3 100644 --- a/fish/.config/fish/functions/tildefig.fish +++ b/fish/.config/fish/functions/tildefig.fish @@ -1,3 +1,4 @@ function tildefig - curl "https://tilde.team/~ben/api/?font=slant&text="$argv + curl "https://tilde.team/~ben/api/?font=slant&text="$argv end + diff --git a/fish/.config/fish/functions/vim.fish b/fish/.config/fish/functions/vim.fish index f97be80..66cf889 100644 --- a/fish/.config/fish/functions/vim.fish +++ b/fish/.config/fish/functions/vim.fish @@ -1,7 +1,8 @@ function vim - if test -x (which nvim) -nvim $argv -else -vim $argv -end + if type -q nvim >/dev/null + nvim $argv + else + command vim $argv + end end + diff --git a/fish/.config/fish/functions/vz.fish b/fish/.config/fish/functions/vz.fish deleted file mode 100755 index e2f2b48..0000000 --- a/fish/.config/fish/functions/vz.fish +++ /dev/null @@ -1,3 +0,0 @@ -function vz - vim (fzf) -end diff --git a/fish/.config/fish/functions/yarn.fish b/fish/.config/fish/functions/yarn.fish new file mode 120000 index 0000000..52c2a55 --- /dev/null +++ b/fish/.config/fish/functions/yarn.fish @@ -0,0 +1 @@ +/home/ben/.config/fisherman/nvm/functions/yarn.fish \ No newline at end of file diff --git a/weechat/.weechat/irc.conf b/weechat/.weechat/irc.conf index 05dd32a..cbe63c8 100644 --- a/weechat/.weechat/irc.conf +++ b/weechat/.weechat/irc.conf @@ -562,3 +562,44 @@ blackhat.msg_part blackhat.msg_quit blackhat.notify blackhat.split_msg_max_length +bitlbee.addresses = "irc.net/6697" +bitlbee.proxy +bitlbee.ipv6 +bitlbee.ssl = on +bitlbee.ssl_cert +bitlbee.ssl_priorities +bitlbee.ssl_dhkey_size +bitlbee.ssl_fingerprint +bitlbee.ssl_verify +bitlbee.password = "${sec.data.pass}" +bitlbee.capabilities +bitlbee.sasl_mechanism +bitlbee.sasl_username = "benharri" +bitlbee.sasl_password = "${sec.data.pass}" +bitlbee.sasl_key +bitlbee.sasl_timeout +bitlbee.sasl_fail +bitlbee.autoconnect = on +bitlbee.autoreconnect +bitlbee.autoreconnect_delay +bitlbee.nicks = "benharri" +bitlbee.nicks_alternate +bitlbee.username +bitlbee.realname +bitlbee.local_hostname +bitlbee.usermode +bitlbee.command +bitlbee.command_delay +bitlbee.autojoin +bitlbee.autorejoin +bitlbee.autorejoin_delay +bitlbee.connection_timeout +bitlbee.anti_flood_prio_high +bitlbee.anti_flood_prio_low +bitlbee.away_check +bitlbee.away_check_max_nicks +bitlbee.msg_kick +bitlbee.msg_part +bitlbee.msg_quit +bitlbee.notify +bitlbee.split_msg_max_length diff --git a/weechat/.weechat/logger.conf b/weechat/.weechat/logger.conf index 2a5b0dc..b7b5efc 100644 --- a/weechat/.weechat/logger.conf +++ b/weechat/.weechat/logger.conf @@ -18,7 +18,7 @@ backlog_end = default backlog_line = default [file] -auto_log = off +auto_log = on flush_delay = 120 fsync = off info_lines = off diff --git a/weechat/.weechat/plugins.conf b/weechat/.weechat/plugins.conf index ae9c3cc..6a9223e 100644 --- a/weechat/.weechat/plugins.conf +++ b/weechat/.weechat/plugins.conf @@ -40,7 +40,7 @@ python.go.color_name_highlight_selected = "red,brown" python.go.color_name_selected = "black,brown" python.go.color_number = "yellow,magenta" python.go.color_number_selected = "yellow,red" -python.go.fuzzy_search = "off" +python.go.fuzzy_search = "on" python.go.message = "Go to: " python.go.short_name = "off" python.go.sort = "number,beginning" diff --git a/weechat/.weechat/python/anotify.py b/weechat/.weechat/python/anotify.py new file mode 100644 index 0000000..c83f62b --- /dev/null +++ b/weechat/.weechat/python/anotify.py @@ -0,0 +1,472 @@ +# -*- coding: utf-8 -*- +# +# anotify.py +# Copyright (c) 2012 magnific0 +# +# based on: +# growl.py +# Copyright (c) 2011 Sorin Ionescu +# +# 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 NONINFRINGEMENT. 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. + + +SCRIPT_NAME = 'anotify' +SCRIPT_AUTHOR = 'magnific0' +SCRIPT_VERSION = '1.0.1' +SCRIPT_LICENSE = 'MIT' +SCRIPT_DESC = 'Sends libnotify notifications upon events.' + + +# Changelog +# 2014-05-10: v1.0.1 Change hook_print callback argument type of +# displayed/highlight (WeeChat >= 1.0) +# 2012-09-20: v1.0.0 Forked from original and adapted for libnotify. + +# ----------------------------------------------------------------------------- +# Settings +# ----------------------------------------------------------------------------- +SETTINGS = { + 'show_public_message': 'off', + 'show_private_message': 'on', + 'show_public_action_message': 'off', + 'show_private_action_message': 'on', + 'show_notice_message': 'off', + 'show_invite_message': 'on', + 'show_highlighted_message': 'on', + 'show_server': 'on', + 'show_channel_topic': 'on', + 'show_dcc': 'on', + 'show_upgrade_ended': 'on', + 'sticky': 'off', + 'sticky_away': 'on', + 'icon': '/usr/share/pixmaps/weechat.xpm', +} + + +# ----------------------------------------------------------------------------- +# Imports +# ----------------------------------------------------------------------------- +try: + import re + import os + import weechat + import pynotify + IMPORT_OK = True +except ImportError as error: + IMPORT_OK = False + if str(error).find('weechat') != -1: + print('This script must be run under WeeChat.') + print('Get WeeChat at http://www.weechat.org.') + else: + weechat.prnt('', 'anotify: {0}'.format(error)) + +# ----------------------------------------------------------------------------- +# Globals +# ----------------------------------------------------------------------------- +TAGGED_MESSAGES = { + 'public message or action': set(['irc_privmsg', 'notify_message']), + 'private message or action': set(['irc_privmsg', 'notify_private']), + 'notice message': set(['irc_notice', 'notify_private']), + 'invite message': set(['irc_invite', 'notify_highlight']), + 'channel topic': set(['irc_topic', ]), + #'away status': set(['away_info', ]), +} + + +UNTAGGED_MESSAGES = { + 'away status': + re.compile(r'^You ((\w+).){2,3}marked as being away', re.UNICODE), + 'dcc chat request': + re.compile(r'^xfer: incoming chat request from (\w+)', re.UNICODE), + 'dcc chat closed': + re.compile(r'^xfer: chat closed with (\w+)', re.UNICODE), + 'dcc get request': + re.compile( + r'^xfer: incoming file from (\w+) [^:]+: ((?:,\w|[^,])+),', + re.UNICODE), + 'dcc get completed': + re.compile(r'^xfer: file ([^\s]+) received from \w+: OK', re.UNICODE), + 'dcc get failed': + re.compile( + r'^xfer: file ([^\s]+) received from \w+: FAILED', + re.UNICODE), + 'dcc send completed': + re.compile(r'^xfer: file ([^\s]+) sent to \w+: OK', re.UNICODE), + 'dcc send failed': + re.compile(r'^xfer: file ([^\s]+) sent to \w+: FAILED', re.UNICODE), +} + + +DISPATCH_TABLE = { + 'away status': 'set_away_status', + 'public message or action': 'notify_public_message_or_action', + 'private message or action': 'notify_private_message_or_action', + 'notice message': 'notify_notice_message', + 'invite message': 'notify_invite_message', + 'channel topic': 'notify_channel_topic', + 'dcc chat request': 'notify_dcc_chat_request', + 'dcc chat closed': 'notify_dcc_chat_closed', + 'dcc get request': 'notify_dcc_get_request', + 'dcc get completed': 'notify_dcc_get_completed', + 'dcc get failed': 'notify_dcc_get_failed', + 'dcc send completed': 'notify_dcc_send_completed', + 'dcc send failed': 'notify_dcc_send_failed', +} + + +STATE = { + 'icon': None, + 'is_away': False +} + + +# ----------------------------------------------------------------------------- +# Notifiers +# ----------------------------------------------------------------------------- +def cb_irc_server_connected(data, signal, signal_data): + '''Notify when connected to IRC server.''' + if weechat.config_get_plugin('show_server') == 'on': + a_notify( + 'Server', + 'Server Connected', + 'Connected to network {0}.'.format(signal_data)) + return weechat.WEECHAT_RC_OK + + +def cb_irc_server_disconnected(data, signal, signal_data): + '''Notify when disconnected to IRC server.''' + if weechat.config_get_plugin('show_server') == 'on': + a_notify( + 'Server', + 'Server Disconnected', + 'Disconnected from network {0}.'.format(signal_data)) + return weechat.WEECHAT_RC_OK + + +def cb_notify_upgrade_ended(data, signal, signal_data): + '''Notify on end of WeeChat upgrade.''' + if weechat.config_get_plugin('show_upgrade_ended') == 'on': + a_notify( + 'WeeChat', + 'WeeChat Upgraded', + 'WeeChat has been upgraded.') + return weechat.WEECHAT_RC_OK + + +def notify_highlighted_message(prefix, message): + '''Notify on highlighted message.''' + if weechat.config_get_plugin("show_highlighted_message") == "on": + a_notify( + 'Highlight', + 'Highlighted Message', + "{0}: {1}".format(prefix, message), + priority=pynotify.URGENCY_CRITICAL) + + +def notify_public_message_or_action(prefix, message, highlighted): + '''Notify on public message or action.''' + if prefix == ' *': + regex = re.compile(r'^(\w+) (.+)$', re.UNICODE) + match = regex.match(message) + if match: + prefix = match.group(1) + message = match.group(2) + notify_public_action_message(prefix, message, highlighted) + else: + if highlighted: + notify_highlighted_message(prefix, message) + elif weechat.config_get_plugin("show_public_message") == "on": + a_notify( + 'Public', + 'Public Message', + '{0}: {1}'.format(prefix, message)) + + +def notify_private_message_or_action(prefix, message, highlighted): + '''Notify on private message or action.''' + regex = re.compile(r'^CTCP_MESSAGE.+?ACTION (.+)$', re.UNICODE) + match = regex.match(message) + if match: + notify_private_action_message(prefix, match.group(1), highlighted) + else: + if prefix == ' *': + regex = re.compile(r'^(\w+) (.+)$', re.UNICODE) + match = regex.match(message) + if match: + prefix = match.group(1) + message = match.group(2) + notify_private_action_message(prefix, message, highlighted) + else: + if highlighted: + notify_highlighted_message(prefix, message) + elif weechat.config_get_plugin("show_private_message") == "on": + a_notify( + 'Private', + 'Private Message', + '{0}: {1}'.format(prefix, message)) + + +def notify_public_action_message(prefix, message, highlighted): + '''Notify on public action message.''' + if highlighted: + notify_highlighted_message(prefix, message) + elif weechat.config_get_plugin("show_public_action_message") == "on": + a_notify( + 'Action', + 'Public Action Message', + '{0}: {1}'.format(prefix, message), + priority=pynotify.URGENCY_NORMAL) + + +def notify_private_action_message(prefix, message, highlighted): + '''Notify on private action message.''' + if highlighted: + notify_highlighted_message(prefix, message) + elif weechat.config_get_plugin("show_private_action_message") == "on": + a_notify( + 'Action', + 'Private Action Message', + '{0}: {1}'.format(prefix, message), + priority=pynotify.URGENCY_NORMAL) + + +def notify_notice_message(prefix, message, highlighted): + '''Notify on notice message.''' + regex = re.compile(r'^([^\s]*) [^:]*: (.+)$', re.UNICODE) + match = regex.match(message) + if match: + prefix = match.group(1) + message = match.group(2) + if highlighted: + notify_highlighted_message(prefix, message) + elif weechat.config_get_plugin("show_notice_message") == "on": + a_notify( + 'Notice', + 'Notice Message', + '{0}: {1}'.format(prefix, message)) + + +def notify_invite_message(prefix, message, highlighted): + '''Notify on channel invitation message.''' + if weechat.config_get_plugin("show_invite_message") == "on": + regex = re.compile( + r'^You have been invited to ([^\s]+) by ([^\s]+)$', re.UNICODE) + match = regex.match(message) + if match: + channel = match.group(1) + nick = match.group(2) + a_notify( + 'Invite', + 'Channel Invitation', + '{0} has invited you to join {1}.'.format(nick, channel)) + + +def notify_channel_topic(prefix, message, highlighted): + '''Notify on channel topic change.''' + if weechat.config_get_plugin("show_channel_topic") == "on": + regex = re.compile( + r'^\w+ has (?:changed|unset) topic for ([^\s]+)' + + '(?:(?: from "(?:(?:"\w|[^"])+)")? to "((?:"\w|[^"])+)")?', + re.UNICODE) + match = regex.match(message) + if match: + channel = match.group(1) + topic = match.group(2) or '' + a_notify( + 'Channel', + 'Channel Topic', + "{0}: {1}".format(channel, topic)) + + +def notify_dcc_chat_request(match): + '''Notify on DCC chat request.''' + if weechat.config_get_plugin("show_dcc") == "on": + nick = match.group(1) + a_notify( + 'DCC', + 'Direct Chat Request', + '{0} wants to chat directly.'.format(nick)) + + +def notify_dcc_chat_closed(match): + '''Notify on DCC chat termination.''' + if weechat.config_get_plugin("show_dcc") == "on": + nick = match.group(1) + a_notify( + 'DCC', + 'Direct Chat Ended', + 'Direct chat with {0} has ended.'.format(nick)) + + +def notify_dcc_get_request(match): + 'Notify on DCC get request.' + if weechat.config_get_plugin("show_dcc") == "on": + nick = match.group(1) + file_name = match.group(2) + a_notify( + 'DCC', + 'File Transfer Request', + '{0} wants to send you {1}.'.format(nick, file_name)) + + +def notify_dcc_get_completed(match): + 'Notify on DCC get completion.' + if weechat.config_get_plugin("show_dcc") == "on": + file_name = match.group(1) + a_notify('DCC', 'Download Complete', file_name) + + +def notify_dcc_get_failed(match): + 'Notify on DCC get failure.' + if weechat.config_get_plugin("show_dcc") == "on": + file_name = match.group(1) + a_notify('DCC', 'Download Failed', file_name) + + +def notify_dcc_send_completed(match): + 'Notify on DCC send completion.' + if weechat.config_get_plugin("show_dcc") == "on": + file_name = match.group(1) + a_notify('DCC', 'Upload Complete', file_name) + + +def notify_dcc_send_failed(match): + 'Notify on DCC send failure.' + if weechat.config_get_plugin("show_dcc") == "on": + file_name = match.group(1) + a_notify('DCC', 'Upload Failed', file_name) + + +# ----------------------------------------------------------------------------- +# Utility +# ----------------------------------------------------------------------------- +def set_away_status(match): + status = match.group(1) + if status == 'been ': + STATE['is_away'] = True + if status == 'longer ': + STATE['is_away'] = False + + +def cb_process_message( + data, + wbuffer, + date, + tags, + displayed, + highlight, + prefix, + message +): + '''Delegates incoming messages to appropriate handlers.''' + tags = set(tags.split(',')) + functions = globals() + is_public_message = tags.issuperset( + TAGGED_MESSAGES['public message or action']) + buffer_name = weechat.buffer_get_string(wbuffer, 'name') + dcc_buffer_regex = re.compile(r'^irc_dcc\.', re.UNICODE) + dcc_buffer_match = dcc_buffer_regex.match(buffer_name) + highlighted = False + if int(highlight): + highlighted = True + # Private DCC message identifies itself as public. + if is_public_message and dcc_buffer_match: + notify_private_message_or_action(prefix, message, highlighted) + return weechat.WEECHAT_RC_OK + # Pass identified, untagged message to its designated function. + for key, value in UNTAGGED_MESSAGES.items(): + match = value.match(message) + if match: + functions[DISPATCH_TABLE[key]](match) + return weechat.WEECHAT_RC_OK + # Pass identified, tagged message to its designated function. + for key, value in TAGGED_MESSAGES.items(): + if tags.issuperset(value): + functions[DISPATCH_TABLE[key]](prefix, message, highlighted) + return weechat.WEECHAT_RC_OK + return weechat.WEECHAT_RC_OK + + +def a_notify(notification, title, description, priority=pynotify.URGENCY_LOW): + '''Returns whether notifications should be sticky.''' + is_away = STATE['is_away'] + icon = STATE['icon'] + time_out = 5000 + if weechat.config_get_plugin('sticky') == 'on': + time_out = 0 + if weechat.config_get_plugin('sticky_away') == 'on' and is_away: + time_out = 0 + try: + pynotify.init("wee-notifier") + wn = pynotify.Notification(title, description, icon) + wn.set_urgency(priority) + wn.set_timeout(time_out) + wn.show() + except Exception as error: + weechat.prnt('', 'anotify: {0}'.format(error)) + + +# ----------------------------------------------------------------------------- +# Main +# ----------------------------------------------------------------------------- +def main(): + '''Sets up WeeChat notifications.''' + # Initialize options. + for option, value in SETTINGS.items(): + if not weechat.config_is_set_plugin(option): + weechat.config_set_plugin(option, value) + # Initialize. + name = "WeeChat" + icon = "/usr/share/pixmaps/weechat.xpm" + notifications = [ + 'Public', + 'Private', + 'Action', + 'Notice', + 'Invite', + 'Highlight', + 'Server', + 'Channel', + 'DCC', + 'WeeChat' + ] + STATE['icon'] = icon + # Register hooks. + weechat.hook_signal( + 'irc_server_connected', + 'cb_irc_server_connected', + '') + weechat.hook_signal( + 'irc_server_disconnected', + 'cb_irc_server_disconnected', + '') + weechat.hook_signal('upgrade_ended', 'cb_upgrade_ended', '') + weechat.hook_print('', '', '', 1, 'cb_process_message', '') + + +if __name__ == '__main__' and IMPORT_OK and weechat.register( + SCRIPT_NAME, + SCRIPT_AUTHOR, + SCRIPT_VERSION, + SCRIPT_LICENSE, + SCRIPT_DESC, + '', + '' +): + main() diff --git a/weechat/.weechat/python/autoload/anotify.py b/weechat/.weechat/python/autoload/anotify.py new file mode 120000 index 0000000..1517fef --- /dev/null +++ b/weechat/.weechat/python/autoload/anotify.py @@ -0,0 +1 @@ +../anotify.py \ No newline at end of file diff --git a/weechat/.weechat/python/grep.pyc b/weechat/.weechat/python/grep.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9f32eff15e408259a651050e17d6ef09d823d641 GIT binary patch literal 45510 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 ZdMg*3%Xhzso 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 XuKJ&QeC+wnz0|^!ehW1=uls)h4gU0- literal 0 HcmV?d00001 diff --git a/weechat/.weechat/weechat.conf b/weechat/.weechat/weechat.conf index f79b424..44dd173 100644 --- a/weechat/.weechat/weechat.conf +++ b/weechat/.weechat/weechat.conf @@ -65,7 +65,7 @@ hotlist_names_count = 3 hotlist_names_length = 0 hotlist_names_level = 12 hotlist_names_merged_buffers = off -hotlist_prefix = "H: " +hotlist_prefix = "" hotlist_remove = merged hotlist_short_names = on hotlist_sort = group_time_asc @@ -125,8 +125,8 @@ scroll_amount = 3 scroll_bottom_after_switch = off scroll_page_percent = 100 search_text_not_found_alert = on -separator_horizontal = "-" -separator_vertical = "" +separator_horizontal = "─" +separator_vertical = "│" tab_width = 1 time_format = "%a, %d %b %Y %T" window_auto_zoom = off @@ -356,6 +356,7 @@ default.current = on [notify] irc.darwin = message irc.freenode.##csharp = highlight +irc.freenode.#litepub = highlight irc.freenode.#vim = highlight irc.hashbang = message irc.sdf = message