Using Ratpoison/Example Config

   #.ratpoisonrc --- my own ratpoison customizations
   
   #Copyright (C) 2006 by maru dubshinki
   
   #Author: maru dubshinki <marudubshinki0@gmail.com>
   #License: BSD license, minus advertising clause.
   #Where: http://en.wikipedia.org/wiki/User:Marudubshinki/.ratpoisonrc
   #When:  Time-stamp: "2006-09-06 18:22:39 maru"
   #Keywords: local,customization,ratpoison
   
   #Commentary
   #This is my own all-singing all-dancing personal ratpoisonrc. 
   #It depends on two scripts, rpws, and expose (which can either be gotten
   #at Reactorcore or at the ratpoison wiki) and a number of other programs, chief
   #among which are xclip, surfraw, and firefox.
   #Anyway, there are three main sections, so to speak.
   #The first tweaks some ratpoison settings directly. The main feature of 
   #note is the changing of the escape sequence from two keys, C-t, to a single
   #key (called by ratpoison "less"), and the mirroring of less with another key,
   #so there are actually two equivalent escape keys.
   #The second section runs a number of programs like unclutter. This section generally
   #modifies X, modifies the keybindings (i.e making caps lock a control), and runs some
   #useful programs if possible.
   #The third section handles application key bindings. My general philosophy here has 
   #been to make the lower-case key invoke the "heavy" or feature-rich version of the 
   #idealized type of application, and the uppercase one runs a different, smaller and 
   #lighter-weight application which does much the same thing. For example, d runs 
   #Firefox, and D runs terminal elinks. e runs Emacs, and E runs nano in a terminal.
   #And so on.
   
   ##change directory to $HOME
   chdir
   
   ##What's the shell?
   alias term exec aterm
   
   ##Banish the mouse with each screenchange
   #addhook switchwin banish
   
   ##Setting the prefix keys
   ###Set the ctrl-t key to something easier
   escape less
   
   ###Set the ctrl-t key to something easier
   definekey top Insert readkey root
   definekey root Insert link less
   
   ##Set the mouse warping option.
   warp on
   
   ##Hush up, ratpoison. I know what the prefix key is.
   startup_message off
   
   ##There are three different ways ratpoison can "name" frames.
   ##By title, name, or class. Title gets you gunk like "emacs@localhost.localdomain";
   ##but name and class give you the sensible "emacs" or "Emacs". 
   set winname class
   
   ##Graphics tweaks
   ###Not quite sure what these do, copied from Reactor Core.
   ###Supposedly make borders take up less space.
   defborder 0
   defpadding 0 0 0 0
   defbarpadding 0 0 
   
   #This was suggested on the ratpoison wiki as a way to
   #make messages clearer. Doesn't work right now. Maybe I have the wrong
   #font name?
   #deffont -etl-*-*-r-*-*-*-400-*-*-*-*-*-*
   
   ##What programs do we run on startup?
   ###Do some key re-mapping
   exec xmodmap -quiet ~/.Xmodmap
   
   ###Apparently modifies some low-level GUI bits of X.
   exec xrdb -load ~/.Xresources
   
   ###Change the background and pointer in X
   #exec xsetroot -solid black -cursor_name left_ptr
   exec xsetroot -cursor_name left_ptr
   
   ###I like astronomical images. Let us make use of xplanet.
   #exec xplanet -body earth -fork -random -light_time -transparency -wait 60
   
   ####This is an alternative- setting electricsheep as the background.
   #exec electricsheep --root 1 --nick maru --zoom 1 --mplayer 1 --history 50 &
   
   ###Set a background, randomly picking from a certain directory.
   exec cd ~/pics && xsetbg -border black -fork -type jpeg -fit -onroot -fullscreen `w=(*.jpg); n=${#w[@]}; echo "${w[RANDOM%n]}"` && cd ~/
   #exec xsetbg -border black -fork -type jpeg -fit -onroot -fullscreen `w=(*.jpg); n=${#w[@]}; echo "~/pics/${w[RANDOM%n]}"`
   
   ###Run unclutter so the mouse hangs around no longer than needed.
   exec unclutter -idle 1 -jitter 2 -root
   
   ###I use xscreensaver as a screensaver. The first line makes sure any running xscreensaver is killed.
   ###The second starts and backgrounds xscreensaver
   exec xscreensaver-command -exit
   exec xscreensaver &
   
   ###This should set up rpws and groups
   ###http://ratpoison.elektrubadur.se/rpws
   exec rpws -i
   exec rpws -b
   ###This should be pretty obvious. Why not use function keys?
   bind F1 exec ~/bin/rpws 1
   bind F2 exec ~/bin/rpws 2
   bind F3 exec ~/bin/rpws 3
   bind F4 exec ~/bin/rpws 4
   bind F5 exec ~/bin/rpws 5
   bind F6 exec ~/bin/rpws 6
   bind F7 exec ~/bin/rpws 7
   bind F8 exec ~/bin/rpws 8
   bind F9 exec ~/bin/rpws 9
   bind F10 exec ~/bin/rpws 10
   bind F11 exec ~/bin/rpws 11
   bind F12 exec ~/bin/rpws 12
   
   ###xbindkeys can alias for some neat things.
   #This is last- low priority. Commented out, currently does nothing,
   #exec xbindkeys
   
   
   
   
   ##aliasing keys within ratpoison
   ###make semicolon invoke ratpoison command, and colon shell command.
   bind semicolon colon
   bind colon exec
   
   ###Show-the-root-window script
   alias showroot exec ratpoison -c fdump; ratpoison -c 'select -' -c only
   alias unshowroot exec ratpoison -c "frestore `cat $HOME/.rpfdump`"
   #bind B showroot
   
   ###Change the date from 24-hour to 12-hour
   bind a time
   
   ###(Getting a root terminal. There is no binding for "c", since that
   ###is a default binding, to a terminal.)
   ###I've since changed this since I don't use it very often.
   #bind C exec ssh -X root@127.0.0.1 aterm
   bind C colon exec aterm -e 
   
   ###Shortcut for emacs. Emacsclient is called, but it expects
   ###a filename. This can be circumvented by instructing it to
   ###instead evaluate a Emacslisp expression- the current one
   ###says "open up a new frame on the current display device".
   ###It has to be quoted or else sh will try to open up the lisp
   ###expression in a sub-shell as a shell command.
   ###Neatly, if an emacs isn't already running, then emacsclient runs
   ###$EDITOR, which points back to regular emacs!
   bind M-e exec emacsclient --eval '(make-frame-command)'
   ###Shortcut for nano
   bind M-E exec aterm -e nano
   
   ###Shortcut for firefox
   bind d exec mozilla-firefox
   #bind d exec mozilla-firefox & ratpoison -c "title firefox"
   
   ###A new hack using xclip (which prints out the current text selection) to
   ###open up a new tab in a running firefox with the address as the current selection.
   ###The idea is, you highlight an URL and then instead of manually inputting it,
   ###simply whack R-b ('b' standing for "browse").
   #bind b exec mozilla-firefox -new-tab `xclip -o`
   bind B exec mozilla-firefox -new-tab `$RATPOISON -c getsel`
   bind b colon exec mozilla-firefox 
   
   ###Shortcut for elinks
   bind D elinks http://www.google.com/
   #bind B elinks http://www.google.com/
   
   ###Shortcut for dillo- currently I use elinks instead. dillo's 
   ###keyboard commands are too awkward as of yet.
   #bind D exec dillo
   
   ###Shortcut for gqview
   bind g exec gqview +t
   
   ###Binding for xpdf
   bind x exec xpdf
   
   ###Runs a perl script which emulates the Mac's expose feature.
   ###http://ratpoison.elektrubadur.se/expose.pl
   bind w exec ~/bin/expose.pl
   
   ###Runs a shell script which creates an alt-tab menu analog
   ###http://reactor-core.org/ratpoison-config.html
   bind W exec ~/bin/windows
   
   ###Make prtscreen work, as long as in ratpoison mode. "import" is an Imagemagick command.
   bind Print exec import -window root png:$HOME/xwd-$(date +%s)$$.png
   
   ###Crikey, I'm gonna need a separate section just for surfraw shortcuts.
   ###Anyway, the model for these (thanks to aon) is "bind r colon exec surfraw wikipedia "- note
   ###the space. If the space isn't there, then the user will need to manually add a space, which is not good
   ###In the shell, one can omit the surfraw command, but not in ratpoison, as ratpoison's PATH currently does
   ###not include the directory with the elvi in it.
   ###List of useful surfraw elvi follows:
   ###amazon bbcnews cia cite cnn debbugs debcontents deblists deblogs debpackages debpts deja dmoz ebay etym freshmeat google imdb rfc rhyme slashdot sourceforgen translate
   
   ###Surfraw aliases.
   alias cnn exec surfraw cnn
   alias debbugs exec surfraw debbugs
   alias debbug debbugs
   alias debpackages exec surfraw debpackages
   alias google exec surfraw google
   alias gutenberg exec surfraw gutenberg
   alias surfraw exec surfraw
   alias wayback exec surfraw wayback
   alias wikipedia exec surfraw wikipedia
   alias wookieepedia exec wookieepedia
   
   ###Surfraw keybindings
   bind t colon wikipedia 
   #bind t exec wikipedia `xclip -o` #See previous comment for R-b
   bind T exec wikipedia `$RATPOISON -c getsel`
   bind E google `$RATPOISON -c getsel`
   bind e colon google 
   #bind T colon google 
   bind Y colon wayback 
   bind y colon wookieepedia 
   bind u colon debbugs 
   bind U colon debpackages 
   
   ##Aliasing long commands within ratpoison
   ###Leaving open the option to use conkeror, a skin over firefox.
   ###Wish I could get sane tabbed browsing in it...
   alias conkeror exec mozilla-firefox -chrome chrome://conkeror/content
   alias elinks exec aterm -e elinks