Иконки PuTTY: как 25 лет назад родился стиль, ставший визитной карточкой SSH-клиента

Создатель PuTTY Саймон Тэтхэм поделился историей о том, как более 25 лет назад он задумал и реализовал логотип и иконки для популярного SSH-клиента.

Дизайн главной иконки PuTTY насчитывает конец 90-х и начало 2000-х годов. Она не претерпела значительных изменений в стиле, хотя на протяжении этих лет изображение приходилось переделывать в соответствии с различными техническими требованиями и ограничениями, что вызывало дополнительные сложности.

Когда Тэтхэм только начинал рисовать иконки для PuTTY, он не догадывался, что ему потребуется множество иконок в разных размерах. Поэтому он не стал автоматизировать процесс, а просто отрисовал каждую иконку вручную, используя редактор иконок MSVC, так как приложение без иконки выглядело довольно не привлекательно.

Иконка PuTTY имеет размер 32×32 пикселя и использует ограниченную палитру основных цветов и оттенков серого. На изображении изображены два компьютера, выполненные в стиле, популярном в 90-х годах: системный блок находится под ЭЛТ-монитором, а дисковод видно справа. Молния между ними символизирует электрическую связь.

«Я не считал себя особенно оригинальным: у меня была размытая идея о том, что подобные иконки уже существуют (хотя мне так и не удалось найти ни одного конкретного примера), поэтому я подумал, что это будет понятно любому, кто видел иконографию того времени. Я не помню, почему молния была жёлтой. Оглядываясь назад, это кажется странным; голубой цвет был бы очевиднее для обозначения электричества. Возможно, это было сделано для контраста с синими экранами компьютеров. Кстати, я тоже не могу вспомнить, почему экраны были синими. Я просто хотел, чтобы они выглядели нейтрально, а не черно, чтобы было видно, что они активны. Я почти уверен, что синий цвет не был отсылкой на синий экран смерти Windows — это просто не имело смысла, так как обычно только одна сторона соединения работает на Windows, и ни одна из сторон не зависает! Оглядываясь назад, возможно, я также думал о том, чтобы сделать два компьютера разными, исходя из предположения, что клиент местоположение на столе, а сервер — в серверной. Однако на тот момент я был студентом, и сервер Linux, к которому я подключался удалённо, располагался на моем рабочем столе, а не в стойке. Так что это просто не пришло мне в голову», — вспомнил Тэтхэм.

Затем на основе иконки PuTTY Тэтхэм разработал иконки для PSCP (и PSFTP) и Pageant, SSH-агента.

«Моя первая задумка для значка SSH-агента заключалась в создании изображения лица шпионского агента — в стереотипном одеянии со шляпой и поднятым воротником. Но рисовать лица у меня совершенно не получалось. После нескольких неудачных попыток, я понял, что Pageant никогда не увидит свет, если я буду ждать, пока нарисую нужный мне значок. В итоге, я решил использовать только шляпу, которая мне понравилась, и поместил её на увеличенную версию компьютера из оригинальной иконки PuTTY под углом. Я надеялся оставить это как временный вариант, планируя вернуться к своей изначальной идее шпионского агента позже. Однако в конце концов, я осознал, что уже созданный значок был даже лучше! Он гармонично вписывался в остальной набор, повторно используя тот же компьютерный дизайн; к тому же, рассматриваемый «агент» — это компьютер, а не человек. И самое главное, компьютер в шляпе выглядел мило. Поэтому я оставил его», — добавил Тэтхэм.

«Затем появился PuTTYgen. Я создал ещё один значок, совмещающий „компьютер + молния + объект“ — на этот раз объектом стал ключ, что является хорошим визуальным каламбуром, поскольку PuTTYgen генерирует и работает с криптографическими ключами. Молния, указывающая на сетевое взаимодействие, была неуместна в этом инструменте. Она даже была достаточно спорной в PSCP, но в PuTTYgen молния была совершенно неуместной. Я добавил её лишь для визуальной согласованности с другими значками, чтобы ее наличие сигнализировало, что это инструмент из того же набора, что и PuTTY», — пояснил Тэтхэм.

Следующий значок, который разработал Тэтхэм, оказался необходим не для отдельного инструмента, а для диалогового окна конфигурации PuTTY. «Значок на панели задач окна конфигурации выглядел скучно: обычный „по умолчанию“ значок, представляющий общую рамку окна. Я посчитал это очень неэстетичным. Вместо использования основного значка PuTTY без модификаций, я нарисовал уникальный значок, символизирующий конфигурацию или настройки, наложив сверху большой гаечный ключ», — уточнил Тэтхэм.

До 2007 года Тэтхэм не изменял размеры иконок. Однако потом пользователи начали жаловаться, что иконки 32×32 пикселя стали выглядеть не очень привлекательно. Экраны увеличились в размерах, и Windows по умолчанию стала отображать иконки размером 48×48 вместо 32×32.

«Вместо того, чтобы вручную рисовать новый набор иконок, я решил подойти к задаче более амбициозно. Я разработал фрагмент кода, который программно перерисовал все составные части каждого значка, чтобы иметь возможность запускать скрипт для автоматической генерации полного набора значков для каждого инструмента. Это устранило несоответствия в том, какие иконки имели маленькие версии, а какие — черно-белые версии: теперь все значки обладали всеми версиями. Сложной частью работы были маленькие иконки 16×16. До этого момента я нарисовал только одну из них, для Pageant. Теперь мне нужно было попытаться уловить ухищрения, которые я использовал для ручного сглаживания в этом значке, и заставить часть программного обеспечения делать то же самое для всех графических компонентов набора значков. Я помню, что это было довольно сложно, но в конечном итоге мне удалось создать что-то, чем я остался доволен. В результате, у каждого значка появились версии 48×48, 32×32 и 16×16», — рассказал Тэтхэм.

Кроме того, Тэтхэм создал иконки для pterm, включая диалоговое окно конфигурации, где снова использовался тот же наложенный гаечный ключ из PuTTY.

Скрипт, который Тэтхэм использовал для изменения размеров иконок, также был применим для значка установщика PuTTY.

«Я предположил, что было бы отлично нарисовать картонную коробку как часть этой иконки с открытыми сверху элементами и молнией, направленной на компьютер, намекая на то, что „PuTTY выскакивает из этой коробки на ваш компьютер“. Коробки обычно коричневые, но в 16-цветной палитре иконок такого цвета не было — но теперь я уже не был ограничен этой палитрой, поэтому смог использовать реальные коричневые цвета! Однако я все ещё хотел оставить 16-цветные иконки, потому что никогда не хотел бы терять обратную совместимость, если есть возможность её сохранить. Я заметил, что можно сделать несколько приемлемых оттенков коричневого, смешав два разных цвета из старой палитры иконок Windows 16 в соотношении 50:50. Все мои смеси включали темно-красный (#800 000); я получил три оттенка коричневого сочетанием его с черным (#000 000), темно-желтым (#808 000) и натуральным желтым (#ffff00). Так, я использовал эти три смеси 50:50, чтобы создать видимость объема в иконке коробки, показывая, что разные её части выставлены под разными углами к свету. Таким образом, в полноцветной версии я мог использовать один цвет, являющийся средним между двумя старыми цветами, а в 16-цветной версии я сделал полутон, чередуя пиксели из двух старых цветов», — пояснил Тэтхэм.

«Мой первоначальный скрипт для рисования иконок хорошо работал в обычных размерах 32×32 и 48×48, и вполне удовлетворительно масштабировался до 16×16, но не так успешно при более крупных форматах. Поэтому, если кому-то нужны действительно крупные версии иконок, просто запустить тот же скрипт с увеличенным размером изображения не даст хорошего результата. В одной из попыток переноса PuTTY на Mac я обнаружил, что MacOS требует значок 128×128 для дока, и выход моего скрипта в этом размере был явно неудовлетворительным. В настоящее время я отказываюсь от этого порта для Mac, но мне всё равно кажется, что полноценная масштабируемая версия всех иконок может быть полезной. Прежде всего, это позволит использовать их в различных контекстах, не ограничиваясь графическим интерфейсом (всё еще думаете о бесплатных мерчах? Футболках, наклейках для ноутбуков?). Так что, частично на случай необходимости, и ради удовольствия, я занялся созданием второго скрипта для рисования иконок. Он имитирует те же „мыслительные процессы“ оригиналоного скрипта, но выдает файлы SVG вместо растровых изображений — стараясь сохранить художественный стиль максимально близким к оригиналу. Для маленьких значков, я все еще считаю, что мой оригинальный скрипт лучше справляется с рендерингом, поскольку SVG не знает, как правильно осуществить сглаживание. Однако для больших значков, особенно в естественных цветах, я думаю, что использовать SVG — более правильное решение, затем рендерить его в большую растровую версию», — пояснил Тэтхэм.

«Вот и вся история! Это детали о наборе иконок PuTTY на данный момент. Иногда люди протестуют против всего стиля 90-х и пытаются создать полноценный набор замен в другом стиле. Однако ни одна из этих версий нам не понравилась достаточно, чтобы её принять. Возможно, причина в том, что стиль 90-х годов стал неотъемлемой частью сущности PuTTY — “успокаивающе старомодным”. Я не уверен, что мы когда-либо одобрим какой-либо серьезный редизайн. Поэтому, скорее всего, мы оставим эти иконки или что-то очень похожее на них на весь срок существования проекта!», — подвел итог Тэтхэм.

Разработка PuTTY началась в 1996 году. В феврале состоялся релиз SSH-клиента PuTTY 0.83, который поддерживает протоколы SSH, Telnet, Rlogin и SUPDUP, а также предлагает встроенный эмулятор терминала для Unix-подобных систем и Windows. Исходный код проекта доступен под лицензией MIT. Выпуск PuTTY 0.80 произошёл в декабре 2023 года, а версия PuTTY 0.70 была опубликована в июле 2017 года.