Commit Diff


commit - d082e25fd2fc66bf0348f094f92fa72f151b1318
commit + b35d34ae1ea6f9eacf018e51f25cc4c6ba2715d3
blob - /dev/null
blob + 998006537a486d79483123dc10d5aab3b869af62 (mode 755)
--- /dev/null
+++ bin/news
@@ -0,0 +1,119 @@
+#!/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
@@ -0,0 +1,64 @@
+--- /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
@@ -75,6 +75,8 @@ pair bin/mquote		bin/mquote.lp	+x
 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