show the hostname of forwarded clients in the titlebar
Mikael Magnusson mikachu@comhem.se
4 files changed,
31 insertions(+),
2 deletions(-)
M
openbox/client.c
→
openbox/client.c
@@ -70,6 +70,7 @@ static void client_get_layer(ObClient *self);
static void client_get_shaped(ObClient *self); static void client_get_mwm_hints(ObClient *self); static void client_get_gravity(ObClient *self); +static void client_get_client_machine(ObClient *self); static void client_change_allowed_actions(ObClient *self); static void client_change_state(ObClient *self); static void client_change_wm_state(ObClient *self);@@ -624,6 +625,7 @@ g_free(self->icon_title);
g_free(self->name); g_free(self->class); g_free(self->role); + g_free(self->client_machine); g_free(self->sm_client_id); g_free(self);@@ -933,6 +935,7 @@ /* got the type, the mwmhints, the protocols, and the normal hints
(min/max sizes), so we're ready to set up the decorations/functions */ client_setup_decor_and_functions(self); + client_get_client_machine(self); client_update_title(self); client_update_class(self); client_update_sm_client_id(self);@@ -1641,6 +1644,7 @@
void client_update_title(ObClient *self) { gchar *data = NULL; + gchar *visible = NULL; g_free(self->title);@@ -1660,8 +1664,14 @@ data = g_strdup("Unnamed Window");
} } - PROP_SETS(self->window, net_wm_visible_name, data); - self->title = data; + if (self->client_machine) { + visible = g_strdup_printf("%s (%s)", data, self->client_machine); + g_free(data); + } else + visible = data; + + PROP_SETS(self->window, net_wm_visible_name, visible); + self->title = visible; if (self->frame) frame_adjust_title(self->frame);@@ -1857,6 +1867,21 @@
/* ob_debug("window %s user time %u\n", self->title, time); */ + } +} + +static void client_get_client_machine(ObClient *self) +{ + gchar *data = NULL; + gchar localhost[128]; + + g_free(self->client_machine); + + if (PROP_GETS(self->window, wm_client_machine, locale, &data)) { + gethostname(localhost, 127); + localhost[127] = '\0'; + if (strcmp(localhost, data)) + self->client_machine = data; } }
M
openbox/client.h
→
openbox/client.h
@@ -116,6 +116,8 @@ /*! Normal window title */
gchar *title; /*! Window title when iconified */ gchar *icon_title; + /*! Hostname of machine running client */ + gchar *client_machine; /*! The application that created the window */ gchar *name;
M
openbox/prop.c
→
openbox/prop.c
@@ -48,6 +48,7 @@ CREATE(wm_name, "WM_NAME");
CREATE(wm_icon_name, "WM_ICON_NAME"); CREATE(wm_class, "WM_CLASS"); CREATE(wm_window_role, "WM_WINDOW_ROLE"); + CREATE(wm_client_machine, "WM_CLIENT_MACHINE"); CREATE(motif_wm_hints, "_MOTIF_WM_HINTS"); CREATE(sm_client_id, "SM_CLIENT_ID");
M
openbox/prop.h
→
openbox/prop.h
@@ -50,6 +50,7 @@ Atom wm_name;
Atom wm_icon_name; Atom wm_class; Atom wm_window_role; + Atom wm_client_machine; Atom motif_wm_hints; /* SM atoms */