В системах Macintosh XScreenSaver работает со встроенной заставкой macOS .
В системах iOS XScreenSaver — это автономное приложение, которое может запускать любые хаки в полноэкранном режиме.
В системах Android режимы отображения XScreenSaver работают либо как обычные заставки (которые Android иногда называет «мечтами»), либо как живые обои .
Официальной версии для Microsoft Windows не существует , и разработчик не рекомендует никому ее портировать. Автор считает Microsoft «компанией с порочной, грабительской, антиконкурентной деловой практикой» [6]
и говорит, что, как один из первоначальных авторов Netscape Navigator , он держит «личную неприязнь» к Microsoft из-за ее поведения. во время Первой браузерной войны .
Архитектура программного обеспечения
Демон XScreenSaver отвечает за обнаружение бездействия, гашение и блокировку экрана, а также запуск режимов отображения. Каждый из режимов отображения (называемых «хаками» от исторического использования « display hack ») представляет собой отдельную программу.
Это важная функция безопасности, поскольку режимы отображения выделяются в отдельный процесс из системы блокировки экрана. Это означает, что ошибка программирования в одном из режимов графического отображения не может поставить под угрозу сам блокировщик экрана (например, сбой в режиме отображения не приведет к разблокировке экрана).
Это также означает, что сторонняя заставка может быть написана на любом языке или с использованием любой графической библиотеки, при условии, что она способна отображать внешнее окно.
По историческим причинам и из соображений переносимости все включенные хаки написаны на ANSI C. Около половины из них используют API X11 , а около половины — API OpenGL 1.3.
Вместо того, чтобы разветвлять кодовую базу и переписывать хаки для разных платформ, XScreenSaver содержит несколько уровней совместимости.
Чтобы хаки на основе X11 могли работать в macOS и iOS , XScreenSaver содержит полную реализацию API X11 , построенную на основе Cocoa («jwxyz»). [7]
Чтобы хаки на основе OpenGL 1.3 могли работать в системах iOS и Android , которые поддерживают только OpenGL ES , XScreenSaver содержит реализацию API OpenGL 1.3, встроенную поверх OpenGL ES 1.0 («jwzgles»). [7]
А чтобы хаки на основе X11 могли работать на iOS и Android , XScreenSaver также содержит реализацию API X11 в терминах OpenGL ES 1.0. [8]
Безопасность
В дополнение к изолированной программной среде режимов отображения демон XScreenSaver связывается с как можно меньшим количеством библиотек. В частности, он не связан с инфраструктурами графического интерфейса, такими как GTK или KDE , а использует только необработанный Xlib для отображения диалогового окна разблокировки.
В последние годы некоторые дистрибутивы Linux начали использовать по умолчанию фреймворки гашения экрана gnome-screensaver или kscreensaver вместо фреймворка, включенного в XScreenSaver. [9]
В 2011 году gnome-screensaver был разделен как mate-screensaver и cinnamon-screensaver . Более ранние версии этих платформ по-прежнему зависели от коллекции хранителей экрана XScreenSaver, которая составляет более 90% пакета. [10]
Однако в 2011 году gnome-screensaver версии 3 полностью отказался от поддержки заставок, поддерживая только простое гашение экрана, [11]
а с 2018 года cinnamon-screensaver 4.0.8 Linux Mint больше не поддерживает хаки XScreenSaver. [12]
Те дистрибутивы Linux, которые заменили XScreenSaver другими платформами блокировки экрана, столкнулись с заметными проблемами безопасности. Эти другие платформы имеют историю ошибок безопасности, которые позволяют разблокировать экран без пароля, например, просто удерживая клавишу до тех пор, пока шкафчик не выйдет из строя. [13] [14] [15] [16] [17] [18] [19]
В 2004 году Завински написал об архитектурных решениях, принятых в XScreenSaver с целью избежать этого самого класса ошибок, [20]
что побудило его пошутить в 2015 году: «Если вы не используете XScreenSaver в Linux, то можно с уверенностью предположить, что что ваш экран не блокируется». [21]
Режимы отображения
Включенные хаки очень разнообразны: от простой 2D- психоделии до 3D-демонстрации сложных математических принципов, моделирования других компьютерных систем и воссоздания артефактов и эффектов из фильмов.
Хотя многие из новых хаков в полной мере используют возможности современных компьютеров, возраст проекта означает, что некоторые из старых хаков могут показаться современным людям устаревшими, поскольку изначально они были написаны для гораздо менее мощных компьютеров.
Примеры хаков: [3]
Атлантида — анимация OpenGL , показывающая китов и дельфинов.
Apple2 – имитирует компьютер Apple II , показывая, как пользователь вводит простую программу на языке BASIC и запускает ее. При запуске из командной строки это полнофункциональный эмулятор терминала (как и Phosphor ).
Штрих-код – по экрану прокручивается несколько цветных штрих-кодов .
Молекула - анимация OpenGL, показывающая заполняющие пространство или шарообразные модели ряда распространенных лекарств и других молекул, из которых тридцать восемь (38) встроены. Он также может читать PDB (банк данных белков) из файл или файлы, помещенные в каталог, в качестве входных данных.
Метаболлы – еще один распространенный демонстрационный эффект.
Муар2 — движущиеся интерференционные круги , похожие на те, что были в старых демо-версиях Amiga.
ShadeBobs — еще один эффект, распространенный в старых демо-версиях Amiga.
XFlame — эффект огня на основе фильтра, также известный как эффект пламени.
Смотрите также
XScreenSaver был представлен в «Спящем режиме: искусство заставки» [22] ,
галерее-выставке, которую курировал Рафаэль Розендал в Het Nieuwe Instituut в Роттердаме в 2017 году.
Рекомендации
^ "Журнал изменений" . Проверено 4 марта 2024 г.
^ «Список авторских прав Debian XScreenSaver» . 24 декабря 2020 г. Проверено 24 декабря 2020 г.
^ ab «Список заставок, включенных в коллекцию XScreenSaver». 8 декабря 2020 г. Проверено 24 декабря 2020 г.
^ «История выпусков XScreenSaver» . 8 декабря 2020 г. Проверено 24 декабря 2020 г.
^ «Список пакетов Debian XScreenSaver» . 24 декабря 2020 г. Проверено 24 декабря 2020 г.
^ «XScreenSaver: Версия для Windows» . www.jwz.org . Проверено 24 декабря 2020 г.
^ ab «Сообщение в блоге jwz.org о порте iOS». 19 июня 2012 года . Проверено 24 декабря 2020 г.
^ «Сообщение в блоге jwz.org о порте Android» . 23 мая 2016 года . Проверено 24 декабря 2020 г.
^ «Часто задаваемые вопросы по XScreenSaver относительно KDE/Gnome» . Проверено 24 декабря 2020 г.
^ «Распространение исходного кода XScreenSaver» . 8 декабря 2020 г. Проверено 24 декабря 2020 г.
↑ Кампанья, Джованни (21 марта 2011 г.). «Re: Каков статус заставки в GNOME3?». gnome-shell (список рассылки).
^ «Анонс Linux Mint 19.1» . 20 декабря 2018 года . Проверено 24 декабря 2020 г.
^ "Наводнение ключей заставки Gnome" . 16 апреля 2014 года . Проверено 24 декабря 2020 г.
^ "Наводнение ключей заставки с корицей" . Гитхаб . 22 августа 2014 года . Проверено 24 декабря 2020 г.
^ «CVE-2014-1949, Обход блокировки заставки Cinnamon» . 16 января 2015 года . Проверено 24 декабря 2020 г.
^ «Рекомендации по безопасности Mandriva MDVSA-2015:162» . 29 марта 2015 года . Проверено 24 декабря 2020 г.
^ «CVE-2015-7496. Удерживайте ESC, чтобы разблокировать GDM-сессию Gnome» . 24 ноября 2015 года . Проверено 18 января 2021 г.
^ «CVE-2019-3010, Повышение привилегий в форке Oracle Solaris XScreenSaver» . 23 октября 2019 г. Проверено 24 декабря 2020 г.
^ «Обход блокировки заставки Cinnamon с помощью виртуальной клавиатуры» . Гитхаб . 15 января 2021 г. Проверено 15 января 2021 г.
^ «XScreenSaver: В диалогах набора инструментов» . 19 октября 2004 года . Проверено 24 декабря 2020 г.
^ «Сообщение в блоге jwz.org об ошибках безопасности Gnome» . 4 апреля 2015 года . Проверено 24 декабря 2020 г.
^ «Спящий режим: Искусство заставки: Интервью Джейми Завински» . 27 января 2017 года . Проверено 24 декабря 2020 г.