2009年5月14日星期四

等待中的catalyst 9.5

由于ubuntu 9.04 ATI显卡的问题,使用catalyst 9.4驱动会出现窗口最大化跨越两屏的情况,这在使用双屏的时候是不可接受的,所以一直使用开源的radeon驱动,使用radeon驱动一切正常,但是就是速度不怎么样,而且不支持3D,想偶尔游戏下不行,所以一直等待这catalyst 9.5, 前一段时间一直有谣言说catalyst 9.5将在5月13日放出,我从昨天开始就在网上找,今天也没有找到,所以应该是谣言吧。

目前使用开源ATI驱动的问题是有的时候鼠标所在的位置会花一小块,虽然也不是什么big deal,但是还是感觉不爽,今天网上偶尔看到有关于性能调整的文章,照做了,果然产生了效果。

#section device
Option "AccelMethod" "EXA" #default is XAA, EXA is faster
Section "DRI“
Mode 0666
EndSection
Section "Extensions"
Option "Composite" "Enable"
EndSection

早先是知道这些调整选项的,但是ubuntu自动配置之后运行起来没有什么问题,就没有去管它了。现在调整一下效果更好了,不错,呵呵。

另外,找到了一个在gnome dual monitors下控制窗口的脚本,原来是想自己开发使得metacity具有转换monitor, workspace的功能,其实借用wmctrl程序,结合一些其他的小工具,这个功能就可以实现了,然后绑定到一个快捷键,即可达到一键移动窗口的功能了,在这个小脚本里面wmctrl指令的使用并没有什么特殊性的,值得关注的作者使用一些小工具做到了找到当前活动窗口的功能,这里贴一下, 根据这个脚本还可以调整wmctrl指令参数,达到把窗口在workspace中间传送的功能哦。

#!/bin/bash
# swap_monitor.sh
# Moves the active window to the other screen of a dual-screen Xinerama setup.
#
# Requires: wmctrl, xprop, xwininfo
#
# Author: Raphael Wimmer
# raphman@gmx.de

# get monitorWidth
monitorLine=$(xwininfo -root | grep "Width")
monitorWidth=$((${monitorLine:8}/2 ))
echo $monitorWidth

# get active window id
activeWinLine=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)")
activeWinId="${activeWinLine:40}"

# get window position
xPosLine=$(xwininfo -id $activeWinId | grep "Absolute upper-left X")
xPos=${xPosLine:25}

# get window width
xWidthLine=$(xwininfo -id $activeWinId | grep "Width")
xWidth=${xWidthLine:8}

# calculate new window position
if (( ${xPos} + ${xWidth}/2 > ${monitorWidth} ))
then xPos=$(( ${xPos} - ${monitorWidth}))
else xPos=$(( ${xPos} + ${monitorWidth}))
fi

# make sure window stays on screen completely
(( ${xPos} < 0 )) && xPos=0
(( ${xPos} + ${xWidth} > 2 * ${monitorWidth} )) &&
xPos=$((2*${monitorWidth} - ${xWidth}))

echo ${xPos}

# if maximized store info and de-maximize
winState=$(xprop -id ${activeWinId} | grep "_NET_WM_STATE(ATOM)" )

if [[ `echo ${winState} | grep "_NET_WM_STATE_MAXIMIZED_HORZ"` != "" ]]
then
maxH=1
wmctrl -i -r ${activeWinId} -b remove,maximized_horz
fi

if [[ `echo ${winState} | grep "_NET_WM_STATE_MAXIMIZED_VERT"` != "" ]]
then
maxV=1
wmctrl -i -r ${activeWinId} -b remove,maximized_vert
fi

# move window (finally)
wmctrl -i -r ${activeWinId} -e 0,${xPos},-1,-1,-1

# restore maximization
((${maxV})) && wmctrl -i -r ${activeWinId} -b add,maximized_vert
((${maxH})) && wmctrl -i -r ${activeWinId} -b add,maximized_horz

# raise window (seems to be necessary sometimes)
wmctrl -i -a ${activeWinId}

# and bye
exit 0

没有评论: