Category Archives: Accessible Applications

Facebook Comes to the Command Line

Advertisements

I have been searching for a way to access Facebook from the command line for a while now. I don’t use Facebook all that much, I prefer Twitter, but I do have a lot of friends who use Facebook. So, I created an account, and fortunately got the Twitter application working for it before they broke (disabled) it for new users. So, to make a long story short, the only updating my Facebook account gets is usually done from my Twitter stream. Facebook, to me, just seems kind of clunky to use with a browser, that and there aren’t many accessible clients for it, so the only way to use it was with a browser. I recently got an Android phone and it adds another way to access Facebook but I really don’t use that method much either. Then, my friend Burt Henry found fbcmd. Fbcmd is a command line application written in PHP for Facebook. It is really easy to get installed. To do so, first install php by typing:
sudo apt-get install php5-CLI
Then get the fbcmd software by typing:
wget --no-check-certificate https://github.com/dtompkins/fbcmd/raw/master/fbcmd_update.php
If you are wondering about the certificate flag in the above command it is there because wget gives an error for github’s certificate. It is really the destination it claims to be. After the download completes, type the following two commands:
sudo php fbcmd_update.php
sudo php fbcmd_update.php install
Then, if you would like to verify that everything installed correctly, type:
fbcmd
You should get a short help message describing the procedure for granting authorization to fbcmd. if everything goes OK you can now remove the installation package using the command:
rm fbcmd_update.php
Now, to grant authorization to fbcmd type:
fbcmd go access
This will open your default browser, most likely Firefox if you are in Gnome, you will need to click allow. Next, type:
fbcmd go auth
When you click the allow button here you will be given a six6 character authorization code. I had trouble copying it to the clipboard with Orca, so you may have to memorize it long enough to type it in to terminal:
fbcmd auth XXXXXX
Where XXXXXX is your code.
Now, to see what your friends have been up to while you were busy installing this really cool program, type:
fbcmd stream
To set your status:
fbcmd status 'Thinks Thoughts of a Dragon is the greatest blog in the whole world, no, the whole universe!'
when you read through your stream you will notice each item is numbered. You can comment on the post by typing:
fbcmd comment 3 "If you need help with your diabolical world domination plans just let me know."
This will of course reply to the third post in your stream which was hopefully about diabolical world domination and not cute little bunnies, although cute world dominating bunnies might be kind of cool.
For a full list of commands and all kinds of great help visit the fbcmd wiki. You can also get help on a command by typing fbcmd help command as in:
fbcmd help status
I foresee all kinds of neat cron stuff for this application. If you think of any example feel free to share with everyone in the comments.

Music Status for BitlBee

Advertisements

For nearly every instant messenger in Linux there is a plugin or the ability to set your status to the currently playing song. I was surprised to find that nothing like this was available for Irssi and BitlBee though. So, I decided to see if I could do anything about it. It turned out to be a lot harder than I thought it would be to get this working, but finally after a lot of tinkering and help from the #irssi channel on irc.freenode.net as well as the Irssi info email list, it’s alive!
First, let’s get everything set up. You will need the cron script for Irssi. Save the script to your ~/.irssi/scripts directory. You may need to create the scripts directory. Then create a simlink to cron.pl from the ~/.irssi/scripts/autorun/ directory. the autorun directory may also need to be created. to make the simlink:
ln -s ~/.irssi/scripts/cron.pl ~/.irssi/scripts/autorun/cron.pl
This causes the cron.pl script to start with Irssi. For this example I decided to use Pianobar, console based Pandora player. You can use a script file called eventcmd.sh located in ~/.config/pianobar/ to make Pianobar do some pretty nifty things. Part of what mine does is set status for Pidgin instant messenger and also write a file in /tmp/irssistatus that contains a small script to set by bitlbee status to the currently playing song. Here is my file which is based off the example file included with Pianobar:
#!/bin/bash
# create variables
while read L; do
k="`echo "$L" | cut -d '=' -f 1`"
v="`echo "$L" | cut -d '=' -f 2`"
export "$k=$v"
done < <(grep -e '^\(title\|artist\|album\|stationName\|pRet\|pRetStr\|wRet\|wRetStr\|songDuration\|songPlayed\|rating\|coverArt\|stationCount\|station[0-9]*\)=' /dev/stdin) # don’t overwrite $1…
album=$(echo "$album" | sed 's/ (Explicit)//g')
case "$1" in
"songstart")
/usr/bin/purple-remote "setstatus?status=available&message=Listening to $title by $artist from $album" &> /dev/null
irssiStatus="#!/bin/bash
echo \"set status 'Listening to $title by $artist from $album'\"
exit 0"
irssiStatus=$(echo "$irssiStatus" | sed 's/\&/and/g')
irssiStatus=$(echo "$irssiStatus" | sed "s/'/\\'/g")
echo "$irssiStatus" > /tmp/irssistatus
chmod 700 /tmp/irssistatus
;;

"songfinish")
if [ -n "$songDuration" ] && [ $(echo "scale=4; ($songPlayed/$songDuration*100)>50" | bc) -eq 1 ] && [ "$rating" -ne 2 ]; then
/usr/lib/lastfmsubmitd/lastfmsubmit --artist "$artist" --title "$title" --album "$album" --length "$((songDuration/1000))"
fi
;;
"songlove")
statusText="#nowplaying \"$title\" by \"$artist\" from \"$album\""
ttytter -readline=0 -silent -status="$statusText"
;;
*)
if [ "$pRet" -ne 1 ]; then
echo "naughty.notify({title = \"pianobar\", text = \"$1 failed: $pRetStr\"})" | awesome-client -
elif [ "$wRet" -ne 1 ]; then
echo "naughty.notify({title = \"pianobar\", text = \"$1 failed: Network error: $wRetStr\"})" | awesome-client -
fi
;;
esac
exit 0
#end eventcmd.sh
If you have createdd the file to ~/.config/pianobar/eventcmd.sh, set it to executable, and it doesn’t seem to work, edit the file ~/.config/pianobar/config and add the line:
event_command = /home/USER/.config/pianobar/eventcmd.sh
You can add your Pandora user name and password if you want:
user = Your Email Address
password = YourPassWord
This will allow you to automatically login without being prompted for your information each time.
The above script will also post the songs you love by pressing the + key to Twitter using TTYtter. It scrobbles to Last.fm using lastfmsubmitd:
sudo apt-get install lastfmsubmitd
Then edit the file:
/etc/lastfmsubmitd.conf
and add the following three lines:
[account]
password = yourLast.fmPassword
user = Last.fmUserName
Your user name is your account user name not your email address.
If you get permission denied errors for /var/spool/lastfmsubmit… files, the following code may correct the problem:
for i in /var/log /var/run /var/spool; do sudo chown lastfm:lastfm $i/lastfm; sudo chmod 775 $i/lastfm;done
And now, back to the original idea for this article. You have your shiny new eventcmd.sh file in place, you have your cron.pl script in the ~/.irssi/scripts directory and have it set to start when Irssi does. So, now, start irssi and type the following line:
/jobadd -server localhost * * * * * /exec -msg &bitlbee /tmp/irssistatus
To save it for future use type:
/jobssave
Then, the next time you start Irssi and login to BitlBee type:
/jobsload
to get it up and running again. And there you have it, your very own musical status for BitlBee. If you don’t have BitlBee installed but use a public installation, you will need to change the -server bit in the /jobadd line to your public server. There is one small problem though. In your &bitlbee control channel you will keep getting your message to set the status and then the root confirming it has been set. I have managed to get rid of the confirmation message but the actual set status from your nick will still show up. To block out the confirmation:
/ignore -regexp -pattern “(set status|status =)” *
There is probably a better way but regexps are not my strong point, so suggestions are welcome.
If you aren’t listening to anything and the /tmp/irssistatus file doesn’t exist you will get an error. the easiest way to correct this is to write the /tmp/irssi file by hand with your chosen status:
#!/bin/bash
echo 'set status "GREEN! like a booger!"'
exit 0
That one will definitely get you some ims Usually consisting of things like "What the hell!?". If you would like a bit more of a random status you can use this instead:
#!/bin/bash
status=$(fortune -s | sed "s/'/\\'/g")
status=$(echo "$status" | tr "[:space:]" " ")
if [ $(echo "$status" | wc -l) -eq "1" ] ; then
echo "set status '$status'"
fi
exit 0
The above script will give an error if the fortune is not in English. In the music script, some songs with odd things in their names may cause errors. this is rare as far as I can tell. I think I have fixed most if not all of them.

Shell-fm, a Command Line Last.fm Player

Advertisements

I was searching for a good command line last.fm player to use on my netbook. Command line apps really have an advantage on netbooks because of their speed. The player I chose is shell-fm. It is easy to configure and use, and has a nifty ability that makes it, in my opinion, easily the best choice. You can run other command line commands from inside shell-fm and, better still, bind the command to a keypress. I will show you why this is so awesome in just a sec, but first, installation.
Although you can install shell-fm from the repositories with:
sudo apt-get install shell-fm
you will probably want to compile it from source. The latest version has built in volume controls using the + and – keys. To compile from source open terminal and type:
sudo apt-get install git-core
sudo apt-get build-dep shell-fm
git clone http://github.com/jkramer/shell-fm.git
cd shell-fm/
make
sudo make install PREFIX=/usr MANDIR=/usr/share/man
When it is finished installing switch back to your home directory by typing:
cd
Create the .shell-fm/ directory by typing:
mkdir .shell-fm/
mkdir .shell-fm/cache/
then create the shell-fm configuration file:
gedit ~/.shell-fm/shell-fm.rc
There are several things you can put in this file. I only have three or four lines in mine though. The format is:
variable = setting
Here is a sample of what you can put in it. Replace USER with your Last.fm user name and PASSWORD with your Last.fm account password. Note that only upper case words should be changed:
username = USER
password = PASSWORD
title-format = Now playing %t by %a from %l
screen-format = Now playing %t by %a from %l
term-format = Now playing %t by %a from %l
default-radio = lastfm://user/USER
The last line loads your chosen radio station when shell-fm opens. If you use the default-radio line above with your user name the station that plays is your last.fm library. If you would like to automatically download free songs, add the next line replacing USER with your home directory:
download = /home/USER/Downloads/%a – %t.mp3
Downloaded tracks will be saved in your ~/Downloads directory.
And now, as promised, I will show you some extra coolness. If you have installed TTYtter, Here is a script that uses TTYtter to tweet the currently playing song. To get it set up open terminal and type the following line:
wget --output-document ~/.shell-fm/tweet.sh http://www.stormdragon.tk/scripts/tweet.sh
chmod 700 ~/.shell-fm/tweet.sh
Finally, the key binding thing I mentioned earlier. In your ~/.shell-fm/shell-fm.rc add the following line. Replace USER with the name of your home directory (usually your login name):
key0x74 = /home/USER/.shell-fm/tweet.sh %t %a %l %T
This binds the tweet script to the lower case letter t. the key format uses the HEX value of the ASCII character. You can get the HEX value using a Hex to ASCII Converter. The key must be entered as:
key0xHEXNUMBER = command
Shell-fm also has the ability to run a command when a song starts or when it ends. One use for this is to set your status in Pidgin to the currently playing track. To do this, open your ~/.shell-fm/shell-fm.rc and add the line:
np-cmd = /usr/bin/purple-remote ‘setstatus?status=available&message=Listening to %t by %a from %l’
If you do it this way though your status may have a lot of \ characters in it. To avoid this, put it in a script and call it like the tweet script above without the URL. Here is status script. Save it in your ~/.shell-fm/ directory and call it like this:
np-cmd = /home/USER/.shell-fm/status.sh %t %a %l
Don’t forget to change permission to 700 with:
chmod 700 ~/.shell-fm/status.sh
To get instructions on using shell-fm type:
man shell-fm
or if you are running shell-fm type:
?
for a list of commands.

Extending TTYtter

Advertisements

The TTYtter extension pack has been moved to github. The original article and files have been left intact for anyone who wants them. The new way to get the extensions is to open terminal and do the following:
git clone https://github.com/stormdragon2976/ttytter-extensions
To add an extension to your .ttytterrc, the soundpack for example, you would do:
ext=/home/USERNAME/ttytter-extensions/soundpack.pl
And now back to the original article already in progress…
One of the very numerous awesome things about the greatest Twitter client in the world, TTYtter, is its ability to use extensions. extensions are third party add ons for TTYtter that add functionality that hasn’t been included in the TTYtter program itself. One of the things I wanted in TTYtter was sound alerts for the different types of events. So, with some help from TTYtter’s author, Cameron Kaiser, I wrote my first TTYtter extension to add soundpack functionallity. The soundpack goes in a directory in your home folder. If you download the script by itself you may need to create this directory structure. The path to the sounds is:
~/.ttytter/sounds/soundpack-directory
My first soundpack was created using the Espeak speech synthesizer. If you would like, you can download the soundpack. Use the file names as a template to create your own soundpacks. The file names must match exactly. They are:

me.ogg
Sound to play when you post a tweet.
default.ogg
Sound when you receive a new tweet
dm.ogg
Sound when you receive a direct message
search.ogg
sound when you get new results for what ever you are tracking
reply.ogg
sound when someone mentions you

The soundpack can be named anything you like and must be placed in:
~/.ttytter/sounds/
To get your chosen sound pack to load when TTYtter starts, add the line:
extpref_soundpack=sound-pack-name
to your .ttytterrc. Alternatively you can just rename your chosen sound pack to:
default/
and it will load with no modification needed in the .ttytterrc file.
Usually I put all the extensions I use in the ~/.ttytter/ directory so it keeps everything nice and tidy. If you would like to use the full pack of extensions that I use I have created a convenient package that has everything already set up in it. Just extract the folder in your home directory and set up your .ttytterrc file to point to the extensions. If you have previously installed TTYtter using my previous post, you only need to add a line and the notification type for the soundpack. Open terminal and type:
gedit .ttytterrc
Somewhere in the file above the notify information, add the following replacing USER with your user name, the name of your home directory:
exts=/home/USER/.ttytter/soundpack.pl,/home/USER/.ttytter/timestamp.pl,/home/USER/.ttytter/groups.pl
Next find the line that reads:
notifytype=libnotify
and chage it to:
notifytype=soundpack,libnotify
save the file and everything should just work when you open TTYtter.
Included in the pack are the soundpack script, a timestamp script originally written by @vkoser and heavily modified by me, and a groups extention also written by @vkoser. when you install the pack there is a default group created with @ttytter, myself, and some other extention writers in it. If you follow any of us our tweets will be stored in the ttytter group. For help with group commands type:
/grouphelp
If you would like an automated way to create your .ttytterrc using all the extensions then check out http://www.stormdragon.tk/ttytterrc/. Note that it assumes you will be using both libnotify and the soundpack extension. If you don’t want to use libnotify edit the file and remove it from the notifytype line.

TTYtter, an Awesome Console Based Twitter Client

Advertisements

TTYtter is a great command line Twitter client. To get it up and running to its optimal capabilities can take a little work, especially if you would like to get pop up notifications on your desktop with libnotify. So, here is a guide that will show you how to get it all working. Even if you are normally a GUI only sort of person I would still like to suggest you give it a try. TTYtter is my favorite Twitter client. These instructions work on Ubuntu 9.10 Karmic and later and should work on other systems with minimal modification.
If you are a Vinux user, or if you have added the Vinux PPA, you can install TTYtter by opening terminal and typing:
sudo apt-get update
sudo apt-get install ttytter
To install TTYtter manually with readline support and get the curl package open terminal and type:
sudo apt-get install libterm-readline-gnu-perl curl
Arch Linux users also need the perl-term-readkey package:
pacman -S perl-term-readkey
If you use the readline package above you will need to set your PERL_RL variable. To do this open terminal and type:
gedit .bashrc
When the file opens add the following line to the end:
export PERL_RL=Gnu
Save the file and reload it by typing:
source .bashrc
In 1.1.6 and later, you can install a TTYtter specific readline called Term::ReadLine::TTYtter. To do this, go to CPan and download the package. Extract and install the package by opening terminal and typing:
tar xzvf Downloads/Term-ReadLine-TTYtter-1.2.tar.gz
cd TTYtterReadLine/
perl Makefile.PL
sudo make install
Note that the number in the .tar.gz file will change as newer versions are released.
Now, to download TTYtter:
sudo wget -O /usr/bin/ttytter http://www.floodgap.com/software/ttytter/ttytter.txt
sudo chmod 755 /usr/bin/ttytter
If you do not have system wide access save it to ~/bin/ttytter instead of /usr/bin/ttytter and use chmod 700 instead of 755. It may be necessary to create the ~/bin directory.
If you would like to get everything up and running as quickly as possible with extensions from several different authors, you can download the ttytter-extensions pack. Read this article for more infromation. If you install the extensions, you can visit the .ttytterrc generation page to create the .ttytterrc settings file in a few simple steps. When your .ttytterrc file has been placed you can then start the program by typing:
ttytter
in a terminal. For complete instructions on using TTYtter, commands, menu codes, etc please read the TTYtter home page.
If, however, you want to set everything up manually, read on. TTYtter is now installed but missing some of its coolness. If you were to launch it by typing:
ttytter
You would have to also include some arguments to get it going if you want to use things like readline. It’s much better to save this information in a ~/.ttytterrc file. So, here is the ultimate .ttytter file. If you do not plan to use the notifications with libnotify or libnotifyperl you can leave out the notification and exts lines. Copy and paste the following in to a file called .ttytterrc replace USER with the name of your home directory:
#TTYtter settings
#show replies in timeline
mentions=1
#Open images with Eye of Gnome
avatar=eog %U&
#Open URLs with Firefox
urlopen=firefox %U&
#let TTYtter decide how often to check for new tweets
pause=auto
#Use ANSI color
ansi=1
#Check version on start up
vcheck=1
#Number of retries to connect to Twitter
hold=15
#\r and \n create a new line
newline=1
#answer y or Y to post your tweet
verify=1
#use readline support. Change 1 to a list of followers in quotes for tab completion support
readline=1
#Enable word wrap
wrap=1
#Add the libnotifyperl extension
exts=/home/USER/libnotifyperl/libnotifyperl.pl
#Set notification service(s)
notifytype=libnotifyperl
#Set types of tweets for which you would like to receive notifications
notifies=dm,me,reply,search,default
#end TTYtter settings
The newest method of getting desktop notifications doesn’t require patching libnotify. You can still use that method if you would like, and the instructions are left for reference below this new method. The new way is to use an extension written by Colindean which does notifications using Gtk2::Notify. To get it:
sudo apt-get install git-core libgtk2-notify-perl
make sure you are in your home directory by typing:
cd
and then do:
git clone http://github.com/colindean/ttytter-libnotifyperl.git
The old way to enable notifications takes a little more work. The notify-send package is available from the repository, but for some reason a patch that
adds required functionality has not been added in to the distributed version. So, instead of using the standard package, we have to roll our own. If you are not sure if you already have it installed, in terminal type:
sudo apt-get remove libnotify-bin
To build the libnotify-bin package and apply the patch type the following in terminal:
cd
apt-get source libnotify-bin
sudo apt-get install gtk-doc-tools
sudo apt-get build-dep libnotify
then download this patch. You will probably need to right click the link and select "save link as". After the file has finished downloading:
cd libnotify-0.4.5/
The number in the directory name above may change as new versions are released. If you type libnotify and press tab it should complete the name, then press enter to get in to the directory. Then, apply the patch. My files save in ~/Downloads if your files download to another location you will need to alter the path in the next command to point to the downloaded file:
patch -p0 < ../Downloads/notify-send-support_body_from_file.patch
./autogen.sh
make
sudo make install
I had to restart before notifications worked as expected. Now TTYtter is installed and should work with its ultimate coolness factors enabled. Enjoy, but be warned, TTYtter will be your new favorite Twitter client after five minutes of use. For instructions check out http://www.floodgap.com/software/ttytter/.

Commanding the Command Line (Part 2)

Advertisements

This is part two of a discussion of accomplishing your hearts desire with out the use of a GUI. It’s back to the console for us as we dive in to such fun things as web browsing, instant messaging, and text editing.

Instant Messaging with Finch

Pidgin and Finch are closely connected. finch is the command line version of Pidgin. So, the way I handle setting up accounts is with Pidgin. Then, in the console launch by typing finch. The first time you run it you will be presented with the accounts list. Use highlight tracking in Speakup because it works better with Finch. Press space on each account you want activated. Move through them with the up and down arrow keys. When you activate an account it will say X to show that it is checked. When you have activated all of your accounts, press alt+a to be taken in to a menu with items like buddy list, plugins, sounds, etc. Select the sound option and tab until you find the first sound option, probably "Someone says your name in chat". Press space to check each item for which you would like to have sound. Use the up and down arrows to navigate the list. After selecting the sounds you want, press alt+a to get back to the menu. I must say that I have never successfully gotten sounds to work in Finch but I know people who have, so it’s just my problem apparently. Select Plugins and check the plugins you would like to activate. Most of the plugins that work in Pidgin also work in Finch. This is a good time to mention my favorite sets of plugins. Some of these only work with Pidgin, but I will include them anyway. Pidgin-musictracker displays your currently playing track in Pidgin. Pidgin-plugin-pack, lots and lots of useful plugins. Pidgin-mbpurple, adds Twitter and a couple of other things to Pidgin. To get them all:
sudo apt-get install pidgin-plugin-pack pidgin-musictracker pidgin-mbpurple
When you have the plugins configured the way you want them, press alt+a to get back to the menu. If you are not on your list of groups that contain your contacts, press tab until you get to it. Only buddies who are on-line will show up. To expand a group press space and to close it press space again on the group title. If you press f10 you will get another menu with things like add buddy in it. If you would like to turn off time stamps, while chatting with someone press f10 and press enter on show time stamps. To exit Finch press alt+q.

Web Browsing with Elinks

To get elinks, in Ubuntu, type:
sudo apt-get install elinks
When you first install Elinks, it takes some configuring to get it working optimally with Speakup or any other console screen reader. To launch it type:
elinks
If it is the first time you will get a welcome message. Press enter to go to the next screen. Here it will ask for a URL. Press escape to get into its menus. In Speakup, it is a good idea to turn on highlight tracking if you haven’t already. Press right arrow to get to the Setup menu, then down to Options Manager and press space to activate it

Numbered Links

Move down to Document and press space to activate it then down to browsing and press space again. Go down to links and press space. Move down through the menu until you find Numbered Links and press tab until you get to Edit then press enter. For some reason these selections do not read exactly right. when I was on the Edit option, for example, it said "Info Edit". Press backspace to remove the 0 and type the number 1 in its place and press enter. Now links on pages will be numbered. To activate a numbered link type its number and press enter then enter again to activate it.

Turn Off Frames

Press down arrow until you get to Html Rendering and press space. Go down to Show Frames and tab to the Edit option and press enter. Change the 1 to 0 and press enter.

Remember to Save

When you have finished setting options, be sure to save. Tab until you get to the save option and press enter. In this case, Speakup read it as "Search Save". You will know you did it right if you get a message about the configuration being written successfully.

Tips and Tricks

You can launch elinks with an address so when it opens you will go directly to a web page instead of having to type in the address. for example:
elinks http://www.stormdragon.tk/
or:
elinks stormdragon.tk
To enter a new URL press g. If you would like to be able to copy the current URL, press shift G. You can use screen’s excellent copy feature to get the current address.

Email with Alpine

To get Alpine, in Ubuntu, type:
sudo apt-get install alpine
To launch Alpine type:
alpine
the first time it runs it will create a mail folder and show you a welcome message. Press enter to get to the main menu, then s for setup and c for configure. If you want to use Alpine with your gmail account, there is an excellent guide that shows you how. If you get imap errors when trying to retrieve your email, open the .pinerc file and search for the line that reads:
inbox-path={imap.gmail.com/ssl/user=YourEmailAddress@gmail.com}
Remove any extra characters after the right brace } and save the file. It should now work correctly. Alpine works very well with Speakup and the menus are clear and not difficult to follow.

Commanding the Command Line (Part 1)

Advertisements

In the event that you decide to, or for some reason have to go completely command line for a while, you will likely be wondering how to do certain things. There are some things that have to be done on any computer to make the computer in question worth it’s plastic. So, here is part one of a discussion on doing these important tasks from the command line. Some of this may be covered elsewhere here but I am including it again for the sake of completeness. To get to the console from gnome, press control+alt+f1 through f6. You have six consoles to choose from, but when you wanna go back to gnome, it is control+alt+f7. If you want to use the console you will need a screen reader for it like Speakup. For information on installing Speakup in Ubuntu read "Speakup Revisited".
If you are completely new to the command line, you can use these two tutorials to get started with it quickly:
Into the Linux Command Line Interface (CLI) and Introduction to Command Line Interface (CLI) 2.

Multiple Terminals With Screen

I am pretty sure that Ubuntu comes with screen installed. I don’t ever remember installing it, but it could have sneaked in as a dependency for something else though I doubt it. If you don’t have screen, you need it. To launch it, type screen. You will have to press enter after it starts to get your prompt back. Screen makes it so you can have several terminals all at once. To create a new one, press control+a followed by c. You can have as many as you want, one for music, one for email, one for instant messaging, etc. To switch between terminals, press control+a followed by n for the next one or p for the previous one. To close a terminal that you no longer need, type exit. Another great feature that screen has is the ability to copy and paste. When you need to copy something, press control+a followed by either the escape key or [. Use the arrow keys to position the cursor on the first of the text you would like to copy and press space. Find the last part you want to copy and position the cursor on it with the arrow keys and press space again. Now, when you need to past the copied information press control+a followed by the ] key.
The use of a ~/.screenrc file can help Orca users to copy from the terminal. Installing xclip is helpful for this. To get it:
sudo apt-get install xclip
Here is the .screenrc file that I use:
#Begin .screenrc
startup_message off
defscrollback 1024
bind b eval "writebuf" 'exec !!! xclip -selection "clipboard" -i /tmp/screen-exchange'
termcapinfo xterm|xterms|xs|rxvt ti@:te@
#end .screenrc
If you want to download this file, enter the following command in terminal:
wget -O ~/.screenrc http://stormdragon.tk/scripts/screenrc
Using this .screenrc file you can press control+a b after following the above instructions to copy text to place the copied text into the clipboard. If you are using screen in the console where the X clipboard is not available, you can still easily get the copied information from the file:
/tmp/screen-exchange
To move up and down through the terminal’s buffer press shift+pageup and shift+pagedown. This is slightly different from gnome-terminal with out screen in which you press control+shift+pageup and control+shift+pagedown to move through the buffer.

Twitter From The Command Line

The program twidge is an excellent command line Twitter client. A lot of distros include it in the repositories. In Ubuntu, for example, you can get it by typing in terminal:
sudo apt-get install twidge
If your distro doesn’t include it you can download it from http://software.complete.org/software/projects/show/twidge.
After installing Twidge, you need to configure it. To do this, type:
twidge setup
There are only two questions and they should be very easy to answer. After twidge is configured, you can get the latest tweets very easily. First though, you should run:
twidge lsrecent -su
This gets the last 20 tweets and also sets a place marker so you won’t see them or anything before them if you do not wish to do so. After running this command, you can then get all new tweets by typing:
twidge lsrecent -asu
To post an update type twidge update and press enter. Type your update and press enter again, just remember not to go over the 140 character limit. For more detailed instructions on Twidge and its uses, type:
man twidge
You may also be interested in TTYtter.

Weather Information

I wrote an article on weather a while ago. There is a great program called weather-util for the console. To find out how to install and configure it, please read "…And Weather For All".

Command Line Music Player

I have tried several terminal based music players. None of them worked well with Speakup. I was about to lose hope in ever finding a good one to use with a screen reader when I heard of cmus. In Ubuntu, get it by typing:
sudo apt-get install cmus
Launch it with the command:
cmus
and close by typing:
:quit
After the first time you start and close the music player open the ~/.cmus/autosave file. Find the line that reads:
set softvol=false
Change it to true and save the file. softvol allows you to change the music players volume without changing volume for the whole computer. There are a lot of other settings that can be changed in this file including repeat and shuffle. To add music to the library use :add and the directory where the music is stored. You can use :a as a short cut if you prefer. To add all of the songs in ~/Music and its sub directories, for example, you would type:
:a ~/Music
Use – to decrease the volume and = to turn it up. Previous track is z, play is x, pause is c, stop is v, and next track is b. Use the up and down arrows to move through the tracks in your library and enter to play the currently selected song.. For more info on cmus, type man cmus.

Sox, the Swiss Army Knife of Sound Processing Utilities

Sox is one of my favorite command line programs. It can play audio, record, convert from one file type to another, and add effects to audio. Unfortunately it is not packaged with all of its powerful abilities enabled by default. The best way to deal with this little problem is to download and install it yourself. The only thing it is lacking is the ability to write mp3 files. It can play them, but by default, in Ubuntu and I assume other distros, it can not write mp3 files. So, if you do not care about this functionality, just do the normal sudo apt-get install sox. If you want to be able to convert to mp3, you will need to download it from http://sourceforge.net/projects/sox/ and install it. Before installing though, you will need to get some other libraries. In Ubuntu type:
sudo apt-get install libmp3lame0 libmp3lame-dev libsox-fmt-all
sudo apt-get build-dep sox
Next extract the sox files with the following command. The version may have changed after this writing, so be sure to use the current numbers in the file name:
tar xzvf sox-14.3.0.tar.gz
Change to the newly created directory with:
cd sox-14.3.0/
./configure --with-lame
make
sudo make install
For more information on the options that can be used when compiling sox read the included INSTALL file.
Sox can do so many different things that it would take a long time to write them all down here. Here are a few things to get you started though:
sox filename.wav filename.ogg
Convert filename from a wav to an ogg file. Don’t worry, it doesn’t delete the wav file. You can convert from any type to any other type of audio.
play filename.ogg
Plays a file it can have effects added and the volume can be adjusted as well.
rec filename.ogg
Creates a file and starts recording to it. for all of the incredible things sox can do, type man sox.

Speakup Revisited

Advertisements

Linux distros using kernel 2.6.35 and higher have speakup already built in, so there is no need to install it. You still will need to configure a synthesizer for it and other information in this article may be useful too.
In Ubuntu 9.10 Karmic and later, the way speakup is installed has changed. You can still build it from source if you want, but now it is included in the repository. Here are the instructions for installing it. In terminal type:
sudo apt-get install speakup-source espeakup
After the packages have finished installing type the following:
sudo m-a a-i speakup-source
You may also want to install the speakup-tools package. To get it type:
sudo apt-get install speakup-tools
The method used to get speakup to start automatically has not changed. Just type:
sudo gedit /etc/modules
Move down to the end of the file and on a blank line add the following:
speakup_soft start=1
From then on, when you start your computer speakup will be running. The espeakup program also starts so you will have speech. You may want to change the voice to your language. To do so, in terminal type:
sudo gedit /etc/default/espeakup
Add your chosen voice to the end of the line that reads VOICE= like so:
VOICE=en-us
Now, it will speak your language.
Finally, the way you adjust speakup’s settings has changed slightly. From speaking with users of other distributions than Ubuntu, I have learned this is the way most if not all the rest of them were doing it. Here is an example of turning off key echo:
sudo echo 0 > /sys/accessibility/speakup/key_echo
To turn it back on change the 0 to a 1. For a list of things that can be changed type:
ls /sys/accessibility/speakup/
You can add the command to /etc/init.d/rc.local to have it automatically happen at start-up. To save all of your speakup settings, if you have the speakup-tools package installed, type:
speakupconf save
when you have everything set the way you want it. To get it to load at startup add the line:
speakupconf load
to the end of your ~/.bashrc file.
As said in the beginning of this article, this applies to Ubuntu 9.10 Karmic and possibly new versions of Ubuntu. If you are using an older version the following link will be more helpful:
http://stormdragon.tk/?p=44

GMA Games in Wine

Advertisements

Audio games available from GMA Games work very well in Wine. The one exception is "Shades of Doom" it works until you try to enter a door, then freezes. The only way to close it is to go to system monitor and end the process. The rest of the games have not given me any problems. The basic pattern to follow when installing these games is to right click the setup file, select Open with Wine Windows Program Loader, and wait for a few seconds for it to open. Use alt tab to move between windows until you find something like "Setup inaccessible". When you have moved to that window, press the following keys to install the game:
alt-y
alt-n
alt-y
alt-n
alt-n
alt-n
alt-n
alt-n
alt-i
At this point, the game will install. Wait about ten or so seconds and then press alt-f to finish the installation. Most of the games add a shortcut to the desktop. You can use the shortcut to launch the game or open applications, Wine, Programs, and find the game listed there. On the desktop you may find a second shortcut with a .lnk extension. It is safe to delete the .lnk shortcut because they do not work in Linux (as far as I know). When you start the demos, there are a couple of windows that do not talk, just press enter three times and game sound and speech should begin. The first few windows are where you can enter your information when you have purchased the game. In the game Lonewolf, the information is spoken from the very beginning. I have tested all of the game demos as well as the free games and I have to say they are all impressive and very addictive. I highly recommend any or all of these games.
One last note, in VIP Mud, when you first launch it, the opening window will read as "Product Security inaccessible" I am not sure what this window is, but if you press enter three times it will start talking. For some reason, voice settings are not always remembered and the "interrupt this voice with typing" option doesn’t work. I have not used it in Windows, so I am not sure if this is a Wine only problem or not. You can interrupt speech with the control key if you need to do so.

The Sendspace Wizard with Orca

Advertisements

A couple of months ago I found out about a service called Sendspace.
It is a great service that allows you to upload files and send links to them by email. You can also use the links on your blog or website if you have limited space or if your host doesn’t allow files to be uploaded. One of the things that makes Sendspace great is the Wizard. Instead of navigating through the Sendspace website to upload or download files, you can install the Wizard and use it instead. It is a very convenient piece of software for Linux, Mac, and Windows. I downloaded the Wizard shortly after creating my account. When I opened the Wizard for the first time, it was almost completely accessible with Orca. There was one exception though, and that one problem prevented me from being able to use the Wizard at all. The local and remote file views are displayed on something that Orca just refers to as panels. I noticed a “send feedback” option in the Wizard’s help menu and selected it. I was taken to the Sendspace website where I filled some information into a form and explained the problem I was having. I had also noticed that two of the keyboard shortcuts used by the Wizard conflicted with shortcuts used by Gnome, so I included that in the message as well.
I have contacted several companies in the past requesting accessibility improvements, or a Linux version of their software. In the past I have met with very little success for my efforts. Usually, after a week or two, the company would respond with some variant of “no”. This was not the case with Sendspace. I received a reply from them almost immediately. The message said that they would begin work on fixing the problems I had described. They were as good as their word too. I even got updates about the progress being made. Last week, the new version for Linux was released. It was slightly behind the Windows version, I suspect because of the problems with getting Orca to read info in those panels. When the new version came out though, it was usable with Orca. It now has a general file selection dialog that Orca can read as well as the panels. The keyboard shortcuts were even fixed. I am really impressed with how fast they responded to and fixed the accessibility issue I reported. It is great to know that a company is dedicated to providing their software to anyone who wants to use it regardless of platform or disability. In fact, Mike, a Sendspace Representative says, "We’ve been committed to accessibility ever since we found out about it and we’ve been improving it slowly but surely since then (on all three platforms, mac, windows and Linux)."
So, if you need to send files that are too large for email attachments or need to host files for your blog or website, get your free Sendspace. account today. Tell your friends and family. When a company s dedicated and responds to accessibility requests as fast as Sendspace, they deserve all the support and promotion we can give them. Honestly, I can’t say enough good things about this company. Thanks to the Wizard developers for all of your hard work.