Tag: gnome

如何覆盖GstBin中的handle_message?

试图创建一个子类: mybin.h: #pragma once #include G_BEGIN_DECLS G_DECLARE_DERIVABLE_TYPE(MyBin, my_bin, MY, BIN, GstBin) struct _MyBinClass { GstBinClass parent_class; }; GstElement* my_bin_new(const gchar *name); G_END_DECLS mybin.c: #include “mybin.h” G_DEFINE_TYPE(MyBin, my_bin, GST_TYPE_BIN) static void my_bin_init(MyBin *bin) { } static void my_bin_class_init(MyBinClass *class) { // virtual function overrides go here } GstElement* my_bin_new(const gchar *name) { // ??? } 在my_bin_new()写什么来调用my_bin_class_init() […]

如何检测在Linux中通过GUI登录的用户

我想在我的程序中捕获通过GUI登录的用户名。 我的程序作为root登录的守护进程运行。 如果非root用户通过GUI登录,则应通知我的程序。 我正在粘贴我当前的程序,该程序调用perl脚本,利用系统调用来检查当前用户是谁登录。我也粘贴了我的perl脚本以供参考。 #include #include #include #include #include int main() { char *user; char buf[1024]; int fd, ret; fd = open(“/tmp/log”, O_TRUNC|O_RDWR|O_CREAT); if (!fd) { printf(“Error opening file\n”); exit(1); } chmod(“/tmp/log”, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IWOTH | S_IXOTH); daemon(0, 0); while (1) { system(“perl […]

Gtk Ckipboard:使用自定义URI方案粘贴源文件

我正在尝试编写一个将一些文件放在Gtk剪贴板上的GTK / C应用程序,因此Nautilus的用户可以粘贴它们。 在stackoverflow上有一个很好的Gtk剪贴板本地文件复制和粘贴示例 。 不幸的是,我需要粘贴的文件不在本地磁盘上,并且无法通过标准的GVFS URI方案访问,例如file://只有我的应用程序可以在设置TCP连接,validation和打开额外通道后访问这些源文件。 如何在Gtk剪贴板上使用这些应用程序管理的远程文件来粘贴Nautilus? 在未来,对于Dolphin / KDE呢? 在谷歌搜索后,我得出了以下想法:我需要开发一个新的gvfs URI方案处理程序(即:my-app://)。 但是很难找到示例或文档。 这是唯一的方法吗? 并且,我的应用程序可以将自己注册为临时GVFS URI方案处理程序而无需更改任何外部系统配置文件吗? 怎么样 ?

如何创建nautilus C扩展

我正在尝试在C中创建Nautilus扩展,但只有Python示例和帮助。 几乎没有文档和字面上没有示例,但只是一些完整的扩展,这些扩展很长,很难为初学者理解。 我只需要一个简单的示例代码,在Nautilus的列表视图中创建一个新列。 如何编写和编译它。 我试过的代码是: #include typedef struct _FooExtension FooExtension; typedef struct _FooExtensionClass FooExtensionClass; struct _FooExtension { GObject parent_slot; }; struct _FooExtensionClass { GObjectClass parent_slot; }; static void foo_extension_class_init (FooExtensionClass *class); static void foo_extension_instance_init (FooExtension *img); static void foo_extension_class_init(FooExtensionClass *class) { } static void foo_extension_instance_init(FooExtension *img) { } static GType provider_types[1]; static GType foo_extension_type; static […]

使用Gnome库(GDK)获取键盘修饰符状态仅获取初始状态

我试图通过gnome GDK或GTK库来获取当前的键盘修饰符状态,目的是实现显示该状态的可访问性gnome shell扩展。 我知道如何使用xlib获得状态,但是gnome gjs没有完全绑定。 下面的代码只获得初始状态。 它不会更新状态。 /* * compiling: gcc `pkg-config –cflags gdk-3.0` -o gdk_mod gdk_mod.c `pkg-config –libs gdk-3.0` */ #include int main (int argc, char **argv) { gdk_init(&argc, &argv); GdkDisplay * disp; disp = gdk_display_open(NULL); if (disp!=NULL) g_printf(“display connected!\n”); GdkKeymap * kmap; kmap = gdk_keymap_get_for_display(disp); guint state; state = gdk_keymap_get_modifier_state(kmap); g_printf(“mod state: %x\n”, […]