hlfw.ca

rc

Download patch

ref: 329ac13da6171fe4073cbe02f3fef949e74ad18f
parent: 8e371128541d03aa5b0dc84ea6c68a760dcefae7
author: Michael Misch <michaelmisch1985@gmail.com>
date: Sun Aug 25 01:05:35 PDT 2024

"make

--- /dev/null
+++ b/9fs
@@ -1,0 +1,19 @@
+#!/bin/rc
+
+if(test -d /mnt/work -a -s /mnt/work)
+	unmount /mnt/work
+
+if(test -f /srv/work)
+	rm /srv/work
+
+switch($1){
+case altid
+	bind $home/alt /mnt/work
+case rc
+	bind $home/bin/rc /mnt/work
+}
+
+if(ns | grep /mnt/work >/dev/null)
+	exec srvfs work /mnt/work
+
+/rc/bin/9fs $*
--- /dev/null
+++ b/altid
@@ -1,0 +1,77 @@
+#!/bin/rc
+
+rfork ne
+
+svc=()
+
+fn usage {
+	echo Usage: $0 [-a host] svc >[1=2]
+	exit usage
+}
+
+
+fn sighub {
+	unmount /n/$svc
+	exit 'hang up'
+}
+
+fn sigint sigterm {
+	unmount /n/$svc
+	exit sig
+}
+
+fn work {
+	while (cmd=`{read}){
+		s=$status
+		if(~ $s *eof){
+			exit
+		}
+		switch($cmd(1)) {
+		case /tabs
+			cat /n/$svc/tabs
+		case /quit
+			echo quit >/n/$svc/ctrl
+			unmount /n/$svc
+			exit
+		case /buffer*
+			msg = `{echo $cmd	| sed 's|/buffer||'}
+			echo buffer $msg >/n/$svc/ctrl
+			sleep 1
+			cat /n/$svc/feed &
+		case /join*
+			msg = `{echo $cmd | sed 's|/join ||' }
+			echo open $msg >/n/$svc/ctrl
+			echo buffer $msg >/n/$svc/ctrl
+			sleep 1
+			cat /n/$svc/feed &
+		case *
+			echo $cmd >/n/$svc/input
+		}
+	}
+}
+
+host=()
+while(~ $1 -*){
+	switch($1){
+	case -a
+		host=$2
+		shift
+	}
+	shift
+}
+
+if(~ $#* 0)
+	usage
+
+label $1
+svc=$1
+if(~ $#host 1){
+	rm /srv/$svc
+	srv tcp!$host $svc
+}
+
+mount /srv/$svc /n/$svc
+
+# Initial feed
+cat /n/$svc/feed &
+work
--- a/barrier
+++ b/barrier
@@ -6,16 +6,19 @@
 	}
 }
 
+fn waitforconn {
+	while(){
+		sleep 1
+		echo Connecting to $sysname...
+		netstat | grep 24800 | grep -s Established && echo Ready && exit
+	}
+}
+
 sysname=`{sysnames | fm -p}
 if(~ $#sysname 0)
 	exit
+waitforconn &
 
-tlsclient tcp!$sysname!24800 barrera &
+tlsclient tcp!macky!24800 barrera
 
-while(){
-	sleep 1
-	echo Connecting to $sysname...
-	netstat | grep 24800 | grep -s Established || continue
-	echo Ready
-	exit
-}
+
--- a/dmenu
+++ b/dmenu
@@ -1,4 +1,4 @@
 #!/bin/rc
 rfork en
 
-exec window 'smenu -p /bin walk -f | rc | grep . && rc -i'
+exec window 'walk -f /bin | smenu -i | rc | grep . && rc -i'
--- /dev/null
+++ b/dropbar
@@ -1,0 +1,20 @@
+#!/bin/rc
+
+while(line=`{read}){
+	switch($line){
+	case '*○'
+		# we don't have external window control yet
+		break
+	case '*◌'
+		break
+	case '*◍'
+		break
+	case *
+		l=`{echo $line | sed 's/[1-6] //'}
+		if(! ~ $#l 0 && test -f $home/lib/namespace.$l){
+			rm /srv/work >[2]/dev/null
+			unmount /mnt/work >[2]/dev/null
+			/$objtype/bin/plumb -t text -d notify -a 'message=none' none
+		}
+	}
+}
--- /dev/null
+++ b/dsearch
@@ -1,0 +1,4 @@
+#!/bin/rc
+rfork e
+
+exec window 'smenu dctl search' | grep . && plumb -i -t search'
--- /dev/null
+++ b/gridchat
@@ -1,0 +1,40 @@
+#!/bin/rc
+
+srv tcp!chat.only9fans.com!9990 chat.only9fans.com /n/9chat
+
+fn clean {
+	echo $1 | sed 's/.*!([^!]+)!.*/\1/'
+}
+
+for(s in /n/registry/tcp*){
+	s=`{basename $s}
+	srv $s `{clean $s} /n/^`{clean $s}
+}
+
+>/tmp/chatcat cat <<'...'
+#!/bin/rc
+chan=$1
+label $chan
+echo JOIN $nick to chat >>/n/9chat/$chan
+cat /n/9chat/$chan &
+while() cat | sed '1s/^/'$nick' → /' >>/n/9chat/$chan
+...
+chmod +x /tmp/chatcat
+
+>/tmp/gridrio cat <<'...'
+#!/bin/rc
+for(c in chat commits noise)
+	window -scroll /tmp/chatcat $c
+...
+chmod +x /tmp/gridrio
+
+echo '	Type a (multi-line) message ending with a newline'
+echo '	and press control-d (EOT) to send.'
+echo
+echo -n 'Please enter nickname to use, finish with ENTER: '
+nick=`{read}
+if(~ $#nick 0)
+	nick=$user
+
+/tmp/chatcat chat
+
--- /dev/null
+++ b/gridstart
@@ -1,0 +1,12 @@
+#!/bin/rc
+
+echo '	Type a (multi-line) message ending with a newline'
+echo '	and press control-d (EOT) to send.'
+echo
+echo -n 'Please enter nickname to use, finish with ENTER: '
+nick=`{read}
+if(~ $#nick 0)
+	nick=$user
+
+for(c in chat commits noise)
+	window -scroll chat $c $nick
--- /dev/null
+++ b/mkfile
@@ -1,0 +1,36 @@
+RCFILES=\
+	!g\
+	!gif\
+	!jpg\
+	!man\
+	!pdf\
+	!w\
+	!yt\
+	9fs\
+	altid\
+	barrier\
+	dmenu\
+	dropbar\
+	dsearch\
+	fmenu\
+	gridchat\
+	gridstart\
+	nd\
+	pmenu\
+	qrdisplay\
+	riostart\
+	samw\
+	smenu\
+	syspatch\
+	web\
+	wifi\
+	wifire\
+	wm\
+	wmenu\
+	workfile\
+	yt
+
+install:
+	mkdir -p $home/bin/rc/install
+	cp $RCFILES $home/bin/rc
+	cp install/themes $home/bin/rc/install
--- /dev/null
+++ b/nd
@@ -1,0 +1,3 @@
+#!/bin/rc
+
+window -r 0 0 400 30 'notif'
--- /dev/null
+++ b/pmenu
@@ -1,0 +1,4 @@
+#!/bin/rc
+rfork e
+
+exec window 'ls $home/lib/namespace* | sed s/.*namespace\.// | smenu -i | proj -i -p notify; echo delete >/mnt/wsys/wctl'
--- /dev/null
+++ b/qrdisplay
@@ -1,0 +1,3 @@
+#!/bin/rc
+
+exec window 'exec cat /fd/0 | qr | resample -x 1200% | page'
--- a/riostart
+++ b/riostart
@@ -1,6 +1,13 @@
 #!/bin/rc
 
-window -r 786 640 1920 1080 'cat $home/lib/theme/light.theme > /mnt/wsys/theme'
+webfs
+switch($service){
+case terminal
+	window -r 786 640 1920 1080 'cat $home/lib/theme/grid.theme > /mnt/wsys/theme'
+case cpu
+	window 'cat $home/lib/theme/cpu.theme > /mnt/wsys/theme'
+}
 
 # run a system shell on the serial console
 ~ $#console 0 || window -scroll console
+window wm
--- /dev/null
+++ b/samw
@@ -1,0 +1,6 @@
+#!/bin/rc
+
+if (test -f /srv/work)
+	mount /srv/work /mnt/work
+
+exec /bin/sam $*
--- a/smenu
+++ b/smenu
@@ -2,19 +2,33 @@
 rfork en
 
 fn usage {
-	echo "Usage: $0 [-p path] $cmd" >[1=2]
+	echo 'Usage: $0 [-p path] $cmd' >[1=2]
+	echo 'Usage: cmd | $0 -i' >[1=2]
 	exit usage
 }
 
 wdir=()
+input=()
+
 while(~ $1 -*){
 	switch($1){
 	case -p
 		wdir=$2
 		shift; shift
+	case -i
+		input="true"
+		shift;
 	}
 }
 
+if(~ $#input 1){
+	cmd=`{fm -p}
+	if(~ $#cmd 0)
+		exit 'no selection'
+	echo $cmd
+	exit
+}
+	
 if(~ $#* 0) 
 	usage
 
--- /dev/null
+++ b/syspatch
@@ -1,0 +1,101 @@
+#!/bin/rc
+
+argv0=$0
+
+fn usage {
+	echo 'usage:' $argv0 '[-u] [-f sources]' >[1=2]
+	exit 'usage'
+}
+
+fn fetch {
+	dir=()
+	src=()
+	type=()
+	patch=()
+
+	echo Fetching $1
+	dir=`{ndb/query -f $2 pkg $1 path}
+	src=`{ndb/query -f $2 pkg $1 src}
+	type=`{ndb/query -f $2 pkg $1 type}
+	patch=`{ndb/query -f $2 pkg $1 patch}
+	switch($type){
+	case git
+		git/clone $src $dir
+		cd $dir
+		~ $#patch 1 && hget $patch | patch
+	case mkfs
+		mkdir -p $dir
+		hget $src | gunzip | disk/mkext -d $dir
+		cd $dir
+		~ $#patch 1 && hget $patch | patch
+	case patch
+		cd $dir
+		hget $patch | patch
+	case patch5
+		cd $dir
+		hget $patch | patch -p5
+	}
+}
+
+fn revert {
+	dir=()
+	type=()
+	base=()
+
+	dir=`{ndb/query -f $2 pkg $1 path}
+	type=`{ndb/query -f $2 pkg $1 type}
+	echo Reverting $1
+	base=`{basename -d $dir}
+	if(~ $type patch){
+		git/revert $dir
+	}
+	if not {
+		# TODO: git/walk -f UMR --> loop + switch, just rm/revert the files that were changed
+		git/walk -f U $base | grep -s $1 && rm -rf $dir
+		git/walk -f MR $base | grep -s $1 && git/revert $dir
+	}
+}
+
+pkgs=()
+sourcesfile=$home/lib/sources
+undo=0
+
+while (~ $1 -*) {
+	switch ($1) {
+	case -f
+		sourcesfile=$2
+		shift
+	case -u
+		undo=1
+	case -*
+		usage
+	}
+	shift
+}
+
+pkgs=`{awk '/pkg=/{print $1}' $sourcesfile | sed 's/pkg=//'}
+
+if (~ $#pkgs 0){
+	echo 'no entries in lib/sources'
+	exit 'entries'
+}
+
+~ $#* 0 || usage
+
+if (~ $undo 0) {
+	webfs
+	for(pkg in $pkgs){
+		fetch $pkg $sourcesfile
+	}
+}
+if not {
+	# Give us a git view
+	cd /
+	if(! test -d ,git)
+		bind -ac /dist/plan9front /
+	git/fs
+	for(pkg in $pkgs){
+		revert $pkg $sourcesfile
+	}
+}
+
--- /dev/null
+++ b/wifire
@@ -1,0 +1,33 @@
+#!/bin/rc
+rfork e
+argv0=$0
+fn usage {
+	echo usage: $argv0 '[ ethern ]' >[1=2]
+	exit usage
+}
+
+b=()
+d=()
+
+fn ssid {
+	cat $d/ifstats | sed -n 's/.* +[0-1][0-9] //p' | grep . | fm -p
+}
+
+if(! ~ $#* 1)
+	usage
+
+ether=`{echo $1 | sed 's/ether//'}
+b=`{echo $ether | sed 's/^/#l/'}
+d=/net/ether$ether
+
+bind -a $b /net
+id=`{ssid}
+if(~ $#id 0){
+	echo No selection made
+	exit
+}
+
+aux/wpa -s $id $d
+ip/ipconfig ether $d
+
+grep associated $d/ifstats
--- a/wm
+++ b/wm
@@ -1,4 +1,40 @@
 #!/bin/rc
 
 aux/acpi
-</dev/kbdtap 9hkd -t  >/dev/kbdtap |[3] bar
+done=0
+
+fn sigint {
+	pid=`{cat /tmp/wm.pid}
+	echo kill >/proc/$pid/ctl
+}
+
+touch /tmp/wm.proj /tmp/wm.pid
+echo '○ │ ○ │  ○ │ ○ │ ○ │ ○' > /tmp/wm.tags
+	
+</dev/kbdtap ktrans -G | 9hkd -t  >/dev/kbdtap |[3] {
+	{
+		cat /mnt/plumb/notify | while(~ $done 0){
+			cmd=`{read}
+			port=`{read}
+			usr=`{read}
+			text=`{read}
+			msg=`{read}
+			echo $msg | sed 's/message=//; s/$/ │/' > /tmp/wm.proj
+			tags=`{cat /tmp/wm.tags}
+			proj=`{cat /tmp/wm.proj}
+			echo $proj $tags
+			ndata=`{read}
+			data=`{read -c $ndata}
+		} &
+		echo $apid > /tmp/wm.pid
+
+		# Plain pipe reads here
+		while(tags=`{read}){
+			proj=`{cat /tmp/wm.proj}
+			echo $tags > /tmp/wm.tags
+			echo $proj $tags
+		}
+		done=1
+	} | bar -p bottom | dropbar
+}
+
--- /dev/null
+++ b/wmenu
@@ -1,0 +1,7 @@
+#!/bin/rc
+rfork ne
+
+if(! test -f /srv/work)
+	exit 'no workspace'
+
+exec window -m 'workfile'
--- /dev/null
+++ b/workfile
@@ -1,0 +1,17 @@
+#!/bin/rc
+rfork ne
+
+notouch=0
+if(ns | grep /mnt/work >/dev/null)
+	notouch++
+if not {
+	mount /srv/work /mnt/work
+	plumber -p $home/lib/plumb/main
+}
+
+res=`{walk /mnt/work | grep -v .git | fm -p}
+echo $res
+if(! ~ $#res 0)
+	plumb $res
+
+echo delete >/mnt/wsys/wctl
--- a/yt
+++ b/yt
@@ -1,2 +1,2 @@
 #!/bin/rc
-nvi -V 18 -v /tmp/video.mp4 $1 && treason /tmp/video.mp4 && rm /tmp/video.mp4
+nvi -V 18 -v /tmp/video.mp4 $1 && treason /tmp/video.mp4