Введение

Программное обеспечение для заставки экрана XScreenSaver — это бесплатный и открытый набор, включающий более 240 заставок для операционных систем Unix, macOS, iOS и Android. Он был создан Джейми Завински в 1992 году и до сих пор поддерживается им, с выходом новых версий несколько раз в год.

Платформы

Свободные и открытые Unix-подобные операционные системы, использующие X Window System (например, Linux и FreeBSD), практически исключительно используют XScreenSaver. В этих системах существует несколько пакетов: один для заставки и блокировки экрана, и два или более для режимов отображения, разделенных несколько произвольно. В системах Macintosh XScreenSaver работает со встроенной в macOS заставкой. В системах iOS XScreenSaver является автономным приложением, способным запускать любые хаки на полный экран. В системах Android режимы отображения XScreenSaver работают либо как обычные заставки (которые Android иногда называет "Daydreams"), либо как живые обои. Официальной версии для Microsoft Windows не существует, и разработчик не рекомендует никому её портировать. Автор считает Microsoft "компанией с злонамеренной, хищнической и антиконкурентной деловой практикой" и заявляет, что, будучи одним из первых авторов Netscape Navigator, он питает "личную неприязнь" к Microsoft из-за её поведения во время Первой браузерной войны.

Архитектура программного обеспечения

Демон XScreenSaver отвечает за обнаружение бездействия, затемнение и блокировку экрана, а также запуск режимов отображения. Режимы отображения (называемые "хаками" от исторического использования термина "display hack") представляют собой отдельные программы. Это важная функция безопасности, поскольку режимы отображения изолированы в отдельном процессе от системы блокировки экрана. Это означает, что ошибка программирования в одном из графических режимов отображения не сможет скомпрометировать саму систему блокировки экрана (например, сбой в режиме отображения не разблокирует экран). Это также означает, что стороннюю заставку можно написать на любом языке программирования или с использованием любой графической библиотеки, при условии, что она способна отрисовывать изображение в предоставленном внешне окне. По историческим причинам и для обеспечения переносимости, все включенные хаки написаны на ANSI C. Примерно половина из них использует API X11, а другая половина – API OpenGL 1.3. Вместо того, чтобы создавать отдельные ветки кодовой базы и переписывать хаки для различных платформ, XScreenSaver содержит ряд слоев совместимости. Чтобы хаки, основанные на X11, могли работать на macOS и iOS, XScreenSaver содержит полную реализацию API X11, построенную на основе Cocoa ("jwxyz"). Чтобы хаки, основанные на OpenGL 1.3, могли работать на iOS и Android, которые поддерживают только OpenGL ES, XScreenSaver содержит реализацию API OpenGL 1.3, построенную на основе OpenGL ES 1.0 ("jwzgles"). И чтобы хаки, основанные на X11, могли работать на iOS и Android, XScreenSaver также содержит реализацию API X11 в терминах OpenGL ES 1.0.