Linux:从命令行设置主显示器(nvidia)

Linux:从命令行设置主显示器(nvidia)

这可能吗?

通常我会disper启用外接显示器,但我认为我不能强制将第二台显示器设为主显示器。 http://willem.engen.nl/projects/disper/

我已经尝试过nv-control-dpy包含在 nvidia-control 源中的,但我还没有弄清楚如何操作。如何获取: http://ubuntuforums.org/showthread.php?t=922956

编辑

这是一台笔记本电脑,我上班时将外部 HDMI 显示器连接到它。dipser -e为我扩展桌面,但笔记本电脑仍然是主桌面(容纳面板等)。nvidia-settings可以为我设置主显示器,但我想使用 cli。

答案1

我成功地做到了你的意思,可能是因为我有 2.3 版本,在 ubuntu 10.04 上使用 nvidia-setting v 1.0


修复错误后:

这曾被列为重大事件:

https://bugs.launchpad.net/disper/+bug/321288

2.1 版应该可以按照您在 20010-04 提出的问题运行,并且“错误修复”已于 2009-02-16 得到确认

我所拥有的

通过使用:

disper -l

我看到我的设备是:

  • DFP-0:LGD(笔记本电脑显示器)
  • CRT-0:三星 SyncMaster(外接显示器)

(使用 xrandr 查询时未显示外部设备)

我想要什么以及如何

笔记本电脑在右边监视器在左边,我希望笔记本电脑能够扩展三星,因此,笔记本电脑在物理上顶部对齐,我希望它们在逻辑上也顶部对齐,并具有自己的最大分辨率:

disper -d CRT-0,DFP-0 -r auto -e -t right

应读作:(-d) 首先在 SyncMaster 上操作,然后在笔记本电脑液晶显示屏上操作,(-r)考虑自动解决,(-e)扩展第二个 dysdisplay [第二个是笔记本电脑,因为-d设置显示顺序],(-t)将第二个显示器 [笔记本电脑] 扩展到第一个显示器的右侧。

正确使用 Google 并先尝试

非常简单,不需要 nvidia-hacking。希望对您有帮助。


干杯

操作系统

答案2

我破解了 nvidia-settings 源,并得到了一个可行的解决方案:

这是在 Ubuntu 中完成的,但移植它并不难。

运行以下命令:

sudo apt-get build-dep nvidia-settings
apt-get source nvidia-settings
cd nvidia-settings-195.36.08/src

编辑“nvidia-settings.c”,并将 main() 替换为:

int main(int argc, char **argv)
{


    ConfigProperties conf;
    ParsedAttribute *p; 
    CtrlHandles *h; 
    char * target;

    /* initialize the parsed attribute list */

    p = nv_parsed_attribute_init();

    /* initialize the ConfigProperties */

    init_config_properties(&conf);

    /* allocate the CtrlHandles for this X screen */

    h = nv_alloc_ctrl_handles(":0.0");

    if (!h || !h->dpy) {
        return 1;
    }   

    /* Get target from command line */
    if(argc != 2){ 
            printf("Usage: %s PRIMARY_DISPLAY\n", argv[0]);
        printf("Example: %s  DFP-1\n");
        return 1;
    }   

    target = argv[1];

    int i;
    for (i = 0; i < h->targets[X_SCREEN_TARGET].n; i++) {
        if (h->targets[X_SCREEN_TARGET].t[i].h) {

            printf("Setting primary display: %s\n", target);

            NvCtrlSetStringAttribute(h->targets[X_SCREEN_TARGET].t[i].h, NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER, target, NULL);

            break;
        }   
    }   

    return 0;

} /* main() */

编译:

cd ..
make

将二进制文件放入路径:

sudo cp nvidia-settings /usr/local/bin/setPrimaryDisplay

用它:

setPrimaryDisplay DFP-1
gnome-panel --replace 2>/dev/null &

其中 DFP-1 是所需显示器的名称。Gnome 面板没有跟上时代的步伐,需要重新启动。

您可以在此处下载我为 amd64 编译的二进制文件:http://while1.no/files/setPrimaryDisplay

答案3

这可能太明显了,而且您不愿意使用这个选项,但是,如何在 BIOS 中更改哪个是主要选项呢?

答案4

您可以尝试弄乱xrandr。 commandlinefu 很棒收藏基于 xrandr 的脚本。

相关内容