日期:2014-05-16  浏览次数:20671 次

linux环境下,用笔记本快捷键切换屏幕
    最近我的工作环境换到了linux平台上,最大的感受就是linux环境下什么都没有,但是又什么都有。
    什么叫什么都没有呢,原先在windows下,不需要装驱动,就可以直接通过笔记本上的快捷键切换显示器和投影仪。但是在linux下,这个功能就没有了(不知道ubuntu有没有这项功能,我用的archlinux+fluxbox没有这个功能)
    但是linux是个开放的系统,通过简单的脚本就能实现这个功能,下面具体说说实现的步骤:
    在xorg中,xrandr命令可以实现显示器切换功能,具体的使用方法可以参考man手册。我们做一个简单的脚本用于切换显示器:
#!/bin/bash
function show_vga()
{
    xrandr --output LVDS --mode 1280x800 --output VGA --mode 1024x768
    echo "vga" > /dev/shm/xscreen-mode
}

function show_novga()
{
    xrandr --output LVDS --mode 1280x800 --output VGA --off
    echo "novga" > /dev/shm/xscreen-mode
}

function show_ext()
{
    xrandr --output LVDS --mode 1024x768 --output VGA --right-of LVDS --mode 1024x768
    echo "ext" > /dev/shm/xscreen-mode
}
case $1 in
    vga)
        show_vga
        ;;
    novga)
        show_novga
        ;;
    ext)
        show_ext
        ;;
    *)
        touch /dev/shm/xscreen-mode
        if [ "`cat /dev/shm/xscreen-mode`" = "vga" ]; then
            show_ext
        elif [ "`cat /dev/shm/xscreen-mode`" = "ext" ]; then
            show_novga
        else
            show_vga
        fi
        ;;
esac

    这个脚本支持两种模式,如果使用vga(外接投影仪),novga(无外接投影仪),ext(投影仪作为扩展模式)作为参数,他就会切换到相应的显示器模式。并且将当前的显示器模式写入/dev/shm/xscreen-mode这个文件中,如果不带参数调用该脚本则会根据/dev/shm/xscreen-mode中的最新状态依次循环切换这三种显示器模式。
    将这个脚本文件存放到~/bin/xscreen。

    chmod u+x ~/bin/xscreen
    打开可执行标志

    最后在~/.fluxbox/keys的文件末尾添加以下内容
    #####添加下面内容#####
    XF86Display :Exec ~/bin/xscreen
    #####添加上面内容#####
    其中XF86Display所对应的键位就是切换屏幕的键位,我们可以通过"xbindkeys -mk"获取到这个按键的名称。当用户按下这个键时,系统就执行刚才编写的脚本,进行显示器切换。
    通过简单的代码就能实现这样的功能在windows下是不敢想像的,所以可以说在linux下什么都有