Compare commits

..

No commits in common. "838ba4a5cdf984bbe19c609671fda2a948d412b1" and "8698adae258a673b192ce89af954585a266a8d56" have entirely different histories.

73 changed files with 1720 additions and 1153 deletions

3
.gitmodules vendored
View File

@ -22,3 +22,6 @@
[submodule "vim/.vim/bundle/vim-airline"] [submodule "vim/.vim/bundle/vim-airline"]
path = vim/.vim/pack/plugins/start/vim-airline path = vim/.vim/pack/plugins/start/vim-airline
url = https://github.com/vim-airline/vim-airline url = https://github.com/vim-airline/vim-airline
[submodule "pb"]
path = pb
url = https://tildegit.org/tomasino/pb

View File

@ -16,7 +16,7 @@ endif
install: install:
@make $(UNAME) @make $(UNAME)
Linux: bash bin byobu fish git gnupg mutt nvim vim weechat Linux: bash bin byobu fish git gnupg mutt nvim pb vim weechat
Windows: bash git vim Windows: bash git vim
Other: bash git vim Other: bash git vim
@ -32,6 +32,7 @@ clean:
stow -t "$$HOME" -D nvim stow -t "$$HOME" -D nvim
stow -t "$$HOME" -D vim stow -t "$$HOME" -D vim
stow -t "$$HOME" -D weechat stow -t "$$HOME" -D weechat
$(MAKE) -C pb PREFIX=~/.local uninstall
bash: bash:
@printf "$(YELLOW)--- bash -----------------------------------------------\n$(RESET)" @printf "$(YELLOW)--- bash -----------------------------------------------\n$(RESET)"
@ -68,6 +69,11 @@ nvim:
@printf "$(YELLOW)--- nvim -----------------------------------------------\n$(RESET)" @printf "$(YELLOW)--- nvim -----------------------------------------------\n$(RESET)"
stow -t "$$HOME" nvim stow -t "$$HOME" nvim
pb:
@printf "$(YELLOW)--- pb -------------------------------------------------\n$(RESET)"
git submodule update --remote --init -- pb
$(MAKE) -C pb PREFIX=~/.local install
vim: vim:
@printf "$(YELLOW)--- vim ------------------------------------------------\n$(RESET)" @printf "$(YELLOW)--- vim ------------------------------------------------\n$(RESET)"
mkdir -p ~/.vim/{undodir,swap,backup} mkdir -p ~/.vim/{undodir,swap,backup}
@ -83,4 +89,4 @@ nuke:
@printf "$(RED)--- nuking existing files ------------------------------\n$(RESET)" @printf "$(RED)--- nuking existing files ------------------------------\n$(RESET)"
rm -rf ~/.byobu ~/.config/fish ~/.fzf ~/.bash* rm -rf ~/.byobu ~/.config/fish ~/.fzf ~/.bash*
.PHONY: bash fish git vim nvim mutt byobu weechat gnupg bin clean install nuke Windows Linux Other .PHONY: bash fish git pb vim nvim mutt byobu weechat gnupg bin clean install nuke Windows Linux Other

View File

@ -4,14 +4,8 @@ this repo is my collection of dotfiles.
it includes configs for my most frequently used tools. it includes configs for my most frequently used tools.
## steps to install on debian and derivatives ### steps to install on debian and derivatives
1. `apt install make stow fish git byobu vim ripgrep fzf` 1. `apt install make stow fish git byobu vim ripgrep fzf`
1. `make nuke install` - note that nuke removes existing files in your $HOME 1. `make nuke install` - note that nuke removes existing files in your $HOME
## update vim packages
1. `make vim`
1. `git commit -am 'update vim submodules'`
1. profit

View File

@ -3,5 +3,3 @@
export PATH="$HOME/.cargo/bin:$PATH" export PATH="$HOME/.cargo/bin:$PATH"
if [ -e /home/ben/.nix-profile/etc/profile.d/nix.sh ]; then . /home/ben/.nix-profile/etc/profile.d/nix.sh; fi # added by Nix installer if [ -e /home/ben/.nix-profile/etc/profile.d/nix.sh ]; then . /home/ben/.nix-profile/etc/profile.d/nix.sh; fi # added by Nix installer
. "$HOME/.cargo/env"

View File

@ -132,6 +132,13 @@ shopt -s autocd
# MY STUFF!! # MY STUFF!!
suicidePostCommand() {
if [ $? -ne 0 ]; then
echo "$(tput setaf 3)====$(tput setaf 1)$(tput bold)$(echo -n $(shuf -n1 ~/insults.txt))$(tput sgr0)$(tput setaf 3)====$(tput sgr0)"
fi
}
PROMPT_COMMAND=suicidePostCommand
[ -r /home/ben/.byobu/prompt ] && . /home/ben/.byobu/prompt #byobu-prompt# [ -r /home/ben/.byobu/prompt ] && . /home/ben/.byobu/prompt #byobu-prompt#
user_paths=(~/bin /usr/local/go/bin ~/.yarn/bin $GOPATH/bin ~/.local/bin ~/.cargo/bin /snap/bin ~/.fzf/bin) user_paths=(~/bin /usr/local/go/bin ~/.yarn/bin $GOPATH/bin ~/.local/bin ~/.cargo/bin /snap/bin ~/.fzf/bin)

View File

@ -1,18 +0,0 @@
#!/bin/bash
# covidate version 2024.01
# Copyright (C) 2024 anelki
#
# this is free software licensed under the anelki public license
#
# See the README and LICENSE files for further information.
#
# with thanks/apologies to jwz: https://www.jwz.org/blog/2020/08/the-date-is-now-tuesday-march-178th-2020/
# shows the date as the number of days since 2020-03-01
# and earlier version included 2020-03-11 in the calc (so 296 total days).
# corrected, as jwz pointed out: https://twitter.com/jwz/status/1366475255976398848
LC_TIME=C.UTF-8
echo -e "\n\a Today is...$(date +"%A"), March $(expr 1401 + $(date +"%j")), 2020 at $(date +"%T") \n Let's make it a \033[1m✨great✨\033[0m day! \n\n This year will be Different...in a good way I'm sure...\n"
exit 0

View File

@ -1,6 +0,0 @@
#!/bin/sh
wp --path=/var/www/tcpinball.org post meta get $1 _publicize_shares --format=json \
| jq -r '[.[] | .message?]' \
| wp --path=/var/www/tcpinball.org post meta add $1 mf2_syndication --format=json

View File

@ -1,6 +0,0 @@
#!/bin/sh
wp --path=/var/www/benharri.org post meta get $1 syndication_log --format=json \
| jq -r '[.[] | .data.url?]' \
| wp --path=/var/www/benharri.org post meta add $1 mf2_syndication --format=json

View File

@ -1,75 +0,0 @@
#!/bin/sh
# get players + names
playersjson=$(curl -s "https://app.matchplay.events/api/tournaments/$1?includePlayers=1" \
-H "Content-Type: application/json" \
-H "Accept: application/json")
# pull finals id from main tourney
finalsId=$(printf %s "$playersjson" | jq -r ".data.linkedTournamentId")
# get standings for finals
standingsids=$(curl -s "https://app.matchplay.events/api/tournaments/$finalsId/standings" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
| jq -r '.[] | .playerId')
# look up ifpa tourneys in TC for the date from matchplay
d=$(printf %s "$playersjson" | jq -r ".data.startUtc")
shortdate=$(date --date "$d" +"%B %-d")
ifpa=$(curl -s 'https://api.ifpapinball.com/v1/calendar/search?api_key=GET_YOUR_OWN&address=Traverse%20City&m=3')
ifpatourney=$(printf %s "$ifpa" | jq -r ".calendar[] | select(.start_date == \"$(date --date "$d" +"%F")\").tournament_id")
# set author, excerpt, and categories based on day-of-week
author=1
excerpt="Results for $shortdate tourney"
case $(date --date "$d" +"%a") in
Thu)
categories="58,54"
;;
Mon)
categories="58,52"
;;
Sun)
categories="58,51"
author=8
excerpt="Results for the $shortdate Belles tourney"
;;
*)
categories="4"
;;
esac
# pull names from original tournament json by ids from standings
# gotta be a better way to do this
player1=$(printf %s "$playersjson" | jq -r ".data.players | .[] | select(.playerId == $(printf %s "$standingsids" | head -n1 | tail -n1)).name")
player2=$(printf %s "$playersjson" | jq -r ".data.players | .[] | select(.playerId == $(printf %s "$standingsids" | head -n2 | tail -n1)).name")
player3=$(printf %s "$playersjson" | jq -r ".data.players | .[] | select(.playerId == $(printf %s "$standingsids" | head -n3 | tail -n1)).name")
player4=$(printf %s "$playersjson" | jq -r ".data.players | .[] | select(.playerId == $(printf %s "$standingsids" | head -n4 | tail -n1)).name")
# create the post draft and save the id
postid=$(sudo -Hu www-data wp --path=/var/www/tcpinball.org \
post create \
--post_author="$author" \
--post_category="$categories" \
--post_title="$shortdate Results" \
--post_excerpt="$excerpt" \
--post_status=draft \
--porcelain \
--post_content="<!-- wp:paragraph -->
<p>Format: Group Match Play</p>
<!-- /wp:paragraph -->
<!-- wp:table {\"hasFixedLayout\":false} -->
<figure class=\"wp-block-table\"><table><thead><tr><th>Place</th><th>Player</th></tr></thead><tbody><tr><td>1st</td><td>$player1</td></tr><tr><td>2nd</td><td>$player2</td></tr><tr><td>3rd</td><td>$player3</td></tr><tr><td>4th</td><td>$player4</td></tr></tbody></table></figure>
<!-- /wp:table -->
<!-- wp:paragraph -->
<p>See the full results on <a href=\"https://app.matchplay.events/tournaments/$1\">Match Play</a> - <a href=\"https://app.matchplay.events/tournaments/$finalsId\">Finals</a> (<a href=\"https://www.ifpapinball.com/tournaments/view.php?t=$ifpatourney\">IFPA</a>).</p>
<!-- /wp:paragraph -->
")
# drop a link to the editor so i can attach the featured pic before publishing
printf "https://tcpinball.org/wp-admin/post.php?action=edit&post=%s\n" "$postid"

View File

@ -1,9 +0,0 @@
#!/bin/sh
sudo certbot certonly \
--dns-rfc2136 \
--dns-rfc2136-credentials /root/.secrets/rfc2136.ini \
--server https://acme-v02.api.letsencrypt.org/directory \
--preferred-challenge dns-01 \
--cert-name $1 \
-d $1 \
-d \*.$1

View File

@ -1,3 +0,0 @@
# fnm
set PATH "/home/ben/.local/share/fnm" $PATH
fnm env | source

View File

@ -1,2 +0,0 @@
source "$HOME/.cargo/env.fish"

View File

@ -0,0 +1,3 @@
function anonradio
nvlc http://anonradio.net:8000/anonradio
end

View File

@ -1,3 +0,0 @@
function ddg
lynx "https://lite.duckduckgo.com/lite/?q=$(string escape --style=url $argv)"
end

View File

@ -0,0 +1,6 @@
function fish_greeting
if test -f /var/run/motd
/bin/cat /var/run/motd
end
end

View File

@ -1,3 +1,4 @@
function fish_user_key_bindings function fish_user_key_bindings
fzf_key_bindings fzf_key_bindings
bind \co 'lfcd; commandline -f repaint'
end end

View File

@ -0,0 +1,161 @@
# ____ ____
# / __/___ / __/
# / /_/_ / / /_
# / __/ / /_/ __/
# /_/ /___/_/ key-bindings.fish
#
# - $FZF_TMUX_OPTS
# - $FZF_CTRL_T_COMMAND
# - $FZF_CTRL_T_OPTS
# - $FZF_CTRL_R_OPTS
# - $FZF_ALT_C_COMMAND
# - $FZF_ALT_C_OPTS
# Key bindings
# ------------
function fzf_key_bindings
# Store current token in $dir as root for the 'find' command
function fzf-file-widget -d "List files and folders"
set -l commandline (__fzf_parse_commandline)
set -l dir $commandline[1]
set -l fzf_query $commandline[2]
# "-path \$dir'*/\\.*'" matches hidden files/folders inside $dir but not
# $dir itself, even if hidden.
test -n "$FZF_CTRL_T_COMMAND"; or set -l FZF_CTRL_T_COMMAND "
command find -L \$dir -mindepth 1 \\( -path \$dir'*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' \\) -prune \
-o -type f -print \
-o -type d -print \
-o -type l -print 2> /dev/null | sed 's@^\./@@'"
test -n "$FZF_TMUX_HEIGHT"; or set FZF_TMUX_HEIGHT 40%
begin
set -lx FZF_DEFAULT_OPTS "--height $FZF_TMUX_HEIGHT --reverse $FZF_DEFAULT_OPTS $FZF_CTRL_T_OPTS"
eval "$FZF_CTRL_T_COMMAND | "(__fzfcmd)' -m --query "'$fzf_query'"' | while read -l r; set result $result $r; end
end
if [ -z "$result" ]
commandline -f repaint
return
else
# Remove last token from commandline.
commandline -t ""
end
for i in $result
commandline -it -- (string escape $i)
commandline -it -- ' '
end
commandline -f repaint
end
function fzf-history-widget -d "Show command history"
test -n "$FZF_TMUX_HEIGHT"; or set FZF_TMUX_HEIGHT 40%
begin
set -lx FZF_DEFAULT_OPTS "--height $FZF_TMUX_HEIGHT $FZF_DEFAULT_OPTS --tiebreak=index --bind=ctrl-r:toggle-sort $FZF_CTRL_R_OPTS +m"
set -l FISH_MAJOR (echo $version | cut -f1 -d.)
set -l FISH_MINOR (echo $version | cut -f2 -d.)
# history's -z flag is needed for multi-line support.
# history's -z flag was added in fish 2.4.0, so don't use it for versions
# before 2.4.0.
if [ "$FISH_MAJOR" -gt 2 -o \( "$FISH_MAJOR" -eq 2 -a "$FISH_MINOR" -ge 4 \) ];
history -z | eval (__fzfcmd) --read0 --print0 -q '(commandline)' | read -lz result
and commandline -- $result
else
history | eval (__fzfcmd) -q '(commandline)' | read -l result
and commandline -- $result
end
end
commandline -f repaint
end
function fzf-cd-widget -d "Change directory"
set -l commandline (__fzf_parse_commandline)
set -l dir $commandline[1]
set -l fzf_query $commandline[2]
test -n "$FZF_ALT_C_COMMAND"; or set -l FZF_ALT_C_COMMAND "
command find -L \$dir -mindepth 1 \\( -path \$dir'*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' \\) -prune \
-o -type d -print 2> /dev/null | sed 's@^\./@@'"
test -n "$FZF_TMUX_HEIGHT"; or set FZF_TMUX_HEIGHT 40%
begin
set -lx FZF_DEFAULT_OPTS "--height $FZF_TMUX_HEIGHT --reverse $FZF_DEFAULT_OPTS $FZF_ALT_C_OPTS"
eval "$FZF_ALT_C_COMMAND | "(__fzfcmd)' +m --query "'$fzf_query'"' | read -l result
if [ -n "$result" ]
cd $result
# Remove last token from commandline.
commandline -t ""
end
end
commandline -f repaint
end
function __fzfcmd
test -n "$FZF_TMUX"; or set FZF_TMUX 0
test -n "$FZF_TMUX_HEIGHT"; or set FZF_TMUX_HEIGHT 40%
if [ -n "$FZF_TMUX_OPTS" ]
echo "fzf-tmux $FZF_TMUX_OPTS -- "
else if [ $FZF_TMUX -eq 1 ]
echo "fzf-tmux -d$FZF_TMUX_HEIGHT -- "
else
echo "fzf"
end
end
bind \ct fzf-file-widget
bind \cr fzf-history-widget
bind \ec fzf-cd-widget
if bind -M insert > /dev/null 2>&1
bind -M insert \ct fzf-file-widget
bind -M insert \cr fzf-history-widget
bind -M insert \ec fzf-cd-widget
end
function __fzf_parse_commandline -d 'Parse the current command line token and return split of existing filepath and rest of token'
# eval is used to do shell expansion on paths
set -l commandline (eval "printf '%s' "(commandline -t))
if [ -z $commandline ]
# Default to current directory with no --query
set dir '.'
set fzf_query ''
else
set dir (__fzf_get_dir $commandline)
if [ "$dir" = "." -a (string sub -l 1 -- $commandline) != '.' ]
# if $dir is "." but commandline is not a relative path, this means no file path found
set fzf_query $commandline
else
# Also remove trailing slash after dir, to "split" input properly
set fzf_query (string replace -r "^$dir/?" -- '' "$commandline")
end
end
echo $dir
echo $fzf_query
end
function __fzf_get_dir -d 'Find the longest existing filepath from input string'
set dir $argv
# Strip all trailing slashes. Ignore if $dir is root dir (/)
if [ (string length -- $dir) -gt 1 ]
set dir (string replace -r '/*$' -- '' $dir)
end
# Iteratively check if dir exists and strip tail end of path
while [ ! -d "$dir" ]
# If path is absolute, this can keep going until ends up at /
# If path is relative, this can keep going until entire input is consumed, dirname returns "."
set dir (dirname -- "$dir")
end
echo $dir
end
end

View File

@ -0,0 +1,6 @@
function git_branch
if is_git
echo (git rev-parse --abbrev-ref HEAD ^/dev/null)
end
end

View File

@ -0,0 +1,3 @@
function insult
shuf -n1 ~/insults.txt
end

View File

@ -0,0 +1,4 @@
function is_git
git rev-parse --verify HEAD >/dev/null 2>&1
end

View File

@ -0,0 +1,5 @@
function is_git_ahead
set -l revs (git rev-list origin/(git_branch)..HEAD ^/dev/null)
[ "$revs" != "" ]
end

View File

@ -0,0 +1,13 @@
function is_git_dirty
# based on https://github.com/git/git/blob/master/git-sh-setup.sh#L210
is_git; or return 1
if git diff-files --quiet --ignore-submodules; and git diff-index --cached --quiet --ignore-submodules HEAD --
return 1
else
# we're dirty
return 0
end
end

View File

@ -0,0 +1,4 @@
function ls
command ls --color=auto $argv
end

View File

@ -1,3 +1,4 @@
# Defined in /tmp/fish.Fo1L3P/pubtr.fish @ line 1
function pubtr function pubtr
mtr -wrc4 $argv[1] > ~/pub/mtr/"$argv[1]".txt mtr -wrc4 $argv[1] > ~/pub/mtr/"$argv[1]".txt
echo https://bhh.sh/pub/mtr/$argv[1].txt echo https://bhh.sh/pub/mtr/$argv[1].txt

View File

@ -0,0 +1,3 @@
function rm
command rm -I $argv
end

View File

@ -0,0 +1,3 @@
function ssys
sudo systemctl $args
end

View File

@ -0,0 +1,4 @@
function tag
shuf -n 1 ~/taglines.txt
end

View File

@ -0,0 +1,4 @@
function tildefig
curl "https://tilde.team/~ben/api/?font=slant&text="$argv
end

View File

@ -0,0 +1,3 @@
function tilderadio
nvlc https://radio.tildeverse.org/radio/8000/radio.ogg
end

View File

@ -0,0 +1,7 @@
function vz
set file (fzf --height 40% --reverse)
if test -f $file
vim $file
end
end

View File

@ -0,0 +1,11 @@
function wildcard-cert
sudo certbot certonly \
--dns-rfc2136 \
--dns-rfc2136-credentials /root/.secrets/rfc2136.ini \
--server https://acme-v02.api.letsencrypt.org/directory \
--preferred-challenge dns-01 \
--cert-name $argv[1] \
-d $argv[1] \
-d \*.$argv[1]
end

1
pb 160000

@ -0,0 +1 @@
Subproject commit a6cea6f11a60e7f1c7963c9ecad79d07f64ce4b2

@ -1 +1 @@
Subproject commit 4d35d3b2bc6794666353dcc241b2680bd560416f Subproject commit 256d81e391a22eeb53791ff62ce65f870418fa71

@ -1 +1 @@
Subproject commit 81eca994860645acbb58442285cdd70df5c71d2b Subproject commit ff7352e4bff02eb600a136b6fd741404f3195371

@ -1 +1 @@
Subproject commit c4b8f52cbb7142ec239494e5a2c4a512f92c4d07 Subproject commit f67e3e67ea516755005e6cccb178bc8439c6d402

@ -1 +1 @@
Subproject commit d4877e54cef67f5af4f950935b1ade19ed6b7370 Subproject commit e7bf502a6ae492f42a91d231864e25630286319b

@ -1 +1 @@
Subproject commit e58cb0df716d3c88605ae49db5c4741db8b48aa9 Subproject commit a715d602745cdb1c35cfe73c50d3dd266eb5a349

View File

@ -6,50 +6,49 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
config_version = 2
[cmd] [cmd]
alis = "/msg alis list $*" alis = "/msg alis list $*"
bc = "/exec -sh -o echo "$*" | bc" bc = "/exec -sh -o echo "$*" | bc"
beep = "print -beep" BEEP = "print -beep"
bye = "quit" BYE = "quit"
c = "buffer close" C = "buffer close"
chat = "dcc chat" CHAT = "dcc chat"
cl = "buffer clear" CL = "buffer clear"
close = "buffer close" CLOSE = "buffer close"
cso = "cs op $channel" cso = "cs op $channel"
emoji = "exec -o python3 -c "print(__import__(\"emoji\").emojize(\"$*\", use_aliases=True))"" emoji = "exec -o python3 -c "print(__import__(\"emoji\").emojize(\"$*\", use_aliases=True))""
factor = "/exec -sh -o factor $1 | cut -d" " -f 2,3 | tr " " ","" factor = "/exec -sh -o factor $1 | cut -d" " -f 2,3 | tr " " ",""
ig = "ignore" IG = "ignore"
j = "join" J = "join"
k = "kick" K = "kick"
kb = "kickban" KB = "kickban"
leave = "part" LEAVE = "part"
m = "msg" lenny = "/msg $channel ( ͡° ͜ʖ ͡°)"
msgbuf = "command -buffer $1 * /input send $2-" M = "msg"
mub = "unban *" MSGBUF = "command -buffer $1 * /input send $2-"
n = "names" MUB = "unban *"
N = "names"
ni = "/ns info =$1;/buffer server.libera" ni = "/ns info =$1;/buffer server.libera"
pbcmd = "/exec -o -sh $* | pb" pbcmd = "/exec -o -sh $* | pb"
py = "/exec -o python3 -c "print($*)"" py = "/exec -o python3 -c "print($*)""
q = "query" Q = "query"
rainbow = "/exec -o toilet --irc --gay -f term -- $*" rainbow = "/exec -o toilet --irc --gay -f term -- $*"
redraw = "window refresh" REDRAW = "window refresh"
say = "msg *" SAY = "msg *"
slap = "me slaps $1 around a bit with a large trout" SLAP = "me slaps $1 around a bit with a large trout"
t = "topic" T = "topic"
ub = "unban" UB = "unban"
umode = "mode $nick" UMODE = "mode $nick"
unscramble = "/exec -sh -o curl -s "http://anagramica.com/best/$*" | jq -r '.best[0]'" unscramble = "/exec -sh -o curl -s "http://anagramica.com/best/$*" | jq -r '.best[0]'"
v = "command core version" V = "command core version"
w = "who" W = "who"
wc = "window merge" WC = "window merge"
wi = "whois" WI = "whois"
wii = "whois $1 $1" WII = "whois $1 $1"
ww = "whowas" WW = "whowas"
[completion] [completion]
msgbuf = "%(buffers_plugins_names)" MSGBUF = "%(buffers_plugins_names)"

View File

@ -6,7 +6,7 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
[sorting] [sorting]

View File

@ -6,7 +6,7 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
[look] [look]

View File

@ -6,7 +6,7 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
[look] [look]

View File

@ -6,7 +6,7 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
[default] [default]

View File

@ -6,7 +6,7 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
[look] [look]

View File

@ -6,7 +6,7 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
[command] [command]

View File

@ -6,7 +6,7 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
[file] [file]

View File

@ -6,7 +6,7 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
[look] [look]
@ -20,7 +20,7 @@ scroll_horizontal = 10
show_plugins_desc = off show_plugins_desc = off
sort = "~name" sort = "~name"
unmarked_string = " " unmarked_string = " "
use_color_value = on use_color_value = off
use_keys = on use_keys = on
use_mute = off use_mute = off
@ -32,14 +32,10 @@ option1 = ""
option2 = "${marked} ${name} ${type} ${value2}${newline} ${empty_name} ${_default_value}${color:darkgray} -- ${min}..${max}${newline} ${empty_name} ${description}" option2 = "${marked} ${name} ${type} ${value2}${newline} ${empty_name} ${_default_value}${color:darkgray} -- ${min}..${max}${newline} ${empty_name} ${description}"
[color] [color]
allowed_values = default
allowed_values_selected = white
color_name = 246
color_name_selected = default
default_value = default default_value = default
default_value_selected = white default_value_selected = white
description = 242 description = default
description_selected = default description_selected = white
file = default file = default
file_changed = brown file_changed = brown
file_changed_selected = yellow file_changed_selected = yellow
@ -51,10 +47,10 @@ help_quotes = darkgray
help_values = default help_values = default
index = cyan index = cyan
index_selected = lightcyan index_selected = lightcyan
line_marked_bg1 = 17 line_marked_bg1 = default
line_marked_bg2 = 17 line_marked_bg2 = default
line_selected_bg1 = 24 line_selected_bg1 = blue
line_selected_bg2 = 24 line_selected_bg2 = red
marked = brown marked = brown
marked_selected = yellow marked_selected = yellow
max = default max = default
@ -62,7 +58,7 @@ max_selected = white
min = default min = default
min_selected = white min_selected = white
name = default name = default
name_changed = 185 name_changed = brown
name_changed_selected = yellow name_changed_selected = yellow
name_selected = white name_selected = white
option = default option = default
@ -88,13 +84,13 @@ title_current_option = lightcyan
title_filter = yellow title_filter = yellow
title_marked_options = lightgreen title_marked_options = lightgreen
title_sort = white title_sort = white
type = 138 type = green
type_selected = 216 type_selected = lightgreen
unmarked = default unmarked = default
unmarked_selected = white unmarked_selected = white
value = 38 value = cyan
value_changed = 185 value_changed = brown
value_changed_selected = yellow value_changed_selected = yellow
value_selected = 159 value_selected = lightcyan
value_undef = magenta value_undef = magenta
value_undef_selected = lightmagenta value_undef_selected = lightmagenta

File diff suppressed because it is too large Load Diff

View File

@ -6,7 +6,7 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
[look] [look]
@ -14,8 +14,8 @@ backlog = 2000
backlog_conditions = "" backlog_conditions = ""
[color] [color]
backlog_end = 246 backlog_end = default
backlog_line = 246 backlog_line = default
[file] [file]
auto_log = on auto_log = on
@ -23,20 +23,17 @@ color_lines = off
flush_delay = 120 flush_delay = 120
fsync = off fsync = off
info_lines = off info_lines = off
log_conditions = ""
mask = "$plugin.$name.weechatlog" mask = "$plugin.$name.weechatlog"
name_lower_case = on name_lower_case = on
nick_prefix = "" nick_prefix = ""
nick_suffix = "" nick_suffix = ""
path = "%h/logs/" path = "%h/logs/"
replacement_char = "_" replacement_char = "_"
rotation_compression_level = 20
rotation_compression_type = none
rotation_size_max = "0"
time_format = "%Y-%m-%d %H:%M:%S" time_format = "%Y-%m-%d %H:%M:%S"
[level] [level]
core.weechat = 1 core.weechat = 0
irc = 3 irc = 3
irc.server.pisslocal = 0
[mask] [mask]

View File

@ -6,7 +6,7 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
[look] [look]

View File

@ -19,7 +19,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# history: # history:
# 4.0.1: fix display of multiline messages
# 4.0: add compatibility with XDG directories (WeeChat >= 3.2) # 4.0: add compatibility with XDG directories (WeeChat >= 3.2)
# 3.9: add compatibility with new weechat_print modifier data (WeeChat >= 2.9) # 3.9: add compatibility with new weechat_print modifier data (WeeChat >= 2.9)
# 3.8: new option custom_action_text (https://github.com/weechat/scripts/issues/313) (idea by 3v1n0) # 3.8: new option custom_action_text (https://github.com/weechat/scripts/issues/313) (idea by 3v1n0)
@ -89,7 +88,7 @@
use strict; use strict;
my $PRGNAME = "colorize_lines"; my $PRGNAME = "colorize_lines";
my $VERSION = "4.0.1"; my $VERSION = "4.0";
my $AUTHOR = "Nils Görs <weechatter\@arcor.de>"; my $AUTHOR = "Nils Görs <weechatter\@arcor.de>";
my $LICENCE = "GPL3"; my $LICENCE = "GPL3";
my $DESCR = "Colorize users' text in chat area with their nick color, including highlights"; my $DESCR = "Colorize users' text in chat area with their nick color, including highlights";
@ -173,7 +172,7 @@ sub colorize_cb
my $servername = weechat::buffer_get_string($buf_ptr, "localvar_server"); my $servername = weechat::buffer_get_string($buf_ptr, "localvar_server");
# find stuff between \t # find stuff between \t
$string =~ m/^([^\t]*)\t(.*)/s; $string =~ m/^([^\t]*)\t(.*)/;
my $left = $1; my $left = $1;
my $right = $2; my $right = $2;

View File

@ -6,7 +6,7 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
[var] [var]
@ -61,9 +61,8 @@ python.autosavekey.add = "on"
python.autosavekey.mute = "off" python.autosavekey.mute = "off"
python.autosavekey.secure = "on" python.autosavekey.secure = "on"
python.buffer_autoclose.age_limit = "30" python.buffer_autoclose.age_limit = "30"
python.buffer_autoclose.ignore = "bitlbee.marley" python.buffer_autoclose.ignore = "bitlbee.maddie"
python.buffer_autoclose.interval = "1" python.buffer_autoclose.interval = "1"
python.buffer_autoclose.prefer = ""
python.check_license = "off" 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;;nft=>https://youtu.be/YQ_xWvX1n9g" 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.auto_jump = "off"
@ -76,7 +75,6 @@ python.go.color_number = "yellow,magenta"
python.go.color_number_selected = "yellow,red" python.go.color_number_selected = "yellow,red"
python.go.fuzzy_search = "on" python.go.fuzzy_search = "on"
python.go.message = "Go to: " python.go.message = "Go to: "
python.go.min_chars = "0"
python.go.short_name = "off" python.go.short_name = "off"
python.go.short_name_server = "off" python.go.short_name_server = "off"
python.go.sort = "number,beginning" python.go.sort = "number,beginning"
@ -98,7 +96,7 @@ python.listbuffer.users_min_width = "8"
python.screen_away.away_suffix = "" python.screen_away.away_suffix = ""
python.screen_away.command_on_attach = "" python.screen_away.command_on_attach = ""
python.screen_away.command_on_detach = "" python.screen_away.command_on_detach = ""
python.screen_away.ignore = "thermite" python.screen_away.ignore = ""
python.screen_away.ignore_relays = "on" python.screen_away.ignore_relays = "on"
python.screen_away.interval = "5" python.screen_away.interval = "5"
python.screen_away.message = "detached from byobu" python.screen_away.message = "detached from byobu"
@ -200,7 +198,6 @@ python.go.color_number = "color for buffer number (not selected) (default: "yell
python.go.color_number_selected = "color for selected buffer number (default: "yellow,red")" python.go.color_number_selected = "color for selected buffer number (default: "yellow,red")"
python.go.fuzzy_search = "search buffer matches using approximation (default: "off")" python.go.fuzzy_search = "search buffer matches using approximation (default: "off")"
python.go.message = "message to display before list of buffers (default: "Go to: ")" python.go.message = "message to display before list of buffers (default: "Go to: ")"
python.go.min_chars = "Minimum chars to search and display list of matching buffers (default: "0")"
python.go.short_name = "display and search in short names instead of buffer name (default: "off")" python.go.short_name = "display and search in short names instead of buffer name (default: "off")"
python.go.short_name_server = "prefix short names with server names for search and display (default: "off")" python.go.short_name_server = "prefix short names with server names for search and display (default: "off")"
python.go.sort = "comma-separated list of keys to sort buffers (the order is important, sorts are performed in the given order): name = sort by name (or short name), (default: "number,beginning")" python.go.sort = "comma-separated list of keys to sort buffers (the order is important, sorts are performed in the given order): name = sort by name (or short name), (default: "number,beginning")"

View File

@ -6,7 +6,7 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
[look] [look]

View File

@ -0,0 +1,121 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2016 Hairo R. Carela <hairocr8@gmail.com>
#
# Everyone is permitted to copy and distribute verbatim or modified
# copies of this license document, and changing it is allowed as long
# as the name is changed.
#
# DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
# TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
#
# 0. You just DO WHAT THE FUCK YOU WANT TO.
#
# Alternate way of text formatting, useful for relays without text formatting
# features (Glowingbear, WeechatAndroid, etc)
#
# Usage:
# /aformat *text* for bold text
# /aformat /text/ for italic text
# /aformat _text_ for underlined text
# /aformat |text| for reversed (black on white) text
#
# History:
# 2016-09-24:
# v0.1: Initial release
# 2018-06-19:
# v0.2: py3k-ok
#
# TODO:
# - Colors support
import sys
try:
import weechat
from weechat import WEECHAT_RC_OK
import_ok = True
except ImportError:
print("This script must be run under WeeChat.")
print("Get WeeChat now at: http://www.weechat.org/")
import_ok = False
SCRIPT_NAME = "aformat"
SCRIPT_AUTHOR = "Hairo R. Carela <hairocr8@gmail.com>"
SCRIPT_VERSION = "0.2"
SCRIPT_LICENSE = "WTFPL"
SCRIPT_DESC = ("Alternate way of text formatting, see /help for instructions")
PY3 = sys.version > '3'
class format:
# Special byte sequences, using weechat.color("stuff") had some unwanted
# results, i'll look into it if needed. Colors are unused for now
BOLD = '\x02'
ITALIC = '\x1D'
UNDERLINE = '\x1F'
REVERSE = '\x16'
END = '\x0F'
if PY3:
unichr = chr
def send(buf, text):
weechat.command(buf, "/input send {}".format(text))
else:
def send(buf, text):
weechat.command(buf, "/input send {}".format(text.encode("utf-8")))
def cb_aformat_cmd(data, buf, args):
if not PY3:
args = args.decode("utf-8")
# Get the indexes of the separators (*/_|) in the string
bolds = [i for i, ltr in enumerate(args) if ltr == "*"]
italics = [i for i, ltr in enumerate(args) if ltr == "/"]
underlines = [i for i, ltr in enumerate(args) if ltr == "_"]
reverses = [i for i, ltr in enumerate(args) if ltr == "|"]
if len(bolds) != 0:
for i, v in enumerate(bolds):
if i%2 == 0:
args = args[:v] + format.BOLD + args[v+1:]
else:
args = args[:v] + format.END + args[v+1:]
if len(italics) != 0:
for i, v in enumerate(italics):
if i%2 == 0:
args = args[:v] + format.ITALIC + args[v+1:]
else:
args = args[:v] + format.END + args[v+1:]
if len(underlines) != 0:
for i, v in enumerate(underlines):
if i%2 == 0:
args = args[:v] + format.UNDERLINE + args[v+1:]
else:
args = args[:v] + format.END + args[v+1:]
if len(reverses) != 0:
for i, v in enumerate(reverses):
if i%2 == 0:
args = args[:v] + format.REVERSE + args[v+1:]
else:
args = args[:v] + format.END + args[v+1:]
send(buf, args)
return weechat.WEECHAT_RC_OK
if import_ok and __name__ == "__main__":
weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION,
SCRIPT_LICENSE, SCRIPT_DESC, '', '')
weechat.hook_command("aformat", "Alternate way of text formatting, useful for relays without text formatting features (Glowingbear, WeechatAndroid, etc)",
"text <*/_|> text <*/_|> more text",
" *: bold text\n"
" /: italic text\n"
" _: underlined text\n"
" |: reversed (black on white) text\n\n"
" eg.: typing: /aformat This /must/ be the *work* of an _enemy_ |stand|\n"
" will output: This {0}must{4} be the {1}work{4} of an {2}enemy{4} {3}stand{4}".format(weechat.color("italic"), weechat.color("bold"), weechat.color("underline"), weechat.color("reverse"), weechat.color("reset")),
"", "cb_aformat_cmd", "")

View File

@ -0,0 +1 @@
../aformat.py

View File

@ -0,0 +1 @@
../bitlbee_completion.py

View File

@ -0,0 +1 @@
../fzf.py

View File

@ -0,0 +1 @@
../listbuffer.py

View File

@ -0,0 +1 @@
../wee_slack.py

View File

@ -25,8 +25,6 @@
# #
# Changelog: # Changelog:
# 3.10:
# * Fix exception in `/autosort helpers swap`.
# 3.9: # 3.9:
# * Remove `buffers.pl` from recommended settings. # * Remove `buffers.pl` from recommended settings.
# 3,8: # 3,8:
@ -89,7 +87,7 @@ import weechat
SCRIPT_NAME = 'autosort' SCRIPT_NAME = 'autosort'
SCRIPT_AUTHOR = 'Maarten de Vries <maarten@de-vri.es>' SCRIPT_AUTHOR = 'Maarten de Vries <maarten@de-vri.es>'
SCRIPT_VERSION = '3.10' SCRIPT_VERSION = '3.9'
SCRIPT_LICENSE = 'GPL3' SCRIPT_LICENSE = 'GPL3'
SCRIPT_DESC = 'Flexible automatic (or manual) buffer sorting based on eval expressions.' SCRIPT_DESC = 'Flexible automatic (or manual) buffer sorting based on eval expressions.'
@ -618,6 +616,7 @@ def command_helper_swap(buffer, command, args):
except KeyError as e: except KeyError as e:
raise HumanReadableError('No such helper: {0}'.format(e.args[0])) raise HumanReadableError('No such helper: {0}'.format(e.args[0]))
config.helpers.swap(index_a, index_b)
config.save_helpers() config.save_helpers()
command_helper_list(buffer, command, '') command_helper_list(buffer, command, '')
return weechat.WEECHAT_RC_OK return weechat.WEECHAT_RC_OK
@ -830,7 +829,7 @@ def on_autosort_command(data, buffer, args):
def add_completions(completion, words): def add_completions(completion, words):
for word in words: for word in words:
weechat.completion_list_add(completion, word, 0, weechat.WEECHAT_LIST_POS_END) weechat.hook_completion_list_add(completion, word, 0, weechat.WEECHAT_LIST_POS_END)
def autosort_complete_rules(words, completion): def autosort_complete_rules(words, completion):
if len(words) == 0: if len(words) == 0:
@ -1002,14 +1001,14 @@ If you remove all signals you can still sort your buffers manually with the
{*white}# Recommended settings {*white}# Recommended settings
For the best visual effect, consider setting the following options: For the best visual effect, consider setting the following options:
{*white}/set {cyan}irc.look.server_buffer{reset} {brown}independent{reset} {*white}/set {cyan}irc.look.server_buffer{reset} {brown}independent{reset}
This setting allows server buffers to be sorted independently, which is This setting allows server buffers to be sorted independently, which is
needed to create a hierarchical tree view of the server and channel buffers. needed to create a hierarchical tree view of the server and channel buffers.
If you are using the {*default}buflist{reset} plugin you can (ab)use Unicode to draw a tree If you are using the {*default}buflist{reset} plugin you can (ab)use Unicode to draw a tree
structure with the following setting (modify to suit your need): structure with the following setting (modify to suit your need):
{*white}/set {cyan}buflist.format.indent {brown}"${{color:237}}${{if:${{buffer.next_buffer.local_variables.type}}=~^(channel|private)$?├─:└─}}"{reset} {*white}/set {cyan}buflist.format.indent {brown}"${{color:237}}${{if:${{buffer.next_buffer.local_variables.type}}=~^(channel|private)$?├─:└─}}"{reset}
''' '''
command_completion = '%(plugin_autosort) %(plugin_autosort) %(plugin_autosort) %(plugin_autosort) %(plugin_autosort)' command_completion = '%(plugin_autosort) %(plugin_autosort) %(plugin_autosort) %(plugin_autosort) %(plugin_autosort)'

View File

@ -0,0 +1,114 @@
# -*- coding: utf-8 -*-
# Add tab completion to bitlbee commands
# based on http://scripts.irssi.org/scripts/bitlbee_tab_completion.pl
#
# History:
#
# 2015-11-02, Mickaël Thomas <mickael9@gmail.com>:
# version 0.2: strip color attributes for topic detection
# 2015-03-22, Roger Duran <rogerduran@gmail.com>:
# version 0.1: initial version
import weechat
SCRIPT_NAME = "bitlbee_completion"
SCRIPT_AUTHOR = "Roger Duran <rogerduran@gmail.com>"
SCRIPT_VERSION = "0.2"
SCRIPT_LICENSE = "GPL3"
SCRIPT_DESC = "Add tab completion to bitlbee commands"
OPTS = {
"server": None,
"channel": None
}
TOPIC = "Welcome to the control channel. "\
"Type help for help information."
commands = []
def request_completion():
"""
Request the completion to the bitlbee server and wait for response
"""
server = OPTS["server"]
weechat.command(server, "/quote -server %s COMPLETIONS" % server)
def modifier_cb(data, modifier, modifier_data, string):
"""
When the server returns the completion, update the commands list
"""
if ":COMPLETIONS" not in string:
return string
command = string.split(":COMPLETIONS ")[1]
if command not in ("OK", "END"):
commands.append(command)
return ""
def bitlbee_completion(data, completion_item, buffer, completion):
"""
Complete bitlbee commands only in the bitlbee buffer
"""
server = OPTS["server"]
channel = OPTS["channel"]
if not server or not channel:
return weechat.WEECHAT_RC_OK
buff_name = weechat.buffer_get_string(buffer, "name")
if buff_name == "%s.%s" % (server, channel):
for command in commands:
weechat.hook_completion_list_add(completion, command, 0,
weechat.WEECHAT_LIST_POS_SORT)
return weechat.WEECHAT_RC_OK
def find_buffer():
"""
Find the buffer when the plugin starts
"""
infolist = weechat.infolist_get("buffer", "", "")
while weechat.infolist_next(infolist):
topic = weechat.infolist_string(infolist, "title")
if weechat.string_remove_color(topic, "") == TOPIC:
name = weechat.infolist_string(infolist, "name")
set_options(name)
request_completion()
break
weechat.infolist_free(infolist)
def set_options(name):
server, channel = name.split(".")
OPTS["server"] = server
OPTS["channel"] = channel
def print_332(data, buffer, time, tags, displayed, highlight, prefix, message):
"""
Find the buffer when a new one is open
"""
if weechat.string_remove_color(message, "") == TOPIC:
name = weechat.buffer_get_string(buffer, "name")
set_options(name)
request_completion()
return weechat.WEECHAT_RC_OK
def main():
weechat.hook_modifier("irc_in_notice", "modifier_cb", "")
weechat.hook_completion("bitlbee", "bitlbee completion",
"bitlbee_completion", "")
weechat.hook_print('', 'irc_332', '', 1, 'print_332', '')
weechat.hook_print('', 'irc_topic', '', 1, 'print_332', '')
find_buffer()
if __name__ == "__main__":
if weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION,
SCRIPT_LICENSE, SCRIPT_DESC, "", ""):
main()

View File

@ -20,8 +20,6 @@
# (this script requires WeeChat 0.3.0 or newer) # (this script requires WeeChat 0.3.0 or newer)
# #
# History: # History:
# 2024-05-04, Miklos Vajna
# version 0.6: Allow autoclosing explicitly listed non-private buffers as well
# 2018-04-10, Sébastien Helleu <flashcode@flashtux.org> # 2018-04-10, Sébastien Helleu <flashcode@flashtux.org>
# version 0.5: fix infolist_time for WeeChat >= 2.2 (WeeChat returns a long # version 0.5: fix infolist_time for WeeChat >= 2.2 (WeeChat returns a long
# integer instead of a string) # integer instead of a string)
@ -39,7 +37,7 @@ import time
SCRIPT_NAME = "buffer_autoclose" SCRIPT_NAME = "buffer_autoclose"
SCRIPT_AUTHOR = "xt <xt@bash.no>" SCRIPT_AUTHOR = "xt <xt@bash.no>"
SCRIPT_VERSION = "0.6" SCRIPT_VERSION = "0.5"
SCRIPT_LICENSE = "GPL3" SCRIPT_LICENSE = "GPL3"
SCRIPT_DESC = "Automatically close inactive private message buffers" SCRIPT_DESC = "Automatically close inactive private message buffers"
@ -47,7 +45,6 @@ settings = {
'interval': '1', # How often in minutes to check 'interval': '1', # How often in minutes to check
'age_limit': '30', # How old in minutes before auto close 'age_limit': '30', # How old in minutes before auto close
'ignore': '', # Buffers to ignore (use full name: server.buffer_name) 'ignore': '', # Buffers to ignore (use full name: server.buffer_name)
'prefer': '', # Buffers to prefer, even if they are not private (use full name: server.buffer_name)
} }
if w.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, SCRIPT_LICENSE, if w.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, SCRIPT_LICENSE,
@ -67,13 +64,8 @@ def get_all_buffers():
'''Returns list with pointers of all open buffers.''' '''Returns list with pointers of all open buffers.'''
buffers = [] buffers = []
infolist = w.infolist_get('buffer', '', '') infolist = w.infolist_get('buffer', '', '')
preferlist = w.config_get_plugin('prefer').split(',')
while w.infolist_next(infolist): while w.infolist_next(infolist):
buffer_type = w.buffer_get_string(w.infolist_pointer(infolist, 'pointer'), 'localvar_type') buffer_type = w.buffer_get_string(w.infolist_pointer(infolist, 'pointer'), 'localvar_type')
name = w.buffer_get_string(w.infolist_pointer(infolist, 'pointer'), 'name')
if name in preferlist:
buffers.append(w.infolist_pointer(infolist, 'pointer'))
continue
if buffer_type == 'private': # we only close private message buffers for now if buffer_type == 'private': # we only close private message buffers for now
buffers.append(w.infolist_pointer(infolist, 'pointer')) buffers.append(w.infolist_pointer(infolist, 'pointer'))
w.infolist_free(infolist) w.infolist_free(infolist)

View File

@ -21,16 +21,6 @@
# #
# #
# History: # History:
# 2023-10-30: Sébastien Helleu <flashcode@flashtux.org>
# version 32: revert to info "nick_color" with WeeChat >= 4.1.1
# 2023-10-16: Sébastien Helleu <flashcode@flashtux.org>
# version 31: use info "irc_nick_color" on IRC buffers with WeeChat >= 4.1.0
# 2022-11-07: mva
# version 30: add ":" and "," to VALID_NICK regexp,
# to don't reset colorization in input_line
# 2022-07-11: ncfavier
# version 29: check nick for exclusion *after* stripping
# decrease minimum min_nick_length to 1
# 2020-11-29: jess # 2020-11-29: jess
# version 28: fix ignore_tags having been broken by weechat 2.9 changes # version 28: fix ignore_tags having been broken by weechat 2.9 changes
# 2020-05-09: Sébastien Helleu <flashcode@flashtux.org> # 2020-05-09: Sébastien Helleu <flashcode@flashtux.org>
@ -100,13 +90,13 @@ w = weechat
SCRIPT_NAME = "colorize_nicks" SCRIPT_NAME = "colorize_nicks"
SCRIPT_AUTHOR = "xt <xt@bash.no>" SCRIPT_AUTHOR = "xt <xt@bash.no>"
SCRIPT_VERSION = "32" SCRIPT_VERSION = "28"
SCRIPT_LICENSE = "GPL" SCRIPT_LICENSE = "GPL"
SCRIPT_DESC = "Use the weechat nick colors in the chat area" SCRIPT_DESC = "Use the weechat nick colors in the chat area"
# Based on the recommendations in RFC 7613. A valid nick is composed # Based on the recommendations in RFC 7613. A valid nick is composed
# of anything but " ,*?.!@". # of anything but " ,*?.!@".
VALID_NICK = r'([@~&!%+-])?([^\s,\*?\.!@:,]+)' VALID_NICK = r'([@~&!%+-])?([^\s,\*?\.!@]+)'
valid_nick_re = re.compile(VALID_NICK) valid_nick_re = re.compile(VALID_NICK)
ignore_channels = [] ignore_channels = []
ignore_nicks = [] ignore_nicks = []
@ -148,7 +138,7 @@ def colorize_config_init():
colorize_config_option["min_nick_length"] = weechat.config_new_option( colorize_config_option["min_nick_length"] = weechat.config_new_option(
colorize_config_file, section_look, "min_nick_length", colorize_config_file, section_look, "min_nick_length",
"integer", "Minimum length nick to colorize", "", "integer", "Minimum length nick to colorize", "",
1, 20, "2", "2", 0, "", "", "", "", "", "") 2, 20, "", "", 0, "", "", "", "", "", "")
colorize_config_option["colorize_input"] = weechat.config_new_option( colorize_config_option["colorize_input"] = weechat.config_new_option(
colorize_config_file, section_look, "colorize_input", colorize_config_file, section_look, "colorize_input",
"boolean", "Whether to colorize input", "", 0, "boolean", "Whether to colorize input", "", 0,
@ -175,16 +165,12 @@ def colorize_config_read():
global colorize_config_file global colorize_config_file
return weechat.config_read(colorize_config_file) return weechat.config_read(colorize_config_file)
def colorize_nick_color(buffer, nick, my_nick): def colorize_nick_color(nick, my_nick):
''' Retrieve nick color from weechat. ''' ''' Retrieve nick color from weechat. '''
if nick == my_nick: if nick == my_nick:
return w.color(w.config_string(w.config_get('weechat.color.chat_nick_self'))) return w.color(w.config_string(w.config_get('weechat.color.chat_nick_self')))
else: else:
version = int(w.info_get('version_number', '') or 0) return w.info_get('irc_nick_color', nick)
if w.buffer_get_string(buffer, 'plugin') == 'irc' and version == 0x4010000:
server = w.buffer_get_string(buffer, 'localvar_server')
return w.info_get('irc_nick_color', '%s,%s' % (server, nick))
return w.info_get('nick_color', nick)
def colorize_cb(data, modifier, modifier_data, line): def colorize_cb(data, modifier, modifier_data, line):
''' Callback that does the colorizing, and returns new line if changed ''' ''' Callback that does the colorizing, and returns new line if changed '''
@ -220,6 +206,9 @@ def colorize_cb(data, modifier, modifier_data, line):
for words in valid_nick_re.findall(line): for words in valid_nick_re.findall(line):
nick = words[1] nick = words[1]
# Check that nick is not ignored and longer than minimum length
if len(nick) < min_length or nick in ignore_nicks:
continue
# If the matched word is not a known nick, we try to match the # If the matched word is not a known nick, we try to match the
# word without its first or last character (if not a letter). # word without its first or last character (if not a letter).
@ -236,10 +225,6 @@ def colorize_cb(data, modifier, modifier_data, line):
if nick[:-1] in colored_nicks[buffer]: if nick[:-1] in colored_nicks[buffer]:
nick = nick[:-1] nick = nick[:-1]
# Check that nick is not ignored and longer than minimum length
if len(nick) < min_length or nick in ignore_nicks:
continue
# Check that nick is in the dictionary colored_nicks # Check that nick is in the dictionary colored_nicks
if nick in colored_nicks[buffer]: if nick in colored_nicks[buffer]:
nick_color = colored_nicks[buffer][nick] nick_color = colored_nicks[buffer][nick]
@ -351,7 +336,7 @@ def populate_nicks(*args):
continue continue
nick = w.infolist_string(nicklist, 'name') nick = w.infolist_string(nicklist, 'name')
nick_color = colorize_nick_color(buffer_ptr, nick, my_nick) nick_color = colorize_nick_color(nick, my_nick)
colored_nicks[buffer_ptr][nick] = nick_color colored_nicks[buffer_ptr][nick] = nick_color
@ -373,7 +358,7 @@ def add_nick(data, signal, type_data):
colored_nicks[pointer] = {} colored_nicks[pointer] = {}
my_nick = w.buffer_get_string(pointer, 'localvar_nick') my_nick = w.buffer_get_string(pointer, 'localvar_nick')
nick_color = colorize_nick_color(pointer, nick, my_nick) nick_color = colorize_nick_color(nick, my_nick)
colored_nicks[pointer][nick] = nick_color colored_nicks[pointer][nick] = nick_color

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# Copyright (C) 2009-2023 Sébastien Helleu <flashcode@flashtux.org> # Copyright (C) 2009-2014 Sébastien Helleu <flashcode@flashtux.org>
# Copyright (C) 2010 m4v <lambdae2@gmail.com> # Copyright (C) 2010 m4v <lambdae2@gmail.com>
# Copyright (C) 2011 stfn <stfnmd@googlemail.com> # Copyright (C) 2011 stfn <stfnmd@googlemail.com>
# #
@ -21,15 +21,6 @@
# #
# History: # History:
# #
# 2024-05-30, Sébastien Helleu <flashcode@flashtux.org>:
# version 3.0.1: refresh buffer input at the end of search
# 2024-05-30, Sébastien Helleu <flashcode@flashtux.org>:
# version 3.0: refresh immediately buffer input when /go command is executed
# (needed for WeeChat >= 4.3.0)
# 2023-06-21, Sébastien Helleu <flashcode@flashtux.org>:
# version 2.9: add option "min_chars"
# 2023-01-08, Sébastien Helleu <flashcode@flashtux.org>:
# version 2.8: send buffer pointer with signal "input_text_changed"
# 2021-05-25, Tomáš Janoušek <tomi@nomi.cz>: # 2021-05-25, Tomáš Janoušek <tomi@nomi.cz>:
# version 2.7: add new option to prefix short names with server names # version 2.7: add new option to prefix short names with server names
# 2019-07-11, Simmo Saan <simmo.saan@gmail.com> # 2019-07-11, Simmo Saan <simmo.saan@gmail.com>
@ -105,7 +96,7 @@ from __future__ import print_function
SCRIPT_NAME = 'go' SCRIPT_NAME = 'go'
SCRIPT_AUTHOR = 'Sébastien Helleu <flashcode@flashtux.org>' SCRIPT_AUTHOR = 'Sébastien Helleu <flashcode@flashtux.org>'
SCRIPT_VERSION = '3.0.1' SCRIPT_VERSION = '2.7'
SCRIPT_LICENSE = 'GPL3' SCRIPT_LICENSE = 'GPL3'
SCRIPT_DESC = 'Quick jump to buffers' SCRIPT_DESC = 'Quick jump to buffers'
@ -117,19 +108,13 @@ try:
import weechat import weechat
except ImportError: except ImportError:
print('This script must be run under WeeChat.') print('This script must be run under WeeChat.')
print('Get WeeChat now at: https://weechat.org/') print('Get WeeChat now at: http://www.weechat.org/')
IMPORT_OK = False IMPORT_OK = False
import re import re
# script options # script options
SETTINGS = { SETTINGS = {
'auto_jump': (
'off',
'automatically jump to buffer when it is uniquely selected'),
'buffer_number': (
'on',
'display buffer number'),
'color_number': ( 'color_number': (
'yellow,magenta', 'yellow,magenta',
'color for buffer number (not selected)'), 'color for buffer number (not selected)'),
@ -148,15 +133,9 @@ SETTINGS = {
'color_name_highlight_selected': ( 'color_name_highlight_selected': (
'red,brown', 'red,brown',
'color for highlight in a selected buffer name'), 'color for highlight in a selected buffer name'),
'fuzzy_search': (
'off',
'search buffer matches using approximation'),
'message': ( 'message': (
'Go to: ', 'Go to: ',
'message to display before list of buffers'), 'message to display before list of buffers'),
'min_chars': (
'0',
'Minimum chars to search and display list of matching buffers'),
'short_name': ( 'short_name': (
'off', 'off',
'display and search in short names instead of buffer name'), 'display and search in short names instead of buffer name'),
@ -175,6 +154,15 @@ SETTINGS = {
'use_core_instead_weechat': ( 'use_core_instead_weechat': (
'off', 'off',
'use name "core" instead of "weechat" for core buffer'), 'use name "core" instead of "weechat" for core buffer'),
'auto_jump': (
'off',
'automatically jump to buffer when it is uniquely selected'),
'fuzzy_search': (
'off',
'search buffer matches using approximation'),
'buffer_number': (
'on',
'display buffer number'),
} }
# hooks management # hooks management
@ -220,7 +208,6 @@ def go_unhook_all():
go_unhook_one('modifier') go_unhook_one('modifier')
for hook in HOOK_COMMAND_RUN: for hook in HOOK_COMMAND_RUN:
go_unhook_one(hook) go_unhook_one(hook)
weechat.bar_item_update('input_text')
def go_hook_all(): def go_hook_all():
@ -240,7 +227,6 @@ def go_hook_all():
if 'modifier' not in hooks: if 'modifier' not in hooks:
hooks['modifier'] = weechat.hook_modifier( hooks['modifier'] = weechat.hook_modifier(
'input_text_display_with_cursor', 'go_input_modifier', '') 'input_text_display_with_cursor', 'go_input_modifier', '')
weechat.bar_item_update('input_text')
def go_start(buf): def go_start(buf):
@ -424,11 +410,6 @@ def go_matching_buffers(strinput):
def go_buffers_to_string(listbuf, pos, strinput): def go_buffers_to_string(listbuf, pos, strinput):
"""Return string built with list of buffers found (matching user input).""" """Return string built with list of buffers found (matching user input)."""
try:
if len(strinput) < int(weechat.config_get_plugin('min_chars')):
return ''
except:
pass
string = '' string = ''
strinput = strinput.lower() strinput = strinput.lower()
for i in range(len(listbuf)): for i in range(len(listbuf)):
@ -519,7 +500,7 @@ def go_command_run_input(data, buf, command):
if buffers_pos >= len(buffers): if buffers_pos >= len(buffers):
buffers_pos = 0 buffers_pos = 0
weechat.hook_signal_send('input_text_changed', weechat.hook_signal_send('input_text_changed',
weechat.WEECHAT_HOOK_SIGNAL_POINTER, buf) weechat.WEECHAT_HOOK_SIGNAL_STRING, '')
return weechat.WEECHAT_RC_OK_EAT return weechat.WEECHAT_RC_OK_EAT
elif command == '/input complete_previous': elif command == '/input complete_previous':
# choose previous buffer in list # choose previous buffer in list
@ -527,7 +508,7 @@ def go_command_run_input(data, buf, command):
if buffers_pos < 0: if buffers_pos < 0:
buffers_pos = len(buffers) - 1 buffers_pos = len(buffers) - 1
weechat.hook_signal_send('input_text_changed', weechat.hook_signal_send('input_text_changed',
weechat.WEECHAT_HOOK_SIGNAL_POINTER, buf) weechat.WEECHAT_HOOK_SIGNAL_STRING, '')
return weechat.WEECHAT_RC_OK_EAT return weechat.WEECHAT_RC_OK_EAT
elif command == '/input return': elif command == '/input return':
# switch to selected buffer (if any) # switch to selected buffer (if any)

View File

@ -69,9 +69,6 @@
# #
# History: # History:
# #
# 2022-11-11, anonymous2ch
# version 0.8.6: ignore utf-8 decoding errors
#
# 2021-05-02, Sébastien Helleu <flashcode@flashtux.org> # 2021-05-02, Sébastien Helleu <flashcode@flashtux.org>
# version 0.8.5: add compatibility with WeeChat >= 3.2 (XDG directories) # version 0.8.5: add compatibility with WeeChat >= 3.2 (XDG directories)
# #
@ -242,7 +239,7 @@ except ImportError:
SCRIPT_NAME = "grep" SCRIPT_NAME = "grep"
SCRIPT_AUTHOR = "Elián Hanisch <lambdae2@gmail.com>" SCRIPT_AUTHOR = "Elián Hanisch <lambdae2@gmail.com>"
SCRIPT_VERSION = "0.8.6" SCRIPT_VERSION = "0.8.5"
SCRIPT_LICENSE = "GPL3" SCRIPT_LICENSE = "GPL3"
SCRIPT_DESC = "Search in buffers and logs" SCRIPT_DESC = "Search in buffers and logs"
SCRIPT_COMMAND = "grep" SCRIPT_COMMAND = "grep"
@ -741,7 +738,7 @@ def grep_file(file, head, tail, after_context, before_context, count, regexp, hi
check = lambda s: check_string(s, regexp, hilight, exact) check = lambda s: check_string(s, regexp, hilight, exact)
try: try:
file_object = open(file, 'r', errors='ignore') file_object = open(file, 'r')
except IOError: except IOError:
# file doesn't exist # file doesn't exist
return lines return lines

View File

@ -0,0 +1,474 @@
# -*- coding: utf-8 -*-
#
# ListBuffer, version 0.8.1 for WeeChat version 0.3
# Latest development version: https://github.com/FiXato/listbuffer
#
# Show /list results in a common buffer and interact with them.
#
# This script allows you to easily join channels from the /list output.
# It will open a common buffer for the /list result, through which you
# browse with your cursor keys, and join with the meta-enter keys.
# Adjust sorting with meta->, meta-< and meta-/ keybindings.
#
## History:
### 2011-09-08: FiXato:
#
# * version 0.1: initial release.
# * added a common buffer for /list results
# * added highlighting for currently selected line
# * added /join support via enter key
# * added scroll_top and scroll_bottom support
#
# * version 0.2: /list format bugfix
# * added support for /list results without modes
# * some servers don't send 321 (/list start). Taken into account.
#
# * version 0.3: Sorting support
# * Added some basic sorting support. Scroll through sort options
# with meta-> and meta-< (users, channel, topic, modes)
#
### 2011-09-19: FiXato
#
# * version 0.4:
# * Case-insensitive buffer lookup fix.
# * Removed default enter keybind
#
### 2011-12-28: troydm:
#
# * version 0.5: It's an upside-down-world
# * Added inverted sorting support provided by Dmitry "troydm" Geurkov
# Use meta-/ to switch between inverted and regular sorting.
#
### 2012-02-10: FiXato:
#
# * version 0.6: Stop shoving that buffer in my face!
# * The listbuffer should no longer pop up by itself when you load the script.
# It should only pop up now when you actually do a /list query.
#
# * version 0.7: .. but please pop it up in my current window when I ask for it
# * Added setting plugins.var.python.listbuffer.autofocus
# This will autofocus the listbuffer in the current window if another window isn't
# already showing it, and of course only when the user issues /list
#
### 2012-07-10: FiXato:
#
# * version 0.7.1: Forgetful bugfix
# * Made sure lb_curline global variable is defined
#
### 2013-03-19: FiXato:
#
# * version 0.8: Sorted out the sorting
# * Added automatically updating options for sorting:
# * plugins.var.python.listbuffer.sort_inverted
# * plugins.var.python.listbuffer.sort_order
# * version 0.8.1: Pad it baby!
# * Channel modes are equally padded even when there are no channel modes.
# * Added padding options:
# * plugins.var.python.listbuffer.modes_min_width
# * plugins.var.python.listbuffer.channel_min_width
# * plugins.var.python.listbuffer.users_min_width
#
### 2019-07-05: Sébastien Helleu:
#
# * version 0.8.2: Make script compatible with Python 3.
#
## Acknowledgements:
# * Dmitry "troydm" Geurkov, for providing the inverse-sorting patch to the project.
# * Sebastien "Flashcode" Helleu, for developing the kick-ass IRC client WeeChat
# and the iset.pl script which inspired me to this script.
# * Nils "nils_2" Görs, for his contributions to iset.pl which served as
# example code.
# * David "drubin" Rubin, for his urlgrab.py script, which also served
# as example code.
# * ArZa, whose listsort.pl script helped me getting started with
# grabbing the /list results. Parts of his code have been shamelessly
# copied and ported to Python.
# * Khaled Mardam-Bey, for making me yearn for similar /list support in
# WeeChat as mIRC already offered. :P
# * mave_, for pointing out that sort orders weren't remembered.
#
## TODO:
# - Auto-scroll selected line upon window scroll.
# - Add option to hide already joined channels.
# - Improve sorting methods
# - Add auto-join support
# - Detect if channel is already in auto-join
# - Allow automatically switching to the listbuffer
# - Add support for ALIS (/squery alis LIST * -mix 100 (IRCNet)
# - Make colours configurable
# - Limit number of channels to parse
# - Add filter support a la iset
# - Allow selecting multiple channels
# - Add optional command redirection.
#
## Copyright (c) 2011,2012,2013 Filip H.F. "FiXato" Slagter,
# <FiXato [at] Gmail [dot] com>
# http://profile.fixato.org
#
# 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 = "listbuffer"
SCRIPT_AUTHOR = "Filip H.F. 'FiXato' Slagter <fixato [at] gmail [dot] com>"
SCRIPT_VERSION = "0.8.2"
SCRIPT_LICENSE = "MIT"
SCRIPT_DESC = "A common buffer for /list output."
SCRIPT_COMMAND = "listbuffer"
import_ok = True
try:
import weechat
except ImportError:
print("This script must be run under WeeChat.")
import_ok = False
import re
lb_settings = (
("autofocus", "on", "Focus the listbuffer in the current window if it isn't already displayed by a window."),
("sort_order", "users", "Last used sort order for the channel list."),
("sort_inverted", "on", "Invert the sort order for the channel list."),
("modes_min_width", "8", "The minimum width used for modes in the channel list. If a channel has less modes than this amount, the column will be padded with spaces."),
("channel_min_width", "25", "The minimum width used for the channel name in the channel list. If a channelname is shorter than this amount, the column will be padded with spaces."),
("users_min_width", "8", "The minimum width used for the usercount in the channel list. If the usercount has less digits than this amount, the column will be padded with spaces."),
)
lb_buffer = None
lb_curline = 0
lb_channels = []
lb_network = None
lb_list_started = False
lb_current_sort = None
lb_sort_inverted = False
lb_sort_options = (
'channel',
'users',
'modes',
'topic',
)
# server numeric Nick Chan Users Modes Topic
lb_channel_list_expression = '(:\S+) (\d{3}) (\S+) (\S+) (\d+) :(\[(.*?)\] )?(.*)'
# Create listbuffer.
def lb_create_buffer():
global lb_buffer, lb_curline
if not lb_buffer:
lb_buffer = weechat.buffer_new("listbuffer", "lb_input_cb", \
"", "lb_close_cb", "")
lb_set_buffer_title()
# Sets notify to 0 as this buffer does not need to be in hotlist.
weechat.buffer_set(lb_buffer, "notify", "0")
weechat.buffer_set(lb_buffer, "nicklist", "0")
weechat.buffer_set(lb_buffer, "type", "free")
weechat.buffer_set(lb_buffer, "key_bind_ctrl-L", "/listbuffer **refresh")
weechat.buffer_set(lb_buffer, "key_bind_meta2-A", "/listbuffer **up")
weechat.buffer_set(lb_buffer, "key_bind_meta2-B", "/listbuffer **down")
weechat.buffer_set(lb_buffer, "key_bind_meta2-1~", "/listbuffer **scroll_top")
weechat.buffer_set(lb_buffer, "key_bind_meta2-4~", "/listbuffer **scroll_bottom")
weechat.buffer_set(lb_buffer, "key_bind_meta-ctrl-J", "/listbuffer **enter")
weechat.buffer_set(lb_buffer, "key_bind_meta-ctrl-M", "/listbuffer **enter")
weechat.buffer_set(lb_buffer, "key_bind_meta->", "/listbuffer **sort_next")
weechat.buffer_set(lb_buffer, "key_bind_meta-<", "/listbuffer **sort_previous")
weechat.buffer_set(lb_buffer, "key_bind_meta-/", "/listbuffer **sort_invert")
lb_curline = 0
if weechat.config_get_plugin("autofocus") == "on":
if not weechat.window_search_with_buffer(lb_buffer):
weechat.command("", "/buffer " + weechat.buffer_get_string(lb_buffer,"name"))
def lb_set_buffer_title():
global lb_buffer, lb_current_sort
ascdesc = '(v)' if lb_sort_inverted else '(^)'
weechat.buffer_set(lb_buffer, "title", lb_line_format({
'channel': 'Channel name%s' % (ascdesc if lb_current_sort == 'channel' else ''),
'users': 'Users%s' % (ascdesc if lb_current_sort == 'users' else ''),
'modes': 'Modes%s' % (ascdesc if lb_current_sort == 'modes' else ''),
'topic': 'Topic%s' % (ascdesc if lb_current_sort == 'topic' else ''),
'nomodes': None,
}))
def lb_list_start(data, signal, message):
lb_initialise_list
return weechat.WEECHAT_RC_OK
def lb_initialise_list(signal):
global lb_channels, lb_network, lb_list_started
lb_create_buffer()
lb_channels = []
lb_network = signal.split(',')[0]
lb_list_started = True
return
def lb_list_chan(data, signal, message):
global lb_channels, lb_buffer, lb_list_started
# Work-around for IRCds which don't send 321 Numeric (/List start)
if not lb_list_started:
lb_initialise_list(signal)
for chan_data in re.findall(lb_channel_list_expression,message):
lb_channels.append({
'server': chan_data[0][1:-1],
'numeric': chan_data[1],
'nick': chan_data[2],
'channel': chan_data[3],
'users': chan_data[4],
'nomodes': chan_data[5] == '',
'modes': chan_data[6],
'topic': weechat.hook_modifier_exec("irc_color_decode", "1", chan_data[7])
})
return weechat.WEECHAT_RC_OK
def lb_list_end(data, signal, message):
global lb_list_started
# Work-around for IRCds which don't send 321 Numeric (/List start)
if not lb_list_started:
lb_initialise_list(signal)
lb_list_started = False
if lb_current_sort:
lb_sort()
lb_refresh()
return weechat.WEECHAT_RC_OK
def keyEvent (data, buffer, args):
global lb_options
lb_options[args]()
def lb_input_cb(data, buffer, input_data):
global lb_options, lb_curline
lb_options[input_data]()
return weechat.WEECHAT_RC_OK
def lb_refresh():
global lb_channels, lb_buffer
weechat.buffer_clear(lb_buffer)
y = 0
for list_data in lb_channels:
lb_refresh_line(y)
y += 1
return
def lb_refresh_line(y):
global lb_buffer, lb_curline, lb_channels
if y >= 0 and y < len(lb_channels):
formatted_line = lb_line_format(lb_channels[y], y == lb_curline)
weechat.prnt_y(lb_buffer, y, formatted_line)
def lb_refresh_curline():
global lb_curline
lb_refresh_line(lb_curline-1)
lb_refresh_line(lb_curline)
lb_refresh_line(lb_curline+1)
return
def lb_line_format(list_data,curr=False):
str = ""
if (curr):
str += weechat.color("yellow,red")
channel_text = list_data['channel'].ljust(int(weechat.config_get_plugin('channel_min_width')))
users_text = "(%s)" % list_data['users']
padded_users_text = users_text.rjust(int(weechat.config_get_plugin('users_min_width')) + 2)
str += "%s%s %s " % (weechat.color("bold"), channel_text, padded_users_text)
if not list_data['nomodes']:
modes = "[%s]" % list_data['modes']
else:
modes = "[]"
str += "%s: " % modes.rjust(int(weechat.config_get_plugin('modes_min_width')) + 2)
str += "%s" % list_data['topic']
return str
def lb_line_up():
global lb_curline
if lb_curline <= 0:
return
lb_curline -= 1
lb_refresh_curline()
lb_check_outside_window()
return
def lb_line_down():
global lb_curline, lb_channels
if lb_curline+1 >= len(lb_channels):
return
lb_curline += 1
lb_refresh_curline()
lb_check_outside_window()
return
def lb_line_run():
global lb_channels, lb_curline, lb_network
buff = weechat.info_get("irc_buffer", lb_network)
channel = lb_channels[lb_curline]['channel']
command = "/join %s" % channel
weechat.command(buff, command)
return
def lb_line_select():
return
def lb_scroll_top():
global lb_curline
old_y = lb_curline
lb_curline = 0
lb_refresh_curline()
lb_refresh_line(old_y)
weechat.command(lb_buffer, "/window scroll_top")
return
def lb_scroll_bottom():
global lb_curline, lb_channels
old_y = lb_curline
lb_curline = len(lb_channels)-1
lb_refresh_curline()
lb_refresh_line(old_y)
weechat.command(lb_buffer, "/window scroll_bottom")
return
def lb_check_outside_window():
global lb_buffer, lb_curline
if (lb_buffer):
infolist = weechat.infolist_get("window", "", "current")
if (weechat.infolist_next(infolist)):
start_line_y = weechat.infolist_integer(infolist, "start_line_y")
chat_height = weechat.infolist_integer(infolist, "chat_height")
if(start_line_y > lb_curline):
weechat.command(lb_buffer, "/window scroll -%i" %(start_line_y - lb_curline))
elif(start_line_y <= lb_curline - chat_height):
weechat.command(lb_buffer, "/window scroll +%i"%(lb_curline - start_line_y - chat_height + 1))
weechat.infolist_free(infolist)
def lb_sort_next():
global lb_current_sort, lb_sort_options
if lb_current_sort:
new_index = lb_sort_options.index(lb_current_sort) + 1
else:
new_index = 0
if len(lb_sort_options) <= new_index:
new_index = 0
lb_set_current_sort_order(lb_sort_options[new_index])
lb_sort()
def lb_set_current_sort_order(value):
global lb_current_sort
lb_current_sort = value
weechat.config_set_plugin('sort_order', lb_current_sort)
def lb_set_invert_sort_order(value):
global lb_sort_inverted
lb_sort_inverted = value
weechat.config_set_plugin('sort_inverted', ('on' if lb_sort_inverted else 'off'))
def lb_sort_previous():
global lb_current_sort, lb_sort_options
if lb_current_sort:
new_index = lb_sort_options.index(lb_current_sort) - 1
else:
new_index = 0
if new_index < 0:
new_index = len(lb_sort_options) - 1
lb_set_current_sort_order(lb_sort_options[new_index])
lb_sort()
def lb_sort(sort_key=None):
global lb_channels, lb_current_sort, lb_sort_inverted
if sort_key:
lb_set_current_sort_order(sort_key)
if lb_current_sort == 'users':
lb_channels = sorted(lb_channels, key=lambda chan_data: int(chan_data[lb_current_sort]))
else:
lb_channels = sorted(lb_channels, key=lambda chan_data: chan_data[lb_current_sort])
if lb_sort_inverted:
lb_channels.reverse()
lb_set_buffer_title()
lb_refresh()
def lb_sort_invert():
global lb_current_sort, lb_sort_inverted
if lb_current_sort:
lb_set_invert_sort_order(not lb_sort_inverted)
lb_sort()
def lb_close_cb(*kwargs):
""" A callback for buffer closing. """
global lb_buffer
lb_buffer = None
return weechat.WEECHAT_RC_OK
lb_options = {
'refresh' : lb_refresh,
'up' : lb_line_up,
'down' : lb_line_down,
'enter' : lb_line_run,
'space' : lb_line_select,
'scroll_top' : lb_scroll_top,
'scroll_bottom': lb_scroll_bottom,
'sort_next' : lb_sort_next,
'sort_previous': lb_sort_previous,
'sort_invert': lb_sort_invert
}
def lb_command_main(data, buffer, args):
if args[0:2] == "**":
keyEvent(data, buffer, args[2:])
return weechat.WEECHAT_RC_OK
def lb_set_default_settings():
global lb_settings
# Set default settings
for option, default_value, description in lb_settings:
if not weechat.config_is_set_plugin(option):
weechat.config_set_plugin(option, default_value)
version = weechat.info_get("version_number", "") or 0
if int(version) >= 0x00030500:
weechat.config_set_desc_plugin(option, description)
def lb_reset_stored_sort_order():
global lb_current_sort, lb_sort_inverted
lb_current_sort = weechat.config_get_plugin('sort_order')
lb_sort_inverted = (True if weechat.config_get_plugin('sort_inverted') == 'on' else False)
if __name__ == "__main__" and import_ok:
if weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION,
SCRIPT_LICENSE, SCRIPT_DESC, "lb_close_cb", ""):
lb_set_default_settings()
lb_reset_stored_sort_order()
lb_buffer = weechat.buffer_search("python", "listbuffer")
weechat.hook_signal("*,irc_in_321", "lb_list_start", "")
weechat.hook_signal("*,irc_in_322", "lb_list_chan", "")
weechat.hook_signal("*,irc_in_323", "lb_list_end", "")
weechat.hook_command(SCRIPT_COMMAND,
"List Buffer",
"", "", "",
"lb_command_main", "")

View File

@ -6,24 +6,20 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
config_version = 2
[look] [look]
auto_open_buffer = "on" auto_open_buffer = on
display_clients = "irc,weechat"
raw_messages = 256 raw_messages = 256
raw_messages_max_length = 4096
[color] [color]
client = cyan client = cyan
status_active = green status_active = lightblue
status_auth_failed = lightmagenta status_auth_failed = lightred
status_authenticating = yellow status_connecting = 130
status_connecting = white
status_disconnected = lightred status_disconnected = lightred
status_waiting_auth = brown
text = default text = default
text_bg = default text_bg = default
text_selected = white text_selected = white
@ -34,7 +30,6 @@ allowed_ips = ""
auth_timeout = 60 auth_timeout = 60
bind_address = "" bind_address = ""
clients_purge_delay = 0 clients_purge_delay = 0
commands = "*,!quit"
compression = 20 compression = 20
ipv6 = on ipv6 = on
max_clients = 5 max_clients = 5
@ -42,30 +37,24 @@ nonce_size = 16
password = "${sec.data.relaypass}" password = "${sec.data.relaypass}"
password_hash_algo = "*" password_hash_algo = "*"
password_hash_iterations = 100000 password_hash_iterations = 100000
time_window = 5 ssl_cert_key = "%h/ssl/relay.pem"
tls_cert_key = "%h/ssl/relay.pem" ssl_priorities = "NORMAL:-VERS-SSL3.0"
tls_priorities = "NORMAL:-VERS-SSL3.0"
totp_secret = "" totp_secret = ""
totp_window = 0 totp_window = 0
websocket_allowed_origins = "" websocket_allowed_origins = ""
websocket_permessage_deflate = on
[irc] [irc]
backlog_max_minutes = 0 backlog_max_minutes = 525600
backlog_max_number = 1024 backlog_max_number = 256
backlog_since_last_disconnect = on backlog_since_last_disconnect = on
backlog_since_last_message = off backlog_since_last_message = off
backlog_tags = "irc_privmsg" backlog_tags = "irc_privmsg"
backlog_time_format = "[%H:%M] " backlog_time_format = "[%H:%M] "
[api] [weechat]
remote_autoreconnect_delay_growing = 2 commands = ""
remote_autoreconnect_delay_max = 600
remote_get_lines = 1000
[port] [port]
[path] [path]
unix.weechat = "%h/relay_socket" unix.weechat = "%h/relay_socket"
[remote]

View File

@ -6,7 +6,7 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
[look] [look]

View File

@ -6,11 +6,11 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
[look] [look]
columns = "%s %n %V %v %u | %d | %t" columns = "%s %n %V %v %u │ %d │ %t"
diff_color = on diff_color = on
diff_command = "auto" diff_command = "auto"
display_source = on display_source = on
@ -20,32 +20,32 @@ translate_description = on
use_keys = on use_keys = on
[color] [color]
status_autoloaded = 39 status_autoloaded = cyan
status_held = white status_held = white
status_installed = lightcyan status_installed = lightcyan
status_obsolete = lightmagenta status_obsolete = lightmagenta
status_popular = yellow status_popular = 130
status_running = lightgreen status_running = lightgreen
status_unknown = lightred status_unknown = lightred
text = default text = default
text_bg = default text_bg = default
text_bg_selected = 24 text_bg_selected = 235
text_date = 65 text_date = default
text_date_selected = 50 text_date_selected = white
text_delimiters = 240 text_delimiters = 130
text_description = 249 text_description = default
text_description_selected = white text_description_selected = white
text_extension = 242 text_extension = default
text_extension_selected = 248 text_extension_selected = white
text_name = 73 text_name = cyan
text_name_selected = 51 text_name_selected = lightcyan
text_selected = white text_selected = white
text_tags = brown text_tags = brown
text_tags_selected = yellow text_tags_selected = 130
text_version = 100 text_version = magenta
text_version_loaded = 246 text_version_loaded = default
text_version_loaded_selected = white text_version_loaded_selected = white
text_version_selected = 228 text_version_selected = lightmagenta
[scripts] [scripts]
autoload = on autoload = on

View File

@ -6,7 +6,7 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
[color] [color]

View File

@ -6,7 +6,7 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
[look] [look]
@ -15,13 +15,14 @@ monitor_strip_colors = off
[color] [color]
flag_command = lightgreen flag_command = lightgreen
flag_conditions = yellow flag_conditions = 130
flag_post_action = lightblue flag_post_action = lightblue
flag_regex = lightcyan flag_regex = lightcyan
flag_return_code = lightmagenta flag_return_code = lightmagenta
identifier = cyan
regex = white regex = white
replace = cyan replace = cyan
trigger = green
trigger_disabled = red
[trigger] [trigger]
beep.arguments = "" beep.arguments = ""
@ -38,7 +39,7 @@ cmd_pass.conditions = ""
cmd_pass.enabled = on cmd_pass.enabled = on
cmd_pass.hook = modifier cmd_pass.hook = modifier
cmd_pass.post_action = none cmd_pass.post_action = none
cmd_pass.regex = "s==^((/(msg|m|quote) +(-server +[^ \n]+ +)?nickserv +(id|identify|set +password|ghost +[^ \n]+|release +[^ \n]+|regain +[^ \n]+|recover +[^ \n]+|setpass +[^ \n]+) +)|/oper +[^ \n]+ +|/quote +pass +|/secure +(passphrase|decrypt|set +[^ \n]+) +)([^\n]*)==${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.return_code = ok
cmd_pass_register.arguments = "5000|input_text_display;5000|history_add;5000|irc_command_auth" cmd_pass_register.arguments = "5000|input_text_display;5000|history_add;5000|irc_command_auth"
cmd_pass_register.command = "" cmd_pass_register.command = ""
@ -46,7 +47,7 @@ cmd_pass_register.conditions = ""
cmd_pass_register.enabled = on cmd_pass_register.enabled = on
cmd_pass_register.hook = modifier cmd_pass_register.hook = modifier
cmd_pass_register.post_action = none cmd_pass_register.post_action = none
cmd_pass_register.regex = "s==^(/(msg|m|quote) +(-server +[^ \n]+ +)?nickserv +register +)([^ \n]+)([^\n]*)==${re:1}${hide:*,${re:4}}${re:5}" cmd_pass_register.regex = "==^(/(msg|m|quote) +(-server +[^ ]+ +)?nickserv +register +)([^ ]+)(.*)==${re:1}${hide:*,${re:4}}${re:5}"
cmd_pass_register.return_code = ok cmd_pass_register.return_code = ok
greentext.arguments = "weechat_print" greentext.arguments = "weechat_print"
greentext.command = "" greentext.command = ""
@ -150,7 +151,7 @@ server_pass.conditions = ""
server_pass.enabled = on server_pass.enabled = on
server_pass.hook = modifier server_pass.hook = modifier
server_pass.post_action = none server_pass.post_action = none
server_pass.regex = "s==^(/(server|connect) [^\n]*-(sasl_)?password=)([^ \n]+)([^\n]*)==${re:1}${hide:*,${re:4}}${re:5}" server_pass.regex = "==^(/(server|connect) .*-(sasl_)?password=)([^ ]+)(.*)==${re:1}${hide:*,${re:4}}${re:5}"
server_pass.return_code = ok server_pass.return_code = ok
url_color.arguments = "weechat_print" url_color.arguments = "weechat_print"
url_color.command = "" url_color.command = ""

View File

@ -6,7 +6,7 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
[look] [look]

View File

@ -6,11 +6,9 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
config_version = 4
[debug] [debug]
[startup] [startup]
@ -34,25 +32,22 @@ buffer_notify_default = message
buffer_position = end buffer_position = end
buffer_search_case_sensitive = off buffer_search_case_sensitive = off
buffer_search_force_default = off buffer_search_force_default = off
buffer_search_history = local
buffer_search_regex = off buffer_search_regex = off
buffer_search_where = prefix_message buffer_search_where = prefix_message
buffer_time_format = "${color:250}%H${color:lightcyan}:${color:245}%M${color:lightcyan}:${color:240}%S" buffer_time_format = "${color:250}%H${color:lightcyan}:${color:245}%M${color:lightcyan}:${color:240}%S"
buffer_time_same = "" buffer_time_same = ""
chat_space_right = off
color_basic_force_bold = off color_basic_force_bold = off
color_inactive_buffer = on color_inactive_buffer = on
color_inactive_message = on color_inactive_message = on
color_inactive_prefix = on color_inactive_prefix = on
color_inactive_prefix_buffer = on color_inactive_prefix_buffer = on
color_inactive_time = on color_inactive_time = off
color_inactive_window = on color_inactive_window = on
color_nick_offline = on color_nick_offline = on
color_pairs_auto_reset = 5 color_pairs_auto_reset = 5
color_real_white = off color_real_white = off
command_chars = "" command_chars = ""
command_incomplete = off command_incomplete = off
config_permissions = "600"
confirm_quit = on confirm_quit = on
confirm_upgrade = off confirm_upgrade = off
day_change = on day_change = on
@ -60,9 +55,7 @@ day_change_message_1date = "-- %a, %d %b %Y --"
day_change_message_2dates = "-- %%a, %%d %%b %%Y (%a, %d %b %Y) --" day_change_message_2dates = "-- %%a, %%d %%b %%Y (%a, %d %b %Y) --"
eat_newline_glitch = off eat_newline_glitch = off
emphasized_attributes = "" emphasized_attributes = ""
highlight = "(?-i)ben" highlight = "ben"
highlight_disable_regex = ""
highlight_prefix = on
highlight_regex = "" highlight_regex = ""
highlight_tags = "" highlight_tags = ""
hotlist_add_conditions = "${away} || ${buffer.num_displayed} == 0" hotlist_add_conditions = "${away} || ${buffer.num_displayed} == 0"
@ -76,12 +69,11 @@ hotlist_names_merged_buffers = off
hotlist_prefix = "" hotlist_prefix = ""
hotlist_remove = merged hotlist_remove = merged
hotlist_short_names = on hotlist_short_names = on
hotlist_sort = "-priority,time,time_usec" hotlist_sort = group_time_asc
hotlist_suffix = "" hotlist_suffix = ""
hotlist_unique_numbers = on hotlist_unique_numbers = on
hotlist_update_on_buffer_switch = on hotlist_update_on_buffer_switch = on
input_cursor_scroll = 20 input_cursor_scroll = 20
input_multiline_lead_linebreak = on
input_share = none input_share = none
input_share_overwrite = off input_share_overwrite = off
input_undo_max = 32 input_undo_max = 32
@ -96,15 +88,17 @@ jump_smart_back_to_buffer = on
key_bind_safe = on key_bind_safe = on
key_grab_delay = 800 key_grab_delay = 800
mouse = on mouse = on
mouse_timer_delay = 100
nick_color_force = "" nick_color_force = ""
nick_color_hash = djb2 nick_color_hash = djb2
nick_color_hash_salt = "" nick_color_hash_salt = ""
nick_color_stop_chars = "_|[" nick_color_stop_chars = "_|["
nick_prefix = "" nick_prefix = ""
nick_suffix = "" nick_suffix = ""
paste_auto_add_newline = on
paste_bracketed = on paste_bracketed = on
paste_bracketed_timer_delay = 10 paste_bracketed_timer_delay = 10
paste_max_lines = 100 paste_max_lines = 1
prefix_action = " *" prefix_action = " *"
prefix_align = right prefix_align = right
prefix_align_max = 15 prefix_align_max = 15
@ -156,15 +150,15 @@ chat_bg = default
chat_buffer = white chat_buffer = white
chat_channel = white chat_channel = white
chat_day_change = cyan chat_day_change = cyan
chat_delimiters = 22 chat_delimiters = green
chat_highlight = yellow chat_highlight = yellow
chat_highlight_bg = darkgray chat_highlight_bg = darkgray
chat_host = cyan chat_host = cyan
chat_inactive_buffer = default chat_inactive_buffer = default
chat_inactive_window = 240 chat_inactive_window = default
chat_nick = lightcyan chat_nick = lightcyan
chat_nick_colors = "cyan,magenta,green,brown,lightblue,lightcyan,lightgreen,blue,22,31,35,38,40,49,63,67,70,87,99,112,119,130,136,138,142,146,148,160,162,167,169,174,176,178,184,186,191,202,206,210,212,215,225,226,247" chat_nick_colors = "cyan,magenta,green,brown,lightblue,lightcyan,lightgreen,blue,22,31,35,38,40,49,63,67,70,87,99,112,119,130,136,138,142,146,148,160,162,167,169,174,176,178,184,186,191,202,206,210,212,215,225,226,247"
chat_nick_offline = 242 chat_nick_offline = blue
chat_nick_offline_highlight = default chat_nick_offline_highlight = default
chat_nick_offline_highlight_bg = blue chat_nick_offline_highlight_bg = blue
chat_nick_other = cyan chat_nick_other = cyan
@ -183,22 +177,19 @@ chat_prefix_suffix = 235
chat_read_marker = magenta chat_read_marker = magenta
chat_read_marker_bg = default chat_read_marker_bg = default
chat_server = brown chat_server = brown
chat_status_disabled = red
chat_status_enabled = green
chat_tags = red chat_tags = red
chat_text_found = yellow chat_text_found = 130
chat_text_found_bg = lightmagenta chat_text_found_bg = lightmagenta
chat_time = default chat_time = default
chat_time_delimiters = brown chat_time_delimiters = brown
chat_value = cyan chat_value = cyan
chat_value_null = blue chat_value_null = blue
emphasized = yellow emphasized = 130
emphasized_bg = 54 emphasized_bg = magenta
eval_syntax_colors = "green,lightred,lightblue,lightmagenta,yellow,cyan"
input_actions = lightgreen input_actions = lightgreen
input_text_not_found = red input_text_not_found = red
item_away = yellow item_away = yellow
nicklist_away = 240 nicklist_away = cyan
nicklist_group = green nicklist_group = green
separator = blue separator = blue
status_count_highlight = magenta status_count_highlight = magenta
@ -206,25 +197,22 @@ status_count_msg = brown
status_count_other = default status_count_other = default
status_count_private = green status_count_private = green
status_data_highlight = lightmagenta status_data_highlight = lightmagenta
status_data_msg = yellow status_data_msg = 130
status_data_other = default status_data_other = default
status_data_private = lightgreen status_data_private = lightgreen
status_filter = green status_filter = green
status_modes = default
status_more = 130 status_more = 130
status_mouse = green status_mouse = green
status_name = white status_name = white
status_name_insecure = lightmagenta status_name_ssl = lightgreen
status_name_tls = white
status_nicklist_count = default status_nicklist_count = default
status_number = yellow status_number = 130
status_time = default status_time = default
[completion] [completion]
base_word_until_cursor = on base_word_until_cursor = on
case_sensitive = on
command_inline = on command_inline = on
default_template = "%(nicks)|%(irc_channels)|%(completion_script)|%(bitlbee_completion)" default_template = "%(nicks)|%(irc_channels)|%(completion_script)"
nick_add_space = on nick_add_space = on
nick_case_sensitive = off nick_case_sensitive = off
nick_completer = ": " nick_completer = ": "
@ -357,9 +345,9 @@ rootstatus.separator = off
rootstatus.size = 1 rootstatus.size = 1
rootstatus.size_max = 0 rootstatus.size_max = 0
rootstatus.type = root rootstatus.type = root
title.color_bg = 234 title.color_bg = black
title.color_bg_inactive = 232 title.color_bg_inactive = darkgray
title.color_delim = cyan title.color_delim = lightcyan
title.color_fg = default title.color_fg = default
title.conditions = "" title.conditions = ""
title.filling_left_right = vertical title.filling_left_right = vertical
@ -373,263 +361,73 @@ title.size = 0
title.size_max = 0 title.size_max = 0
title.type = window title.type = window
[custom_bar_item]
[layout] [layout]
default.buffer = "core;weechat;1" default.buffer = "core;weechat;1"
default.buffer = "perl;highmon;2" default.buffer = "perl;highmon;1"
default.buffer = "python;slack.remotes;3" default.window = "1;0;15;1;-;-"
default.buffer = "python;slack.remotes.#general;4" default.window = "2;1;0;0;irc;tilde.#team"
default.buffer = "python;slack.remotes.#irc;5" default.window = "3;1;0;0;core;weechat"
default.buffer = "python;slack.remotes.#metodo-miyagi;6"
default.buffer = "python;snote;7"
default.buffer = "python;snote-bots;8"
default.buffer = "python;snote-conn;9"
default.buffer = "python;snote-junk;10"
default.buffer = "python;snote-oper;11"
default.buffer = "relay;relay.list;12"
default.buffer = "irc;server.bitlbee;13"
default.buffer = "irc;bitlbee.&bitlbee;14"
default.buffer = "irc;bitlbee.&grouptext;15"
default.buffer = "irc;bitlbee.&hmm;16"
default.buffer = "irc;bitlbee.&SMS;17"
default.buffer = "irc;bitlbee.&tilde;18"
default.buffer = "irc;bitlbee.#biboumi;19"
default.buffer = "irc;bitlbee.#btlgeneral;20"
default.buffer = "irc;bitlbee.#cifuzofu;21"
default.buffer = "irc;bitlbee.#conversations;22"
default.buffer = "irc;bitlbee.#ejabberd;23"
default.buffer = "irc;bitlbee.#gritty;24"
default.buffer = "irc;bitlbee.#harris;25"
default.buffer = "irc;bitlbee.#hmm;26"
default.buffer = "irc;bitlbee.#pocketdragons;27"
default.buffer = "irc;bitlbee.#soprani.ca;28"
default.buffer = "irc;bitlbee.#texto-plano;29"
default.buffer = "irc;bitlbee.#tilde.team;30"
default.buffer = "irc;bitlbee.#tilde.zone_ben;31"
default.buffer = "irc;bitlbee.#twitter_nebsirrah;32"
default.buffer = "irc;bitlbee.maddie;33"
default.buffer = "irc;bitlbee.philipp;34"
default.buffer = "irc;server.blinkenshell;35"
default.buffer = "irc;blinkenshell.#blinkenshell;36"
default.buffer = "irc;server.darwin;37"
default.buffer = "irc;darwin.#darwin;38"
default.buffer = "irc;server.ergo;39"
default.buffer = "irc;ergo.#ergo;40"
default.buffer = "irc;server.esper;41"
default.buffer = "irc;esper.#coders;42"
default.buffer = "irc;esper.#factorio;43"
default.buffer = "irc;esper.#lobby;44"
default.buffer = "irc;server.hashbang;45"
default.buffer = "irc;hashbang.#!;46"
default.buffer = "irc;hashbang.#!opers;47"
default.buffer = "irc;hashbang.#!social;48"
default.buffer = "irc;server.inspircd;49"
default.buffer = "irc;inspircd.#inspircd;50"
default.buffer = "irc;server.libera;51"
default.buffer = "irc;libera.#adventofcode;52"
default.buffer = "irc;libera.#adventofcode-spoilers;53"
default.buffer = "irc;libera.#ahti.space;54"
default.buffer = "irc;libera.##ben;55"
default.buffer = "irc;libera.#bitbot;56"
default.buffer = "irc;libera.##crime;57"
default.buffer = "irc;libera.##crustaceans;58"
default.buffer = "irc;libera.#csharp;59"
default.buffer = "irc;libera.##digbuild;60"
default.buffer = "irc;libera.#edist.ro;61"
default.buffer = "irc;libera.#fosshost;62"
default.buffer = "irc;libera.#fosshost-volunteers;63"
default.buffer = "irc;libera.#futel;64"
default.buffer = "irc;libera.#gitea;65"
default.buffer = "irc;libera.#glirc;66"
default.buffer = "irc;libera.#gopher;67"
default.buffer = "irc;libera.#ircpuzzles;68"
default.buffer = "irc;libera.#ircpuzzles-chat;69"
default.buffer = "irc;libera.#irctokens;70"
default.buffer = "irc;libera.#libera;71"
default.buffer = "irc;libera.#libera-announcements;72"
default.buffer = "irc;libera.#libera-atl;73"
default.buffer = "irc;libera.#libera-audit;74"
default.buffer = "irc;libera.#libera-beer;75"
default.buffer = "irc;libera.#libera-communities;76"
default.buffer = "irc;libera.#libera-dev;77"
default.buffer = "irc;libera.#libera-docs;78"
default.buffer = "irc;libera.#libera-dragons;79"
default.buffer = "irc;libera.#libera-eng;80"
default.buffer = "irc;libera.#libera-matrix-internal;81"
default.buffer = "irc;libera.#libera-mentoring;82"
default.buffer = "irc;libera.#libera-naughtiness;83"
default.buffer = "irc;libera.#libera-org;84"
default.buffer = "irc;libera.#libera-pac;85"
default.buffer = "irc;libera.#libera-social;86"
default.buffer = "irc;libera.#libera-spam;87"
default.buffer = "irc;libera.#libera-status;88"
default.buffer = "irc;libera.#libera-tas;89"
default.buffer = "irc;libera.#lobsters;90"
default.buffer = "irc;libera.#mastodon;91"
default.buffer = "irc;libera.##oodnet;92"
default.buffer = "irc;libera.#ovh;93"
default.buffer = "irc;libera.#pleroma;94"
default.buffer = "irc;libera.##proxmox;95"
default.buffer = "irc;libera.#snowcone;96"
default.buffer = "irc;libera.#tilde.team;97"
default.buffer = "irc;libera.#tildebot;98"
default.buffer = "irc;libera.#ubuntu-devel;99"
default.buffer = "irc;libera.#weechat;100"
default.buffer = "irc;libera.#weechat-android;101"
default.buffer = "irc;libera.#werewolf;102"
default.buffer = "irc;libera.#xeserv;103"
default.buffer = "irc;server.liberta.casa;104"
default.buffer = "irc;liberta.casa.#libcasa.info;105"
default.buffer = "irc;liberta.casa.#mods;106"
default.buffer = "irc;liberta.casa.#universe;107"
default.buffer = "irc;server.oftc;108"
default.buffer = "irc;oftc.#bitlbee;109"
default.buffer = "irc;oftc.#debian-devel;110"
default.buffer = "irc;oftc.#fish;111"
default.buffer = "irc;server.pisslocal;112"
default.buffer = "irc;pisslocal.#opers;113"
default.buffer = "irc;pisslocal.#pissnet;114"
default.buffer = "irc;pisslocal.#services;115"
default.buffer = "irc;server.sdf;116"
default.buffer = "irc;sdf.#sdf;117"
default.buffer = "irc;sdf.#spanish;118"
default.buffer = "irc;server.slashnet;119"
default.buffer = "irc;slashnet.#gtlug;120"
default.buffer = "irc;server.snoonet;121"
default.buffer = "irc;snoonet.#help;122"
default.buffer = "irc;snoonet.#personalfinance;123"
default.buffer = "irc;snoonet.#snoonet;124"
default.buffer = "irc;server.thermite;125"
default.buffer = "irc;thermite.#armbian;126"
default.buffer = "irc;thermite.#dronebl;127"
default.buffer = "irc;thermite.#lowendtalk;128"
default.buffer = "irc;thermite.#networking;129"
default.buffer = "irc;server.tilde;130"
default.buffer = "irc;tilde.#.tilde;131"
default.buffer = "irc;tilde.#adventofcode;132"
default.buffer = "irc;tilde.#allhandsactive;133"
default.buffer = "irc;tilde.#anelki;134"
default.buffer = "irc;tilde.#ascii.town;135"
default.buffer = "irc;tilde.#aussie;136"
default.buffer = "irc;tilde.#binary-counting;137"
default.buffer = "irc;tilde.#bots;138"
default.buffer = "irc;tilde.#club;139"
default.buffer = "irc;tilde.#cosmic;140"
default.buffer = "irc;tilde.#counting;141"
default.buffer = "irc;tilde.#covid19;142"
default.buffer = "irc;tilde.#ctrl-c;143"
default.buffer = "irc;tilde.#dotnet;144"
default.buffer = "irc;tilde.#earthward;145"
default.buffer = "irc;tilde.#espanol;146"
default.buffer = "irc;tilde.#fr;147"
default.buffer = "irc;tilde.#gemini;148"
default.buffer = "irc;tilde.#gopher;149"
default.buffer = "irc;tilde.#helpdesk;150"
default.buffer = "irc;tilde.#idlerpg;151"
default.buffer = "irc;tilde.#linux;152"
default.buffer = "irc;tilde.#math;153"
default.buffer = "irc;tilde.#meta;154"
default.buffer = "irc;tilde.#minecraft;155"
default.buffer = "irc;tilde.#netnews;156"
default.buffer = "irc;tilde.#nsfw;157"
default.buffer = "irc;tilde.#opers;158"
default.buffer = "irc;tilde.#rw.rs;159"
default.buffer = "irc;tilde.#secret-sudoers;160"
default.buffer = "irc;tilde.#southlondon;161"
default.buffer = "irc;tilde.#team;162"
default.buffer = "irc;tilde.#thunix;163"
default.buffer = "irc;tilde.#tilde.zone-admin;164"
default.buffer = "irc;tilde.#tildebot;165"
default.buffer = "irc;tilde.#tildenet;166"
default.buffer = "irc;tilde.#tilderadio;167"
default.buffer = "irc;tilde.#tilderadio-djs;168"
default.buffer = "irc;tilde.#tildetel;169"
default.buffer = "irc;tilde.#topm;170"
default.buffer = "irc;tilde.#town;171"
default.buffer = "irc;tilde.#vim;172"
default.buffer = "irc;tilde.#wiki;173"
default.buffer = "irc;tilde.#xinu;174"
default.buffer = "irc;tilde.#ZfA;175"
default.buffer = "irc;server.town;176"
default.buffer = "irc;town.#admins;177"
default.buffer = "irc;town.#adventofcode;178"
default.buffer = "irc;town.#announcements;179"
default.buffer = "irc;town.#bots;180"
default.buffer = "irc;town.#counting;181"
default.buffer = "irc;town.#tildetown;182"
default.window = "1;0;20;1;-;-"
default.window = "2;1;0;0;irc;tilde.#topm"
default.window = "3;1;0;0;perl;highmon"
default.current = on default.current = on
[buffer]
[notify] [notify]
irc.server.liberta.casa = highlight irc.server.liberta.casa = highlight
irc.server.newnet = highlight irc.server.pisslocal = none
irc.server.tilde = highlight irc.server.tilde = highlight
perl.highmon = none perl.highmon = none
python.listbuffer = none python.listbuffer = none
python.snote = highlight
python.snote-bots = highlight
python.snote-conn = highlight
python.snote-junk = highlight
[filter] [filter]
irc_smart = on;*;irc_smart_filter;* irc_smart = on;*;irc_smart_filter;*
markov_bitbot = on;irc.tilde.*;irc_privmsg;^,m(\s|arkov)|^\[Markov\] markov_bitbot = on;irc.tilde.*;irc_privmsg;^,m(\s|arkov)|^\[Markov\]
[key] [key]
backspace = "/input delete_previous_char" ctrl-? = "/input delete_previous_char"
ctrl-_ = "/input undo" ctrl-A = "/input move_beginning_of_line"
ctrl-a = "/input move_beginning_of_line" ctrl-B = "/input move_previous_char"
ctrl-b = "/input move_previous_char" ctrl-C_ = "/input insert \x1F"
ctrl-c,_ = "/input insert \x1F" ctrl-Cb = "/input insert \x02"
ctrl-c,b = "/input insert \x02" ctrl-Cc = "/input insert \x03"
ctrl-c,c = "/input insert \x03" ctrl-Ci = "/input insert \x1D"
ctrl-c,i = "/input insert \x1D" ctrl-Co = "/input insert \x0F"
ctrl-c,o = "/input insert \x0F" ctrl-Cv = "/input insert \x16"
ctrl-c,v = "/input insert \x16" ctrl-D = "/input delete_next_char"
ctrl-d = "/input delete_next_char" ctrl-E = "/input move_end_of_line"
ctrl-down = "/input history_global_next" ctrl-F = "/input move_next_char"
ctrl-e = "/input move_end_of_line" ctrl-G = "/fzf"
ctrl-f = "/input move_next_char" ctrl-H = "/input delete_previous_char"
ctrl-f1 = "/bar scroll buflist * -100%" ctrl-I = "/input complete_next"
ctrl-f11 = "/bar scroll nicklist * -100%" ctrl-J = "/input return"
ctrl-f12 = "/bar scroll nicklist * +100%" ctrl-K = "/input delete_end_of_line"
ctrl-f2 = "/bar scroll buflist * +100%" ctrl-L = "/window refresh"
ctrl-k = "/input delete_end_of_line" ctrl-M = "/input return"
ctrl-l = "/window refresh" ctrl-N = "/buffer +1"
ctrl-left = "/input move_previous_word" ctrl-P = "/buffer -1"
ctrl-n = "/buffer +1" ctrl-R = "/input search_text"
ctrl-p = "/buffer -1" ctrl-Sctrl-U = "/input set_unread"
ctrl-r = "/input search_text_here" ctrl-T = "/input transpose_chars"
ctrl-right = "/input move_next_word" ctrl-U = "/input delete_beginning_of_line"
ctrl-s,ctrl-u = "/allbuf /buffer set unread" ctrl-W = "/input delete_previous_word"
ctrl-t = "/input transpose_chars" ctrl-X = "/input switch_active_buffer"
ctrl-u = "/input delete_beginning_of_line" ctrl-Y = "/input clipboard_paste"
ctrl-up = "/input history_global_previous" meta-ctrl-M = "/input insert \n"
ctrl-w = "/input delete_previous_word_whitespace" meta-meta-OP = "/bar scroll buflist * b"
ctrl-x = "/buffer switch" meta-meta-OQ = "/bar scroll buflist * e"
ctrl-y = "/input clipboard_paste" meta-meta2-11~ = "/bar scroll buflist * b"
delete = "/input delete_next_char" meta-meta2-12~ = "/bar scroll buflist * e"
down = "/input history_next" meta-meta2-1~ = "/window scroll_top"
end = "/input move_end_of_line" meta-meta2-23~ = "/bar scroll nicklist * b"
f1 = "/bar scroll buflist * -100%" meta-meta2-24~ = "/bar scroll nicklist * e"
f10 = "/bar scroll title * +30%" meta-meta2-4~ = "/window scroll_bottom"
f11 = "/bar scroll nicklist * -100%" meta-meta2-5~ = "/window scroll_up"
f12 = "/bar scroll nicklist * +100%" meta-meta2-6~ = "/window scroll_down"
f2 = "/bar scroll buflist * +100%" meta-meta2-7~ = "/window scroll_top"
f5 = "/buffer -1" meta-meta2-8~ = "/window scroll_bottom"
f6 = "/buffer +1" meta-meta2-A = "/buffer -1"
f7 = "/window -1" meta-meta2-B = "/buffer +1"
f8 = "/window +1" meta-meta2-C = "/buffer +1"
f9 = "/bar scroll title * -30%" meta-meta2-D = "/buffer -1"
home = "/input move_beginning_of_line"
left = "/input move_previous_char"
meta-- = "/filter toggle @" meta-- = "/filter toggle @"
meta-/ = "/buffer jump last_displayed" meta-/ = "/input jump_last_buffer_displayed"
meta-0 = "/buffer *10" meta-0 = "/buffer *10"
meta-1 = "/buffer *1" meta-1 = "/buffer *1"
meta-2 = "/buffer *2" meta-2 = "/buffer *2"
@ -640,223 +438,255 @@ meta-6 = "/buffer *6"
meta-7 = "/buffer *7" meta-7 = "/buffer *7"
meta-8 = "/buffer *8" meta-8 = "/buffer *8"
meta-9 = "/buffer *9" meta-9 = "/buffer *9"
meta-< = "/buffer jump prev_visited" meta-< = "/input jump_previously_visited_buffer"
meta-= = "/filter toggle" meta-= = "/filter toggle"
meta-> = "/buffer jump next_visited" meta-> = "/input jump_next_visited_buffer"
meta-B = "/buflist toggle" meta-B = "/buflist toggle"
meta-C = "/buffer &SMS" meta-C = "/buffer &SMS"
meta-J = "/buffer server.libera"
meta-N = "/bar toggle nicklist" meta-N = "/bar toggle nicklist"
meta-R = "/input delete_input" meta-OA = "/input history_global_previous"
meta-T = "/buffer server.libera" meta-OB = "/input history_global_next"
meta-OC = "/input move_next_word"
meta-OD = "/input move_previous_word"
meta-OF = "/input move_end_of_line"
meta-OH = "/input move_beginning_of_line"
meta-OP = "/bar scroll buflist * -100%"
meta-OQ = "/bar scroll buflist * +100%"
meta-Oa = "/input history_global_previous"
meta-Ob = "/input history_global_next"
meta-Oc = "/input move_next_word"
meta-Od = "/input move_previous_word"
meta2-11^ = "/bar scroll buflist * -100%"
meta2-11~ = "/bar scroll buflist * -100%"
meta2-12^ = "/bar scroll buflist * +100%"
meta2-12~ = "/bar scroll buflist * +100%"
meta2-15~ = "/buffer -1"
meta2-17~ = "/buffer +1"
meta2-18~ = "/window -1"
meta2-19~ = "/window +1"
meta2-1;3A = "/buffer -1"
meta2-1;3B = "/buffer +1"
meta2-1;3C = "/buffer +1"
meta2-1;3D = "/buffer -1"
meta2-1;3F = "/window scroll_bottom"
meta2-1;3H = "/window scroll_top"
meta2-1;3P = "/bar scroll buflist * b"
meta2-1;3Q = "/bar scroll buflist * e"
meta2-1;5A = "/input history_global_previous"
meta2-1;5B = "/input history_global_next"
meta2-1;5C = "/input move_next_word"
meta2-1;5D = "/input move_previous_word"
meta2-1;5P = "/bar scroll buflist * -100%"
meta2-1;5Q = "/bar scroll buflist * +100%"
meta2-1~ = "/input move_beginning_of_line"
meta2-200~ = "/input paste_start"
meta2-201~ = "/input paste_stop"
meta2-20~ = "/bar scroll title * -30%"
meta2-21~ = "/bar scroll title * +30%"
meta2-23;3~ = "/bar scroll nicklist * b"
meta2-23;5~ = "/bar scroll nicklist * -100%"
meta2-23^ = "/bar scroll nicklist * -100%"
meta2-23~ = "/bar scroll nicklist * -100%"
meta2-24;3~ = "/bar scroll nicklist * e"
meta2-24;5~ = "/bar scroll nicklist * +100%"
meta2-24^ = "/bar scroll nicklist * +100%"
meta2-24~ = "/bar scroll nicklist * +100%"
meta2-3~ = "/input delete_next_char"
meta2-4~ = "/input move_end_of_line"
meta2-5;3~ = "/window scroll_up"
meta2-5~ = "/window page_up"
meta2-6;3~ = "/window scroll_down"
meta2-6~ = "/window page_down"
meta2-7~ = "/input move_beginning_of_line"
meta2-8~ = "/input move_end_of_line"
meta2-A = "/input history_previous"
meta2-B = "/input history_next"
meta2-C = "/input move_next_char"
meta2-D = "/input move_previous_char"
meta2-F = "/input move_end_of_line"
meta2-G = "/window page_down"
meta2-H = "/input move_beginning_of_line"
meta2-I = "/window page_up"
meta2-Z = "/input complete_previous"
meta2-[E = "/buffer -1"
meta-_ = "/input redo" meta-_ = "/input redo"
meta-a = "/buffer jump smart" meta-a = "/input jump_smart"
meta-b = "/input move_previous_word" meta-b = "/input move_previous_word"
meta-backspace = "/input delete_previous_word"
meta-c = "/buffer &bitlbee" meta-c = "/buffer &bitlbee"
meta-ctrl-k = "/input delete_end_of_input"
meta-ctrl-u = "/input delete_beginning_of_input"
meta-d = "/input delete_next_word" meta-d = "/input delete_next_word"
meta-down = "/buffer +1"
meta-end = "/window scroll_bottom"
meta-f = "/input move_next_word" meta-f = "/input move_next_word"
meta-f1 = "/bar scroll buflist * b"
meta-f11 = "/bar scroll nicklist * b"
meta-f12 = "/bar scroll nicklist * e"
meta-f2 = "/bar scroll buflist * e"
meta-g = "/go" meta-g = "/go"
meta-h,meta-R = "/hotlist restore -all" meta-hmeta-R = "/input hotlist_restore_all"
meta-h,meta-c = "/hotlist clear" meta-hmeta-c = "/input hotlist_clear"
meta-h,meta-m = "/hotlist remove" meta-hmeta-m = "/input hotlist_remove_buffer"
meta-h,meta-r = "/hotlist restore" meta-hmeta-r = "/input hotlist_restore_buffer"
meta-home = "/window scroll_top" meta-j = "/buffer server.tilde"
meta-j,0,1 = "/buffer *1" meta-jmeta-f = "/buffer -"
meta-j,0,2 = "/buffer *2" meta-jmeta-l = "/buffer +"
meta-j,0,3 = "/buffer *3" meta-jmeta-r = "/server raw"
meta-j,0,4 = "/buffer *4" meta-jmeta-s = "/server jump"
meta-j,0,5 = "/buffer *5" meta-j01 = "/buffer 1"
meta-j,0,6 = "/buffer *6" meta-j02 = "/buffer 2"
meta-j,0,7 = "/buffer *7" meta-j03 = "/buffer 3"
meta-j,0,8 = "/buffer *8" meta-j04 = "/buffer 4"
meta-j,0,9 = "/buffer *9" meta-j05 = "/buffer 5"
meta-j,1,0 = "/buffer *10" meta-j06 = "/buffer 6"
meta-j,1,1 = "/buffer *11" meta-j07 = "/buffer 7"
meta-j,1,2 = "/buffer *12" meta-j08 = "/buffer 8"
meta-j,1,3 = "/buffer *13" meta-j09 = "/buffer 9"
meta-j,1,4 = "/buffer *14" meta-j10 = "/buffer 10"
meta-j,1,5 = "/buffer *15" meta-j11 = "/buffer 11"
meta-j,1,6 = "/buffer *16" meta-j12 = "/buffer 12"
meta-j,1,7 = "/buffer *17" meta-j13 = "/buffer 13"
meta-j,1,8 = "/buffer *18" meta-j14 = "/buffer 14"
meta-j,1,9 = "/buffer *19" meta-j15 = "/buffer 15"
meta-j,2,0 = "/buffer *20" meta-j16 = "/buffer 16"
meta-j,2,1 = "/buffer *21" meta-j17 = "/buffer 17"
meta-j,2,2 = "/buffer *22" meta-j18 = "/buffer 18"
meta-j,2,3 = "/buffer *23" meta-j19 = "/buffer 19"
meta-j,2,4 = "/buffer *24" meta-j20 = "/buffer 20"
meta-j,2,5 = "/buffer *25" meta-j21 = "/buffer 21"
meta-j,2,6 = "/buffer *26" meta-j22 = "/buffer 22"
meta-j,2,7 = "/buffer *27" meta-j23 = "/buffer 23"
meta-j,2,8 = "/buffer *28" meta-j24 = "/buffer 24"
meta-j,2,9 = "/buffer *29" meta-j25 = "/buffer 25"
meta-j,3,0 = "/buffer *30" meta-j26 = "/buffer 26"
meta-j,3,1 = "/buffer *31" meta-j27 = "/buffer 27"
meta-j,3,2 = "/buffer *32" meta-j28 = "/buffer 28"
meta-j,3,3 = "/buffer *33" meta-j29 = "/buffer 29"
meta-j,3,4 = "/buffer *34" meta-j30 = "/buffer 30"
meta-j,3,5 = "/buffer *35" meta-j31 = "/buffer 31"
meta-j,3,6 = "/buffer *36" meta-j32 = "/buffer 32"
meta-j,3,7 = "/buffer *37" meta-j33 = "/buffer 33"
meta-j,3,8 = "/buffer *38" meta-j34 = "/buffer 34"
meta-j,3,9 = "/buffer *39" meta-j35 = "/buffer 35"
meta-j,4,0 = "/buffer *40" meta-j36 = "/buffer 36"
meta-j,4,1 = "/buffer *41" meta-j37 = "/buffer 37"
meta-j,4,2 = "/buffer *42" meta-j38 = "/buffer 38"
meta-j,4,3 = "/buffer *43" meta-j39 = "/buffer 39"
meta-j,4,4 = "/buffer *44" meta-j40 = "/buffer 40"
meta-j,4,5 = "/buffer *45" meta-j41 = "/buffer 41"
meta-j,4,6 = "/buffer *46" meta-j42 = "/buffer 42"
meta-j,4,7 = "/buffer *47" meta-j43 = "/buffer 43"
meta-j,4,8 = "/buffer *48" meta-j44 = "/buffer 44"
meta-j,4,9 = "/buffer *49" meta-j45 = "/buffer 45"
meta-j,5,0 = "/buffer *50" meta-j46 = "/buffer 46"
meta-j,5,1 = "/buffer *51" meta-j47 = "/buffer 47"
meta-j,5,2 = "/buffer *52" meta-j48 = "/buffer 48"
meta-j,5,3 = "/buffer *53" meta-j49 = "/buffer 49"
meta-j,5,4 = "/buffer *54" meta-j50 = "/buffer 50"
meta-j,5,5 = "/buffer *55" meta-j51 = "/buffer 51"
meta-j,5,6 = "/buffer *56" meta-j52 = "/buffer 52"
meta-j,5,7 = "/buffer *57" meta-j53 = "/buffer 53"
meta-j,5,8 = "/buffer *58" meta-j54 = "/buffer 54"
meta-j,5,9 = "/buffer *59" meta-j55 = "/buffer 55"
meta-j,6,0 = "/buffer *60" meta-j56 = "/buffer 56"
meta-j,6,1 = "/buffer *61" meta-j57 = "/buffer 57"
meta-j,6,2 = "/buffer *62" meta-j58 = "/buffer 58"
meta-j,6,3 = "/buffer *63" meta-j59 = "/buffer 59"
meta-j,6,4 = "/buffer *64" meta-j60 = "/buffer 60"
meta-j,6,5 = "/buffer *65" meta-j61 = "/buffer 61"
meta-j,6,6 = "/buffer *66" meta-j62 = "/buffer 62"
meta-j,6,7 = "/buffer *67" meta-j63 = "/buffer 63"
meta-j,6,8 = "/buffer *68" meta-j64 = "/buffer 64"
meta-j,6,9 = "/buffer *69" meta-j65 = "/buffer 65"
meta-j,7,0 = "/buffer *70" meta-j66 = "/buffer 66"
meta-j,7,1 = "/buffer *71" meta-j67 = "/buffer 67"
meta-j,7,2 = "/buffer *72" meta-j68 = "/buffer 68"
meta-j,7,3 = "/buffer *73" meta-j69 = "/buffer 69"
meta-j,7,4 = "/buffer *74" meta-j70 = "/buffer 70"
meta-j,7,5 = "/buffer *75" meta-j71 = "/buffer 71"
meta-j,7,6 = "/buffer *76" meta-j72 = "/buffer 72"
meta-j,7,7 = "/buffer *77" meta-j73 = "/buffer 73"
meta-j,7,8 = "/buffer *78" meta-j74 = "/buffer 74"
meta-j,7,9 = "/buffer *79" meta-j75 = "/buffer 75"
meta-j,8,0 = "/buffer *80" meta-j76 = "/buffer 76"
meta-j,8,1 = "/buffer *81" meta-j77 = "/buffer 77"
meta-j,8,2 = "/buffer *82" meta-j78 = "/buffer 78"
meta-j,8,3 = "/buffer *83" meta-j79 = "/buffer 79"
meta-j,8,4 = "/buffer *84" meta-j80 = "/buffer 80"
meta-j,8,5 = "/buffer *85" meta-j81 = "/buffer 81"
meta-j,8,6 = "/buffer *86" meta-j82 = "/buffer 82"
meta-j,8,7 = "/buffer *87" meta-j83 = "/buffer 83"
meta-j,8,8 = "/buffer *88" meta-j84 = "/buffer 84"
meta-j,8,9 = "/buffer *89" meta-j85 = "/buffer 85"
meta-j,9,0 = "/buffer *90" meta-j86 = "/buffer 86"
meta-j,9,1 = "/buffer *91" meta-j87 = "/buffer 87"
meta-j,9,2 = "/buffer *92" meta-j88 = "/buffer 88"
meta-j,9,3 = "/buffer *93" meta-j89 = "/buffer 89"
meta-j,9,4 = "/buffer *94" meta-j90 = "/buffer 90"
meta-j,9,5 = "/buffer *95" meta-j91 = "/buffer 91"
meta-j,9,6 = "/buffer *96" meta-j92 = "/buffer 92"
meta-j,9,7 = "/buffer *97" meta-j93 = "/buffer 93"
meta-j,9,8 = "/buffer *98" meta-j94 = "/buffer 94"
meta-j,9,9 = "/buffer *99" meta-j95 = "/buffer 95"
meta-j,meta-f = "/buffer -" meta-j96 = "/buffer 96"
meta-j,meta-l = "/buffer +" meta-j97 = "/buffer 97"
meta-j,meta-r = "/server raw" meta-j98 = "/buffer 98"
meta-j,meta-s = "/server jump" meta-j99 = "/buffer 99"
meta-k = "/input grab_key_command" meta-k = "/input grab_key_command"
meta-l = "/window bare" meta-l = "/window bare"
meta-left = "/buffer -1"
meta-m = "/mute mouse toggle" meta-m = "/mute mouse toggle"
meta-n = "/window scroll_next_highlight" meta-n = "/window scroll_next_highlight"
meta-p = "/window scroll_previous_highlight" meta-p = "/window scroll_previous_highlight"
meta-pgdn = "/window scroll_down"
meta-pgup = "/window scroll_up"
meta-r = "/input delete_line" meta-r = "/input delete_line"
meta-return = "/input insert \n"
meta-right = "/buffer +1"
meta-s = "/mute spell toggle" meta-s = "/mute spell toggle"
meta-t = "/buffer server.tilde"
meta-u = "/window scroll_unread" meta-u = "/window scroll_unread"
meta-up = "/buffer -1" meta-wmeta-meta2-A = "/window up"
meta-w,meta-b = "/window balance" meta-wmeta-meta2-B = "/window down"
meta-w,meta-down = "/window down" meta-wmeta-meta2-C = "/window right"
meta-w,meta-left = "/window left" meta-wmeta-meta2-D = "/window left"
meta-w,meta-right = "/window right" meta-wmeta2-1;3A = "/window up"
meta-w,meta-s = "/window swap" meta-wmeta2-1;3B = "/window down"
meta-w,meta-up = "/window up" meta-wmeta2-1;3C = "/window right"
meta-x = "/buffer zoom" meta-wmeta2-1;3D = "/window left"
meta-wmeta-b = "/window balance"
meta-wmeta-s = "/window swap"
meta-x = "/input zoom_merged_buffer"
meta-z = "/window zoom" meta-z = "/window zoom"
pgdn = "/window page_down" ctrl-_ = "/input undo"
pgup = "/window page_up"
return = "/input return"
right = "/input move_next_char"
shift-down = "/input move_next_line"
shift-end = "/input move_end_of_input"
shift-home = "/input move_beginning_of_input"
shift-left = "/input move_previous_char"
shift-right = "/input move_next_char"
shift-tab = "/input complete_previous"
shift-up = "/input move_previous_line"
tab = "/input complete_next"
up = "/input history_previous"
[key_search] [key_search]
ctrl-q = "/input search_stop" ctrl-I = "/input search_switch_where"
ctrl-r = "/input search_switch_regex" ctrl-J = "/input search_stop"
down = "/input search_next" ctrl-M = "/input search_stop"
ctrl-Q = "/input search_stop"
ctrl-R = "/input search_switch_regex"
meta2-A = "/input search_previous"
meta2-B = "/input search_next"
meta-c = "/input search_switch_case" meta-c = "/input search_switch_case"
return = "/input search_stop_here"
tab = "/input search_switch_where"
up = "/input search_previous"
[key_histsearch]
ctrl-o = "/input history_use_get_next"
ctrl-q = "/input search_stop"
ctrl-r = "/input search_previous"
ctrl-s = "/input search_next"
ctrl-x = "/input search_switch_regex"
down = "/input search_next"
meta-c = "/input search_switch_case"
return = "/input search_stop_here"
tab = "/input search_switch_where"
up = "/input search_previous"
[key_cursor] [key_cursor]
ctrl-J = "/cursor stop"
ctrl-M = "/cursor stop"
meta-meta2-A = "/cursor move area_up"
meta-meta2-B = "/cursor move area_down"
meta-meta2-C = "/cursor move area_right"
meta-meta2-D = "/cursor move area_left"
meta2-1;3A = "/cursor move area_up"
meta2-1;3B = "/cursor move area_down"
meta2-1;3C = "/cursor move area_right"
meta2-1;3D = "/cursor move area_left"
meta2-A = "/cursor move up"
meta2-B = "/cursor move down"
meta2-C = "/cursor move right"
meta2-D = "/cursor move left"
@chat(python.*):D = "hsignal:slack_cursor_delete" @chat(python.*):D = "hsignal:slack_cursor_delete"
@chat(python.*):L = "hsignal:slack_cursor_linkarchive" @chat(python.*):L = "hsignal:slack_cursor_linkarchive"
@chat(python.*):M = "hsignal:slack_cursor_message" @chat(python.*):M = "hsignal:slack_cursor_message"
@chat(python.*):R = "hsignal:slack_cursor_reply" @chat(python.*):R = "hsignal:slack_cursor_reply"
@chat(python.*):T = "hsignal:slack_cursor_thread" @chat(python.*):T = "hsignal:slack_cursor_thread"
@chat:Q = "hsignal:chat_quote_time_prefix_message;/cursor stop"
@chat:l = "hsignal:chat_quote_focused_line;/cursor stop"
@chat:m = "hsignal:chat_quote_message;/cursor stop"
@chat:q = "hsignal:chat_quote_prefix_message;/cursor stop"
@item(buffer_nicklist):K = "/window ${_window_number};/kickban ${nick}" @item(buffer_nicklist):K = "/window ${_window_number};/kickban ${nick}"
@item(buffer_nicklist):b = "/window ${_window_number};/ban ${nick}" @item(buffer_nicklist):b = "/window ${_window_number};/ban ${nick}"
@item(buffer_nicklist):k = "/window ${_window_number};/kick ${nick}" @item(buffer_nicklist):k = "/window ${_window_number};/kick ${nick}"
@item(buffer_nicklist):q = "/window ${_window_number};/query ${nick};/cursor stop" @item(buffer_nicklist):q = "/window ${_window_number};/query ${nick};/cursor stop"
@item(buffer_nicklist):w = "/window ${_window_number};/whois ${nick}" @item(buffer_nicklist):w = "/window ${_window_number};/whois ${nick}"
down = "/cursor move down" @chat:Q = "hsignal:chat_quote_time_prefix_message;/cursor stop"
left = "/cursor move left" @chat:m = "hsignal:chat_quote_message;/cursor stop"
meta-down = "/cursor move area_down" @chat:q = "hsignal:chat_quote_prefix_message;/cursor stop"
meta-left = "/cursor move area_left"
meta-right = "/cursor move area_right"
meta-up = "/cursor move area_up"
return = "/cursor stop"
right = "/cursor move right"
up = "/cursor move up"
[key_mouse] [key_mouse]
@*:button3 = "/cursor go ${_x},${_y}"
@bar(buflist):ctrl-wheeldown = "hsignal:buflist_mouse" @bar(buflist):ctrl-wheeldown = "hsignal:buflist_mouse"
@bar(buflist):ctrl-wheelup = "hsignal:buflist_mouse" @bar(buflist):ctrl-wheelup = "hsignal:buflist_mouse"
@bar(input):button2 = "/input grab_mouse_area" @bar(input):button2 = "/input grab_mouse_area"
@ -864,30 +694,19 @@ up = "/cursor move up"
@bar(nicklist):button1-gesture-down-long = "/bar scroll nicklist ${_window_number} e" @bar(nicklist):button1-gesture-down-long = "/bar scroll nicklist ${_window_number} e"
@bar(nicklist):button1-gesture-up = "/bar scroll nicklist ${_window_number} -100%" @bar(nicklist):button1-gesture-up = "/bar scroll nicklist ${_window_number} -100%"
@bar(nicklist):button1-gesture-up-long = "/bar scroll nicklist ${_window_number} b" @bar(nicklist):button1-gesture-up-long = "/bar scroll nicklist ${_window_number} b"
@bar:wheeldown = "/bar scroll ${_bar_name} ${_window_number} +20%"
@bar:wheelup = "/bar scroll ${_bar_name} ${_window_number} -20%"
@chat(fset.fset):button1 = "/window ${_window_number};/fset -go ${_chat_line_y}" @chat(fset.fset):button1 = "/window ${_window_number};/fset -go ${_chat_line_y}"
@chat(fset.fset):button2* = "hsignal:fset_mouse" @chat(fset.fset):button2* = "hsignal:fset_mouse"
@chat(fset.fset):wheeldown = "/fset -down 5" @chat(fset.fset):wheeldown = "/fset -down 5"
@chat(fset.fset):wheelup = "/fset -up 5" @chat(fset.fset):wheelup = "/fset -up 5"
@chat(irc.list_*):button1 = "/window ${_window_number};/list -go ${_chat_line_y}" @chat(perl.iset):button1 = "hsignal:iset_mouse"
@chat(irc.list_*):button2* = "hsignal:irc_list_mouse" @chat(perl.iset):button2* = "hsignal:iset_mouse"
@chat(irc.list_*):wheeldown = "/list -down 5" @chat(perl.iset):wheeldown = "/repeat 5 /iset **down"
@chat(irc.list_*):wheelup = "/list -up 5" @chat(perl.iset):wheelup = "/repeat 5 /iset **up"
@chat(python.*):button2 = "hsignal:slack_mouse" @chat(python.*):button2 = "hsignal:slack_mouse"
@chat(script.scripts):button1 = "/window ${_window_number};/script go ${_chat_line_y}" @chat(script.scripts):button1 = "/window ${_window_number};/script go ${_chat_line_y}"
@chat(script.scripts):button2 = "/window ${_window_number};/script go ${_chat_line_y};/script installremove -q ${script_name_with_extension}" @chat(script.scripts):button2 = "/window ${_window_number};/script go ${_chat_line_y};/script installremove -q ${script_name_with_extension}"
@chat(script.scripts):wheeldown = "/script down 5" @chat(script.scripts):wheeldown = "/script down 5"
@chat(script.scripts):wheelup = "/script up 5" @chat(script.scripts):wheelup = "/script up 5"
@chat:button1 = "/window ${_window_number}"
@chat:button1-gesture-left = "/window ${_window_number};/buffer -1"
@chat:button1-gesture-left-long = "/window ${_window_number};/buffer 1"
@chat:button1-gesture-right = "/window ${_window_number};/buffer +1"
@chat:button1-gesture-right-long = "/window ${_window_number};/buffer +"
@chat:ctrl-wheeldown = "/window scroll_horiz -window ${_window_number} +10%"
@chat:ctrl-wheelup = "/window scroll_horiz -window ${_window_number} -10%"
@chat:wheeldown = "/window scroll_down -window ${_window_number}"
@chat:wheelup = "/window scroll_up -window ${_window_number}"
@item(buffer_nicklist):button1 = "/window ${_window_number};/query ${nick}" @item(buffer_nicklist):button1 = "/window ${_window_number};/query ${nick}"
@item(buffer_nicklist):button1-gesture-left = "/window ${_window_number};/kick ${nick}" @item(buffer_nicklist):button1-gesture-left = "/window ${_window_number};/kick ${nick}"
@item(buffer_nicklist):button1-gesture-left-long = "/window ${_window_number};/kickban ${nick}" @item(buffer_nicklist):button1-gesture-left-long = "/window ${_window_number};/kickban ${nick}"
@ -899,7 +718,15 @@ up = "/cursor move up"
@item(buflist2):button2* = "hsignal:buflist_mouse" @item(buflist2):button2* = "hsignal:buflist_mouse"
@item(buflist3):button1* = "hsignal:buflist_mouse" @item(buflist3):button1* = "hsignal:buflist_mouse"
@item(buflist3):button2* = "hsignal:buflist_mouse" @item(buflist3):button2* = "hsignal:buflist_mouse"
@item(buflist4):button1* = "hsignal:buflist_mouse" @bar:wheeldown = "/bar scroll ${_bar_name} ${_window_number} +20%"
@item(buflist4):button2* = "hsignal:buflist_mouse" @bar:wheelup = "/bar scroll ${_bar_name} ${_window_number} -20%"
@item(buflist5):button1* = "hsignal:buflist_mouse" @chat:button1 = "/window ${_window_number}"
@item(buflist5):button2* = "hsignal:buflist_mouse" @chat:button1-gesture-left = "/window ${_window_number};/buffer -1"
@chat:button1-gesture-left-long = "/window ${_window_number};/buffer 1"
@chat:button1-gesture-right = "/window ${_window_number};/buffer +1"
@chat:button1-gesture-right-long = "/window ${_window_number};/input jump_last_buffer"
@chat:ctrl-wheeldown = "/window scroll_horiz -window ${_window_number} +10%"
@chat:ctrl-wheelup = "/window scroll_horiz -window ${_window_number} -10%"
@chat:wheeldown = "/window scroll_down -window ${_window_number}"
@chat:wheelup = "/window scroll_up -window ${_window_number}"
@*:button3 = "/cursor go ${_x},${_y}"

View File

@ -6,7 +6,7 @@
# #
# Use commands like /set or /fset to change settings in WeeChat. # Use commands like /set or /fset to change settings in WeeChat.
# #
# For more info, see: https://weechat.org/doc/weechat/quickstart/ # For more info, see: https://weechat.org/doc/quickstart/
# #
[look] [look]
@ -17,7 +17,7 @@ pv_tags = "notify_private"
[color] [color]
status_aborted = lightred status_aborted = lightred
status_active = lightblue status_active = lightblue
status_connecting = yellow status_connecting = 130
status_done = lightgreen status_done = lightgreen
status_failed = lightred status_failed = lightred
status_waiting = lightcyan status_waiting = lightcyan
@ -28,7 +28,7 @@ text_selected = white
[network] [network]
blocksize = 65536 blocksize = 65536
fast_send = on fast_send = on
own_ip = "198.108.77.243" own_ip = "167.114.7.65"
port_range = "42069" port_range = "42069"
send_ack = on send_ack = on
speed_limit_recv = 0 speed_limit_recv = 0