PuTTY-Einstellungen vereinheitlichen
Innerhalb von PuTTY ist leider keine Möglichkeit vorgesehen, die Einstellungen verschiedener Sessions zu verheinheitlichen. Sich im Laufe der Benutzung ergebende Änderungen an den “Default Settings” müssen ggf. manuell in andere gespeicherte Sessions kopiert werden.
Bei mehr als einer Hand voll Sessions ist die Übertragung nervig und lästig, aber ein kleines Perl-Skript kann die Aufgabe automatisiert erledigen:
putty-settings.pl
# +----------------------------------------------------------------------------+
# | putty-settings.pl |
# | copy settings from 'Default Settings' to all other sessions |
# +----------------------------------------------------------------------------+
# | Copyright (c) 2021 by Andreas Thul |
# | putty-settings.pl is published under the Perl Artistic License 2.0 |
# +----------------------------------------------------------------------------+
# | 2021-09-29 initial release |
# +----------------------------------------------------------------------------+
# - import ---------------------------------------------------------------------
use strict;
use warnings;
use Win32::TieRegistry(Delimiter=>"/", ArrayValues=>0);
# -- global --------------------------------------------------------------------
my $sourceSessionName = 'Default%20Settings';
my @valuesToCopy = qw(
ANSIColour AltF4 AltOnly AltSpace AlwaysOnTop ApplicationCursorKeys ApplicationKeypad AutoWrapMode
BCE BackspaceIsDelete Beep BeepInd BellOverload BellOverloadN BellOverloadS BellOverloadT BellWaveFile BlinkCur BlinkText BoldAsColour BoldFont BoldFontCharSet BoldFontHeight BoldFontIsBold
CJKAmbigWide CRImpliesLF CapsLockCyr ChangeUsername CloseOnExit Colour0 Colour1 Colour10 Colour11 Colour12 Colour13 Colour14 Colour15 Colour16 Colour17 Colour18 Colour19 Colour2 Colour20 Colour21 Colour3 Colour4 Colour5 Colour6 Colour7 Colour8 Colour9 ComposeKey CtrlAltKeys CtrlShiftCV CtrlShiftIns CurType
DECOriginMode DisableArabicShaping DisableBidi
Environment EraseToScrollback
Font FontCharSet FontHeight FontIsBold FontQuality FontVTMode FullScreenOnAltEnter
HideMousePtr
LFImpliesCR LineCodePage LinuxFunctionKeys LocalEcho LocalEdit LockSize
MouseAutocopy MouseIsXterm MouseOverride MousePaste
NetHackKeypad NoAltScreen NoApplicationCursors NoApplicationKeys NoDBackspace NoMouseReporting NoPTY NoRemoteCharset NoRemoteClearScroll NoRemoteResize NoRemoteWinTitle
PasteControls PasteRTF Present Printer
RXVTHomeEnd RawCNP RectSelect RekeyBytes RekeyTime
ScrollBar ScrollBarFullScreen ScrollOnDisp ScrollOnKey ScrollbackLines ScrollbarOnLeft ShadowBold ShadowBoldOffset StampUtmp SunkenEdge
TelnetKey TelnetRet TermHeight TermWidth TerminalModes TerminalSpeed TerminalType TrueColour TryAgent TryPalette
UTF8Override UTF8linedraw UseSystemColours
WarnOnClose WideBoldFont WideBoldFontCharSet WideBoldFontHeight WideBoldFontIsBold WideFont WideFontCharSet WideFontHeight WideFontIsBold WinNameAlways WinTitle WindowBorder WindowClass Wordness0 Wordness128 Wordness160 Wordness192 Wordness224 Wordness32 Wordness64 Wordness96
Xterm256Colour
);
# -- main ----------------------------------------------------------------------
$|=1;
# HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions
my $puttyRegistry = $Registry->{"HKEY_CURRENT_USER/Software/SimonTatham/PuTTY/Sessions/"};
my $sourceSession = $puttyRegistry->{"$sourceSessionName/"};
foreach my $currentSessionName ($puttyRegistry->SubKeyNames) {
next if $currentSessionName eq $sourceSessionName;
print "$currentSessionName\n";
my $targetSession = $puttyRegistry->{"$currentSessionName/"};
foreach my $ValueName (@valuesToCopy) {
print ".. $ValueName\n";
my($ValueData, $ValueType)= $sourceSession->GetValue($ValueName);
$targetSession->SetValue($ValueName, $ValueData, $ValueType);
}
}
# -- eof -----------------------------------------------------------------------
Im oberen Bereich des Skrips kann bei Bedarf noch der Name der Quell-Session (hier “Default%20Settings”) sowie die zu übertragenden Parameter angepasst werden, anschließend überträgt das Skript bei jedem Durchlauf die Werte aller aufgelisteten Parameter aus der Quell-Session in alle anderen Sessions.