我正在尝试在 Ubuntu 中启用双显示器。这很好用,但每次我这样做时,桌面效果都会被禁用。不过,我想我已经找到原因了:
https://wiki.ubuntu.com/X/Config/Multihead/
与 GNOME XRandR 配置方法一样,将 Virtual 设置为过大的值可能会导致硬件加速丢失,从而无法使用 Compiz 及其桌面效果。
当我使用 GNOME 监视器小程序或系统菜单中的监视器配置时,默认的 xrandr 设置会将第二个监视器放在第一个监视器的右侧,并且,正如我在这个错误,对于大多数显示器来说,这会创建一个大于上网本硬件硬件加速所需的最大 2048 水平分辨率的虚拟桌面。
因此,如果我可以修改 xrandr 的默认设置,以便将新桌面放置在主 LVDS 显示器的上方或下方(北面或南面),那么硬件加速和 compiz 将继续工作。有人能告诉我,实现此目的最简单的方法是什么吗?
更新:
我已经确认,当我将外部显示器移到主 LVDS 显示器的北边时,多头支持桌面效果和硬件加速功能可以正常工作。目前,这涉及以下过程:插入外部显示器,启动“显示器”配置菜单,桌面效果自动禁用(并且我工作区上的所有窗口都移动到第一个工作区),重新定位外部显示器,使其位于 LVDS 显示器的北边并单击“应用”,然后导航到“外观”菜单并告诉它重新启用桌面效果。有没有更简单的方法可以做到这一点?
更新2:
好吧,我想也许 GNOME Monitors 配置屏幕很聪明,可能会禁用桌面效果。所以,我尝试使用 xrandr 命令行客户端,如下所示:
xrandr --output VGA1 --above LVDS1
当我这样做时,桌面效果仍然被禁用,我需要手动重新启用它们。尽管硬件加速可以工作,并且硬件加速永远不会因为虚拟显示器的水平尺寸太大而停止工作。那么,哪个程序在试图耍小聪明,在不需要的时候关闭桌面效果呢?我该如何让它停止呢?
如果有一种方法可以从命令行重新启用桌面效果,然后我可以将其与正确的 xrandr 调用一起放入脚本中,我会接受它作为一种解决方法。
更新 3:
好的,这是我的脚本,用于启用具有桌面效果的第二台显示器。它可能很邪恶,我不确定:
第二监视器.sh
xrandr --output VGA1 --above LVDS1
sleep 3
compiz --replace &
sleep 语句可能没有必要。
如果有更好的方法,请告诉我。
更新 4:
这是戴尔 Mini Inspiron 1012。
以下是我的系统规格:
lspci-vv
00:02.0 VGA compatible controller: Intel Corporation N10 Family Integrated Graphics Controller
Subsystem: Dell Device 041a
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 29
Region 0: Memory at f0b00000 (32-bit, non-prefetchable) [size=512K]
Region 1: I/O ports at 18d0 [size=8]
Region 2: Memory at d0000000 (32-bit, prefetchable) [size=256M]
Region 3: Memory at f0900000 (32-bit, non-prefetchable) [size=1M]
Capabilities: <access denied>
Kernel driver in use: i915
Kernel modules: i915
00:02.1 Display controller: Intel Corporation N10 Family Integrated Graphics Controller
Subsystem: Dell Device 041a
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Region 0: Memory at f0b80000 (32-bit, non-prefetchable) [size=512K]
Capabilities: <access denied>
lsmod | grep i915
i915 287458 2
drm_kms_helper 29329 1 i915
drm 162409 3 i915,drm_kms_helper
intel_agp 24375 2 i915
i2c_algo_bit 5028 1 i915
video 17375 1 i915
答案1
从左到右布局不是 xrandr 的默认设置,而是 gnome-settings-daemon 的默认设置。从 gnome-settings-daemon 2.32 开始,最后的配置应该从 monitors.xml 加载;因此,如果您已经做过一次垂直布局,那么下次它会自动选择该布局,而不会踢出 Compiz。
那么,您是否正在运行 10.04 Lucid?在这种情况下,您可以按照这些说明在 gnome-settings-daemon 2.30.1 中启用此功能。
1)打开终端
2)获取源代码:
mkdir src
cd src
apt-get source gnome-settings-daemon
3) 编辑 src/gnome-settings-daemon-2.30.1/plugins/xrandr/gsd-xrandr-manager.c,在第 1349 行,更改
#if 1
到
#if 0
4)在终端中,安装构建依赖项:
sudo apt-get install build-dep gnome-settings-daemon
5)为你的软件包赋予一个新的版本号:
dch -i "enable monitor.xml default values"
6)构建并安装你的包:
debuild
cd ..
sudo dpkg -i gnome-settings-daemon*.deb
如果这对您有用,请告诉我,我根据记忆重现了这些步骤。另外,如果您必须执行额外的步骤,请告诉我,以便我可以更新此答案。
答案2
或者您可以直接获取 compiz fusion 图标,它允许您轻松地单击以重新加载 compiz。非常感谢,遇到了同样的问题,从未想过要重新加载 compiz,只是以为我必须在双模式下忍受它。刚刚尝试使用 fusion 图标,瞧!立方体,一切又恢复正常了。
答案3
“智能”程序不就是 compiz 崩溃后返回到后备窗口管理器吗?compiz
修复有问题的设置后,您的命令会重新启动 3D 窗口管理器。
您可以不用休眠,而是使用命令链;
(第二个命令期望第一个命令完成)来获得想要的效果。
xrandr --output VGA1 --above LVDS1 ; compiz --replace &