From 3e4a1fd769ceed639b6c27b7095e1172996adb86 Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 15 Jan 2011 11:39:44 +0000 Subject: [PATCH] Allow setting the WM_CLASS X window property as a configuration option in saved sessions, so that a programmable window manager can distinguish different PuTTYs/pterms on startup and assign them different window management properties. git-svn-id: svn://svn.tartarus.org/sgt/putty@9078 cda61777-01e9-0310-a592-d414129be87e --- putty.h | 1 + settings.c | 2 ++ unix/gtkcfg.c | 14 ++++++++++++++ unix/gtkwin.c | 3 +++ 4 files changed, 20 insertions(+) diff --git a/putty.h b/putty.h index 0d14c502..9fddcae6 100644 --- a/putty.h +++ b/putty.h @@ -626,6 +626,7 @@ struct config_tag { FontSpec wideboldfont; int shadowboldoffset; int crhaslf; + char winclass[256]; }; /* diff --git a/settings.c b/settings.c index 5ba034d0..82b915a9 100644 --- a/settings.c +++ b/settings.c @@ -499,6 +499,7 @@ void save_open_settings(void *sesskey, Config *cfg) write_setting_i(sesskey, "SerialStopHalfbits", cfg->serstopbits); write_setting_i(sesskey, "SerialParity", cfg->serparity); write_setting_i(sesskey, "SerialFlowControl", cfg->serflow); + write_setting_s(sesskey, "WindowClass", cfg->winclass); } void load_settings(char *section, Config * cfg) @@ -858,6 +859,7 @@ void load_open_settings(void *sesskey, Config *cfg) gppi(sesskey, "SerialStopHalfbits", 2, &cfg->serstopbits); gppi(sesskey, "SerialParity", SER_PAR_NONE, &cfg->serparity); gppi(sesskey, "SerialFlowControl", SER_FLOW_XONXOFF, &cfg->serflow); + gpps(sesskey, "WindowClass", "", cfg->winclass, sizeof(cfg->winclass)); } void do_defaults(char *session, Config * cfg) diff --git a/unix/gtkcfg.c b/unix/gtkcfg.c index 00e88b40..8cbdd514 100644 --- a/unix/gtkcfg.c +++ b/unix/gtkcfg.c @@ -127,4 +127,18 @@ void gtk_setup_config_box(struct controlbox *b, int midsession, void *win) HELPCTX(translation_utf8_override), dlg_stdcheckbox_handler, I(offsetof(Config,utf8_override))); + + if (!midsession) { + /* + * Allow the user to specify the window class as part of the saved + * configuration, so that they can have their window manager treat + * different kinds of PuTTY and pterm differently if they want to. + */ + s = ctrl_getset(b, "Window/Behaviour", "x11", + "X Window System settings"); + ctrl_editbox(s, "Window class name:", 'z', 50, + HELPCTX(no_help), dlg_stdeditbox_handler, + I(offsetof(Config,winclass)), + I(sizeof(((Config *)0)->winclass))); + } } diff --git a/unix/gtkwin.c b/unix/gtkwin.c index d08dffd4..e4af6280 100644 --- a/unix/gtkwin.c +++ b/unix/gtkwin.c @@ -3430,6 +3430,9 @@ int pt_main(int argc, char **argv) init_cutbuffers(); inst->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + if (inst->cfg.winclass[0]) + gtk_window_set_wmclass(GTK_WINDOW(inst->window), + inst->cfg.winclass, inst->cfg.winclass); /* * Set up the colour map. -- 2.11.0