Skip to content

Instantly share code, notes, and snippets.

@shoover
Last active March 22, 2019 14:07
Show Gist options
  • Select an option

  • Save shoover/40a35c07a32de16af9b2f79ca933f4ac to your computer and use it in GitHub Desktop.

Select an option

Save shoover/40a35c07a32de16af9b2f79ca933f4ac to your computer and use it in GitHub Desktop.
Ruby script to paint over Putty session registry settings from data
require 'win32/registry'
# Enumerate Putty sessions. blk: (reg, session name).
def each_session(&blk)
Win32::Registry::HKEY_CURRENT_USER.open('Software\SimonTatham\PuTTY\Sessions') do |reg|
reg.each_key do |key|
reg.open(key, Win32::Registry::Constants::KEY_WRITE) do |session|
yield session, key
end
end
end
end
def with_session(session, &blk)
Win32::Registry::HKEY_CURRENT_USER.open(
'Software\SimonTatham\PuTTY\Sessions\%s' % session,
Win32::Registry::Constants::KEY_WRITE) do |reg|
yield reg
end
end
solarized_light = {
"Colour0" => "101,123,131",
"Colour1" => "88,110,117",
"Colour2" => "253,246,227",
"Colour3" => "238,232,213",
"Colour4" => "238,232,213",
"Colour5" => "101,123,131",
"Colour6" => "7,54,66",
"Colour7" => "0,43,54",
"Colour8" => "220,50,47",
"Colour9" => "203,75,22",
"Colour10" => "133,153,0",
"Colour11" => "88,110,117",
"Colour12" => "181,137,0",
"Colour13" => "101,123,131",
"Colour14" => "38,139,210",
"Colour15" => "131,148,150",
"Colour16" => "211,54,130",
"Colour17" => "108,113,196",
"Colour18" => "42,161,152",
"Colour19" => "147,161,161",
"Colour20" => "238,232,213",
"Colour21" => "253,246,227"
}
solarized_dark = {
"Colour0" => "131,148,150",
"Colour1" => "147,161,161",
"Colour2" => "0,43,54",
"Colour3" => "7,54,66",
"Colour4" => "0,43,54",
"Colour5" => "238,232,213",
"Colour6" => "7,54,66",
"Colour7" => "0,43,56",
"Colour8" => "220,50,47",
"Colour9" => "203,75,22",
"Colour10" => "133,153,0",
"Colour11" => "88,110,117",
"Colour12" => "181,137,0",
"Colour13" => "101,123,131",
"Colour14" => "38,139,210",
"Colour15" => "131,148,150",
"Colour16" => "211,54,130",
"Colour17" => "108,113,196",
"Colour18" => "42,161,152",
"Colour19" => "147,161,161",
"Colour20" => "238,232,213",
"Colour21" => "253,246,227"
}
zenburn_light = {
"Colour0" => "220,220,204",
"Colour1" => "220,220,204",
"Colour2" => "58,58,58",
"Colour3" => "58,58,58",
"Colour4" => "0,13,24",
"Colour5" => "143,175,159",
"Colour6" => "0,0,0",
"Colour7" => "85,85,85",
"Colour8" => "215,135,135",
"Colour9" => "215,135,135",
"Colour10" => "160,192,160",
"Colour11" => "160,192,160",
"Colour12" => "255,255,135",
"Colour13" => "255,255,135",
"Colour14" => "101,121,142",
"Colour15" => "101,121,142",
"Colour16" => "241,140,150",
"Colour17" => "241,140,150",
"Colour18" => "140,208,211",
"Colour19" => "140,208,211",
"Colour20" => "255,255,255",
"Colour21" => "255,255,255"
}
zenburn = {
"Colour0" => "255,255,255",
"Colour1" => "255,255,255",
"Colour2" => "51,51,51",
"Colour3" => "85,85,85",
"Colour4" => "0,0,0",
"Colour5" => "0,255,0",
"Colour6" => "77,77,77",
"Colour7" => "85,85,85",
"Colour8" => "187,0,0",
"Colour9" => "255,85,85",
"Colour10" => "152,251,152",
"Colour11" => "85,255,85",
"Colour12" => "240,230,140",
"Colour13" => "255,255,85",
"Colour14" => "150,133,63",
"Colour15" => "135,206,235",
"Colour16" => "255,222,173",
"Colour17" => "255,85,255",
"Colour18" => "255,160,160",
"Colour19" => "255,215,0",
"Colour20" => "245,222,179",
"Colour21" => "255,255,255",
}
# https://pesin.space/blog/2016/01/my-zenburn-based-terminal-colour-palletes/
zenburn_iv = {
"Colour0" => "220,220,204",
"Colour1" => "240,240,230",
"Colour2" => "63,63,63",
"Colour3" => "77,77,77",
"Colour4" => "0,13,24",
"Colour5" => "143,175,159",
"Colour6" => "30,35,32",
"Colour7" => "112,144,128",
"Colour8" => "204,147,147",
"Colour9" => "220,163,163",
"Colour10" => "96,180,138",
"Colour11" => "156,195,162",
"Colour12" => "223,175,143",
"Colour13" => "240,223,175",
"Colour14" => "80,99,131",
"Colour15" => "148,191,243",
"Colour16" => "220,140,195",
"Colour17" => "241,131,226",
"Colour18" => "118,199,204",
"Colour19" => "147,224,227",
"Colour20" => "220,220,204",
"Colour21" => "255,255,255",
}
def apply_colors(reg, colors)
colors.each do |name, value|
reg[name] = value
end
end
if 0
internal = ["example.local"]
hardware = ["com1"]
web = ["example.com", "foo.example.com"]
each_session do |reg, session|
if internal.include?(session)
apply_colors(reg, solarized_dark)
elsif hardware.include?(session)
apply_colors(reg, solarized_light)
#apply_colors(reg, zenburn)
elsif web.include?(session)
apply_colors(reg, zenburn_light)
else
puts "Skipping session #{session}"
next
end
puts "Updating session #{session}"
end
standard = {
# Window | Behaviour
'AltSpace' => 1,
'WarnOnClose' => 0,
# Window | Colours
'UseSystemColours' => 0,
'Xterm256Colour' => 1,
'LineCodePage' => 'UTF-8',
'TermWidth' => 120,
'TermHeight' => 60,
# Connection | Data
'TerminalType' => 'putty-256color',
}
each_session do |reg, session|
standard.each do |k, v|
reg[k] = v
end
end
with_session('mastodon') do |reg|
apply_colors(reg, zenburn_iv)
end
each_session do |reg, session|
Win32::Registry::HKEY_CURRENT_USER.open('Software\SimonTatham\PuTTY\Sessions') do |reg|
reg.each_key do |key|
reg.open(key, Win32::Registry::Constants::KEY_WRITE) do |session|
session['TerminalType'] = 'putty-256color'
puts "Updated session #{key}"
end
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment