如何设置默认 xrandr 设置?

如何设置默认 xrandr 设置?

我正在尝试在 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 &

相关内容