![使用 Bumblebee 在外接显示器上运行 Unity](https://linux22.com/image/1114102/%E4%BD%BF%E7%94%A8%20Bumblebee%20%E5%9C%A8%E5%A4%96%E6%8E%A5%E6%98%BE%E7%A4%BA%E5%99%A8%E4%B8%8A%E8%BF%90%E8%A1%8C%20Unity.png)
我知道还有很多其他问题,但都是关于基本设置的。我已经了解了大部分内容,但我有一个非常具体的问题:我想在外部 (HDMI) 显示器上运行完整的 Unity,而且我不在乎笔记本电脑显示器是否无法使用。
我有一台配备 Nvidia GT 540M 和 Optimus 的 Dell XPS 15。(该死的 OPTIMUS!!!!)我安装了 Bumblebee。我能够在笔记本电脑显示屏上运行系统,并且我可以使用 optirun 在高性能模式下运行 glxspheres 等程序。当我插入外接显示器时,我什么也看不到,也xrandr
没有检测到它(“ HDMI1 disconnected (normal left inverted right x axis y axis)
”)。
以下是我目前所做的工作(来自 Bumblebee 的多显示器设置指南)。我遵循了那里的“额外屏幕”建议,因此我已按照指示进行了编辑bumblebee.conf
。xorg.conf.nvidia
现在,如果我运行:
export DISPLAY=:8 LD_LIBRARY_PATH=/usr/lib/nvidia-current:$LD_LIBRARY_PATH
optirun glxspheres
我在外部显示器上看到了 glxspheres 演示(没有任何窗口装饰)。哇哦!
现在下一步是在笔记本电脑显示屏上关闭 Unity,并测试 glxspheres 是否仍然有效。因此我按下 Ctrl+Alt+F1 进入非图形终端。然后:
sudo service lightdm stop
export DISPLAY=:8 LD_LIBRARY_PATH=/usr/lib/nvidia-current:$LD_LIBRARY_PATH
optirun glxspheres
再次,我在外部显示器上看到了 glxspheres。
现在 Bumblebee 指南告诉您执行“ optirun wmii&
(或其他类似 startlxde)”但我不想切换到其他窗口管理器。如何在外接显示器上运行 Unity?
我尝试了一下optirun unity
,并取得了大部分成功。这会在外接显示器上启动 Unity。我可以看到桌面,鼠标也可以使用。我可以在 Unity 内部运行其他程序。但存在几个问题:
- Unity 无法检测到某些键盘组合键——看起来像是涉及 Ctrl 和 Fn 键的任何组合键。(例如:Ctrl+Alt+T 无法获取终端;Fn+F11 无法更改音量。)
- 键盘敲击出现在终端和 Unity 中。我不希望出现这种情况,因为可能会输入密码。
- 如果我切换到另一个屏幕(例如,Ctrl+Alt+F8),音频就会停止工作,所以这不是#2的可行解决方案。
我觉得这三个问题是相关的。我认为主要问题是我不应该直接运行 Unity,而是运行 lightdm。我试过了,optirun lightdm
但根本不起作用。希望有人知道。如果不知道,希望至少这个问题能帮助人们在外接显示器上运行 Unity。
答案1
据我所知,Unity 不能与 optirun 一起使用(这似乎是一个错误)。
这就是我发现的这里:
对于大多数笔记本电脑来说,HDMI 无法与 Linux 下的 Optimus 混合图形芯片组配合使用,即使您使用 Bumblebee,但有一种方法可以让 HDMI 工作:使用单独的会话。
使用以下说明,您将获得一个 LXDE 会话(您可以使用 XFCE 或其他,但以下说明适用于 LXDE)以显示在外部显示器(通过 HDMI 连接)上,并且在此会话中,您启动的所有应用程序都使用笔记本电脑的 Nvidia 显卡,您可以玩游戏、看电影等。LXDE 会话与您的常规会话同时运行,因此在笔记本电脑的屏幕上,您将获得常规(主)会话。此外,鼠标和键盘在两个会话/显示器之间共享。
它看起来是这样的:
上面的第一张图片来自我的笔记本电脑屏幕(配备 Nvidia Optimus 的 Dell XPS L702X),而第二张图片是单独的 LXDE 会话,它也在我的笔记本电脑上运行,但显示在通过 HDMI 连接的电视上。如您所见,第一张使用的是英特尔图形芯片,而第二张使用的是 Nvidia。
然而,使用时需要考虑一些事项:
- 声音无法通过 HDMI 播放(如果你知道如何让它播放,请在评论中告诉我们!),所以你只能通过笔记本电脑的扬声器听到声音
- 您无法将窗口从当前桌面移动到通过 HDMI 连接的显示器。在通过 HDMI 连接的设备上运行应用程序的唯一方法是从其会话菜单运行它,或者使用“export DISPLAY=:8.0”(有关此内容的更多信息,请参阅文章末尾)。但是,鼠标在两个桌面之间共享。
- 加载额外会话时,当前(主)会话中可能会出现双指示器/托盘图标。不过,有一种方法可以解决这个问题(请参阅文章末尾的“提示”部分)
使用 Bumblebee 和 Synergy 在 Ubuntu 下使用 Optimus 技术让 HDMI 与笔记本电脑配合使用
如果尚未安装,请安装 Bumblebee。
Unity 无法与 Bumblebee 配合使用(而且我不确定您是否可以使用同一个窗口管理器运行两个会话而不会互相干扰),因此您需要使用不同的桌面环境/会话,如 LXDE、XFCE 等 - 随心所欲地使用。我使用过 LXDE,因此按照以下说明,您将在通过 HDMI 连接的显示器上获得 LXDE 会话。
为了使鼠标和键盘在通过 HDMI 连接的外接显示器上工作,我们将使用 Synergy,这是一个允许您在多台计算机之间共享鼠标和键盘的工具。
让我们安装所需的软件包(LXDE 和 Synergy):
sudo apt-get install synergy lxde lxde-common
为了能够使用 Synergy,您需要创建一个配置文件。您可以从以下位置下载我的配置文件:这里- 将文件复制到您的主文件夹并将其重命名为“.synergy.conf”(注意文件名前面的点 - 这会使文件被隐藏)。
我上面提供的文件应该足够了,但如果你想更改它,你可以阅读 Synergy 配置文件这里。
要在通过 HDMI 连接的外接显示器上启动 LXDE,你可以使用从以下位置下载的脚本这里. 解压档案,将“hdmi”脚本复制到您的主文件夹,然后使用以下命令使其可执行:
chmod +x ~/hdmi
现在,要运行脚本,请使用以下命令:
~/hdmi
LXDE 现在应该会在通过 HDMI 连接的外部显示器上启动。等待一段时间(大约 10 秒),将鼠标移到屏幕左侧,它就会显示在 HDMI 设备上。
该脚本的作用如下(这只是一个解释,您不需要运行这些命令,只需使用上述脚本):
将显示导出到我们将用于 HDMI 显示器的显示(8):
export DISPLAY=:8.0
使用 optirun (Bumblebee) 运行 LXDE:
optirun startlxde &
在主显示器(在笔记本电脑的主会话上)的前台运行 Synergy 服务器,地址为 127.0.0.1:
synergys -f -a 127.0.0.1 --display :0 -n ubuntu &
在 HDMI 显示器的前台运行 Synergy 客户端,并将其连接到 127.0.0.1 服务器地址:
synergyc -f -n hdmi --display :8 127.0.0.1 &
最后,它将显示内容导出回笔记本电脑的(主)显示屏:
export DISPLAY=:0.0
该脚本还使用了一些“睡眠”命令,这些命令会增加延迟,以确保在运行下一个命令之前有足够的时间执行这些命令。