20110131

用键盘在双显示器间移动窗口 Ubuntu

用键盘在双显示器间移动窗口 Ubuntu

笔记本通常自己有个显示器,就在键盘上方,但是人心不足,总觉得太小,所以
通常还会外接一个。

窗口在两个显示器间移动,通常也很容易,用鼠标拖动就是,但是人心不足,总
觉得如果不用鼠标的话而使用快捷键的话,手指就可以不离开键盘。

这样的工作,早就有人做了。在win7中,它是默认支持的。在Ubuntu中,快捷键
只支持窗口在工作区间移动。

不过,这样的工作在Ubuntu下也早就有人做了, 见
[http://ubuntuforums.org/showthread.php?t=1045417]。有用wmctrl的,也有
用xdotool的。wmctrl是专门对窗口做操作的,xdotool是专门模拟鼠标键盘输入
的。

xdotool的作者是位牛人,他还有个作品,叫做keynav,能完全不用鼠标,而用
键盘移动鼠标。这样的工作看起来没啥希奇的,其牛之处在于keynav移动鼠标的
时候不是左键左移、右键右移,而是用了二分查找算法,把屏幕划成上下左右四
份,选择了鼠标的目标位置在哪个格子里,然后再把那个格式分成上下左右四分。
如是者…据说有的例子是最坏11次找到位置。考虑到精确定位的时候可能一直在
重复着向同一个方向,11次并不难做。至少在我的经验里,挺容易使用的。

于是我选择了xdotool这一方案。心理学上把这叫光环效应。比如这位牛人的名
字也叫乔丹。上了点岁数的人该知道这另一位乔丹挺牛的,为这名字倍添光彩。

可是基于xdotool的这个在屏幕间移窗口的工具有个不足之处,它默认显示器是
一左一右。而且需要用户手填显示器的分辨率地。人心不足,我把它改了。

显示器一左一右,曾导致大约一个月前,我的脊椎两侧轮着班疼。疼痛令我彻夜
难眠,轮俯卧撑都停了。直到有一天勉力恢复了一半俯卧撑,后背才不疼了。

这个切换当前焦点窗口的工具是个脚本,你得自己给它设置个快捷键。我定在
win+up 上了。这比win7那个还方便。win7下是这样的称动左边显示器要
Win+Shift+左,移到右边显示器要Win+Shift+右。移来和移去使用了不同的按键。
补充,win7这个显示器一上一下摆放也是可以的。

题外话1 我整了个显示器,22英寸,可以立起来,适合编码,可以横着,适合看
碟。特此显摆。

题外话2 发现白板上的笔道(用含酒精的白板笔写的)时间一长(24小时以上)
特别难以清除,用白猫洗洁精能去除大部分。用水彩笔(儿童用的水性笔)写
的,用水很容易就能擦掉;在干了以后,笔触略微变细和不连续,完全可以忍受。
且水性笔较细,白板上能写更多的东西了,字体也更能够容忍一些。

代码如下。这个小东西也起了个名字 swam,
Switch Window Actived between Monitors.

#!/bin/bash
#++++++++++++++++
# Monitor Switch
#
# Moves currently focused window from one monitor to the other.
# Designed for a system with two monitors.
# Script should be triggered using a keyboard shortcut.
# If the window is maximized it should remain maximized after being moved.
# If the window is not maximized it should retain its current size, unless
# height is too large for the destination monitor, when it will be trimmed.
#++++++++++++++++
# modified by Young <gift.young@gmail.com>
# based on chips617's work at
[http://ubuntuforums.org/showthread.php?t=1045417].

# bugs knonw:
# 1. If the left-top conner of the active window is out of your
monitors, we cannot determin which monitor is on, therefore we suppose
it is on monitor B.

# History:
# 2011-1-31 The monitors can be at any position, not only left and right.
# 2007-11 the original chips617's work

# resolution and position of monitors
count=0
while read line
do
keys[$((++count))]="${line}"
done <<EOF
$( xrandr -q | grep " connected" | awk '{print $3}' | awk -F'[x+]'
'{printf("%s\n%s\n%s\n%s\n",$1, $2, $3, $4)}' )
EOF
w_A_monitor=${keys[1]}
h_A_monitor=${keys[2]}
x_A_monitor=${keys[3]}
y_A_monitor=${keys[4]}
w_B_monitor=${keys[5]}
h_B_monitor=${keys[6]}
x_B_monitor=${keys[7]}
y_B_monitor=${keys[8]}

# # window title bar height (default title bar height in Gnome)
h_tbar=29
## todo

# # focus on active window
window=`xdotool getactivewindow`

# # get active window size and position
x=`xwininfo -id $window | grep "Absolute upper-left X" | awk '{print $4}'`
y=`xwininfo -id $window | grep "Absolute upper-left Y" | awk '{print $4}'`
w=`xwininfo -id $window | grep "Width" | awk '{print $2}'`
h=`xwininfo -id $window | grep "Height" | awk '{print $2}'`

# # window on A monitor
if [ "$x" -ge $x_A_monitor ] &&
[ "$x" -le $[$x_A_monitor + $w_A_monitor] ] &&
[ "$y" -ge $y_A_monitor ] &&
[ "$y" -le $[$y_A_monitor + $h_A_monitor ] ] ; then

new_x=$(($x-$x_A_monitor+$x_B_monitor))
new_y=$(($y-$y_A_monitor+$y_B_monitor-$h_tbar))
xdotool windowmove $window $new_x $new_y
# retain maximization
if [ "$w" -eq "$w_A_monitor" ]; then
xdotool windowsize $window 100% 100%
# adjust height
elif [ "$h" -gt $(($h_B_monitor-$h_tbar)) ]; then
xdotool windowsize $window $w $(($h_B_monitor-$h_tbar))
fi
# # window on B monitor
else
new_x=$(($x-$x_B_monitor+$x_A_monitor))
new_y=$(($y-$y_B_monitor+$y_A_monitor-$h_tbar))
xdotool windowmove $window $new_x $new_y
# retain maximization
if [ "$w" -eq "$w_B_monitor" ]; then
xdotool windowsize $window 100% 100%
# adjust height
elif [ "$h" -gt $(($h_A_monitor-$h_tbar)) ]; then
xdotool windowsize $window $w $(($h_A_monitor-$h_tbar))
fi

fi

20110129

为什么我喜欢麦当劳,及其他

为什么我喜欢麦当劳,及其他

大家都说汉堡是垃圾食品,还苦口婆心地劝过我。为什么我一如既往地喜欢麦当
劳呢?

最初发现了一些好处,后来又逐渐发现了新的一些。

比如说吧,在麦当里没有抽烟的。李记者,说你呢。

经常有烟民面对女性,烟盒已经拿出来了,烟卷也抽出来了,有的都放在嘴上
了,打火机火苗子腾腾的,烟民很有绅士风度地问女士,"我能抽支烟么?"

你不觉得跟啥啥很像么。让对方如何作答。

真正有风度的问,是这样的,得到否定的回答不恼怒,这才是真正地征求意见。

类似的问题,女士问你,"我美么?"兄弟,你知道应该怎么回答的。

类似的问题,女士问你,"我怎么就不温柔了?"兄弟,这根本就不是个问题。如
果你给出任何理由,就都落入了陷阱。

我更惨。烟民们在我面前,就没一个问我能不能抽的。包括出租车司机在内。

当然,也包括饭店里的其他顾客。

而在麦当劳里,大家都装得像个君子,因为里面有孩子,都不抽烟。

恩,这是一个好处。

还有,我在麦当劳吃东西,只拉肚子过一次。最近的事,麦当劳堕落以后的事。
冬天的东西,零下二三十度,大开着门,有顾客抗议,说是要进货。为啥堕落,
一会再说,先继续麦当劳的优点。

麦当劳的另一个优点是能吃饱。如教工食堂者,我吃得肚子鼓鼓的,下午1点多
也就饿了。只有麦当劳能让我撑到4点,看着牛老师他老人家神彩奕奕地,我不
知道有多么为难,好几次也只好提前告退。才深信韩师姐说的,牛老师是核能的。

麦当劳的另一个优点,他是把你当人看的。在麦当劳,我只挨过几次呵斥,还被
我厉害回去了。在别的饭店,我是万万不敢的。

所以,科幻协会同学们聚会的时候力邀我一起吃喝。我坚决不去,说,一般来说
在外面吃饭对我是一种折磨。

想饭店的服务人员多是东北人。而东北人的方言中最可恶的一点,是习惯使用反
问句,比如"你说我怎么就不温柔了?"

又与东北人对话来着。去买水果。话说水果已经降价到比蔬菜便宜了,因此服务也
不如蔬菜了。

我挑苹果,拿起一个,扒开外面的尼龙网看看有没有烂的,没烂,拿手里。如是
者三。

然后对话如下。

大妈: 都是糖心的。不让挑啊。
我: (看完就买,一个不放下,算挑么?等额选举算选举么?) 你整个牌子写
上不让挑啊,那边就写着不让尝。
大妈: 这还用说么?

点评:注意。这是东北方方言中的一个典型应用。直令人想挠墙。如同"靠"一
样,它是有全文的。全文,去掉所有反问,是:你是傻的,居然不能认识到这样
一个不证自明的常识,这是不能挑的。
点评完毕。

我: 用啊。不然我怎么知道你不让挑。我告诉你立个牌子,是好话。

点评:请注意上面我对东北方言的灵活应用,反问句。

大妈: 我这不告诉你呢嘛。

点评:请注意上面我对东北方言的灵活应用,反问句。

我: 你下次还得告诉我。

大妈无语我。而我就没再继续,下一句是,"你能记住我么?你凭什么认为我能
记住你这个摊床不能挑?"

东北方言怎么说也是我的母语。那大妈整不好年龄还没有我大,应用的时间也短。

别的方言我就不那么擅长了,在饭店这样的地方,即使擅长也不敢争锋。因此麦
当劳是个上好的选择。

而且,上菜快。

我宁可吃垃圾,也不想在垃圾的环境里吃。

说到这里,可以解答为什么麦当劳堕落了。是因为这么多年来,它和别的饭店相
比,显得便宜了。所以,你就不能享受更好的服务了。

童话里都是骗人的。人与人友善都是花钱才能买来的。我原以为,每个人微笑的
时候,自己内心深处也是快乐的呢。原来痛苦万分,所以要别人付钱才能笑给你
看的。

童话里都是骗人的。公主根本就不屑于跟王子以外的人说话的。恩,不完全是这
样,公主也会说,"那个谁,把这段代码编了,挺简单的。"

这种尊重,是老干部对老工人的尊重。是要花劳动买来的。

当然,这跟年龄无关。我亲眼见的。一小姑娘,手里拿个戳,就是印章,一下一
下扣。她每扣一下,对面一五十岁左右的教授就翻一页材料,把材料翻到应该翻
到的位置,然后递到小姑娘的印章下面。小姑娘端庄而优雅地按下去。

是不是有人要说,她一天天这样也挺累挺无聊的。你闭嘴。

后来我的材料也伸到小姑奶奶的面前了。我没去翻页。之所以死得没那么难看的
原因,是因为带我去的领导,他翻页的。

王辉老师教导我,要把众生当成父母,去尊敬,当成子女,去谅解。此时此刻,
我把把小姑奶奶当成子女,并且在中国不是美国,拉来痛打一顿;或者当成父
母,在美国而不是中国,扔到阿拉斯加,一辈子也不去探望,等她老得不行了的
时候,再去看她好看。

我不厚道。

南方(泛指东北以南,不含东北)方言,好多了。虽然听起来难受点。我唯一受
不了的是四川方言中的一个词。鉴于重庆人一再强调不是四川人,那么好吧,重
庆方言也有这么一个词。

就是"耍"。

这个字在普通话和东北方言中,和四川,啊还有重庆方言,不是一样,不是单纯
中性的"玩"的意思,而是"玩弄"的意思。

所以,我对"耍"朋友,总是介怀。

还有"耍"一阵子,总让我想起耍宝一会儿,或者戏耍某人一会儿。

母语的影响。

除此之外,南方人无论心里多个鄙视你,都会保持礼貌。有人说这是阴险。可是
我们是要求别人敬重容易,还是要求别人礼貌容易;是要求老外表现文明的尊重
容易,还是打心眼里敬爱我们天朝上国容易?

我们,即使敬重别人,也要表现得冷漠,甚至蔑视,是不是小时候受过什么刺激?

而北京方言...想起了那句"唉哟喂,您要这儿么儿说儿"...以后再给你讲。

话说,这两年门卫对我的态度越来越好了。一个很悲哀的原因,因为我很多年没
有称他们"大爷"了。

我希望能尊重你,并且不会因为尊重你而受到你的渺视。

希望你也能有此想法。

希望我能像程序像编译器一样,具有重现性,无论对什么人,对什么事,都持相
同的态度。

无论什么破烂的程序风格,只要符合规定,我就编译通过,给结果;无论谁写的
代码,语法不合格,一概给出更难以阅读的提示信息。

当年在人事处,处长问我啊,"你的人生信条是什么?"或者座右铭吧。

我说"安能摧眉折腰事权贵,使我不得开心颜。"哈哈。与你共勉,请只注意这句
中的正面意义。

20110128

煎蛋的段子 zz

煎蛋的段子 zz

☆ 我想大家在超市卖场里应该也见过这种傻逼小孩的吧——在商场里横冲直撞、跑来跑去,碰翻了别人的东西也不知道道歉,而他们的爹妈往往还护着他们!但最可恨的是那些咬人的孩子,没错,年纪小就觉得想咬人就可以随便咬的那种。

好了,正式开讲,总之有一天我买菜的时候碰上个咬人的孩子,我腿上的皮都破了,就在这时,我看着这小屁孩坏笑的嘴角还流着我的血的时候,我的大脑开始飞速运转……我睁大双眼,大声喊:"糟了!妈的,糟了!"我一哥们当时也在场,他立马就反应了过来,于是也喊道:"艹!最好他没事!艹啊!"这小孩听我们这么一吼早就吓得动都不动了,于是开始哭,而这时他妈也终于姗姗来迟地出现了,开始为我们把她小孩弄哭了而大发脾气。

于是我直直地望着她,一字一顿地说:"女士,请你赶紧带你孩子去医院做个检查。他刚刚咬了我,而我、我他妈有艾滋!"

霎时间什么声音都没有了,整个超市都安静了下来,那小孩知道自己一定是闯了什么天大的祸,所以连他妈都没帮他说话。他妈只是静静地瞪着我,什么话也说不出来。我一言不发地转身,让同样震惊的收银员帮我验好东西,任由我小腿上的血一滴滴掉落在地、慢慢地走出超市。就在我们走出大门的时候,背后传来了那傻逼妈妈抽泣的声音。

那是我一生中所听到过最令人神清气爽的哭声。
——RichTeaBiscuit