[Xfce4-commits] <transd:master> drop libxfcegui4 dep, use libwnck-3.0 and gtk3

Brian J. Tarricone noreply at xfce.org
Wed Apr 11 11:52:01 CEST 2012


Updating branch refs/heads/master
         to aa8f6ee292b47f2a7b9e473a981173bc2db74816 (commit)
       from b89d7823fb2a7835b5cdcd2eab910fbba8255896 (commit)

commit aa8f6ee292b47f2a7b9e473a981173bc2db74816
Author: Brian J. Tarricone <brian at tarricone.org>
Date:   Tue Apr 10 14:55:20 2012 -0700

    drop libxfcegui4 dep, use libwnck-3.0 and gtk3

 configure.ac    |    4 ++-
 src/Makefile.am |   17 ++++++++++----
 src/main.c      |   19 +++++++++------
 src/transd.c    |   67 ++++++++++++++++++++++++++++--------------------------
 src/transd.h    |    6 +---
 5 files changed, 63 insertions(+), 50 deletions(-)

diff --git a/configure.ac b/configure.ac
index fe30914..2b1fb45 100644
--- a/configure.ac
+++ b/configure.ac
@@ -40,7 +40,9 @@ dnl Check for X11 installed
 XDT_CHECK_LIBX11_REQUIRE
 
 dnl required
-XDT_CHECK_PACKAGE([LIBXFCEGUI4], [libxfcegui4-1.0], [4.2.0])
+XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.2.0])
+XDT_CHECK_PACKAGE([GTK], [gtk+-3.0], [3.0.0])
+XDT_CHECK_PACKAGE([WNCK], [libwnck-3.0], [3.0.0])
 
 dnl check for debugging support
 XDT_FEATURE_DEBUG
diff --git a/src/Makefile.am b/src/Makefile.am
index a33b823..5702cb3 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -5,14 +5,21 @@ transd_SOURCES = \
 	transd.c \
 	transd.h
 
+transd_CPPFLAGS = \
+	-DWNCK_I_KNOW_THIS_IS_UNSTABLE
+
 transd_CFLAGS = \
 	-DLOCALEDIR=\"$(localedir)\" \
-	@LIBX11_CFLAGS@ \
-	@LIBXFCEGUI4_CFLAGS@
+	$(LIBXFCE4UTIL_CFLAGS) \
+	$(X11_CFLAGS) \
+	$(GTK_CFLAGS) \
+	$(WNCK_CFLAGS)
 
 transd_LDFLAGS = \
-	@LIBX11_LDFLAGS@
+	$(X11_LDFLAGS)
 
 transd_LDADD = \
-	@LIBX11_LIBS@ \
-	@LIBXFCEGUI4_LIBS@
+	$(LIBXFCE4UTIL_LIBS) \
+	$(X11_LIBS) \
+	$(GTK_LIBS) \
+	$(WNCK_LIBS)
diff --git a/src/main.c b/src/main.c
index 6d3460b..508bf49 100644
--- a/src/main.c
+++ b/src/main.c
@@ -51,7 +51,7 @@
 
 #include <gtk/gtk.h>
 
-#include <libxfcegui4/libxfcegui4.h>
+#include <libwnck/libwnck.h>
 
 #include "transd.h"
 
@@ -65,9 +65,9 @@ setup_transd(Transd *transd)
     
     nscreens = gdk_display_get_n_screens(gdk_display_get_default());
     for(i = 0; i < nscreens; i++) {
-        NetkScreen *netk_screen = netk_screen_get(i);
-        netk_screen_force_update(netk_screen);
-        transd_add_screen(transd, netk_screen);
+        WnckScreen *wnck_screen = wnck_screen_get(i);
+        wnck_screen_force_update(wnck_screen);
+        transd_add_screen(transd, wnck_screen);
     }
 }
 
@@ -116,12 +116,15 @@ main(int argc, char **argv)
                     for(i = getdtablesize() - 1; i >= 0; i--)
                         close(i);
                     
-                    xsession_errors = xfce_get_homefile(".xsession-errors",
-                                                        NULL);
+                    xsession_errors = g_build_filename(g_get_home_dir(),
+                                                       ".xsession-errors",
+                                                       NULL);
                     open("/dev/null", O_RDONLY);  /* stdin */
                     i = open(xsession_errors, O_CREAT|O_APPEND, 600);  /* stdout */
-                    if(i >= 0)
-                        dup(i);  /* stderr */
+                    if(i >= 0) {
+                        if (dup(i))  /* stderr */
+                            g_printerr("Failed to dup() stdout for stderr\n");
+                    }
                     g_free(xsession_errors);
                 }
                 break;
diff --git a/src/transd.c b/src/transd.c
index 47067c4..29ff1f2 100644
--- a/src/transd.c
+++ b/src/transd.c
@@ -34,12 +34,14 @@
 #endif
 
 #include <X11/Xlib.h>
+#include <X11/Xatom.h>
 
 #include <glib.h>
 #include <gdk/gdk.h>
+#include <gdk/gdkx.h>
+#include <gtk/gtk.h>
 
 #include <libxfce4util/libxfce4util.h>
-#include <libxfcegui4/libxfcegui4.h>
 
 #include "transd.h"
 
@@ -49,7 +51,7 @@
 
 struct _Transd
 {
-    GList *screens;     /* (NetkScreen *) */
+    GList *screens;     /* (WnckScreen *) */
     GHashTable *rules;  /* (gchar *) -> (TransdClassRule *) */
 };
 
@@ -79,8 +81,8 @@ transd_window_get_role(Window xid)
     
     g_return_val_if_fail(xid != None, NULL);
     
-    if(Success == XGetWindowProperty(GDK_DISPLAY(), xid,
-                                     XInternAtom(GDK_DISPLAY(), _XA_ROLE, False),
+    if(Success == XGetWindowProperty(gdk_x11_get_default_xdisplay(), xid,
+                                     XInternAtom(gdk_x11_get_default_xdisplay(), _XA_ROLE, False),
                                      0L, 8192, False, XA_STRING, &actual_type,
                                      &actual_format, &nitems, &bytes_after,
                                      &prop_return))
@@ -112,10 +114,7 @@ transd_read_config(Transd *transd, const gchar *filename)
         return FALSE;
     
     if(!xfce_rc_has_group(rcfile, "transd-global-config")) {
-        xfce_message_dialog(NULL, "Transd", GTK_STOCK_DIALOG_ERROR,
-                            _("Configuration format changed."),
-                            _("Transd now uses a new configuration file format.  Please see the README for details.  Transd will now exit."),
-                            GTK_STOCK_QUIT, GTK_RESPONSE_ACCEPT, NULL);
+        g_printerr(_("Transd now uses a new configuration file format.  Please see the README for details.  Transd will now exit.\n"));
         exit(1);
     }
     
@@ -166,8 +165,9 @@ transd_read_config(Transd *transd, const gchar *filename)
 }
 
 static void
-transd_apply_rule(Transd *transd, NetkWindow *window)
+transd_apply_rule(Transd *transd, WnckWindow *window)
 {
+    WnckClassGroup *cgroup;
     const gchar *class_;
     gchar *role;
     gint percentage = 0;
@@ -177,14 +177,15 @@ transd_apply_rule(Transd *transd, NetkWindow *window)
     
     TRACE("entering");
     
-    g_return_if_fail(transd && NETK_IS_WINDOW(window));
+    g_return_if_fail(transd && WNCK_IS_WINDOW(window));
     
-    class_ = netk_window_get_resource_class(window);
-    if(!class_) {
-        class_ = netk_window_get_resource_name(window);
-        if(!class_) {
-            class_ = netk_window_get_name(window);
-            if(!class_)
+    cgroup = wnck_window_get_class_group(window);
+    class_ = wnck_class_group_get_id(cgroup);
+    if (!class_) {
+        class_ = wnck_class_group_get_name(cgroup);
+        if (!class_) {
+            class_ = wnck_window_get_name(window);
+            if (!class_)
                 return;
         }
     }
@@ -195,8 +196,8 @@ transd_apply_rule(Transd *transd, NetkWindow *window)
     if(!class_rule)
         return;
     
-    window_xid = netk_window_get_xid(window);
-    /* WTF doesn't libnetk have this function? */
+    window_xid = wnck_window_get_xid(window);
+    /* WTF doesn't libwnck have this function? */
     role = transd_window_get_role(window_xid);
     if(role)
         percentage = GPOINTER_TO_INT(g_hash_table_lookup(class_rule->roles, role));
@@ -214,18 +215,19 @@ transd_apply_rule(Transd *transd, NetkWindow *window)
         (guint32)window_xid, class_, role);
     
     gdk_error_trap_push();
-    XChangeProperty(GDK_DISPLAY(), window_xid,
-                    XInternAtom(GDK_DISPLAY(), _XA_OPACITY, FALSE),
+    XChangeProperty(gdk_x11_get_default_xdisplay(), window_xid,
+                    XInternAtom(gdk_x11_get_default_xdisplay(), _XA_OPACITY, FALSE),
                     XA_CARDINAL, 32, PropModeReplace,
                     (unsigned char *)&opacity, 1L);
-    gdk_error_trap_pop();
+    if (gdk_error_trap_pop())
+        ;  // suppress warning
     
     g_free(role);
 }
 
 static void
-transd_netk_screen_window_opened_cb(NetkScreen *netk_screen,
-                                    NetkWindow *window,
+transd_wnck_screen_window_opened_cb(WnckScreen *wnck_screen,
+                                    WnckWindow *window,
                                     gpointer user_data)
 {
     Transd *transd = user_data;
@@ -272,7 +274,8 @@ transd_new()
                                    &length,
                                    &error))
             {
-                fwrite(sysconfig_contents, 1, length, fp);
+                if (fwrite(sysconfig_contents, 1, length, fp) != length)
+                    g_printerr("Failed to write full config file: %s\n", strerror(errno));
                 fflush(fp);
                 transd_read_config(transd, config_user);
             } else {
@@ -298,19 +301,19 @@ transd_new()
 }
 
 void
-transd_add_screen(Transd *transd, NetkScreen *netk_screen)
+transd_add_screen(Transd *transd, WnckScreen *wnck_screen)
 {
     GList *windows, *l;
     
-    g_return_if_fail(transd && netk_screen);
+    g_return_if_fail(transd && wnck_screen);
     
-    g_signal_connect(G_OBJECT(netk_screen), "window-opened",
-                     G_CALLBACK(transd_netk_screen_window_opened_cb), transd);
-    transd->screens = g_list_append(transd->screens, netk_screen);
+    g_signal_connect(G_OBJECT(wnck_screen), "window-opened",
+                     G_CALLBACK(transd_wnck_screen_window_opened_cb), transd);
+    transd->screens = g_list_append(transd->screens, wnck_screen);
     
-    windows = netk_screen_get_windows(netk_screen);
+    windows = wnck_screen_get_windows(wnck_screen);
     for(l = windows; l; l = l->next)
-        transd_apply_rule(transd, (NetkWindow *)l->data);
+        transd_apply_rule(transd, (WnckWindow *)l->data);
 }
 
 void
@@ -322,7 +325,7 @@ transd_free(Transd *transd)
     
     for(l = transd->screens; l; l = l->next) {
         g_signal_handlers_disconnect_by_func(G_OBJECT(l->data),
-                                             G_CALLBACK(transd_netk_screen_window_opened_cb),
+                                             G_CALLBACK(transd_wnck_screen_window_opened_cb),
                                              transd);
     }
     g_list_free(transd->screens);
diff --git a/src/transd.h b/src/transd.h
index 90b0b7d..7ecddf0 100644
--- a/src/transd.h
+++ b/src/transd.h
@@ -18,16 +18,14 @@
 #ifndef __TRANSD__H__
 #define __TRANSD__H__
 
-#include <glib.h>
-
-#include <libxfcegui4/libxfcegui4.h>
+#include <libwnck/libwnck.h>
 
 G_BEGIN_DECLS
 
 typedef struct _Transd Transd;
 
 Transd *transd_new();
-void transd_add_screen(Transd *transd, NetkScreen *netk_screen);
+void transd_add_screen(Transd *transd, WnckScreen *wnck_screen);
 void transd_free(Transd *transd);
 
 G_END_DECLS


More information about the Xfce4-commits mailing list