AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[x-server](unix)

Martin Hope
Big Biggums
Asked: 2024-09-13 01:16:10 +0800 CST

了解 Ubuntu 上的 DISPLAY 和 Xservers

  • 6

我一直在努力修复一个曾经可以正常工作的 WSL2 系统,该系统可以在 Windows 上显示 Linux 应用程序的 GUI。以前,我使用的是名为 GWSL 的第三方应用程序/xserver,但有一天,我出于某种不相关的原因卸载了 Windows 上的 Docker Desktop,结果一切都搞砸了。

从那时起,我了解到 WSL 的当前版本带有自己的图形支持(WSLG),由微软自己提供,并且我能够启动安装在 Ubuntu 上的任何应用程序,例如google-chrome等,只需一个初始步骤。

我仍然对所有这些 x 服务器和 DISPLAY 的东西感到很困惑,我唯一关心的是让 Playwright 启动浏览器来测试一些网页内容,但它一直给我这个错误

Looks like you launched a headed browser without having a XServer running.                    
Set either 'headless: true' or use 'xvfb-run <your-playwright-app>

所以我并不是在寻求剧作家的帮助,而是想了解到底发生了什么。

当我在 WSL2 上启动 Ubuntu 并运行

ps e | grep -Po " DISPLAY=[\.0-9A-Za-z:]* " | sort -u

我明白了

 DISPLAY=10.255.255.254:0.0
 DISPLAY=:0

这是否意味着我有两个显示器?我想是的。

当我跑步时echo $DISPLAY我得到10.255.255.254:0.0

当我跑步时google-chrome我得到Missing X server or $DISPLAY

当我运行时,export DISPLAY=:0我不仅可以成功运行google-chromePlaywrights 版本的chromium(found me\.cache\ms-playwright\chromium-1134\chrome-linux\chrome),而且没有任何问题。

然而,当我尝试再次运行 Playwright 测试时,它仍然告诉我没有运行 XServer。

所以此时,我试图了解我处于什么状态。如果我实际上可以通过 Ubuntu 启动 chrome 等并在 Windows 桌面上看到它,那么我真的没有运行 XServer 吗?我的 DISPLAY 是否错误或太多?我们是否认为 Playwright 仅适用于特定的 DISPLAY 或 XServer(端口?ip?)。我在这里有点茫然,不知道还有什么可以调试。我已经安装并运行了大约 1000 个 linux 命令,并尝试了各种 Windows 第三方 xservers。它似乎有点起作用,只是不适用于 Playwright。

x-server
  • 1 个回答
  • 41 Views
Martin Hope
ObiBabobi
Asked: 2022-05-11 08:19:10 +0800 CST

如何保持 X 服务器打开?

  • 0

我目前正在为带有触摸板的 Raspberry Pi 编写一个带有 GUI 的应用程序。目前,每当我将带有开发环境的 PC 上的新二进制文件传输到 pi 时,我必须将键盘插入 pi 并使用startx /path/to/binary. 过了一会儿,这变得有点烦人,所以我希望能够通过 ssh 从开发中的 PC 启动 gui。

如果已经有 X 服务器正在运行,我已经知道如何远程启动它。不幸的是,到目前为止这对我没有帮助,因为我无法让 X 服务器保持打开状态,因为一旦客户端程序终止,它就会立即终止。但我不想运行桌面或窗口管理器,因为我只需要单个应用程序窗口。

所以现在我的问题。如何保持 X 服务器打开?到目前为止,是否有我忽略的选项或其他解决方法?或者是否有更好的解决我的问题的完全不相关的问题?

ssh x-server
  • 2 个回答
  • 58 Views
Martin Hope
My5555
Asked: 2020-03-05 06:19:08 +0800 CST

Xephyr -ac 危险吗?

  • 1

运行 Xephyr 的经典命令:

Xephyr -br -ac -noreset -screen 800x600 :1

据我了解,-ac键是 xhost + 的类似物,这是一个漏洞,因为几乎每个人都可以访问显示器、鼠标、键盘。

如何在 Xephyr 示例中解决此问题?

UPD: mosvy非常感谢您提供非常详细的答案!事实上,即使没有“ ac ”,也可以向所有人开放。从安全的角度来看,您的回答让我对 xorg 和 ssh 大开眼界。我的 LiveCD/USB 上的常规 Xorg 服务器真正通过 -auth:

$ pgrep -ai Xorg
551 /usr/lib/xorg/Xorg :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
x11 x-server
  • 1 个回答
  • 965 Views
Martin Hope
showkey
Asked: 2020-02-07 01:53:56 +0800 CST

xsel:无法打开显示:(空)

  • 8

我想用 xsel 将一个长文件复制到剪贴板,在我的本地电脑中,只需输入:

cat /usr/bin/mysql_secure_installation|xsel -b

mysql_secure_installation位于我本地操作系统中 的文件已复制到剪贴板。

现在使用 ssh 命令登录到我的 vps,然后输入

DISPLAY=:0 cat /usr/bin/mysql_secure_installation|xsel -b

我遇到错误信息:

xsel: Can't open display: (null)
: Inappropriate ioctl for device

我知道获取远程文件的正确方法是scp命令:

scp -P port username@tohostname:/remotefile /newlocalfile

我只是想知道如何在登录我的 vps 后将文件内容复制到剪贴板,将文件从远程机器复制到本地计算机的剪贴板。

同样的错误:

DISPLAY=:0 xsel -b <  /usr/bin/mysql_secure_installation
xsel: Can't open display: (null)
: Connection refused
x-server xsel
  • 3 个回答
  • 11596 Views
Martin Hope
Wendelin
Asked: 2020-01-30 11:45:22 +0800 CST

在 Docker 中运行 GLFW

  • 4

我有一个用 Go 编写的简单程序,它使用 GLFW 打开一个空白窗口。我想自动运行测试,因此我一直试图让 GLFW 在 docker 中运行。到目前为止,我已经设法让 xvfb 运行。

我的问题是GLX extension not found调用时出错glfwInit。此外,运行glxinfo会产生此错误couldn't find RGB GLX visual or fbconfig。从我在网上可以找到的,这是因为 GLFW 找不到 GPU(因为没有)。

是否还有我需要安装的库或者我可以配置一些不同的东西(例如在无头模式下运行 GLFW)来防止这个错误?

这是我的 Dockerfile 的缩短版本(删除了 Go 特定的东西):

FROM alpine:latest

RUN apk --no-cache add ca-certificates wget
RUN wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub
RUN wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.28-r0/glibc-2.28-r0.apk
RUN apk add glibc-2.28-r0.apk

RUN apk update
RUN apk add gcc
RUN apk add mesa-dev
RUN apk add libx11-dev
RUN apk add libc-dev
RUN apk add libx11-dev
RUN apk add libxcursor-dev
RUN apk add libxi-dev
RUN apk add libxinerama-dev
RUN apk add libxrandr-dev
RUN apk add xorg-server
RUN apk add xvfb
RUN apk add coreutils
RUN apk add mesa
RUN apk add mesa-gl
RUN apk add mesa-demos
RUN apk add xvfb-run --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/main/ --allow-untrusted
RUN apk add mesa-osmesa

#if you are unfamiliar with docker, this is the command that gets run when starting the container.
ENTRYPOINT xvfb-run -e /dev/stderr --server-args=':99 -screen 0 640x480x8 +extension GLX +render -noreset -ac' glxinfo | cat

输出:

The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Unsupported high keycode 372 for name <I372> ignored
>                   X11 cannot support keycodes above 255.
>                   This warning only shows for the first high keycode.
Errors from xkbcomp are not fatal to the X server
name of display: :99
Error: couldn't find RGB GLX visual or fbconfig

我认为 XKEYBOARD 警告并不重要,可能会被忽略。

docker x-server
  • 1 个回答
  • 1657 Views
Martin Hope
Jérôme MEVEL
Asked: 2020-01-26 12:00:47 +0800 CST

Debian初始化脚本所需的显示服务(X服务器)[重复]

  • 0
这个问题在这里已经有了答案:
以与 X/控制台无关的方式更改控制台 (tty) 和 X 上的键盘布局/映射? (1 个回答)
2年前关闭。

我在 Debian 9.11 上使用 MATE 桌面(pinebook pro)

我有一个初始化脚本,它使用和/etc/init.d/customMapping重新映射我的一些键。这里是setxkbmapxmodmap

#! /bin/sh

### BEGIN INIT INFO
# Provides:          customMapping
# Required-Start:    $local_fs x11-common xserver display
# Required-Stop:     $local_fs x11-common xserver display
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Custom keyboard mapping
# Description:       This is a simple Init script
#                    Custom keyboard mapping
### END INIT INFO
#

# Some things that run always
echo "customMapping script"

# Carry out specific functions when asked to by the system
case "$1" in
  start)
    echo "Starting script customMapping "
    echo "start" >> /opt/test.txt

    # Make Caps Lock a Control key
    setxkbmap -option ctrl:nocaps > /opt/logs 2>&1

    # Swap Left Control with Left Alt
    setxkbmap -option ctrl:swap_lalt_lctl > /opt/logs 2>&1

    # Make Pause/Break an End key
    xmodmap -e "keycode 127 = End" > /opt/logs 2>&1

    # Make Screen Lock a Home key
    xmodmap -e "keycode 78 = Home" > /opt/logs 2>&1

    ;;
  stop)
    echo "Stopping custom Mapping"
    ;;
  *)
    echo "Usage: /etc/init.d/customMapping {start|stop}"
    exit 1
    ;;
esac

exit 0

如您所见,我在该Required-Start部分中尝试了几种关键字,但这不起作用,当我签入/opt/logs文件时,我看到以下错误消息

无法打开显示“默认显示”

无法打开显示“默认显示”

xmodmap:无法打开显示 ''

xmodmap:无法打开显示 ''

我应该设置什么值Required-Start才能让我的脚本访问display(X 服务器)?值也Default-Start正确吗?

谢谢

debian x-server
  • 1 个回答
  • 278 Views
Martin Hope
400 the Cat
Asked: 2019-12-31 11:38:08 +0800 CST

如何设置登录脚本来运行 xrandr?

  • 6

我正在使用 3 台显示器,其中 2 台正在旋转。

我无法成功配置xorg.conf以旋转 2 个监视器,但我找到了一个xrandr可以在我的登录管理器启动后使用的命令:

xrandr --output DisplayPort-1 --rotate right --left-of DisplayPort-0
xrandr --output DisplayPort-2 --rotate left --right-of DisplayPort-0

目前,我在登录后手动运行这些命令。

我应该把这些放在哪里,以便我的显示器在登录时旋转。另外,我可以在全球范围内进行吗?这样当我以其他用户身份登录时,显示器就会旋转。还是每个用户在登录后都需要用户脚本来执行此操作?

xrandr x-server
  • 4 个回答
  • 6774 Views
Martin Hope
Tim
Asked: 2019-03-13 18:22:15 +0800 CST

`$DISPLAY` 是否同时指定 X 服务器的监听套接字和渲染目标?

  • -3

从我可以指定一个任意的“$DISPLAY”吗?

不要混淆实际显示(您的显示器)、X11 服务器(“显示”)以及通过套接字或其他方式访问它的方式:通过 ssh 转发的 DISPLAY=:0 和 DISPLAY=localhost:10 参考相同的显示/xserver、相同的视频卡和相同的监视器。

$DISPLAY用于启动 X 服务器。是否$DISPLAY同时指定 X 服务器的监听套接字和渲染目标?如果是,它如何指定两种不同的事物?

  • $DISPLAY指定一个套接字。例如 if $DISPLAYis :40,它对应一个端口 6040 或一个以 40 命名的 unix 域套接字。

    是$DISPLAY指定 X 服务器的监听套接字的套接字吗?

  • 还应该指定一个渲染目标(即X 服务器将在$DISPLAY其上渲染某些东西的显示设备或其模拟器)?

是否正确

X client <->  X server <-> rendering target

X 客户端不能直接与渲染目标通信,而是通过 X 服务器间接通信?

谢谢。

display x-server
  • 1 个回答
  • 281 Views
Martin Hope
Tim
Asked: 2019-02-05 10:40:42 +0800 CST

X-Window 对客户端有最大数量限制吗?

  • 6

X-Window 对客户端有最大数量限制吗?

例如,您可以使用 Windows 创建“无限”数量的 evince 进程吗?如果不是,那么限制在哪里?

再举一个例子(尽管我将在下面使用 wine 客户端作为示例,但我认为答案可能取决于 X 客户端是否与 wine 相关),在 Lubuntu 18.04

 $ evince my.pdf 
Maximum number of clients reachedUnable to init server: Could not connect: Connection refused
Cannot parse arguments: Cannot open display: 

$ wine PDFXCview.exe my.pdf 
047d:fixme:ver:GetCurrentPackageId (0x32fbc4 (nil)): stub
Maximum number of clients reached047d:err:winediag:x11drv_init_thread_data x11drv: Can't open display: :0. Please ensure that your X server is running and that $DISPLAY is set correctly.

关闭一些窗口(.exe 程序的窗口或 evince 窗口)后,我可以打开新窗口(用于其他 pdf 文件)。

我已经用.exe程序打开了102个窗口,并且evince打开了5个窗口。X 服务器的 Windows 是否太多?我该如何解决这个问题?

我可以提高最大数量限制吗?是否有一些限制客户端数量的配置设置?我该如何重新配置​​它?

我阅读了https://askubuntu.com/questions/4499/how-can-i-diagnose-debug-maximum-number-of-clients-reached-x-errors和x-clients 的最大数量是多少?,但仍然无法弄清楚我的问题。

谢谢。

x11 x-server
  • 1 个回答
  • 5917 Views
Martin Hope
M-Gregoire
Asked: 2018-10-17 00:45:54 +0800 CST

获取显示中的屏幕列表

  • 3

我了解屏幕由以下:D.S位置标识:

  • D是显示编号
  • S是屏幕编号

我正在寻找列出与显示器相关的所有屏幕。

我可以使用类似的方式获取所有当前显示,cd /tmp/.X11-unix && for x in X*; do echo ":${x#X}"; done但我发现无法列出特定显示的屏幕。

此外,我正在寻找与屏幕名称相关联的显示和屏幕编号。例如,xrandr -q返回:

HDMI1 connected 1920x1080+0+328 (normal left inverted right x axis y axis) 290mm x 170mm
<snipped>

有没有办法获得 X 标识符HDMI1,例如:0.0?

感谢您提供的任何线索!

x11 x-server
  • 2 个回答
  • 14298 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve