相关疑难解决方法(0)

如何从进程ID获取X11窗口?

在Linux下,我的C++应用程序使用fork()和execv()来启动OpenOffice的多个实例,以便查看一些powerpoint幻灯片放映.这部分有效.

接下来,我希望能够将OpenOffice窗口移动到显示器上的特定位置.我可以使用XMoveResizeWindow()函数执行此操作,但我需要为每个实例找到Window.

我有每个实例的进程ID,如何从中找到X11窗口?


更新 - 感谢Andy的建议,我已将其撤下.我在这里发布代码以与Stack Overflow社区共享它.

不幸的是,Open Office似乎没有设置_NET_WM_PID属性,所以这并不能最终解决我的问题,但它确实回答了这个问题.

// Attempt to identify a window by name or attribute.
// by Adam Pierce <adam@doctort.org>

#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <iostream>
#include <list>

using namespace std;

class WindowsMatchingPid
{
public:
    WindowsMatchingPid(Display *display, Window wRoot, unsigned long pid)
        : _display(display)
        , _pid(pid)
    {
    // Get the PID property atom.
        _atomPID = XInternAtom(display, "_NET_WM_PID", True);
        if(_atomPID == None)
        {
            cout << "No such atom" << endl;
            return;
        }

        search(wRoot);
    }

    const list<Window> &result() …
Run Code Online (Sandbox Code Playgroud)

x11

53
推荐指数
4
解决办法
4万
查看次数

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

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

我之前从未做过任何X11编程,但到目前为止,我已经设法通过整个窗口列表进行枚举,代码看起来像这样:

void CSoftwareInfoLinux::enumerateWindows(Display *display, Window rootWindow)
{
    Window parent;
    Window *children;
    Window *child;
    quint32 nNumChildren;

    XTextProperty wmName;
    XTextProperty wmCommand;

    int status = XGetWMName(display, rootWindow, &wmName);
    if (status && wmName.value && wmName.nitems)
    {
        int i;
        char **list;
        status = XmbTextPropertyToTextList(display, &wmName, &list, &i);
        if (status >= Success && i && *list)
        {
            qDebug() << "Found window with name:" << (char*) *list;
        }

        status = XGetCommand(display, rootWindow, &list, &i);
        if (status >= Success && i && *list)
        {
            qDebug() …
Run Code Online (Sandbox Code Playgroud)

c++ x11 xlib icccm ewmh

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

将大写锁定密钥重新映射到Mma 7中的Esc

TLDR:如何在Mma 7中将CapsLock转换为"ShortNameDelimiter"?

我喜欢我的mma笔记本中的漂亮文本,并且经常定义函数f[\[Alpha]_] =...以匹配我正在使用的确切方程.因此,它涉及很多Esc- letter- Esc序列,并且Esc每隔一个笔划达到打破我的打字流程.

现在,CapsLock关键很少使用(我不记得我最后一次需要它),但是方便放置(你的小指就在那里!).它重新映射到Escvim为我创造了奇迹,我想知道是否有办法做到在同一个mma,而不必修改系统的键盘布局.

我尝试KeyEventTranslations.tr通过添加以下内容进行编辑EventTranslations[{...

Item[KeyEvent["CapsLock"], "ShortNameDelimiter"]
Run Code Online (Sandbox Code Playgroud)

但那没有效果.还有另一种方法吗?是CapsLock不正确的标识?如果它有帮助,我在Mac上使用Mma7学生版.

macos wolfram-mathematica keymapping mathematica-frontend

12
推荐指数
1
解决办法
1093
查看次数

是否可以在X11/Xlib中获取活动窗口和可执行文件名称?

在查看RescueTime for windows/mac之后,似乎有一个适用于Linux的版本,但似乎不是最新版本.此外,这是周末,我想花时间玩X11 ..

我正在考虑制作一个简单的生产力轮询应用程序,每个短间隔轮询活动窗口,并截取(并传递)鼠标和键盘按下以测量生产力.

这有可能吗?在检查Xlib后,我在哪里找不到可执行文件的二进制名称.等等

x11 filenames

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