linux程序窗口置顶命令,linux 通过快捷键 设置 窗口 置顶

本文介绍了一个简单的程序,该程序通过监听Ctrl+F12按键来将指定名称的窗口(例如:Firefox)置顶。利用X Window系统提供的API进行窗口操作,实现了窗口的查找、判断和置顶功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近写了一个程序,通过ctrl+f12按键,设置某个窗口置顶

#include

#include

#include

#include

#include

#include

static char *window_id_format = "0x%lx";

Display *display;

unsigned int screen;

Window root_win;

Window r, p, *kids;

unsigned int i, mapped, numkids;

XWindowAttributes attr;

char *win_name;

#define shortkey XK_F12

void changefocus()

{

XQueryTree (display, root_win,

&r, &p, &kids,

&numkids);

mapped=0;

for (i = 0; i < numkids;

++i)

{

XGetWindowAttributes (display,

kids[i], &attr);

if (attr.map_state ==

IsViewable)

{

++mapped;

if

(XFetchName(display, kids[i], &win_name))

{

if(strcmp(win_name,"firefox")==0) {

XUnmapWindow(display,kids[i]);

XMapRaised(display,kids[i]);

XFlush(display);

}

XFree

(win_name);

}

}

}

}

int checkkeys(XKeyEvent * keyev)

{

if (keyev->type == KeyPress)

{

if

(keyev->keycode == XKeysymToKeycode(display,

shortkey))

{

if

((keyev->state & (ControlMask))

== (ControlMask))

fprintf(stderr,

"you pressed F12\n");

changefocus();

}

}

return 0;

}

int getevent()

{

XEvent event_buffer;

XNextEvent(display,

&event_buffer);

switch (event_buffer.type)

{

case KeyPress:

case KeyRelease:

checkkeys((XKeyEvent *)

& event_buffer);

break;

}

return 1;

}

int main()

{

display=XOpenDisplay(NULL);

screen=DefaultScreen(display);

root_win=RootWindow(display,screen);

XGrabKey(display ,

XKeysymToKeycode(display,shortkey), AnyModifier , root_win , TRUE ,

GrabModeAsync,GrabModeAsync );

for (;;) {

if(XPending(display))

{

getevent();

}

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值