Blob


1 #!/bin/sh
2 # news - less(1) around mshow for my rss feeds
4 # use a custom mblaze env
5 mkdir -p ~/.mblaze/news
6 export MBLAZE=~/.mblaze/news
8 if [ "$1" = --filter ]; then
9 if [ "$2" = //scan ]; then
10 mscan : 2>/dev/null
11 exit $?
12 fi
14 mseq -C "$2"
16 total=$(mscan -n -- -1)
17 case $2 in
18 1) mscan .-0:.+5 ;;
19 2) mscan .-1:.+4 ;;
20 $((total - 2))) mscan .-3:.+2 ;;
21 $((total - 1))) mscan .-4:.+1 ;;
22 $total) mscan .-5:.+0 ;;
23 *) mscan .-2:.+3 ;;
24 esac 2>/dev/null
25 echo
27 if ! [ -f "$(mseq -r "$2")" ]; then
28 mseq "$2"
29 exit
30 fi
32 if [ $MLESS_RAW -eq 0 ]; then
33 if [ $MLESS_HTML -eq 1 ]; then
34 mshow -A text/html "$2"
35 else
36 mshow "$2"
37 fi | mcolor
38 else
39 mseq -r "$2"
40 echo
41 cat "$(mseq -r "$2")"
42 fi
43 exit $?
44 fi
46 if [ "$#" -eq 0 ] && ! [ -t 0 ]; then
47 mseq -S >/dev/null
48 set -- :
49 fi
51 if ! [ -t 1 ]; then
52 exec mseq :
53 fi
55 [ "$#" -eq 1 ] && set -- ${1:-.}
57 if [ "$#" -ge 1 ]; then
58 mseq -C "$1"
59 fi
61 nl="
62 "
63 export MLESS_RAW=0
64 export MLESS_HTML=0
65 if [ -f "$MBLAZE/mlesskey" ]; then
66 export LESSKEYIN="$MBLAZE/mlesskey"
67 elif [ -f "$HOME/.mblaze/mlesskey" ]; then
68 export LESSKEYIN="$HOME/.mblaze/mlesskey"
69 elif [ -f "$HOME/.mlesskey" ]; then
70 export LESSKEYIN="$HOME/.mlesskey"
71 elif [ -f "$MBLAZE/mless" ]; then
72 export LESSKEY="$MBLAZE/mless"
73 elif [ -f "$HOME/.mblaze/mless" ]; then
74 export LESSKEY="$HOME/.mblaze/mless"
75 elif [ -f "$HOME/.mless" ]; then
76 export LESSKEY="$HOME/.mless"
77 fi
79 MAILFEEDS_DIR="${MAILFEEDS_DIR:-$HOME/Maildir/op/rss}"
80 mlist -st "$MAILFEEDS_DIR" | mthread -r | mseq -S
82 while :; do
83 LESSOPEN="|$0 --filter %s" \
84 less -Ps"mless %f?m (message %i of %m).." -R \
85 "+:e $(mscan -n .)$nl" //scan $(mscan -n :)
86 case "$?" in
87 0|1) exit $?;;
88 36) # $ goto end
89 mseq -C '$' 2>/dev/null
90 ;;
91 78) # N go to next unseen message
92 nu=$(magrep -v -m1 :S .:) && mseq -C "$nu"
93 ;;
94 79) # O open the news
95 url="$(mhdr -h X-Rssgo-Email)"
96 if [ $? -eq 0 -a -n "$url" ]; then
97 xdg-open "$url"
98 fi
99 ;;
100 107) # k next thread
101 mseq -C "$(mseq .+1: | sed -n '/^[^ <]/{p;q;}')"
102 ;;
103 100) # d mark read
104 mflag -S .
105 mseq -f : | mseq -S
106 mseq -C +
107 ;;
108 82) # R toggle raw mode
109 MLESS_RAW=$((1-$MLESS_RAW))
110 ;;
111 72) # H read with w3m
112 #MLESS_HTML=$((1-$MLESS_HTML))
113 mshow -Nh '' | w3m -T text/html -
114 ;;
115 94) # ^ goto parent
116 mseq -C '.^' 2>/dev/null
117 ;;
118 esac
119 done