GTK+ 3 状态图标替换
GTK+ 3 StatusIcon replacement
我希望我的 GTK 应用程序在系统托盘中有一个状态图标,我已经使用 StatusIcon 很好地完成了这项工作,但是这已被弃用:
gtk_status_icon_new has been deprecated since version 3.14 and should not be used in newly-written code.
Use notifications
文档上写着“使用通知”,但我不知道这到底是什么意思。我将其解释为“使用桌面通知”,但据我所知,它的用途完全不同。我想要一个始终可见的系统托盘图标,而不是临时弹出通知。尽管如此,我找不到任何其他似乎是“通知”的意思。
是否有 GtkStatusIcon 的新替代品,它在系统托盘中提供一个图标,支持接收鼠标 click/scroll 信号和显示弹出菜单?
很遗憾,它们指的是桌面通知。如果您仍想使用系统托盘图标,请继续使用 GtkStatusIcon;请注意,它可能很快就会被删除。 (关键是更多的东西有桌面通知而不是状态图标,但我敢肯定还有其他原因。GTK+ 可能不应该处理桌面 environment-specific 这样的东西......没有什么能阻止任何人用他们自己的 GtkStatusIcon 替换,但似乎还没有人这样做。)
对于更高版本的 GTK+ 3,StatusIcon 已弃用,您可以使用以下代码来防止看到任何关于弃用的警告:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
// Insert Status Icon Code Here
#pragma GCC diagnostic pop
虽然它已被弃用,但直到 GTK4 才从 GTK 中删除。
对于 GTK4 和其他版本,我已经创建了 TIL - Tray Icon Library, which should work in any GTK version. There is example code how to use it with GTK4. Currently it only works using XCB via XEMBED,但将来会支持更多的后端。长期目标是支持大多数不同的后端在不同情况下创建 tray/status 图标。
基本上它是如何工作的,我们完全使用我们想要的后端创建托盘图标,在本例中为 X11。然后我们得到 GTK Widget 的 X-Connection 和 X Window ID。然后我们只需添加 GTK Widget 的 X Window ID 作为我们使用 X 创建的托盘图标的子项。这样就可以在托盘图标中插入任何 GTK Widget。 X 中的托盘图标实际上只是 windows 卡在托盘中。并非所有小部件都能正常工作。
我希望我的 GTK 应用程序在系统托盘中有一个状态图标,我已经使用 StatusIcon 很好地完成了这项工作,但是这已被弃用:
gtk_status_icon_new has been deprecated since version 3.14 and should not be used in newly-written code.
Use notifications
文档上写着“使用通知”,但我不知道这到底是什么意思。我将其解释为“使用桌面通知”,但据我所知,它的用途完全不同。我想要一个始终可见的系统托盘图标,而不是临时弹出通知。尽管如此,我找不到任何其他似乎是“通知”的意思。
是否有 GtkStatusIcon 的新替代品,它在系统托盘中提供一个图标,支持接收鼠标 click/scroll 信号和显示弹出菜单?
很遗憾,它们指的是桌面通知。如果您仍想使用系统托盘图标,请继续使用 GtkStatusIcon;请注意,它可能很快就会被删除。 (关键是更多的东西有桌面通知而不是状态图标,但我敢肯定还有其他原因。GTK+ 可能不应该处理桌面 environment-specific 这样的东西......没有什么能阻止任何人用他们自己的 GtkStatusIcon 替换,但似乎还没有人这样做。)
对于更高版本的 GTK+ 3,StatusIcon 已弃用,您可以使用以下代码来防止看到任何关于弃用的警告:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
// Insert Status Icon Code Here
#pragma GCC diagnostic pop
虽然它已被弃用,但直到 GTK4 才从 GTK 中删除。
对于 GTK4 和其他版本,我已经创建了 TIL - Tray Icon Library, which should work in any GTK version. There is example code how to use it with GTK4. Currently it only works using XCB via XEMBED,但将来会支持更多的后端。长期目标是支持大多数不同的后端在不同情况下创建 tray/status 图标。
基本上它是如何工作的,我们完全使用我们想要的后端创建托盘图标,在本例中为 X11。然后我们得到 GTK Widget 的 X-Connection 和 X Window ID。然后我们只需添加 GTK Widget 的 X Window ID 作为我们使用 X 创建的托盘图标的子项。这样就可以在托盘图标中插入任何 GTK Widget。 X 中的托盘图标实际上只是 windows 卡在托盘中。并非所有小部件都能正常工作。