【问题标题】:switching to a specific window切换到特定窗口
【发布时间】:2015-12-07 20:16:03
【问题描述】:

我正在使用 XLIB 和 gtk 编写程序,我应该实现一个函数来切换特定窗口(使用任何人类可识别的引用、窗口名称、进程名称或任何在每次该应用程序时都是静态的正在运行)

我完全迷失了,我找不到任何东西来指导我完成申请的开始

谢谢

【问题讨论】:

    标签: c gtk xlib


    【解决方案1】:

    您可以使用 X 库来做到这一点,但会有点麻烦:您必须了解 X IPC 和属性。幸运的是,有一种更简单的方法,假设您可以使用其他库:使用Libwnck。这是一个列出窗口的最小示例(改编自“入门”页面):

    WnckScreen *screen = wnck_screen_get_default ();
    WnckWindow *active_window = wnck_screen_get_active_window (screen);
    GList *l;
    
    for (l = wnck_screen_get_windows (screen); l != NULL; l = window_l->next) {
        WnckWindow *window = WNCK_WINDOW (window_l->data);
        g_print ("%s%s\n", wnck_window_get_name (window),
                           window == active_window ? " (active)" : "");
    }
    

    切换到特定窗口应该只是:

    wnck_window_activate (window, 0);
    

    唯一的问题是 wnck 被设计为与 GLib 主循环一起使用。如果您没有运行一个(就像一个简单的命令行应用程序的情况),您需要使用 wnck_screen_force_update () 从 X 获取当前数据(请参阅“入门”示例)。

    【讨论】:

    • 不幸的是,libwnck 在我正在开发的操作系统上不可用,如果你能指出正确的方向,我愿意学习 Xlib IPC
    • 构建 libwnck 只依赖于 gtk/x11。 (而且每个主流发行版都肯定会打包它)
    猜你喜欢
    • 2021-01-01
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多