![Linux:从命令行设置主显示器(nvidia)](https://linux22.com/image/1236387/Linux%EF%BC%9A%E4%BB%8E%E5%91%BD%E4%BB%A4%E8%A1%8C%E8%AE%BE%E7%BD%AE%E4%B8%BB%E6%98%BE%E7%A4%BA%E5%99%A8%EF%BC%88nvidia%EF%BC%89.png)
这可能吗?
通常我会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 的脚本。