show the hostname of forwarded clients in the titlebar

This commit is contained in:
Mikael Magnusson 2007-04-23 18:46:19 +00:00
parent fdec9c5a71
commit 141c249b8c
4 changed files with 31 additions and 2 deletions

View file

@ -70,6 +70,7 @@ static void client_get_layer(ObClient *self);
static void client_get_shaped(ObClient *self); static void client_get_shaped(ObClient *self);
static void client_get_mwm_hints(ObClient *self); static void client_get_mwm_hints(ObClient *self);
static void client_get_gravity(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_allowed_actions(ObClient *self);
static void client_change_state(ObClient *self); static void client_change_state(ObClient *self);
static void client_change_wm_state(ObClient *self); static void client_change_wm_state(ObClient *self);
@ -624,6 +625,7 @@ void client_unmanage(ObClient *self)
g_free(self->name); g_free(self->name);
g_free(self->class); g_free(self->class);
g_free(self->role); g_free(self->role);
g_free(self->client_machine);
g_free(self->sm_client_id); g_free(self->sm_client_id);
g_free(self); g_free(self);
@ -933,6 +935,7 @@ static void client_get_all(ObClient *self)
(min/max sizes), so we're ready to set up the decorations/functions */ (min/max sizes), so we're ready to set up the decorations/functions */
client_setup_decor_and_functions(self); client_setup_decor_and_functions(self);
client_get_client_machine(self);
client_update_title(self); client_update_title(self);
client_update_class(self); client_update_class(self);
client_update_sm_client_id(self); client_update_sm_client_id(self);
@ -1641,6 +1644,7 @@ void client_update_wmhints(ObClient *self)
void client_update_title(ObClient *self) void client_update_title(ObClient *self)
{ {
gchar *data = NULL; gchar *data = NULL;
gchar *visible = NULL;
g_free(self->title); g_free(self->title);
@ -1660,8 +1664,14 @@ void client_update_title(ObClient *self)
} }
} }
PROP_SETS(self->window, net_wm_visible_name, data); if (self->client_machine) {
self->title = data; 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) if (self->frame)
frame_adjust_title(self->frame); frame_adjust_title(self->frame);
@ -1860,6 +1870,21 @@ void client_update_user_time(ObClient *self)
} }
} }
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;
}
}
static void client_change_wm_state(ObClient *self) static void client_change_wm_state(ObClient *self)
{ {
gulong state[2]; gulong state[2];

View file

@ -116,6 +116,8 @@ struct _ObClient
gchar *title; gchar *title;
/*! Window title when iconified */ /*! Window title when iconified */
gchar *icon_title; gchar *icon_title;
/*! Hostname of machine running client */
gchar *client_machine;
/*! The application that created the window */ /*! The application that created the window */
gchar *name; gchar *name;

View file

@ -48,6 +48,7 @@ void prop_startup()
CREATE(wm_icon_name, "WM_ICON_NAME"); CREATE(wm_icon_name, "WM_ICON_NAME");
CREATE(wm_class, "WM_CLASS"); CREATE(wm_class, "WM_CLASS");
CREATE(wm_window_role, "WM_WINDOW_ROLE"); CREATE(wm_window_role, "WM_WINDOW_ROLE");
CREATE(wm_client_machine, "WM_CLIENT_MACHINE");
CREATE(motif_wm_hints, "_MOTIF_WM_HINTS"); CREATE(motif_wm_hints, "_MOTIF_WM_HINTS");
CREATE(sm_client_id, "SM_CLIENT_ID"); CREATE(sm_client_id, "SM_CLIENT_ID");

View file

@ -50,6 +50,7 @@ typedef struct Atoms {
Atom wm_icon_name; Atom wm_icon_name;
Atom wm_class; Atom wm_class;
Atom wm_window_role; Atom wm_window_role;
Atom wm_client_machine;
Atom motif_wm_hints; Atom motif_wm_hints;
/* SM atoms */ /* SM atoms */