aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorHsieh Chin Fan <pham@topo.tw>2024-12-03 17:33:13 +0800
committerHsieh Chin Fan <pham@topo.tw>2024-12-03 17:33:13 +0800
commitd1b57c1d68fa60a4a67c208f29b739ef0f20d5c5 (patch)
treecb7d281af1ae22efe00a2f10394d6680aab9dfbf
parent152ecc894dd24cac6934a10f26f0fcce8445c2ea (diff)
Update
-rw-r--r--alias5
-rw-r--r--bin/log/shellrc2
-rwxr-xr-xbin/mail/append_authorized_key.sh2
-rwxr-xr-xbin/mail/comment.sh41
-rw-r--r--misc/pacman/list62
-rw-r--r--mutt/default2
-rw-r--r--mutt/muttrc.topo134
-rw-r--r--snippets/bash_read_from_pipe4
-rw-r--r--vim/init/highlight.vim2
9 files changed, 182 insertions, 72 deletions
diff --git a/alias b/alias
index a117258..09f3ae1 100644
--- a/alias
+++ b/alias
@@ -22,7 +22,7 @@ alias zsh.sourced='zsh -o SOURCE_TRACE'
22 22
23# }}} 23# }}}
24# CUSTOM HELPER {{{ 24# CUSTOM HELPER {{{
25cdh() { cd $SETTING_DIR/$@; } 25cdh() { set -x; cd $SETTING_DIR/${*// //}; set +x; }
26alias chh="tig -C $SETTING_DIR status" 26alias chh="tig -C $SETTING_DIR status"
27# }}} 27# }}}
28# Text Encode/Decode{{{ 28# Text Encode/Decode{{{
@@ -51,7 +51,7 @@ alias fb='sudo fail2ban-client'
51# Nginx{{{ 51# Nginx{{{
52alias vgx='sudo vim /etc/nginx/sites-enabled/vps -c "autocmd BufWritePost * !nginx -t && sudo systemctl reload nginx"' 52alias vgx='sudo vim /etc/nginx/sites-enabled/vps -c "autocmd BufWritePost * !nginx -t && sudo systemctl reload nginx"'
53alias ng.conf='sudo vim /etc/nginx/nginx.conf -c "autocmd BufWritePost * !nginx -t && sudo systemctl reload nginx"' 53alias ng.conf='sudo vim /etc/nginx/nginx.conf -c "autocmd BufWritePost * !nginx -t && sudo systemctl reload nginx"'
54alias ng.log='setterm --linewrap off; tail -n 200 -f /var/log/nginx/access.log; setterm --linewrap on' 54alias ng.log='setterm --linewrap off; tail -f /var/log/nginx/access.log; setterm --linewrap on'
55alias cdngx='cd /etc/nginx' 55alias cdngx='cd /etc/nginx'
56# }}} 56# }}}
57# Web {{{ 57# Web {{{
@@ -208,6 +208,7 @@ alias smtp.queue='sudo smtpctl show queue'
208alias smtp.show='sudo smtpctl show' 208alias smtp.show='sudo smtpctl show'
209alias smtp.ctl='sudo smtpctl' 209alias smtp.ctl='sudo smtpctl'
210alias imap.conf='sudo vim /etc/dovecot/dovecot.conf' 210alias imap.conf='sudo vim /etc/dovecot/dovecot.conf'
211alias cdmail='cd ~/Maildir'
211alias m='mutt' 212alias m='mutt'
212alias mutt.rc="$EDITOR ~/.config/mutt/muttrc" 213alias mutt.rc="$EDITOR ~/.config/mutt/muttrc"
213alias h='himalaya' 214alias h='himalaya'
diff --git a/bin/log/shellrc b/bin/log/shellrc
index a39e291..b3c95fc 100644
--- a/bin/log/shellrc
+++ b/bin/log/shellrc
@@ -1,7 +1,7 @@
1# about vimwiki 1# about vimwiki
2alias cdl='cd ~/log' 2alias cdl='cd ~/log'
3alias chw='tig -C ~/log' 3alias chw='tig -C ~/log'
4ww() { entry="${1:-plan.context}"; vim ~/log/${entry%%.md}.md; } 4ww() { entry="${1:-inbox}"; vim ~/log/${entry%%.md}.md; }
5wj() { echo "$@" >>~/log/buffer.md; } 5wj() { echo "$@" >>~/log/buffer.md; }
6wg() { grep -r "$@" --color --exclude-dir={logseq,.git,.obsidian} ~/log; } 6wg() { grep -r "$@" --color --exclude-dir={logseq,.git,.obsidian} ~/log; }
7wi() { cat ~/log/${1%%.md}.md; } 7wi() { cat ~/log/${1%%.md}.md; }
diff --git a/bin/mail/append_authorized_key.sh b/bin/mail/append_authorized_key.sh
index 950be90..3686959 100755
--- a/bin/mail/append_authorized_key.sh
+++ b/bin/mail/append_authorized_key.sh
@@ -13,7 +13,7 @@ MAIL="$(cat)"
13test -f ~/.config/passphase || exit 1 13test -f ~/.config/passphase || exit 1
14PASSPHASE="$(cat ~/.config/passphase)" 14PASSPHASE="$(cat ~/.config/passphase)"
15 15
16# Only execute the following script when header matched 16# Check passphase, or exit 0
17grep -qE "^Passphase: ${PASSPHASE}" <<<"$MAIL" || exit 0 17grep -qE "^Passphase: ${PASSPHASE}" <<<"$MAIL" || exit 0
18 18
19# Append comment and last line to ~/.ssh/authorized_keys 19# Append comment and last line to ~/.ssh/authorized_keys
diff --git a/bin/mail/comment.sh b/bin/mail/comment.sh
new file mode 100755
index 0000000..807bcb2
--- /dev/null
+++ b/bin/mail/comment.sh
@@ -0,0 +1,41 @@
1#! /bin/bash
2
3output_dir=${output_dir:-/srv/http}
4
5# Restore mail into variable
6MAIL="$(tr -d '\r')"
7headers="$(<<<"$MAIL" sed '/^$/ q')"
8contents="$(<<<"$MAIL" sed -n '/^$/,$ p' | sed '1d')"
9
10# enable execute last command in pipe under current shell
11shopt -s lastpipe; set +m;
12
13# get route (target page of comment) and id
14<<<"$MAIL" sed -En '/^To: comment+/ {s/^To: comment\+([^+]+)\+?(.*)@.*$/\1 \2/p; q}; /^$/q' \
15| read route id
16
17# sender want comment on some page, but find no route for this
18if [ $route = "" ]; then
19 echo 'rcpt "comment+<ROUTE>" not matched' >&2
20 exit 1
21fi
22
23output=$output_dir/${route#/}.comment
24exec 1>>$output
25
26# check mail includes multiple part
27<<<"$headers" grep '^Content-Type:.*mixed' >/dev/null
28if [ $? -eq 0 ]; then
29 boundary="$(<<<"$headers" sed -En 's/^Content-Type:.*boundary="(.*)".*$/\1/p')"
30 if [ $boundary = "" ]; then
31 echo 'cannot get boundary from mail header' >&2
32 exit 1
33 fi
34
35 # print content of first mail part
36 pattern="\\@^--${boundary}\$@"
37 <<<"$contents" sed -n "${pattern},${pattern} p" | sed -n "1,4d; ${pattern} q; p"
38else
39 # print content
40 <<<"$contents" sed '/^$/,$ p'
41fi
diff --git a/misc/pacman/list b/misc/pacman/list
new file mode 100644
index 0000000..4eeaec0
--- /dev/null
+++ b/misc/pacman/list
@@ -0,0 +1,62 @@
1autoconf 2.71-1
2automake 1.16.5-1
3base 2-2
4bison 3.8.2-3
5btrfs-progs 5.16.2-1
6certbot-nginx 1.26.0-1
7cronie 1.6.0-2
8discount 2.2.7-2
9docker 1:20.10.14-1
10dovecot 2.3.18-1
11fakeroot 1.28-1
12flex 2.6.4-3
13fzf 0.30.0-1
14gcc 11.2.0-4
15gd 2.3.3-3
16gdal 3.4.0-5
17git 2.35.1-1
18github-cli 2.7.0-1
19gnu-netcat 0.7.1-8
20grub 2:2.06-5
21htop 3.1.2-1
22hugo 0.96.0-1
23inetutils 2.2-1
24jq 1.6-4
25linux 5.17.1.arch1-1
26linux-firmware 20220309.cd01f85-1
27lshw B.02.19.2-4
28lsof 4.94.0-1
29m4 1.4.19-1
30make 4.3-3
31man-db 2.10.2-1
32mutt 2.2.2-1
33net-tools 2.10-1
34nginx-mainline-mod-dav-ext 3.0.0-21
35nginx-mod-headers-more 0.33-12
36openssh 8.9p1-1
37pass 1.7.4-2
38patch 2.7.6-8
39pkgconf 1.8.0-1
40pkgfile 21-2
41postfix 3.7.0-2
42ranger 1.9.3-4
43rapidjson 1.1.0-5
44s-nail 14.9.23-1
45sudo 1.9.10-1
46tig-git 2.5.4.r18.gf92286a6-1
47tiv 2015-2
48tldr 3.1.0-1
49tmux 3.2_a-1
50tree 2.0.2-1
51ufw 0.36.1-1
52unzip 6.0-18
53vim 8.2.4651-1
54viu 1.4.0-1
55wget 1.21.3-1
56which 2.21-5
57words 2.1-6
58xsel 1.2.0.20200527-1
59yay 10.3.1-2
60yq 2.14.0-1
61zip 3.0-10
62zsh 5.8.1-1
diff --git a/mutt/default b/mutt/default
index bae76f6..01730a1 100644
--- a/mutt/default
+++ b/mutt/default
@@ -1,5 +1,5 @@
1# Edit rc file and source it. This is the most important thing 1# Edit rc file and source it. This is the most important thing
2macro index \Cv ":set wait_key=no<Return>!$EDITOR ~/.config/mutt/muttrc<Return>:source ~/.config/mutt/muttrc<Return>:set wait_key=yes<Return>" 2macro index,browser \Cv ":set wait_key=no<Return>!$EDITOR ~/.config/mutt/muttrc<Return>:source ~/.config/mutt/muttrc<Return>:set wait_key=yes<Return>"
3 3
4# Connection options 4# Connection options
5set ssl_force_tls = yes 5set ssl_force_tls = yes
diff --git a/mutt/muttrc.topo b/mutt/muttrc.topo
index c737cb7..48e2b10 100644
--- a/mutt/muttrc.topo
+++ b/mutt/muttrc.topo
@@ -6,14 +6,14 @@ set folder = "/home/pham/Maildir"
6set smtp_url = "smtp://$my_user:25" 6set smtp_url = "smtp://$my_user:25"
7 7
8# Identify meself 8# Identify meself
9#set from = "pham@topo.tw" 9set from = "pham@topo.tw"
10#set realname = "謝晉凡 Hsieh Chin Fan" 10set realname = "謝晉凡 Hsieh Chin Fan"
11#set signature = "~/.config/mutt/.signature" 11set signature = "~/.config/mutt/.signature"
12#set pgp_use_gpg_agent = yes 12set pgp_use_gpg_agent = yes
13#set crypt_use_gpgme = yes 13set crypt_use_gpgme = yes
14#set pgp_timeout = 300 14set pgp_timeout = 300
15#set pgp_sign_as = 6DD8C14A # replace 6DD8C14A with your gpg key id 15set pgp_sign_as = 6DD8C14A # replace 6DD8C14A with your gpg key id
16#set autocrypt = yes 16set autocrypt = yes
17 17
18# For contacts 18# For contacts
19set display_filter = ~/.config/mutt/message_filter.sh 19set display_filter = ~/.config/mutt/message_filter.sh
@@ -21,62 +21,62 @@ source ~/.config/mutt/alias.topo
21source ~/.config/mutt/hooks.topo 21source ~/.config/mutt/hooks.topo
22 22
23## Basic Mailbox 23## Basic Mailbox
24#set spoolfile = "+INBOX" 24set spoolfile = "+"
25#set mbox= "+mbox" 25set mbox= "+mbox"
26#set move = yes 26set move = yes
27#set record = "+INBOX" 27set record = "+Sent"
28#set trash = "+Trash" 28set trash = "+Trash"
29#set postponed = "+Drafts" 29set postponed = "+Drafts"
30#set mask="!(INBOX|mbox|dev|Sent|Trash|Drafts|DeltaChat|civildef|hometeach|osm|STOCK|pay|keep|login|update|test|spam)" 30set mask="!(tmp|new|cur|dovecot.*|\\..*)"
31# 31
32## Sidebar 32# Sidebar
33#mailboxes -label '📭 [i]' +INBOX \ 33mailboxes -label '📭 [i]' + \
34# -label '📥 [m]' +mbox \ 34 -label '📥 [m]' +mbox \
35# -label '👀 [d]' +dev \ 35 -label '👀 [d]' +dev \
36# -label '💬 [D]' +DeltaChat \ 36 -label '💬 [D]' +DeltaChat \
37# +github \ 37 +github \
38# +JOB \ 38 +JOB \
39# +promotion \ 39 +promotion \
40# "+---- Watch -----" \ 40 "+---- Watch -----" \
41# -label CivilDEF +civildef \ 41 -label CivilDEF +civildef \
42# +hometeach \ 42 +hometeach \
43# -label OSM +osm \ 43 -label OSM +osm \
44# +STOCK \ 44 +STOCK \
45# -label '📢 [f]' +feedback \ 45 -label '📢 [f]' +feedback \
46# "+-- Permanent ---" \ 46 "+-- Permanent ---" \
47# -label '💲 [p]' +pay \ 47 -label '💲 [p]' +pay \
48# -label '🍺 [k]' +keep \ 48 -label '🍺 [k]' +keep \
49# -label '📤 [s]' +Sent \ 49 -label '📤 [s]' +Sent \
50# -label '🗑 [t]' -poll +Trash \ 50 -label '🗑 [t]' -poll +Trash \
51# +login \ 51 +login \
52# +update \ 52 +update \
53# +service \ 53 +service \
54# +Drafts \ 54 +Drafts \
55# +test \ 55 +test \
56# +spam 56 +spam
57# 57
58## Keybinding 58# Keybinding
59#macro index,pager <f4> '<sync-mailbox><enter-command>source ~/.config/mutt/muttrc.topo<enter><change-folder>!<enter>' 59macro index,pager <f4> '<sync-mailbox><enter-command>source ~/.config/mutt/muttrc.topo<enter><change-folder>!<enter>'
60#macro index,pager <f2> '<sync-mailbox><enter-command>source ~/.config/mutt/muttrc.gmail<enter><change-folder>!<enter>' 60macro index,pager <f2> '<sync-mailbox><enter-command>source ~/.config/mutt/muttrc.gmail<enter><change-folder>!<enter>'
61#macro index,pager <f3> '<sync-mailbox><enter-command>source ~/.config/mutt/muttrc.b97602041<enter><change-folder>!<enter>' 61macro index,pager <f3> '<sync-mailbox><enter-command>source ~/.config/mutt/muttrc.b97602041<enter><change-folder>!<enter>'
62# 62
63## Hooks for accounts 63# Hooks for accounts
64##folder-hook imaps://imap.gmail.com/ 'source ~/.config/mutt/muttrc.gmail' 64#folder-hook imaps://imap.gmail.com/ 'source ~/.config/mutt/muttrc.gmail'
65##folder-hook ~/Maildir 'source ~/.config/mutt/muttrc.b97602041' 65#folder-hook ~/Maildir 'source ~/.config/mutt/muttrc.b97602041'
66# 66
67## Change mailboxes 67# Change mailboxes
68#macro index,pager,browser gi "<change-folder>+INBOX<Return>" "Switch to INBOX folder" 68macro index,pager,browser gi "<change-folder>+<Return>" "Switch to INBOX folder"
69#macro index,pager,browser gm "<change-folder>+mbox<Return>" "Switch to mbox folder" 69macro index,pager,browser gm "<change-folder>+mbox<Return>" "Switch to mbox folder"
70#macro index,pager,browser gp "<change-folder>+pay<Return>" "Switch to pay folder" 70macro index,pager,browser gp "<change-folder>+pay<Return>" "Switch to pay folder"
71#macro index,pager,browser gP "<change-folder>+promotion<Return>" "Switch to promotion folder" 71macro index,pager,browser gP "<change-folder>+promotion<Return>" "Switch to promotion folder"
72#macro index,pager,browser gh "<change-folder>+hometeach<Return>" "Switch to hometeach folder" 72macro index,pager,browser gh "<change-folder>+hometeach<Return>" "Switch to hometeach folder"
73#macro index,pager,browser gs "<change-folder>+Sent<Return>" "Switch to Sent folder" 73macro index,pager,browser gs "<change-folder>+Sent<Return>" "Switch to Sent folder"
74#macro index,pager,browser gS "<change-folder>+spam<Return>" "Switch to spam folder" 74macro index,pager,browser gS "<change-folder>+spam<Return>" "Switch to spam folder"
75#macro index,pager,browser gd "<change-folder>+dev<Return>" "Switch to DEV folder" 75macro index,pager,browser gd "<change-folder>+dev<Return>" "Switch to DEV folder"
76#macro index,pager,browser gD "<change-folder>+DeltaChat<Return>" "Switch to DeltaChat folder" 76macro index,pager,browser gD "<change-folder>+DeltaChat<Return>" "Switch to DeltaChat folder"
77#macro index,pager,browser gt "<change-folder>+Trash<Return>" "Switch to Trash folder" 77macro index,pager,browser gt "<change-folder>+Trash<Return>" "Switch to Trash folder"
78#macro index,pager,browser gl "<change-folder>+login<Return>" "Switch to login folder" 78macro index,pager,browser gl "<change-folder>+login<Return>" "Switch to login folder"
79#macro index,pager,browser ga "<change-folder>+arch-general<Return>" "Switch to arch-general folder" 79macro index,pager,browser ga "<change-folder>+arch-general<Return>" "Switch to arch-general folder"
80#macro index,pager,browser gk "<change-folder>+keep<Return>" "Switch to keep folder" 80macro index,pager,browser gk "<change-folder>+keep<Return>" "Switch to keep folder"
81#macro index,pager,browser gu "<change-folder>+update<Return>" "Switch to update folder" 81macro index,pager,browser gu "<change-folder>+update<Return>" "Switch to update folder"
82#macro index,pager,browser gf "<change-folder>+feedback<Return>" "Switch to feedback folder" 82macro index,pager,browser gf "<change-folder>+feedback<Return>" "Switch to feedback folder"
diff --git a/snippets/bash_read_from_pipe b/snippets/bash_read_from_pipe
new file mode 100644
index 0000000..47d22b8
--- /dev/null
+++ b/snippets/bash_read_from_pipe
@@ -0,0 +1,4 @@
1shopt -s lastpipe; set +m;
2
3echo bar | read foo
4echo $foo
diff --git a/vim/init/highlight.vim b/vim/init/highlight.vim
index 01f74b8..86dfc87 100644
--- a/vim/init/highlight.vim
+++ b/vim/init/highlight.vim
@@ -10,3 +10,5 @@ hi ExtraWhitespace ctermbg=red guibg=red
10hi CursorLine guibg=NONE 10hi CursorLine guibg=NONE
11" Only works when :set cursorline in neovim 11" Only works when :set cursorline in neovim
12hi CursorLineNr term=bold cterm=bold ctermfg=226 gui=bold guifg=#eeee00 12hi CursorLineNr term=bold cterm=bold ctermfg=226 gui=bold guifg=#eeee00
13
14hi Folded guifg=#848089 guibg=#37343a ctermfg=lightblue ctermbg=black