Monday, September 21, 2015

Setting Up An X Environment For Using With Emacspeak, ChromeVox and StumpWM

Setting Up An X Environment For Using With Emacspeak, ChromeVox and StumpWM

1 Executive Summary

This is a follow-up to the article on my Window Manager set-up
and details the setup of my X environment. This setup is specifically geared around the following use-cases:

  1. Emacspeak running in a window to provide a local audio desktop.
  2. ChromeVox running in a second window to provide access to JS-powered WebApps. Note that for the content-oriented Web, I use Emacs' built-in EWW browser.
  3. SSH running in an XTerm to my remote Linux desktop in a third window. The remote desktop runs Emacspeak and produces auditory feedback through a local speech server.

The setup described below is implemented via my personal .XResources
file — that file along with my .xsession file that loads it are
both checked into the GitHub repo under emacspeak/stumpwm along with any needed helper files.

The remaining sections give a brief descriptive overview of the
.XResources and .xsession files as they exist at the time of

2 Resulting Functionality: What This Gives Us

  1. You can cut-and-paste between the local Chrome and local Emacspeak using standard clipboard copy/paste commands. Make sure Emacs is set up to use the clipboard, and not the primary X selection.
  2. Output displayed in the Xterm, e.g., by the remote Emacspeak session, can be brought into the local Emacspeak session by hitting PrintEverything bound to Ctrl-Return in the XTerm window.
  3. Contents of the local clipboard, i.e. Chrome, Emacspeak etc., can be pasted into the remote Emacspeak running in the XTerm using key Ctrl-Shift-Space.

3 Initializing X Session Via File .xsession

#Caps Lock is Control
setxkbmap -option ctrl:nocaps       
#load in XResources to customize X environment 
xrdb -merge $HOME/.Xresources &
#Display locks after  30 minutes of inactivity
xautolock -detectsleep -time 30  -locker  "$HOME/bin/xlock" & 
# Launch Emacs 
emacs  -title Emacs &
# XTerm for SSH to remote desktop
xterm  -title Retriever &
# StumpWM Setup: Use SBCL 
export LISP=sbcl
# Export our  X auth environment 
${HOME}/bin/export_x_info &
# Launch StumpWM
exec  /usr/local/bin/stumpwm

4 Customizing X Environment Via File .XResources

! Setup Emacs Visual Look And Feel
Emacs*font:     -adobe-Utopia-normal-normal-normal-*-*-*-*-*-*-0-iso10646-1
Emacs.FontBackend:      xft,x
Emacs.menuBar:  off
Emacs.toolBar:  off
Emacs.verticalScrollBars:       off

:! Setup XTerm Look And Feel:

XTerm*Background:       black
XTerm*Foreground:       white
! Setup XTerm key-bindings to match Emacspeak
XTerm*VT100.translations:       #override \n\
Ctrl <Key>semicolon: string(0x18) string("@h") \n\
Ctrl <Key>comma: string(0x18) string("@a") \n\
Ctrl <Key>period: string(0x18) string("@s") \n\
Ctrl <Key>apostrophe: string(0x18) string("@s") \n\
Shift <Key>Return: string(0x18) string("@s") string(0x0d)\n\
Ctrl <Key>Return: print-everything()\n\
Ctrl Shift <Key>space:    insert-selection(CLIPBOARD) 

:! Configure rest of XTerm

XTerm*eightBitInput:    false
XTerm*faceName: xft:Inconsolata:pixelsize=14
XTerm*metaSendsEscape:  true

! is under emacspeak/etc in the Emacspeak Git Repository
! This helps us view XTerm output in a buffer in the locally running Emacspeak

XTerm.*.printerCommand:     /usr/local/bin/
XTerm.*.printAttributes: 0

!X Font environment
Xft*antialias:  true
Xft*dpi:        96
Xft*hinting:    true
Xft*hintstyle:  hintfull
Xft*rgba:       rgb

Date: <2015-09-21 Mon>

Author: raman

Created: 2015-09-21 Mon 09:14