------------------------------------------------------------------------------- Including the ".twmrc" file in your ".ctwmrc" file -- OR -- m4 quote problems You can include your ".twmrc" defaults before you start making changes specific to ctwm by using the ``M4'' macro package. However... WARNING: the default quoting mechnism of M4 is the two single quotes ` ' This means that if ANY of your twm f.exec or !".." actions contain single quotes you will be in serious trouble which is next to impossible to trace. Solution, add the following to the start of your ".ctwmrc" file to change the quotes being use by m4 to somthing less troublesome. =======8<--------CUT HERE---------- syscmd( test -f HOME/.twmrc )dnl ifelse( sysval(), 0, `define(TWMRC,HOME/.twmrc)', `define(TWMRC,/usr/lib/X11/twm/system.twmrc)' dnl Remove m4 quoting Junk which interferes with shell exscapes changequote([,])dnl m4 quoting interferes with shell escapes include(TWMRC)dnl =======8<--------CUT HERE---------- ------------------------------------------------------------------------------- Icon Managers don't work like it did for Twm... Ctwm seems to be a bit weird in its turning on/off or Icon Managers. To get a ``PostitNote'' Icon Manager to work in in BOTH Ctwm and Twm set it up like this... =======8<--------CUT HERE---------- # # Icon Managing PostItNotes # IconManagers { "PostItNote" "=900x21+50+5" 10 } # For just X width=21xColumns IconifyByUnmapping { "PostItNote" } # don't create their icons (managed) # # The next three is to get ctwm to display the Icon Manager ShowIconManager # Show Icon Managers IconManagerDontShow # but dont show the global manager IconManagerShow { "PostItNote" } # only show the PostIt manager # =======8<--------CUT HERE---------- ------------------------------------------------------------------------------- Move Window to Other Workspace... # Move a window to the other workspace (failes with more than 2 workspaces) Function "OccupyOther" {f.occupyall f.vanish f.nextworkspace f.raise} #... LeftTitleButton "Pin12.xbm" = f.function "OccupyOther" ------------------------------------------------------------------------------- For multiple workspaces these m4 macros define multiple functions... define(`forloop', `pushdef(`$1', `$2')_forloop(`$1', `$2', `$3', `$4')popdef(`$1')') define(`_forloop', `$4`'ifelse($1, `$3', , `define(`$1', incr($1))_forloop(`$1', `$2', `$3', `$4')')') forloop(`N', 1, 9, `Function "move-to-workspace-N" { f.addtoworkspace "N" forloop(`I', 1, 9, `ifelse(N, I, , ` f.removefromworkspace "I"')') }') forloop(`N', 1, 9, `Function "move-and-goto-workspace-N" { f.addtoworkspace "N" forloop(`I', 1, 9, `ifelse(N, I, , ` f.removefromworkspace "I"')') f.gotoworkspace "N" }') ------------------------------------------------------------------------------- Start Application to occupy specific workspace... You can specify all applications of a specific type is to be on a specific workspace using the "Occupy" configuration option. Specific application... Attach a ctwm resource to the application... xterm -xrm "ctwm.workspace:Programming" You can use a space seperated list to have it occupy multiple workspaces xterm -xrm "ctwm.workspace:One Two Five" Not all application understand the -xrm, especially Gnome applications. FireFox is a typical example. Here I want to start a completely new firefox browser, running a seperate Profile (with its own home settings, and have it start on a different workspace. env MOZ_NO_REMOTE=true firefox -P Work -geometry 1028x1000+10+70 & if id=`xwin_find 240 "Work Portal .* Firefox"`; then # size, position, and iconify the first window only #xwit -resize 820 1000 -move 530 70 -iconify -id $id # Move window to the 'Delta' CTWM-Workspace xprop -id $id -f WM_OCCUPATION 8s -set 'WM_OCCUPATION' Delta # This could also have been set via -xrm "ctwm.workspace:Delta" # Except firefox doesn't understand standard Xwin resources! fi The xprop is the call to make to change the windows workspace. -------------------------------------------------------------------------------