Ubuntu 17.04 with twm - plembo/onemoretech GitHub Wiki

October 15, 2017

Around 8 years ago I wrote an article about running vnc with twm on Ubuntu. Having now switched Casa Lembo over to Ubuntu (17.04 for my workstation, 16.04 LTS on the home server), I decided to revisit it.

Configuration is basic. Started by installing vnc4server, twm and xterm. Then fired up vncserver as my user for the first time to set a password.

Replaced the generated .vnc/xstartup with this tried-and-true version from my Red Hat days:

# Simplified vnc x session
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid '#222E45' 
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
LANG=C twm &

Then brought in this copy of the stock /etc/X11/twm/system.twmrc for Red Hat family systems, renamed as .twmrc and dropped it in the root of my user's home directory:

# $Xorg: system.twmrc,v 1.3 2000/08/17 19:54:08 cpqbld Exp $
# 
# Default twm configuration file; needs to be kept small to conserve string
# space in systems whose compilers don't handle medium-sized strings.
#
# Sites should tailor this file, providing any extra title buttons, menus, etc.
# that may be appropriate for their environment.  For example, if most of the
# users were accustomed to uwm, the defaults could be set up not to decorate
# any windows and to use meta-keys.
#
# $XFree86: xc/programs/twm/system.twmrc,v 1.4 2001/01/17 23:45:08 dawes Exp $
#

NoGrabServer
RestartPreviousState
DecorateTransients
TitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
ResizeFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
MenuFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
IconFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*"
IconManagerFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*"
#ClientBorderWidth

Color
{
    BorderColor "slategrey"
    DefaultBackground "rgb:2/a/9"
    DefaultForeground "gray85"
    TitleBackground "rgb:2/a/9"
    TitleForeground "gray85"
    MenuBackground "rgb:2/a/9"
    MenuForeground "gray85"
    MenuBorderColor "slategrey"
    MenuTitleBackground "gray70"
    MenuTitleForeground "rgb:2/a/9"
    IconBackground "rgb:2/a/9"
    IconForeground "gray85"
    IconBorderColor "gray85"
    IconManagerBackground "rgb:2/a/9"
    IconManagerForeground "gray85"
}

#
# Define some useful functions for motion-based actions.
#
MoveDelta 3
Function "move-or-lower" { f.move f.deltastop f.lower }
Function "move-or-raise" { f.move f.deltastop f.raise }
Function "move-or-iconify" { f.move f.deltastop f.iconify }

#
# Set some useful bindings.  Sort of uwm-ish, sort of simple-button-ish
#
Button1 = : root : f.menu "defops"

Button1 = m : window|icon : f.function "move-or-lower"
Button2 = m : window|icon : f.iconify
Button3 = m : window|icon : f.function "move-or-raise"

Button1 = : title : f.function "move-or-raise"
Button2 = : title : f.raiselower

Button1 = : icon : f.function "move-or-iconify"
Button2 = : icon : f.iconify

Button1 = : iconmgr : f.iconify
Button2 = : iconmgr : f.iconify

#
# And a menus with the usual things
#
menu "defops"
{
"Twm"	f.title
"Iconify"	f.iconify
"Resize"	f.resize
"Move"		f.move
"Raise"		f.raise
"Lower"		f.lower
""		f.nop
"Focus"		f.focus
"Unfocus"	f.unfocus
"Show Iconmgr"	f.showiconmgr
"Hide Iconmgr"	f.hideiconmgr
""		f.nop
"Xterm"		f.exec "exec xterm &"
""		f.nop
"Kill"		f.destroy
"Delete"	f.delete
""		f.nop
"Restart"	f.restart
"Exit"		f.quit
}