commit - d082e25fd2fc66bf0348f094f92fa72f151b1318
commit + b35d34ae1ea6f9eacf018e51f25cc4c6ba2715d3
blob - /dev/null
blob + 998006537a486d79483123dc10d5aab3b869af62 (mode 755)
--- /dev/null
+++ bin/news
+#!/bin/sh
+# news - less(1) around mshow for my rss feeds
+
+# use a custom mblaze env
+mkdir -p ~/.mblaze/news
+export MBLAZE=~/.mblaze/news
+
+if [ "$1" = --filter ]; then
+ if [ "$2" = //scan ]; then
+ mscan : 2>/dev/null
+ exit $?
+ fi
+
+ mseq -C "$2"
+
+ total=$(mscan -n -- -1)
+ case $2 in
+ 1) mscan .-0:.+5 ;;
+ 2) mscan .-1:.+4 ;;
+ $((total - 2))) mscan .-3:.+2 ;;
+ $((total - 1))) mscan .-4:.+1 ;;
+ $total) mscan .-5:.+0 ;;
+ *) mscan .-2:.+3 ;;
+ esac 2>/dev/null
+ echo
+
+ if ! [ -f "$(mseq -r "$2")" ]; then
+ mseq "$2"
+ exit
+ fi
+
+ if [ $MLESS_RAW -eq 0 ]; then
+ if [ $MLESS_HTML -eq 1 ]; then
+ mshow -A text/html "$2"
+ else
+ mshow "$2"
+ fi | mcolor
+ else
+ mseq -r "$2"
+ echo
+ cat "$(mseq -r "$2")"
+ fi
+ exit $?
+fi
+
+if [ "$#" -eq 0 ] && ! [ -t 0 ]; then
+ mseq -S >/dev/null
+ set -- :
+fi
+
+if ! [ -t 1 ]; then
+ exec mseq :
+fi
+
+[ "$#" -eq 1 ] && set -- ${1:-.}
+
+if [ "$#" -ge 1 ]; then
+ mseq -C "$1"
+fi
+
+nl="
+"
+export MLESS_RAW=0
+export MLESS_HTML=0
+if [ -f "$MBLAZE/mlesskey" ]; then
+ export LESSKEYIN="$MBLAZE/mlesskey"
+elif [ -f "$HOME/.mblaze/mlesskey" ]; then
+ export LESSKEYIN="$HOME/.mblaze/mlesskey"
+elif [ -f "$HOME/.mlesskey" ]; then
+ export LESSKEYIN="$HOME/.mlesskey"
+elif [ -f "$MBLAZE/mless" ]; then
+ export LESSKEY="$MBLAZE/mless"
+elif [ -f "$HOME/.mblaze/mless" ]; then
+ export LESSKEY="$HOME/.mblaze/mless"
+elif [ -f "$HOME/.mless" ]; then
+ export LESSKEY="$HOME/.mless"
+fi
+
+MAILFEEDS_DIR="${MAILFEEDS_DIR:-$HOME/Maildir/op/rss}"
+mlist -st "$MAILFEEDS_DIR" | mthread -r | mseq -S
+
+while :; do
+ LESSOPEN="|$0 --filter %s" \
+ less -Ps"mless %f?m (message %i of %m).." -R \
+ "+:e $(mscan -n .)$nl" //scan $(mscan -n :)
+ case "$?" in
+ 0|1) exit $?;;
+ 36) # $ goto end
+ mseq -C '$' 2>/dev/null
+ ;;
+ 78) # N go to next unseen message
+ nu=$(magrep -v -m1 :S .:) && mseq -C "$nu"
+ ;;
+ 79) # O open the news
+ url="$(mhdr -h X-Rssgo-Email)"
+ if [ $? -eq 0 -a -n "$url" ]; then
+ xdg-open "$url"
+ fi
+ ;;
+ 107) # k next thread
+ mseq -C "$(mseq .+1: | sed -n '/^[^ <]/{p;q;}')"
+ ;;
+ 100) # d mark read
+ mflag -S .
+ mseq -f : | mseq -S
+ mseq -C +
+ ;;
+ 82) # R toggle raw mode
+ MLESS_RAW=$((1-$MLESS_RAW))
+ ;;
+ 72) # H read with w3m
+ #MLESS_HTML=$((1-$MLESS_HTML))
+ mshow -Nh '' | w3m -T text/html -
+ ;;
+ 94) # ^ goto parent
+ mseq -C '.^' 2>/dev/null
+ ;;
+ esac
+done
blob - /dev/null
blob + 5f858b313f4ac153dd46724f64a71c4fe9f9cdd6 (mode 644)
--- /dev/null
+++ bin/news.diff
+--- /usr/local/bin/mless Tue Oct 25 14:26:22 2022
++++ news Fri Nov 25 16:18:08 2022
+@@ -1,23 +1,13 @@
+ #!/bin/sh
+-# mless [MSG] - less(1)-wrapper around mshow
++# news - less(1) around mshow for my rss feeds
+
+-colorscan() {
+-awk '
+-function co(n, c) { e = ENVIRON["MCOLOR_" n]; return e ? e : c }
+-function fg(c, s) { return sprintf("\033[38;5;%03dm%s\033[0m", c, s) }
+-function so(s) { return sprintf("\033[1m%s\033[0m", s) }
+-/^>/ { print so(fg(co("CUR",119), $0)); next }
+-/^ *\\_/ { print fg(co("MISS",242), $0); next }
+-{ print }'
+-}
++# use a custom mblaze env
++mkdir -p ~/.mblaze/news
++export MBLAZE=~/.mblaze/news
+
+-if [ -n "${NO_COLOR+set}" ]; then
+- colorscan() { cat -; }
+-fi
+-
+ if [ "$1" = --filter ]; then
+ if [ "$2" = //scan ]; then
+- mscan : 2>/dev/null | colorscan
++ mscan : 2>/dev/null
+ exit $?
+ fi
+
+@@ -31,7 +21,7 @@
+ $((total - 1))) mscan .-4:.+1 ;;
+ $total) mscan .-5:.+0 ;;
+ *) mscan .-2:.+3 ;;
+- esac 2>/dev/null | colorscan
++ esac 2>/dev/null
+ echo
+
+ if ! [ -f "$(mseq -r "$2")" ]; then
+@@ -85,6 +75,10 @@
+ elif [ -f "$HOME/.mless" ]; then
+ export LESSKEY="$HOME/.mless"
+ fi
++
++MAILFEEDS_DIR="${MAILFEEDS_DIR:-$HOME/Maildir/op/rss}"
++mlist -st "$MAILFEEDS_DIR" | mthread -r | mseq -S
++
+ while :; do
+ LESSOPEN="|$0 --filter %s" \
+ less -Ps"mless %f?m (message %i of %m).." -R \
+@@ -96,6 +90,12 @@
+ ;;
+ 78) # N go to next unseen message
+ nu=$(magrep -v -m1 :S .:) && mseq -C "$nu"
++ ;;
++ 79) # O open the news
++ url="$(mhdr -h X-Rssgo-Email)"
++ if [ $? -eq 0 -a -n "$url" ]; then
++ xdg-open "$url"
++ fi
+ ;;
+ 107) # k next thread
+ mseq -C "$(mseq .+1: | sed -n '/^[^ <]/{p;q;}')"
blob - 388b0532b55cf9b4c1ae1392ff68ef6ef41f4bde
blob + 9ca1e385ee78c06c3bca4f169d0547414d1042b0
--- gen
+++ gen
pair bin/sshot bin/sshot.lp +x
pair bin/template bin/template.lp +x
+copy bin/news bin/news
+
pair .config/herbstluftwm/autostart config/herbstluftwm/autostart.lp
pair .config/herbstluftwm/panel config/herbstluftwm/panel.lp +x
pair .config/herbstluftwm/process.awk config/herbstluftwm/process.awk.lp