* [PATCH cluster/manager 0/2] Configurable window titles for nodes @ 2026-07-16 8:48 Thomas Ellmenreich 2026-07-16 8:48 ` [PATCH manager 1/2] fix #5475: configurable window title Thomas Ellmenreich 2026-07-16 8:48 ` [PATCH cluster 2/2] " Thomas Ellmenreich 0 siblings, 2 replies; 5+ messages in thread From: Thomas Ellmenreich @ 2026-07-16 8:48 UTC (permalink / raw) To: pve-devel; +Cc: Thomas Ellmenreich Thank you @Dominik Csapak for your comments. Configurable window titles for nodes ==================================== Currently the window title is fixed to the following string: $nodename - Proxmox Virtual Environment This has become problematic for users with multiple clusters, each containing the same node name. To help distinguish between tabs, it has been requested [1] that the window title be made configurable with the fqdn as an option. [1] https://bugzilla.proxmox.com/show_bug.cgi?id=5475 Implementation -------------- After considering the different options, I have deemed a server side implementation, through the datacenter.cfg, to be the better option. Specifically because of its durability across sessions and because it automatically configures the title for all users and all nodes across the cluster. The config file stores an enum string that will then be converted to a window title and inserted in the index.html.tpl file on every request. The current enum options are: - default - Displays the default '$nodename - Proxmox Virtual Environment' string if the config enum is not present - 'node-and-cluster' - Displays the nodename and then the clustername in the following style: '$nodename - $clustername - Proxmox Virtual Environment' - 'fqdn' - Displays the current fqdn as returned by `PVE::Tools::get_fqdn()` like so: '$fqdn - Proxmox Virtual Environment' Possible future extensions -------------------------- - If proper cross-node user settings are implemented in the future, they could be used to allow users to define their own window title settings and have these settings be persisted across sessions - One of the selection options for window titles could be a user defined template string which would allow users of PVE to define their own window titles. Changes since RFC ----------------- - change of the `datacenter.cfg` setting title from "windowtitle" to "window-title" - renamed `nodeandcluster` to `node-and-cluster` - added the " - Proxmox Virtual Environment" trailer to all titles - removed the questions from this text and added the "Possible future extensions" section pve-manager: Thomas Ellmenreich (1): fix #5475: configurable window title PVE/Service/pveproxy.pm | 21 +++++++++++++++++++++ www/index.html.tpl | 2 +- www/manager6/Utils.js | 11 +++++++++++ www/manager6/dc/OptionView.js | 6 ++++++ 4 files changed, 39 insertions(+), 1 deletion(-) pve-cluster: Thomas Ellmenreich (1): fix #5475: configurable window title src/PVE/DataCenterConfig.pm | 7 +++++++ 1 file changed, 7 insertions(+) Summary over all repositories: 5 files changed, 46 insertions(+), 1 deletions(-) -- Generated by murpp 0.12.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH manager 1/2] fix #5475: configurable window title 2026-07-16 8:48 [PATCH cluster/manager 0/2] Configurable window titles for nodes Thomas Ellmenreich @ 2026-07-16 8:48 ` Thomas Ellmenreich 2026-07-16 8:48 ` [PATCH cluster 2/2] " Thomas Ellmenreich 1 sibling, 0 replies; 5+ messages in thread From: Thomas Ellmenreich @ 2026-07-16 8:48 UTC (permalink / raw) To: pve-devel; +Cc: Thomas Ellmenreich Allows for setting of the new 'window-title' datacenter.cfg option through the ui. Adjusted the index.html templating to construct the correct window title on every request according to the cluster configuration. Signed-off-by: Thomas Ellmenreich <t.ellmenreich@proxmox.com> --- PVE/Service/pveproxy.pm | 21 +++++++++++++++++++++ www/index.html.tpl | 2 +- www/manager6/Utils.js | 11 +++++++++++ www/manager6/dc/OptionView.js | 6 ++++++ 4 files changed, 39 insertions(+), 1 deletion(-) diff --git a/PVE/Service/pveproxy.pm b/PVE/Service/pveproxy.pm index c6011a00..41b6e45e 100755 --- a/PVE/Service/pveproxy.pm +++ b/PVE/Service/pveproxy.pm @@ -202,6 +202,24 @@ my sub get_path_mtime { return $mtime; } +# builds the window title from the datacenter.cfg configuration +my $get_window_title = sub { + my ($title_enum, $nodename) = @_; + + my $title = "$nodename"; + + if ($title_enum eq "node-and-cluster") { + my $clinfo = PVE::Cluster::get_clinfo(); + my $clustername = $clinfo->{cluster}->{name}; + + $title = "$nodename - $clustername"; + } elsif ($title_enum eq "fqdn") { + $title = PVE::Tools::get_fqdn(); + } + + return $title . " - Proxmox Virtual Environment"; +}; + # NOTE: Requests to those pages are not authenticated so we must be very careful here sub get_index { my ($nodename, $server, $r, $args) = @_; @@ -232,10 +250,12 @@ sub get_index { } } + my $window_title; my $consent_text; eval { my $dc_conf = PVE::Cluster::cfs_read_file('datacenter.cfg'); $consent_text = $dc_conf->{'consent-text'}; + $window_title = $get_window_title->($dc_conf->{'window-title'}, $nodename); if (!$lang) { $lang = $dc_conf->{language} // 'en'; @@ -276,6 +296,7 @@ sub get_index { token => $token, console => $args->{console}, nodename => $nodename, + window_title => $window_title, debug => $debug, version => "$version", wtversion => $wtversion, diff --git a/www/index.html.tpl b/www/index.html.tpl index 74ee02d9..5138b7cc 100644 --- a/www/index.html.tpl +++ b/www/index.html.tpl @@ -4,7 +4,7 @@ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> - <title>[% nodename %] - Proxmox Virtual Environment</title> + <title>[% window_title %]</title> <link rel="icon" sizes="128x128" href="/pve2/images/logo-128.png" /> <link rel="apple-touch-icon" sizes="128x128" href="/pve2/images/logo-128.png" /> <link rel="stylesheet" type="text/css" href="/pve2/ext6/theme-crisp/resources/theme-crisp-all.css?ver=7.0.0" /> diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js index 040b5ae0..f435eedf 100644 --- a/www/manager6/Utils.js +++ b/www/manager6/Utils.js @@ -679,6 +679,17 @@ Ext.define('PVE.Utils', { return PVE.Utils.console_map[value] || value; }, + windowTitleMap: { + __default__: '$nodename - Proxmox Virtual Environment', + 'node-and-cluster': '$nodename - $clustername - Proxmox Virtual Environment', + fqdn: '$fqdn - Proxmox Virtual Environment', + }, + + renderWindowTitleViewer: function (value) { + value = value || '__default__'; + return PVE.Utils.windowTitleMap[value] || value; + }, + render_kvm_vga_driver: function (value) { if (!value) { return Proxmox.Utils.defaultText; diff --git a/www/manager6/dc/OptionView.js b/www/manager6/dc/OptionView.js index dc12aa7e..c7e73dc4 100644 --- a/www/manager6/dc/OptionView.js +++ b/www/manager6/dc/OptionView.js @@ -91,6 +91,12 @@ Ext.define('PVE.dc.OptionView', { defaultValue: '__default__', deleteEmpty: true, }); + me.add_combobox_row('window-title', gettext('Window Title'), { + renderer: PVE.Utils.renderWindowTitleViewer, + comboItems: Object.entries(PVE.Utils.windowTitleMap), + defaultValue: '__default__', + deleteEmpty: true, + }); me.add_text_row('email_from', gettext('Email from address'), { deleteEmpty: true, vtype: 'proxmoxMail', -- 2.47.3 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH cluster 2/2] fix #5475: configurable window title 2026-07-16 8:48 [PATCH cluster/manager 0/2] Configurable window titles for nodes Thomas Ellmenreich 2026-07-16 8:48 ` [PATCH manager 1/2] fix #5475: configurable window title Thomas Ellmenreich @ 2026-07-16 8:48 ` Thomas Ellmenreich 2026-07-16 12:50 ` Thomas Lamprecht 1 sibling, 1 reply; 5+ messages in thread From: Thomas Ellmenreich @ 2026-07-16 8:48 UTC (permalink / raw) To: pve-devel; +Cc: Thomas Ellmenreich Added new configuration option that will determine the content of the window title for a pve-manager tab. Signed-off-by: Thomas Ellmenreich <t.ellmenreich@proxmox.com> --- src/PVE/DataCenterConfig.pm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/PVE/DataCenterConfig.pm b/src/PVE/DataCenterConfig.pm index 004122e..6f3f482 100644 --- a/src/PVE/DataCenterConfig.pm +++ b/src/PVE/DataCenterConfig.pm @@ -436,6 +436,13 @@ my $datacenter_schema = { # FIXME: remove 'applet' with 9.0 (add pve8to9 check!) enum => ['applet', 'vv', 'html5', 'xtermjs'], }, + 'window-title' => { + optional => 1, + type => 'string', + description => + "Define the text shown in the window title for all nodes of this cluster", + enum => ['node-and-cluster', 'fqdn'], + }, email_from => { optional => 1, type => 'string', -- 2.47.3 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH cluster 2/2] fix #5475: configurable window title 2026-07-16 8:48 ` [PATCH cluster 2/2] " Thomas Ellmenreich @ 2026-07-16 12:50 ` Thomas Lamprecht 2026-07-16 13:51 ` Thomas Ellmenreich 0 siblings, 1 reply; 5+ messages in thread From: Thomas Lamprecht @ 2026-07-16 12:50 UTC (permalink / raw) To: Thomas Ellmenreich, pve-devel Am 16.07.26 um 10:49 schrieb Thomas Ellmenreich: > Added new configuration option that will determine the content > of the window title for a pve-manager tab. > > Signed-off-by: Thomas Ellmenreich <t.ellmenreich@proxmox.com> > --- > src/PVE/DataCenterConfig.pm | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/src/PVE/DataCenterConfig.pm b/src/PVE/DataCenterConfig.pm > index 004122e..6f3f482 100644 > --- a/src/PVE/DataCenterConfig.pm > +++ b/src/PVE/DataCenterConfig.pm > @@ -436,6 +436,13 @@ my $datacenter_schema = { > # FIXME: remove 'applet' with 9.0 (add pve8to9 check!) > enum => ['applet', 'vv', 'html5', 'xtermjs'], > }, > + 'window-title' => { > + optional => 1, > + type => 'string', > + description => > + "Define the text shown in the window title for all nodes of this cluster", > + enum => ['node-and-cluster', 'fqdn'], > + }, The window term is a bit opaque here in the backend, but can be fine.. Would favor using a format here from the start to make this easier to expand, e.g. I could imagine adding support for passing a color that gets rendered in the favicon e.g. as circle or corner for some differentiating from that side, or a prefix/suffix added to the title. Needs more thought, and we can expand such things later true our default-key schema support, but might be nicer to start out already with a format now already. we could do a more general "ui" or "ui-settings" one to see this from a global UI settings POV? and then there simply "title" or as property. > email_from => { > optional => 1, > type => 'string', ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH cluster 2/2] fix #5475: configurable window title 2026-07-16 12:50 ` Thomas Lamprecht @ 2026-07-16 13:51 ` Thomas Ellmenreich 0 siblings, 0 replies; 5+ messages in thread From: Thomas Ellmenreich @ 2026-07-16 13:51 UTC (permalink / raw) To: Thomas Lamprecht, pve-devel That definitely sounds like the better solution. I'll use 'ui-settings' and then 'title' as the nested settings. On Thu Jul 16, 2026 at 2:50 PM CEST, Thomas Lamprecht wrote: [snip] > The window term is a bit opaque here in the backend, but can be fine.. > > Would favor using a format here from the start to make this easier to expand, e.g. > I could imagine adding support for passing a color that gets rendered in the favicon > e.g. as circle or corner for some differentiating from that side, or a prefix/suffix > added to the title. Needs more thought, and we can expand such things later true our > default-key schema support, but might be nicer to start out already with a format > now already. > > we could do a more general "ui" or "ui-settings" one to see this from a global UI > settings POV? and then there simply "title" or as property. [snip] ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-07-16 13:52 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-07-16 8:48 [PATCH cluster/manager 0/2] Configurable window titles for nodes Thomas Ellmenreich 2026-07-16 8:48 ` [PATCH manager 1/2] fix #5475: configurable window title Thomas Ellmenreich 2026-07-16 8:48 ` [PATCH cluster 2/2] " Thomas Ellmenreich 2026-07-16 12:50 ` Thomas Lamprecht 2026-07-16 13:51 ` Thomas Ellmenreich
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.