XScreenSaver

Программное обеспечение для создания заставки

XScreenSaver
Оригинальный автор(ы)Джейми Завински
Разработчик(и)Джейми Завински
Первоначальный выпуск17 августа 1992 г. ; 32 года назад ( 1992-08-17 )
Стабильный релиз
6.08 / 10 октября 2023 г. ; 12 месяцев назад [1] ( 2023-10-10 )
Написано вANSI C , X11 , OpenGL
Операционная системаUnix , MacOS , iOS , Android
ТипЗаставка
ЛицензияЛицензия Массачусетского технологического института [2]
Веб-сайтjwz.org/xscreensaver/
Xscreensaver "GLMatrix" Скринсейвер

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

Платформы

Свободное программное обеспечение и открытые исходные коды Unix-подобных операционных систем, работающих под управлением X Window System (такие как Linux и FreeBSD ), используют XScreenSaver почти исключительно. [ требуется ссылка ] В этих системах существует несколько пакетов: один для фреймворка сохранения и блокировки экрана и два или более для режимов отображения, разделенных несколько произвольно. [5]

В системах Macintosh XScreenSaver работает со встроенной экранной заставкой macOS .

В системах iOS XScreenSaver — это автономное приложение, которое может запускать любой из хаков в полноэкранном режиме.

В системах Android режимы отображения XScreenSaver работают либо как обычные хранители экрана (которые Android иногда называет «Daydreams»), либо как живые обои .

Официальной версии для 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 связывается с минимальным количеством библиотек. В частности, он не связывается с такими GUI-фреймворками, как 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]

Некоторые из включенных хаков очень похожи на демонстрационные эффекты, созданные демосценой :

  • Boing — основан на программе 1984 года, которая считается первой демоверсией Amiga и демонстрирует прыгающий красно-белый мяч.
  • Bumps – реализация полноэкранного 2D- рельефного отображения .
  • Метаболы – еще один распространенный демонстрационный эффект.
  • Moire2 – движущиеся круги помех, похожие на те, что были распространены в старых демоверсиях Amiga.
  • ShadeBobs – еще один эффект, распространенный в старых демоверсиях Amiga.
  • XFlame – эффект огня на основе фильтра, также известный как эффект пламени.

Смотрите также

XScreenSaver был представлен в «Спящем режиме: искусство заставки» [ 22], галерее-выставке, которую курировал Рафаэль Розендал в Het Nieuwe Instituut в Роттердаме в 2017 году.

Ссылки

  1. ^ "Changelog" . Получено 4 марта 2024 г. .
  2. ^ "Список авторских прав Debian XScreenSaver". 24 декабря 2020 г. Получено 24 декабря 2020 г.
  3. ^ ab "Список хранителей экрана, входящих в коллекцию XScreenSaver". 8 декабря 2020 г. Получено 24 декабря 2020 г.
  4. ^ "История выпуска XScreenSaver". 8 декабря 2020 г. Получено 24 декабря 2020 г.
  5. ^ "Список пакетов Debian XScreenSaver". 24 декабря 2020 г. Получено 24 декабря 2020 г.
  6. ^ "XScreenSaver: Windows Version". www.jwz.org . Получено 24 декабря 2020 г. .
  7. ^ ab "запись в блоге jwz.org о порте iOS". 19 июня 2012 г. Получено 24 декабря 2020 г.
  8. ^ "Запись в блоге jwz.org о порте Android". 23 мая 2016 г. Получено 24 декабря 2020 г.
  9. ^ "XScreenSaver FAQ относительно KDE/Gnome" . Получено 24 декабря 2020 г. .
  10. ^ "Распространение исходного кода XScreenSaver". 8 декабря 2020 г. Получено 24 декабря 2020 г.
  11. ^ Кампанья, Джованни (21 марта 2011 г.). "Re: Каков статус заставки в GNOME3?". gnome-shell (список рассылки).
  12. ^ "Linux Mint 19.1 Announcement". 20 декабря 2018 г. Получено 24 декабря 2020 г.
  13. ^ "Gnome-Screensaver Key Flood". 16 апреля 2014 г. Получено 24 декабря 2020 г.
  14. ^ "Cinnamon-Screensaver Key Flood". GitHub . 22 августа 2014 г. Получено 24 декабря 2020 г.
  15. ^ "CVE-2014-1949, обход блокировки заставки Cinnamon". 16 января 2015 г. Получено 24 декабря 2020 г.
  16. ^ "Mandriva Security Advisory MDVSA-2015:162". 29 марта 2015 г. Получено 24 декабря 2020 г.
  17. ^ "CVE-2015-7496, удерживайте ESC, чтобы разблокировать Gnome-session GDM". 24 ноября 2015 г. Получено 18 января 2021 г.
  18. ^ "CVE-2019-3010, Повышение привилегий в форке Oracle Solaris XScreenSaver". 23 октября 2019 г. Получено 24 декабря 2020 г.
  19. ^ "Обход блокировки заставки Cinnamon с помощью виртуальной клавиатуры". GitHub . 15 января 2021 г. . Получено 15 января 2021 г. .
  20. ^ "XScreenSaver: On Toolkit Dialogs". 19 октября 2004 г. Получено 24 декабря 2020 г.
  21. ^ "Запись в блоге jwz.org об ошибках безопасности Gnome". 4 апреля 2015 г. Получено 24 декабря 2020 г.
  22. ^ «Режим сна: искусство заставки: интервью с Джейми Завински». 27 января 2017 г. Получено 24 декабря 2020 г.
  • Медиа, связанные с XScreenSaver на Wikimedia Commons
  • Официальный сайт
  • "XScreenSaver". Бесплатный код .
Взято с "https://en.wikipedia.org/w/index.php?title=XScreenSaver&oldid=1244226144"