让我先回答以下问题:我很确定我可以通过修改 /usr/share/xsessions/somesessionfile.desktop 并使其运行 /etc/X11/Xsession 来找到解决方案,并使其以这种方式工作,但我仍然想澄清一些事情。
设置:12.04,全新安装(可能已安装 3 小时)。想使用 xmonad 作为我的 WM。双头设置。
我的问题:关于 X 、unity、登录管理器(或任何名称)和窗口管理器,我完全,或者说是完全,搞不清楚哪个程序在做什么。我使用 xmonad 作为我的窗口管理器,我知道这么多。当我登录时,或者甚至更早,我希望使用运行 xrandr 的脚本正确设置我的双显示器(我已经在运行)。我交谈过的每个人或我在网上读到过其问题的每个人都在谈论 xinitrc、~/.xsession 或 /etc/X11/xsession,但这些文件都没有运行。/usr/share/xsesssions 中的文件似乎是唯一正在运行的文件,我无论如何也找不到有关这些文件的任何文档。
这个系统的一致性在哪里?如果我想正确地做到这一点,我到底应该怎么做?一些窗口管理器似乎可以做到这一点(KDE 和 gnome 似乎有一个叫做“自动启动”的东西)。我应该让我的窗口管理器、X 或 lightdm 来处理这个吗?我知道在启动过程中可能有几十个文件我可能会把它放进去,但我要求正确的约定。什么是这对于这样的事情,有解决办法吗?
TL;DR;是否有一种一致的方法可以让我为每个在 X 上运行的窗口管理器自动运行脚本,或者这完全取决于我所使用的窗口管理器和登录管理器的组合?
答案1
我相信你会发现这对你有用。它将由 dash 脚本 /usr/sbin/lightdm-session 提供,该脚本稍后将为窗口管理器执行 exec。
假设这只是为你准备的,而且因为它与 X 相关,我建议把它放入 ~/.xprofile。如果它适用于系统的每个用户,/etc/xprofile 可能更合适。
创建一个文件 ~/.xprofile 并编辑它以包含你的 xrandr 命令的一些内容(类似于下面的测试项):
xrandr --输出 LVDS --模式 1280x854
您可以在以下位置找到更多信息在登录并启动 Unity 或其他图形用户界面时,后台发生了什么?。它确实涵盖了非 Unity 窗口管理器发生的一些情况。
答案2
非常感谢“封面下发生了什么......”链接,必读!
~/.xprofile 出现得太早,xrandr 设置丢失。
一种解决方案是创建一个脚本并在“启动时的应用程序”中执行它。但是,由于 nautilus 已经启动,并且它将决定在辅助监视器上显示图标(在 xrandr 命令之后),所以我在最后添加了:
killall -1 nautilus
nautilus -n
虽然脏,但有用。希望这能有所帮助。