问题标签 [x11]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
14058 浏览

c - 在 X11 上拦截 WM_DELETE_WINDOW?

我想截获WM_DELETE_WINDOW发布到我正在编写的应用程序(AllTray)的特定窗口选择的消息,以便我可以对其进行操作而不是应用程序接收它。如果可能的gdk_display_add_client_message_filter话,我目前正在考虑在 GDK 级别尝试这个,但如果有一个 Xlib 解决方案,我会很高兴;这似乎是可能的,但我似乎并不理解我如何成功地做到这一点。

目前,我有两个程序(用 C 编写),我试图用它们来解决这个问题,第一个程序什么都不做,只是创建一个窗口并注册它知道的WM_DELETE_WINDOW第二个程序试图捕获该消息,但是似乎没有这样做;它似乎什么也没做。我对此文档的理解是错误的,还是我需要做一些额外的事情(或者我是否需要完全避免为此使用 GDK)?

背景是这样的:在我重写 AllTray 之前,它的做事方式似乎是试图拦截鼠标单击 X 按钮本身。对于某些窗口管理器,这可以正常工作,而对于其他窗口管理器,它根本不起作用,而对于其他人,用户必须手动配置它并指示 AllTray 关闭窗口的按钮在哪里。我正在寻找的是一种不涉及 aLD_LIBRARY_PRELOAD并且适用于任何符合当前标准并WM_DELETE_WINDOW在窗口关闭时发送 ClientMessage 的窗口管理器/应用程序组合的解决方案。

更新:我仍在寻找答案。我目前采取的路线是尝试重新设置窗口并自己管理它,但我无法让它工作。重生后,我似乎无法以任何方式找回它。我可能遗漏了一些非常基本的东西,但我不知道如何真正让它再次出现在我自己的窗口中,以将其重新显示在屏幕上。

更新 2:好的,所以我又碰了壁。X 服务器文档说要在窗口的事件掩码上设置 StructureNotifyMask 以接收 MapNotify 和 ReparentNotify 事件。我也有兴趣收到。我目前的想法是创建一个仅用作事件接收器的窗口,然后当我获得有趣事物的事件时,通过创建和重新设置来对它们进行操作。但是,这似乎根本不起作用。我实际收到的唯一事件是 PropertyNotify 事件。所以,这条路线似乎也不是很好。

0 投票
4 回答
455 浏览

java - 在具有 Swing 组件的 Java 应用程序中防止 X11 崩溃

这可能吗?

0 投票
2 回答
1327 浏览

events - 我从哪里开始制作 linux 输入法?

当您在 Mac 上按住“shift”并用鼠标滚动时,它会将您的垂直滚动动作解释为水平滚动动作。这是我在 linux 上工作时最想念的功能,我很想把它带到 linux 上(因为我已经彻底看过了,似乎还没有其他人这样做过)。

我希望这可以通过某种运行时插件来完成,或者至少以一种不需要我重新编译所有其他应用程序来让它们使用该功能的方式来完成。我的问题是:有哪些库允许编写这样的插件?编写某种脚本会很好,因为功能似乎不应该那么复杂,但如果需要,我可以用 C 和 C++ 编写代码。

我已经研究过 XEvIE(已停产)和 XTrap(似乎也被弃用)等 X 解决方案。我很乐意暂时只使用 GTK / GNOME,至少作为概念证明。

如果这不能作为一个插件来完成,我应该使用哪个开源项目(Xfree86?GNOME?其他人?)来尝试使用这个功能?

-- 更新(有解决方案!):

安装包“xbindkeys”和“xautomation”。然后在 ~/.xbindkeysrc.scm 文件中写入以下内容:

然后只需运行 xbindkeys

0 投票
2 回答
466 浏览

import - 如何在没有关联显示的情况下启动 X11 窗口

例如,我想在没有关联显示的情况下启动 Firefox,并最终使用import.

事实上,我可以使用 cronjobs 定期进行吗?

我现在正在建立一个 ssh -X 连接,将 xwininfo 用于在后台启动的窗口,一切正常。但我想自动化它。

0 投票
1 回答
114 浏览

linux - 如何将附加信息附加到像素图?

在 Windows 和 MacOS 的元文件(WMF/EMF 和 PICT/PDF)中,您可以附加与元文件一起出现的任何信息 - 它可以是特定于您的应用程序的信息。如何在 Linux 上获得相同的结果?我没有使用 GDK 或 Qt——只是“普通”的 XLib、Xt 和 Motif。

这个想法是我想从我的应用程序中复制一些东西(通过选择)并将其发送给其他人,例如 PIXMAP。但是仍然想以自定义格式对我发送的信息进行编码,因此当我返回相同的对象时,我可以检索此信息并使对象在我的应用程序中可编辑。

0 投票
3 回答
14897 浏览

c++ - 如何使用 xlib 识别顶级 X11 窗口?

我正在尝试获取 X11 会话中所有顶级桌面窗口的列表。基本上,我想获取在窗口管理器应用程序切换 UI 中显示的所有窗口的列表(通常在用户按下 ALT+TAB 时打开)。

我以前从未做过任何 X11 编程,但到目前为止,我已经设法枚举了整个窗口列表,代码如下所示:

enumerateWindows()最初使用根窗口调用。

就它打印出有关数百个窗口的信息而言,这是可行的-我需要的是弄清楚我可以询问哪个属性以确定给定Window的是否是顶级桌面应用程序窗口(不确定官方术语是什么), 或不。

任何人都可以对此有所了解吗?我为 X11 编程找到的所有参考文档都非常枯燥且难以理解。也许有人可以指出更好的资源?

0 投票
2 回答
3559 浏览

linux - Linux 上的标准菜单项位置

我应该将 .desktop 文件放在哪里以确保大多数桌面环境都能找到它?有这样的位置吗?另外,是否有任何标准的地方可以把它放在用户的主目录中,这样只有那个用户才能看到它?

0 投票
2 回答
2054 浏览

windows - 从 Windows 服务器远程运行 X Windows 应用程序

这似乎是一个奇怪的问题,但它对我目前正在从事的项目具有一定的价值。

我有一台运行 XMing(或 Cygwinx)的 Windows 2003 服务器。我正在使用启用了 X11 转发的 ssh 从 Ubunutu 连接到服务器。当我在 Windows 2003 服务器(例如 xeyes)上启动任何 X 应用程序时,应用程序会显示在 Windows 服务器上,而不是本地 Ubuntu 机器上。

Xming 是一个完全实现的 X 服务器,所以我认为它支持为远程客户端提供 X 应用程序。有什么建议为什么这不起作用?

0 投票
3 回答
4442 浏览

iphone - 是否可以将 X11 服务器移植到 iPhone?

我正在寻找能够使用NX协议的 iPhone 上的 X11 服务器。有 RDP 客户端、Citrix 客户端、VNC 客户端,但没有 X11 服务器……

您认为可以为 iPhone 移植(或创建?)X11 服务器(例如为 Cocoa 修改的kdrive )吗?它有足够的 CPU 能力或内存吗?你会怎么做?有替代品吗?

0 投票
7 回答
8497 浏览

c - 帮助 Conky 使用 LXDE 和 PCManFM

正如你们中的一些人可能知道的那样,Conky 或 PCManFM(它的桌面管理器方面)存在一个错误,导致 Conky 窗口在以下一种情况下消失:

  • 在 .conkyrc(Nautilus 的常用配置)中设置“own_window_type override”根本不会显示 Conky 窗口。
  • 在 .conkyrc 中设置“own_window_type desktop”会显示 Conky 窗口,但如果单击桌面,它就会消失。
  • 在 .conkyrc 中设置“own_window_type normal”会显示 Conky 窗口,单击桌面时它不会消失,但是......如果您使用 LXPanel 的“最小化所有窗口”插件(“显示桌面”等效项),它会消失。如果使用键盘快捷键也会发生这种情况。

有一些解决方法,例如停用 PCManFM 的桌面管理(并使用 feh 设置壁纸,并且可能使用 iDesk 设置图标)或完全使用另一个文件管理器,但我注意到这些都是低于标准的解决方案。我真的很喜欢 PCManFM,我真的很喜欢 Conky。男人要做什么?:-/

所以我挖掘了LXPanel 的源代码并找到了一段相关的代码,它可能包含我的修复。该文件是 src/plugins/wincmd.c 。

我的想法是,当单击“最小化所有窗口”按钮时,所有窗口(类)名称将与静态字符串“Conky”进行比较,如果匹配,它根本不会最小化该窗口。很简单,它应该可以工作。但问题是我已经有几年没有接触过任何 C 代码了,而且我还没有真正玩过 Xlib。

到目前为止,我做了以下更改:

这编译正确,但是当我运行新的 lxpanel 并单击“最小化所有窗口”时,Conky 仍然像以前一样消失。

如果有人可以查看此文件并查看我的更改是否有意义,我将非常感激。

谢谢!:)