rio

First of all, this is my first post, so hi everyone.

Secondly, and more importantly, I was wondering if anyone knows how to install the Plan 9 GUI on FreeBSD 9. I believe it's called Rio, and in my opinion it's the best-looking system anywhere, but Plan 9 from Bell Labs itself is more or less unusable.

Thanks, Tyler.
 
  • Thanks
Reactions: ch
/usr/ports/devel/plan9port will install into /usr/local/plan9 which includes rio. (All I have time to answer today, have not investigated the port much).
 
  • Thanks
Reactions: ch
I use plan9port's rio together with the rc shell, the acme editor and 9term, as my general GUI and in particular to write Latex.

Below are some files I find useful in running it. None of it is very original; most is based on a very informative posting by Russ Cox at http://9fans.net/archive/2007/11/120 . I just modified it where it suited my needs; that also explains the part taking care of a French keyboard.

I express my gratitude to the developers of Plan 9, to Russ Cox, and to the 9fans community for their work; I find these tools a pleasure to use.


$HOME/.xinitrc

Code:
#!/usr/local/plan9/bin/rc

# French kbd
setxkbmap -model pc105 -layout fr

# mklatinkbd needs to be run only once
# I keep it in, commented, for future reference
# ref: [url]http://9fans.net/archive/2011/01/14[/url]
# and 9 man keyboard
# 9 mklatinkbd -x $PLAN9/lib/keyboard >$HOME/.XCompose
#add to .XCompose to be able to use dead circumflex key outside of p9p as well
# cat $HOME/.XComposeDeadCircumflex >> $HOME/.XCompose


xmodmap -e 'keysym Alt_L = Multi_key'
#xmodmap ~/.Xmodmap


# for GNOME and QT programs, add
GTK_IM_MODULE=xim
QT_IM_MODULE=xim

# for the following, see
# [url]http://9fans.net/archive/2007/11/120[/url]

plumber 
riostart 
rio -term 9term &
sleeper



$HOME/bin/riostart

Code:
#!/usr/local/plan9/bin/rc

xscreensaver &

# clock in lower right corner
xclock  -geometry 164x164-40-20 &

# terminal
9term &

# stats 
stats -W 400x100 -lCme &

# browser
opera --nomail &

acme &



$HOME/bin/sleeper


Code:
#!/usr/local/plan9/bin/rc

while ()
	sleep 1000



$HOME/lib/profile

Code:
# profile for rc shell

path=($path $PLAN9/bin /usr/local/texlive/2011/bin/i386-freebsd)


font=$PLAN9/font/lucm/unicode.9.font
home=$HOME
user=$USER
tz=$TZ
shell=$PLAN9/bin/rc
PAGER=nobs
pager=$PAGER
gs_fontpath=($GS_FONTPATH $PLAN9/postscript/font)
printer=HP4515x
prompt=('; ' ' ')

startx




$HOME/lib/plumbing

Code:
# for 9term and acme
# to update: cat $HOME/lib/plumbing | 9p write plumb/rules

# these are generally in order from most specific to least,
# since first rule that fires wins.

include fileaddr

# declarations of ports without rules
plumb to seemail
plumb to showmail

# relative files as file: urls get made into absolute paths
type is text
data matches 'file:([.a-zA-Z0-9_\-]([.a-zA-Z0-9_/\-]*[a-zA-Z0-9_/\-]))?'
arg isfile	$1
data set	file://$file
plumb to web
plumb start web $data

# urls go to web browser
type is text
data matches '(https?|ftp|file|gopher|mailto|news|nntp|telnet|wais|prospero)://[a-zA-Z0-9_@\-]+([.:][a-
zA-Z0-9_@\-]+)*/?[a-zA-Z0-9_?,%#~&/\-+=]+([:.][a-zA-Z0-9_?,%#~&/\-+=]+)*'
plumb to web
plumb start web $0



# start rule for microsoft word documents without .doc suffix
type is text
dst is msword
plumb to libreoffice
plumb start libreoffice $file
#plumb start wdoc2txt $file

# image files go to feh
type is text
data matches '[a-zA-ZÀ-ÿ0-9_\-./]+'
data matches '([a-zA-ZÀ-ÿ0-9_\-./]+)\.(jpe?g|JPE?G|gif|GIF|tiff?|TIFF?|ppm|bit|png|PNG)'
arg isfile	$0
plumb to image
plumb start feh $file
#plumb start 9 page $file

# postscript goes to gsview but not over the a plumb port
# the port is here for reference but is unused
type is text
data matches '[a-zA-ZÀ-ÿ0-9_\-./]+'
data matches '([a-zA-ZÀ-ÿ0-9_\-./]+)\.(ps|PS|eps|EPS)'
arg isfile	$0
plumb to postscript
plumb start gsview $file
#plumb start 9 page $file

# dvi goes to xdvi but not over the a plumb port
# the port is here for reference but is unused
# USE the TexLive xdvi, not the FreeBSD port!
type is text
data matches '[a-zA-ZÀ-ÿ0-9_\-./]+'
data matches '([a-zA-ZÀ-ÿ0-9_\-./]+)\.(dvi|DVI)'
arg isfile	$0
plumb to postscript
plumb start xdvi $file
#plumb start 9 page $file

# pdf go to mupdf but not over the a plumb port
# the port is here for reference but is unused
type is text
data matches '[a-zA-ZÀ-ÿ0-9_\-./]+'
data matches '([a-zA-ZÀ-ÿ0-9_\-./]+)\.(pdf|PDF)'
arg isfile	$0
plumb to postscript
plumb start mupdf $file

# libreoffice - doc, docx, rtf, xls, xlsx, ppt
data matches '[a-zA-ZÀ-ÿ0-9_\-./]+'
data matches '([a-zA-ZÀ-ÿ0-9_\-./]+)\.([Dd][Oo][Cc][Xx]?|[Xx][Ll][Ss][Xx]?|[Pp][Pp][Tt]|[Rr][Tt][Ff])'
arg isfile	$0
plumb to libreoffice
plumb start libreoffice $file

# existing files tagged by line number:columnumber or linenumber.columnumber, go to editor
type is text
data matches '([.a-zA-ZÀ-ÿ0-9_/\-]*[a-zA-ZÀ-ÿ0-9_/\-])'$twocolonaddr'
arg isfile     $1
data set       $file
attr add       addr=$2-#1+#$3
plumb to edit
plumb client $editor

# existing files, possibly tagged by line number, go to editor
type is text
data matches '([.a-zA-ZÀ-ÿ0-9_/\-]*[a-zA-ZÀ-ÿ0-9_/\-])('$addr')?'
arg isfile	$1
data set	$file
attr add	addr=$3
plumb to edit
plumb client $editor

# .h files are looked up in /usr/include and passed to edit
type is text
data matches '([a-zA-Z0-9/_\-]+\.h)('$addr')?'
arg isfile	/usr/include/$1
data set	$file
attr add	addr=$3
plumb to edit
plumb client $editor

# .h files are looked up in /usr/local/include and passed to edit
type is text
data matches '([a-zA-Z0-9/_\-]+\.h)('$addr')?'
arg isfile	/usr/local/include/$1
data set	$file
attr add	addr=$3
plumb to edit
plumb client $editor

# .h files are looked up in $plan9/include and passed to edit
type is text
data matches '([a-zA-Z0-9/_\-]+\.h)('$addr')?'
arg isfile	$plan9/include/$1
data set	$file
attr add	addr=$3
plumb to edit
plumb client $editor

# .m files are looked up in /usr/inferno/module and passed to edit
type is text
data matches '([a-zA-Z0-9/_\-]+\.m)('$addr')?'
arg isfile	/usr/inferno/module/$1
data set	$file
attr add	addr=$3
plumb to edit
plumb client window $editor

# faces -> new mail window for message
type	is	text
data	matches	'[a-zA-Z0-9_\-./]+'
data	matches	'/mail/fs/[a-zA-Z0-9/]+/[0-9]+'
plumb	to	showmail
plumb	start	window -r 4 120 750 600 upas/nedmail -s $0

# email addresses get a new mail window
type is text
data matches '[a-zA-Z0-9_+.\-]+@[a-zA-Z0-9_+.\-]*'
plumb to sendmail
plumb start wmail $0
# plumb start window rc -c '''echo % mail '''$0'; mail '$0

# man index entries are synthesized
type is text
data matches '([a-zA-Z0-9_\-./]+)\(([1-8])\)'
plumb start rc -c 'man '$2' '$1' >[2=1] | nobs | plumb -i -d edit -a ''action=showdata filename=/man/'$1'('$2')'''

# start rule for images without known suffixes
dst is image
arg isfile $data
plumb to image
plumb start 9 page $data

# start rule for postscript without known suffixes
dst is postscript
arg isfile $data
plumb start 9 page $data



$HOME/.XComposeDeadCircumflex


Code:
<Multi_key> <dead_circumflex> <A> : "Â" U00C2
<Multi_key> <dead_circumflex> <C> : "Ĉ" U0108
<Multi_key> <dead_circumflex> <E> : "Ê" U00CA
<Multi_key> <dead_circumflex> <G> : "Ĝ" U011C
<Multi_key> <dead_circumflex> <H> : "Ĥ" U0124
<Multi_key> <dead_circumflex> <I> : "ÃŽ" U00CE
<Multi_key> <dead_circumflex> <J> : "Ä´" U0134
<Multi_key> <dead_circumflex> <O> : "Ô" U00D4
<Multi_key> <dead_circumflex> <S> : "Ŝ" U015C
<Multi_key> <dead_circumflex> <U> : "Û" U00DB
<Multi_key> <dead_circumflex> <W> : "Å´" U0174
<Multi_key> <dead_circumflex> <Y> : "Ŷ" U0176
<Multi_key> <dead_circumflex> <a> : "â" U00E2
<Multi_key> <dead_circumflex> <c> : "ĉ" U0109
<Multi_key> <dead_circumflex> <e> : "ê" U00EA
<Multi_key> <dead_circumflex> <g> : "ĝ" U011D
<Multi_key> <dead_circumflex> <h> : "Ä¥" U0125
<Multi_key> <dead_circumflex> <i> : "î" U00EE
<Multi_key> <dead_circumflex> <j> : "ĵ" U0135
<Multi_key> <dead_circumflex> <o> : "ô" U00F4
<Multi_key> <dead_circumflex> <s> : "ŝ" U015D
<Multi_key> <dead_circumflex> <u> : "û" U00FB
<Multi_key> <dead_circumflex> <w> : "ŵ" U0175
<Multi_key> <dead_circumflex> <y> : "Å·" U0177
<dead_circumflex> : "^" U005E
 
  • Thanks
Reactions: ch
My Birthday Thread

This made my day. Interestingly, it was created on my birthday.

Thanks for the birthday present!

ch
 
Back
Top