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:
- Emacspeak running in a window to provide a local audio desktop.
- 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.
- 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
writing.
2 Resulting Functionality: What This Gives Us
- 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.
- Output displayed in the Xterm, e.g., by the remote Emacspeak session, can be brought into the local Emacspeak session by hitting
PrintEverything
bound toCtrl-Return
in the XTerm window. - 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
#!/bin/sh #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
! emacs-pipe.pl 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/emacs-pipe.pl XTerm.*.printAttributes: 0
!X Font environment Xft*antialias: true Xft*dpi: 96 Xft*hinting: true Xft*hintstyle: hintfull Xft*rgba: rgb