如何将PuTTY的窗口标题设置为已加载会话的名称?


28

通常,当您在PuTTY中加载一个已保存的会话并连接到该会话时,PuTTY会将窗口标题设置为所连接系统的主机名(加上字符串“ PuTTY”)。

现在,我有许多不同的会话,它们都连接到同一主机,但是连接在不同的端口上(因为主机在不同的端口上运行多个SSH隧道)。因此,查看主机名并不是很有帮助,因为它总是相同的。

因此,我希望PuTTY在窗口标题中显示已加载会话的名称。有没有办法做到这一点?

我能找到的唯一方法是手动设置窗口标题(Window / Behavior / Window title)。但是我相信我必须在每个会话中手动执行此操作,这非常繁琐。


1
Kitty是最好的telnet / SSH客户端(Putty的分支),您可以通过“ -title”选项从命令行设置窗口标题。
Mareg

Answers:


16

要更改PuTTY SSH会话窗口标题(由PuTTY GUI手动一个接一个地更改):

对于Windows和Debian

  1. Load PuTTY的一个会话。
  2. 在左侧树菜单上,单击:WindowBehaviour
  3. 在右侧面板上的Window title文本框中,输入标题。
  4. Save 会议。

要更改PuTTY SSH会话窗口标题(对于所有会话,请通过命令行):

对于Debian 8(Jessie)

  1. 转到PuTTY存储会话的文件夹: /home/nolwennig/.putty/sessions

    注意:替换 nolwennig 为您的用户名

  2. WinTitle每个已保存会话文件的已保存会话文件名分配给参数,如下所示:

    find . -type f -exec sed -e 's/^WinTitle=/WinTitle=%f/g' {} \;

    如果没有记录WinTitle,它会正常工作

对于Windows

  1. PuTTY将会话存储在Windows注册表中 HKEY_CURRENT_USER\Software\Simontatham\PuTTY\Sessions

    注意:请勿替换 SimonTatham 为您的用户名。

  2. 您可以使用以下命令导出此部分:

    C:> regedit /e "%userprofile%\desktop\putty-registry-sessions.reg" HKEY_CURRENT_USER\Software\Simontatham\PuTTY\Sessions
    
  3. 必须有一个脚本可以更新putty-registry-sessions.reg文件,以更改每个已保存会话的WinTitle值。


资料和灵感:


我知道我可以做到-我的问题中提到了它,以及为什么我要寻找其他解决方案。
sleske 2015年

我用一个小脚本更新了我的答案
Nolwennig

1
与脚本整洁的想法。但是,默认情况下,AFAIK,Putty将会话存储在Windows注册表中。如果您使用文件,则可能使用的是修改后的版本(尽管通过导出/导入配置仍然可以使用)。你能在答案中提到吗?
sleske '16

我在Debian8上,我在答案中添加了Windows的Putty会话存储位置,但现在无法为此编写/测试脚本:(
Nolwennig

1
哦,对了,也忘记了PuTTY也具有Linux版本。无论如何,好的答案,谢谢。
sleske '16

44

下面的解决方案似乎可以解决此问题。

1)转到上述“窗口/行为/窗口标题”设置,并输入一个对您有意义的标题。

2)转到终端/功能设置,然后选中禁用远程控制窗口标题更改框。

设置1

设置2


4
虽然这可能会回答问题,但最好还是在这里总结一下答案,因为随着时间的推移链接确实会失效。
Ladadadada 2014年

2
这是该站点上描述的过程:在腻子会话设置窗口中,启用位于“终端”->“功能”下的标有“禁用远程控制窗口标题更改”的复选框。接下来,通过“窗口”->“行为”对话框为您的会话窗口命名。:输入标题到标有文本“窗口标题”
BdN3504

1
这应该是答案。+1
库拉桑加尔16'Aug

3
这应该是公认的答案。没有第二点,我按下Enter键后标题就会自动重置。(主机:Windows,远程服务器:Ubuntu Server 16.04 LTS)
Zeeshan

16

此函数会将您的PuTTY窗口的标题设置为给定的字符串:

# Set title
title() {
  echo -ne "\033]0;"$1"\007"
}

您可以使用它来从命令行或脚本(例如在.bashrc中)设置标题。


1
为什么这样做?
乍得

只是一点笔记;您仍然必须设置"Disable remote-controlled window title changing"Terminal->Features
244an

您可能要改用printfcommand。
MUY比利时

为什么这样做?:ESC ] 0 ; txt ST将图标名称和窗口标题设置为txt。
Koshinae

3

我一直在寻找如何在将PuTTY与会话文件一起使用时使窗口标题保持不变。

因此,在中.putty/sessions/ServerX,将默认标题和无远程行为设置为:

NoRemoteWinTitle=1
WinTitle=Welcome to ServerX

并为特定目的赋予特殊标题,只需覆盖默认值即可:

putty -load .putty/sessions/ServerX -title "ServerX:/var/log/messages"


0

您可以-loghost "title"在Windows中使用该选项-它会打开具有指定标题名称的PuTTY 。它还会更改其他内容,因此请检查是否对您没有任何其他问题。

我将它与VIRL一起使用,并且效果很好。


0

在Windows中,这会将每个会话的窗口标题设置为与会话完全相同的名称:

FOR /F "tokens=6 delims=\" %i IN ('reg query HKCU\Software\Simontatham\PuTTY\Sessions') DO reg add HKCU\Software\Simontatham\PuTTY\Sessions\%i /t REG_SZ /v WinTitle /d %i /f & reg add HKCU\Software\Simontatham\PuTTY\Sessions\%i /t REG_DWORD /v NoRemoteWinTitle /d 1 /f

-1

在Windows中,此cmd行会将每个会话的窗口标题设置为与会话本身相同的名称:

FOR /F "tokens=6 delims=\" %i IN ('reg query HKCU\Software\Simontatham\PuTTY\Sessions') DO reg add HKCU\Software\Simontatham\PuTTY\Sessions\%i /t REG_SZ /v WinTitle /d %i /f & reg add HKCU\Software\Simontatham\PuTTY\Sessions\%i /t REG_DWORD /v NoRemoteWinTitle /d 1 /f
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.