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