all repos — openbox @ 141c249b8cd3b94a722acc8c0225b3cbf83e5042

openbox fork - make it a bit more like ryudo

show the hostname of forwarded clients in the titlebar
Mikael Magnusson mikachu@comhem.se
commit

141c249b8cd3b94a722acc8c0225b3cbf83e5042

parent

fdec9c5a715761e3f8d68e2c2cbdcb5d48bae644

4 files changed, 31 insertions(+), 2 deletions(-)

jump to
M openbox/client.copenbox/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.hopenbox/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.copenbox/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.hopenbox/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 */