标签: xorg

如何在基于Swing或NetBeans平台的Java GUI应用程序中更改WM_CLASS值?

所有基于Swing/NetBeans的Java GUI应用程序似乎都具有相同的WM_CLASS值:

WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "java-lang-Thread"
Run Code Online (Sandbox Code Playgroud)

可以通过发出xprop命令并指向窗口来查看此参数.定制它的实际目的是让类似Mac的扩展坞(例如AWN(以及可能是Ubuntu的Unity))区分应用程序窗口并将它们分组到应用程序的固定启动器图标下.为此工作StartupWMClass参数将在.application文件中相应地设置~/.local/share/applications/usr/share/applications.毋庸置疑,如果多个应用程序使用相同的字符串,AWN(和类似物)会感到困惑WM_CLASS.

java swing netbeans xorg

6
推荐指数
1
解决办法
1778
查看次数

使用 Python 禁止屏幕保护程序

在 Linux 中禁用屏幕保护程序的更好的跨 DE 方法是什么?我在这里找到了一些东西,但它仅适用于 gnome-screensaver。我想知道是否有任何方法可以模拟击键或某些 X.Org API 来禁用屏幕保护程序激活。

python linux screensaver xorg

6
推荐指数
1
解决办法
4133
查看次数

xprop设置atom属性的多个字段

我搜索了互联网,找到了只设置一个属性字段的示例:

xprop -id "$windowid" -f _NET_WM_STATE 32a -set _NET_WM_STATE _NET_WM_STATE_ABOVE 
Run Code Online (Sandbox Code Playgroud)

但是如何设置多个字段?我试过了:

xprop -id "$windowid" -f _NET_WM_STATE 32a -set _NET_WM_STATE '_NET_WM_STATE_ABOVE, _NET_WM_STATE_SKIP_TASKBAR'
Run Code Online (Sandbox Code Playgroud)

xprop -id "$windowid" -f _NET_WM_STATE 32aa -set _NET_WM_STATE _NET_WM_STATE_ABOVE,_NET_WM_STATE_SKIP_TASKBAR
Run Code Online (Sandbox Code Playgroud)

和许多其他变种没有运气.可能吗 ?:)


好....

我为xprop编写了一个修补程序来解决这个问题,并且它有效,但不知道它是否正确.
感谢@MichałGórny.
(xprop.c,v 1.6)

--- xprop.c 2012-07-31 11:24:01.178117974 +0400
+++ xprop.mod   2012-07-31 11:23:19.434784430 +0400
@@ -1487,11 +1487,20 @@
    break;
       }
       case 'a': {
-   static Atom avalue;
-   avalue = Parse_Atom(value, False);
-   type = XA_ATOM;
-   data = (unsigned char *) &avalue;
-   nelements = …
Run Code Online (Sandbox Code Playgroud)

linux x11 xorg

6
推荐指数
1
解决办法
2279
查看次数

xinput重启后更改触摸板的ID

运行自定义键盘和触摸板修改,我想使用以下命令激活 2 手指滚动:

xinput --set-prop id "Synaptics Two-Finger Scrolling" 1 1
Run Code Online (Sandbox Code Playgroud)

其中 id 是使用找到的设备 ID

xinput --list
Run Code Online (Sandbox Code Playgroud)

重启后谁改变的id。最好使用批处理脚本来自动查找 ID 并设置首选项。

linux xorg

6
推荐指数
1
解决办法
3754
查看次数

Electron:缺少 X 服务器或 $DISPLAY

我一直在 Pi4、Ubuntu 22.04 服务器和 Gnome 桌面上运行 Electron 应用程序,没有出现任何问题。由于它无论如何都作为一个单独的应用程序作为信息亭运行,因此我一直在尝试消除 Gnome 并仅从 CLI 启动(安装了 X)。但是,我得到:

ERROR:ozone_platform_x11.cc(247) Missing X server or $DISPLAY
The platform failed to initialize. Exiting.
Run Code Online (Sandbox Code Playgroud)

我读过有关设置“DISPLAY=$HOST_IP:10.0”的信息,但是我不清楚在哪里设置,或者是否适用于这种情况。我对这部分还很陌生,所以任何帮助将不胜感激!

xorg electron ubuntu-22.04

6
推荐指数
1
解决办法
2万
查看次数

将xlib XImage保存到PNG

我正在使用xlib.

我有一个XImage结构,其中包含来自XGetImage()调用的信息.是否有一种流行的方法可以从XImage获得更有意义的东西..即PNG?

我看过libpng,但几乎每个人都听说这是一个驯服的野兽.这仍然是推荐的路径吗?

c linux x11 xlib xorg

5
推荐指数
1
解决办法
3338
查看次数

如何创建一个位于所有其他窗口之上、不受 WM 控制且没有输入的 X 窗口/客户端?(叠加、OSD)

我想编写像硬件屏幕 OSD(屏幕显示)一样运行的应用程序(或使用现有的应用程序,这会更方便),只是不需要输入。

也就是说:图形输出(例如来自 Qt 或 Gtk 等 GUI 工具包)被放置在甚至位于全屏窗口(如 Firefox F11 模式或全屏模式下的视频播放器)上方的层上。这也包括鼠标光标“上方”,因此从技术上和图形上讲,鼠标光标将移动到该小部件下方。我不知道 SDL 或 OpenGL 的真正全屏应用程序,但这不是要求。如果您也知道这一点,请将其包含在您的答案中。

现实世界的应用程序是只读覆盖层,例如一个小网络摄像头窗口、一个电视台(例如徽标)或预制注释。总而言之,这一切都是为了现场演示、流媒体和录制截屏视频和教程,并进行最少的后期处理。

我自己的黑客攻击,不成功的实验至少表明,从 WM 控件中删除这个窗口(我通过选择 GTK 弹出对话框而不是真正的主窗口来做到这一点)可以让您定位在绝对坐标中,并且它会忽略诸如虚拟桌面和工作区,这很好,因此您可以在这些工作区之间切换,并且覆盖/HUD 将保持在原位。

当然,这不能在与硬件屏幕具有相同 Z 值(顶部/底部窗口)的软件中完成。因此,从技术上讲,我所说的是在所有其他窗口之上,但在屏幕保护程序或锁屏层之下。

+1 互联网,用于链接到文档并提供正确的关键字。

+2 互联网用于工作代码示例、语言、GUI 工具包等并不重要。

linux user-interface desktop overlay xorg

5
推荐指数
1
解决办法
2713
查看次数

有没有办法配置 xorg 使用帧缓冲设备作为主监视器?

我有一个带 GPIO 显示的 Raspberry Pi。我目前将它设置为 /dev/fb1 中的帧缓冲设备。有没有办法让它成为 X 窗口的默认或主要显示?我最终试图为它绘制图形,我最初计划使用 DirectFB 和 SDL,但 DirectFB 是 pi 的 alpha。我也尝试过使用 SDL1.2,因为它支持帧缓冲,但我不知道如何让 SDL 选择要绘制的帧缓冲设备而不使用 DirectFB。

我考虑使用 SDL 将我的简单 GUI 的每一帧准备为原始图像,并使用 mmap 将其 blit 到 /dev/fb1 而不是使用 SDL 的内置绘图函数,但我觉得这是实现我的目标的一种糟糕方式。

我认为如果我可以让 xorg 使用我的帧缓冲设备作为主监视器,我就不必担心做任何特殊的事情来让 SDL 绘制我的图像文件。但我不太确定 xorg 是如何工作的,以及这是否可能。

任何人的任何见解或帮助都会有很大帮助!一个星期以来,我一直在解决这个问题,寻找不同的可能性。

c framebuffer xorg raspberry-pi

5
推荐指数
1
解决办法
1747
查看次数

SSH login 显示 Only console users are allowed to run the X server

每次我从 SSH 登录时,我都会得到:

只允许控制台用户运行 X 服务器

如果我制作一个新tmux窗格,我也会得到这个,我可以通过放置:

test -z ${TMUX} && startx

在我的 .zprofile

我假设我收到消息是因为我运行startx. startx如果我从 ssh 登录,如何使它不运行?

ssh zsh xorg archlinux tmux

5
推荐指数
1
解决办法
2万
查看次数

使用 2 个显示器启动 virt-viewer

是否可以让 virt-viewer 以 2 个显示器启动?

背景:我们有一个基于 Linux 的零售系统,通常在具有多个显示器的终端上运行。基本上,当 X 启动时,我们会检测连接了多少个显示器,并据此配置我们的系统(即,我们有一个始终显示的主显示器,以及一个可选的辅助显示器,在具有 2 个屏幕的系统上显示)。为了进行测试,我们在虚拟机(基于 libvirt SPICE/QEMU)中使用 SPICE-VDAGENT 运行该系统,允许我们使用 virt-viewer 打开 2 个显示器,从而模拟与真实终端相同的设置。

问题是 virt-viewer 似乎无法启动 2 个显示器,一旦 X 启动,我总是必须使用“视图”->“显示器”菜单打开第二个显示器。这会导致问题,因为此时已经进行了屏幕检测和配置(并且由于仅打开了 1 个显示器,因此系统仅检测到 1 个屏幕)。

到目前为止,我发现的唯一解决方法是打开第二个显示器,然后重新启动 X 强制重新配置,但是我确实需要从一开始就打开第二个显示器,这样我们就可以获得双屏幕系统,而无需任何手动干预。

这可以做到吗?一个问题是第二个显示器只能在 SPICE-VDAGENT 启动后打开,并且只有 X 启动后才能启动。

linux libvirt virtual-machine xorg

5
推荐指数
1
解决办法
1万
查看次数