[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