我有一个用 Qt 编写的 GUI 应用程序,我想通过 ssh(或 Jenkins)运行测试。只有一个用户帐户,它允许在显示模式下运行它(我以前这样做时是ofc export $DISPLAY=:0
。在其他用户 jenkins 上,我在控制台中看到了一个错误:
QXcbConnection: Could not connect to display :0
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能允许该用户以图形模式运行应用程序?我使用 Ubuntu 14.04。
我想在一台台式 PC 上同时从多个 X 服务器截取屏幕截图。
我有多个用户登录不同的终端(tty1
,tty2
,tty3
,tty4
)谁开始与多个Xservers文件startx /usr/bin/openbox-session -- :1
(和:2
,:3
,:4
分别)。所以我可以用Ctrl+Alt+F8
, +F9
, +F10
,访问它们中的每一个+F11
。
该桌面上只有一台显示器。
我想为这些 X 服务器中的每一个截取屏幕截图,最好使用scrot
,但目前我每次尝试时都会得到一个黑色/空白图像。只有当我在那个 X 服务器上处于活动状态时,我才能得到正确的屏幕截图。
例如,如果我打开Ctrl+Alt+F8
并运行,scrot test.png
我会得到一个正确的屏幕截图;如果我理解正确,我不必设置$DISPLAY
,因为在Ctrl+Alt+F8
我得到echo $DISPLAY
> :1
。但是,如果我跑sleep 10; scrot test.png
,去Ctrl+Alt+F7
,然后我得到一个黑色的图像。
如何同时从这些终端中的每一个获取多个屏幕截图?
对我有用的是Xephyr
. 此解决方案的唯一问题似乎是当我运行极快的xdotool
命令时,它的响应速度不如 X。
为了将来参考,我对四个用户和终端中的每一个都做了:
在 中~/.profile
,我将每个用户设置为在系统启动后自动登录,例如:
if [[ -z $DISPLAY …
Run Code Online (Sandbox Code Playgroud) 我正在尝试启动 X 服务器(我已经安装了所有软件包)。
我遇到的问题是服务器不在现场,没有屏幕并且从来没有连接过屏幕,因此 X Server 从未运行,这意味着没有我看到的其他帖子中的 xorg.config 可以使用在没有任何屏幕的情况下启动 X 服务器。
我曾尝试运行X -configuration
(不记得的命令,但我用正确的),并将其输出相同的消息,我得到的,当我做startx
这Fatal Error: no screens
我需要找到一种方法来启动 X 服务器,而无需将屏幕连接到它。
我对当前的键盘布局英语(US-Dvorak)进行了更改,但它不会对以下代码做出反应,而无需前后更改为另一种键盘布局,以便重新加载 xserver
# restore your current keyboard settings;
sudo apt-get install --reinstall xkb-data
# you close also extra Control at Capslock etc
gsettings set org.gnome.desktop.input-sources xkb-options "[]"
# do any change in `/usr/share/X11/xkb/symbols/us`; etc add about 3rd level config for some [A,a] like [A,a,x].
sudo dpkg-reconfigure xkb-data
# TODO Is there any command which can cause reload of xserver regardless you have active your current keyboard where you do the change?
Run Code Online (Sandbox Code Playgroud)
我不想通过执行这样的切换手动导致重新加载 xserver。用单线做会很棒。
系统:Ubuntu 16.04
Linux 内核:4.6
键盘型号:pc105 …
startx
能够在新的虚拟终端中创建新的 X 服务器。但是,即使我在后台运行它,即。sudo startx &
,它仍然自动切换到新的虚拟终端。是否可以在保留旧的的同时创建一个新的虚拟终端?
另外,我怎么知道新终端的文件名?(以前,我可以用tty
在新窗口中检入,但如何在旧窗口中实现相同的功能?)
我遇到了问题,我的带有 KDE 的 centos 7 机器在启动时没有加载 gui。它卡在一些白色字母上,我必须按CTRL+ ALT+F2才能加载另一个终端会话,然后运行startx
以正确加载 gui。
是否有一些我可以编辑的文件,以便它在启动时自动加载 starx?
有一些不稳定/有风险的方法,例如如何在 Ubuntu 16.04 的 Dvorak 中使用点获取 A?获得该功能,但我无法在许多环境中运行它。德国人需要他们拥有(A / E / U / O与点)如图所示这里,而北欧(芬兰,瑞典,挪威,丹麦,...)人们需要类似的键(A / O用点)。我认为一级键盘方法比二级键盘方法好。选项
apt
为这样的键盘买一个包裹会很好。OS X International Dvorak 默认有这样一个功能,它可以用作基准,也可以像第一个线程答案中所做的手动方法。在 Chromium 开发中,针对 Chromebook 中针对死键的国际 Dvorak线程中的此类功能打开了一张票。
输出
masi@masi:~/Downloads$ sudo cp dvorak_intl /usr/share/X11/xkb/symbols/dvorak_intl
masi@masi:~/Downloads$ setxkbmap -verbose dvorak_intl
masi@masi:~/Downloads$ setxkbmap -I ~/.xkb dvorak_intl -print | xkbcomp -I$HOME/.xkb - $DISPLAY
Warning: Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
Ignoring extra symbols
Warning: Key …
Run Code Online (Sandbox Code Playgroud)最近我一直在尝试使用 Docker 在容器中启用 spice 进行远程显示,我发现了两个适用的资源可以这样做。第一个是 xspice,如果我应该这样称呼它,它包含在xserver-xspice
package.json 中。第二个是x11spice。问题是,我不太确定它们之间的区别,有人可以解释一下吗?我会很感激的!
在Linux上,X服务器如何与特定的tty(例如tty7)建立关系,以便仅当该tty位于前台时X服务器才能接收输入并在屏幕上绘制?这是如何执行的?
(我之前在 Stack Overflow 上以下面所示的形式发布了这个问题,该问题已被关闭。)
我有几个问题,当有人说“X 服务器在 /dev/tty7 上运行”时,这意味着什么。我对其工作原理做了一些猜测,我希望有人能告诉我以下陈述是真是假。
- /dev/tty7 通常是 Xorg 的控制终端。
- 尽管 tty7 是 Xorg 的控制终端,但它并不以任何有意义的方式“控制”Xorg。
- Xorg 通过轮询 /dev/input/... 或类似的方式直接接收键盘和鼠标输入,而不是通过读取 /dev/tty7。尽管如此,/dev/tty7 也会接收击键,您可以通过在终端仿真器中运行“xxd -p /dev/tty7”来看到(例如)。
- Xorg 使用某些特定于硬件的接口(例如驱动程序创建的某些设备文件或内存的 I/O 映射区域)在屏幕上绘图,而不是通过写入 /dev/tty7。
- 当 Xorg 设置视频模式时,tty 驱动程序会自动停止在屏幕上绘制。这就是为什么当您按下某个键或将字符串回显到 /dev/tty7 时,您看不到它出现在屏幕上。
- 即使 tty7 在后台,Xorg 也会通过 /dev/events 接收键盘和鼠标输入,但除非 tty7 在前台,否则它会忽略它。
- 无论 Xorg 在屏幕上绘制什么,只有当 tty7 位于前台时才在监视器上可见。
- Xorg初始化视频时(设置视频模式等),是因为tty7在前台,所以设置只在tty7上生效,其他终端不生效。