Leency пишет:Можно ли добавить поддержку @SS как в оригинале?
Можно.
Но ещё желательно пофиксить функцию рисования сглаженных линий buf2d_line_sm из библиотеки buf2d(в первом сообщении под спойлером описана суть проблемы со скриншотом, иногда линии не прорисовываются).
Я бы вообще саму логику работы @SS изменил.
Сейчас, насколько понимаю из исходника, логика такая:
если время истекло, то запустить приложение-ScreenSaver(в данный момент это Spiral), а самому @SS завершиться.
Теперь приложение Spiral ждёт события, если оно произошло, то запускает снова @SS, а само завершается.
Ну разве это не забавно!? 
А теперь, как было бы логичнее сделать:
если время истекло, то запустить приложение-ScreenSaver(в данный момент это Spiral), запомнив его идентификатор, и ждать события, если оно произошло, то послать сообщение приложению-ScreenSaver(в данный момент это Spiral) о нажатии кнопки закрытия окна — приложение-ScreenSaver завершится.
Есть ещё один вариант, может и не совсем идеологически верный, но можно было бы просто прибить процесс с помощью TerminateThreadById(SysFn18.18) — мы ведь всё равно ничего не теряем, скринсейверы же просто графику рисуют.
Но тут ещё похоже нужно фиктивное окно, чтобы принимать события клавиатуры, ну окей, нарисуем окошко нулевого размера, чтобы не загораживало приложение-ScreenSaver.
Кстати, насчёт "оригинала", который уже не оригинал — привет тому умнику, который заменил инструкцию fcomip, аргументируя это тем, что она появилась в семействе процессоров P6, однако, он сам при этом использует инструкцию cmovz.
Пусть почитает, например, это на странице 253
The CMOVcc instructions were introduced in P6 family processors; however, these instructions may not be supported by all IA-32 processors.
Software can determine if the CMOVcc instructions are supported by checking the processor’s feature information with the CPUID instruction (see “CPUID—CPU Identification” in this chapter).
и который заменил человекочитаемые имена функций, такие как DrawWindow, SetEventMask, GetTickCount, CheckEvent на макросы mcall: mcall 0, mcall 40, mcall 26, 9, mcall 11 — ну тогда бы сразу в двоичном коде писал для пущей важности 
Проще говоря, это пример, как делать не надо было!
Что касается текущего варианта поддержки @SS, то можно сделать так:
var
IsScreenSaver: Boolean = False;
ThreadInfo: TThreadInfo;
MySlot: LongWord;
if StrCmp(CmdLine, '@ss') = True then
begin
IsScreenSaver := True;
GetThreadInfo($FFFFFFFF, ThreadInfo)
MySlot := GetSlotById(ThreadInfo.Identifier);
end;
а во время отрисовки проверяем
if IsScreenSaver then
if GetActiveWindow <> MySlot then
begin
RunFile('/sys/@SS', '');
(* завершаем программу *)
end;