2010年11月8日星期一

xsel + libnotify-bin + google translate 自定义一个桌面取词翻译小工具

应用平台: linux X11 gnome
依赖的软件: xsel, libnotify-bin, python(simplejson,urllib,urllib2)

两个脚本:

~/bin/translate.py

#!/usr/bin/env python
from urllib2 import urlopen
from urllib import urlencode
import simplejson
import sys

# The google translate API can be found here:
# http://code.google.com/apis/ajaxlanguage/documentation/#Examples

target=sys.argv[1]

text=' '.join(sys.argv[2:])

base_url='https://www.googleapis.com/language/translate/v2?'

params=urlencode( (('key',    'AIzaSyCTMQYOQUQdWSAJ478lI-peSVelazL_iCQ'),
       ('target', target),
       ('q',      text), ) )

url=base_url+params

response=urlopen(url)

jsonObject = simplejson.load(response)

print "from:%s; %s" % (jsonObject['data']['translations'][0]['detectedSourceLanguage'],jsonObject['data']['translations'][0]['translatedText'].encode('utf-8'))


~/bin/trans-xsel

#!/bin/bash

# depend on xsel, libnotify-bin, translate.py
WORD=`/usr/bin/xsel -o`
TEXT=`translate.py zh """$WORD"""`
DISPLAY=:0.0 notify-send -i /usr/share/pixmaps/gdict.xpm -u normal -t 8000  来自谷歌翻译: """$TEXT"""

给这两个脚本添加执行权限,并把 ~/bin 加入 PATH 变量。

使用 gconf-editor 命令,启动 gnome 配置工具。

在 /apps/metacity/keybinding_commands/ 中 设置一个空闲的 command 键的值为  trans-xsel
在 /apps/metacity/global_keybindings/run_command_1 中设置 自己的快捷键: 例如 <Control><Alt>z

设置完成之后关闭配置工具。

使用方法:

在桌面上的任意窗口中(比如浏览器)选中要翻译的文本,按快捷键 Ctrl+Alt+z 系统提示框将会弹出提示框显示翻译结果。

--
yaoms

2010年11月4日星期四

如何使用 ssh 链接 虚拟机中的系统 Howto Access via ssh a Virtualbox Guest machine.

网上可以搜到的大部分文章都是说执行这三条命令:(首先关闭虚拟机)

$ VBoxManage setextradata <guestname> "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort" 2222
$ VBoxManage setextradata <guestname> "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort" 22
$ VBoxManage setextradata <guestname> "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol" TCP
以上三条命令中的 <guestname> 是要链接的虚拟系统的名字。

可是在实际使用中,有可能遇到如下错误而不能启动:

Configutarion error: Failed to get "MAC" value
(VERR_CFGM_VALUE_NOT_FOUND)

Unknown error creating VM (VERR_CFGM_VALUE_NOT_FOUND)
Result code: E_FAIL (0×80004005)
Component: Console
Interface: IConsole ("Some HEX code")


这个时候可以尝试使用 e1000 代替上面三条命令中的 pcnet,重新配置虚拟机的端口映射。使用如下命令

VBoxManage setextradata <guestname> "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort"
VBoxManage setextradata <guestname> "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort"
VBoxManage setextradata <guestname> "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol"

VBoxManage setextradata <guestname> "VBoxInternal/Devices/e1000/0/LUN#0/Config/ssh/HostPort" 2222
VBoxManage setextradata <guestname> "VBoxInternal/Devices/e1000/0/LUN#0/Config/ssh/GuestPort" 22
VBoxManage setextradata <guestname> "VBoxInternal/Devices/e1000/0/LUN#0/Config/ssh/Protocol" TCP

前面三句是取消刚刚进行的错误的设置;
后面三条是对 e1000设备进行端口映射。


--
yaoms