在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会话中获取所有顶级桌面窗口的列表.基本上,我想获得窗口管理器应用程序切换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) TLDR:如何在Mma 7中将CapsLock转换为"ShortNameDelimiter"?
我喜欢我的mma笔记本中的漂亮文本,并且经常定义函数f[\[Alpha]_] =...以匹配我正在使用的确切方程.因此,它涉及很多Esc- letter- Esc序列,并且Esc每隔一个笔划达到打破我的打字流程.
现在,CapsLock关键很少使用(我不记得我最后一次需要它),但是方便放置(你的小指就在那里!).它重新映射到Esc在vim为我创造了奇迹,我想知道是否有办法做到在同一个mma,而不必修改系统的键盘布局.
我尝试KeyEventTranslations.tr通过添加以下内容进行编辑EventTranslations[{...
Item[KeyEvent["CapsLock"], "ShortNameDelimiter"]
Run Code Online (Sandbox Code Playgroud)
但那没有效果.还有另一种方法吗?是CapsLock不正确的标识?如果它有帮助,我在Mac上使用Mma7学生版.
在查看RescueTime for windows/mac之后,似乎有一个适用于Linux的版本,但似乎不是最新版本.此外,这是周末,我想花时间玩X11 ..
我正在考虑制作一个简单的生产力轮询应用程序,每个短间隔轮询活动窗口,并截取(并传递)鼠标和键盘按下以测量生产力.
这有可能吗?在检查Xlib后,我在哪里找不到可执行文件的二进制名称.等等