Last active
March 22, 2019 14:07
-
-
Save shoover/40a35c07a32de16af9b2f79ca933f4ac to your computer and use it in GitHub Desktop.
Ruby script to paint over Putty session registry settings from data
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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