Скринсэйвер как фон

Материал из Gentoo Linux Wiki

Перейти к: навигация, поиск
Вернуться в раздел советов

Содержание

[править] Вступление

В Linux вообще и в системе портежей Gentoo в частности существует множество великолепных хранителей экрана. Возможно, один из лучших среди них - это набор хранителей rss-glx (в нем много интересных хранителей, например, взгляните на skyrocket). Но какой толк от этих хранителей, если видеть их приходится как правило так редко и так недолго? Не лучше ли будет, если вся эта красота будет крутиться во время вашего входа в систему? И для собственного глаза приятно и другим будет что показать. Так давайте посмотрим, как можно эту красоту устроить!

[править] GDM

Приступим. Первое, что нужно настроить, это gdm (я использую 2.6.0.6, но скорее всего это будет работать и с 2.5.x, и с 2.4.x версиями). Из-под рута запустите: gdmsetup и установите локальное приглашение в "стандартное приглашение", а затем на вкладке стандартного приглашения выставьте переключатель в положение нет фона. Теперь запустите: xscreensaver-demo выберите свой любимый хранитель экрана, нажмите кнопку Настройки, затем Расширенные и запомните то, что будет написано в коммандной строке. Преобразуйте имя программы в полный путь до нее - если хранитель не находится командой which, то скорее всего он находится в /usr/lib/xscreensaver. Теперь отредактируем /etc/X11/gdm/gdm.conf. Найдите в этом файле строку с BackgroundProgram и исправьте ее, чтобы получилось похоже на:

Файл: /etc/X11/gdm/gdm.conf

BackgroundProgram=/usr/lib/xscreensaver/skyrocket --root
# или
# BackgroundProgram=/usr/lib/xscreensaver/xmatrix -root -small -delay 20000

теперь перезапустите gdm: /etc/init.d/xdm restart и наблюдайте, как хранитель будет отрисовываться в окне рута, которое находится за окошком для логина! Какая еще ОС способна на такое?

[править] Проблемы

Если не работает, то возможно из-за того что права доступа к устройству аппаратного ускорения слишком жесткие. Помните, что хранитель будет запущен от имени пользователя gdm, а не root, так что если вы пользователь карт nvidia и пользуетесь их бинарными драйверами, то должны убедиться, что gdm имеет права на запись в /dev/nvidia0 и /dev/nvidiactl. Для этого включите gdm в группу video и установите хозяина файлов /dev/nvidia* в root:video, а права доступа для этих файлов выставьте в 660. Если вы используете devfs, то это нужно поправить файл /etc/devfs.d/nvidia.conf:

Файл: /etc/devfs.d/nvidia.conf

LOOKUP ^nvidia MODLOAD nvidia
REGISTER ^nvidia PERMISSIONS root.video 660

а также убедитесь, что в <dri> тоже в двух колонках стоит 0660 в файле /etc/security/console.perms:

Файл: /etc/security/console.perms

<xconsole> 0660 <dri> 0660 root.video

[править] Другие менеджеры входа в систему (xdm, kdm)

В Gnome, как мы видели, все делается просто. Но, в kdm и xdm всё тоже несложно!

[править] KDM

Прежде всего отключите стандартный фон в программе настройки kdm (где-то в kcontrol это можно сделать). Нам нужно будет отредактировать 2 файла. Оба они расположены в /usr/kde/<версия kde>/share/config/kdm

[править] Xsetup

Этот скрипт срабатывает каждый раз, когда появляется окно для ввода логина. В нём мы должны запустить наш хранитель. Просто добавьте строчку с хранителем в этот файл (от имени рута):

echo '/usr/lib/xscreensaver/pong -root &' >>/usr/kde/x.x/share/config/kdm/Xsetup

[править] Xstartup

Этот скрипт срабатывает каждый раз, когда пользователь входит в систему. В этот момент необходимо отключить хранитель. Здесь лучше всего подойдет утилита killall. Поместите следующую строчку перед последней строкой в скрипте:

killall pong

[править] XDM

Добавим строку для запуска скринсейвера: echo '/usr/lib/xscreensaver/pong -root &' >>/etc/X11/xdm/Xsetup_0 И еще одну для прерывания скринсейвера в момент входа пользователя: echo 'killall pong &' >>/etc/X11/xdm/GiveConsole Напомню, что уточнить имена и расположения нужных файлов можно в /etc/xdm/xdm-config:

DisplayManager._0.setup:        /etc/X11/xdm/Xsetup_0
#запускается при старте Иксов от рута
DisplayManager._0.startup: /etc/X11/xdm/GiveConsole
#запускается при входе пользователя от рута
DisplayManager._0.reset: /etc/X11/xdm/TakeConsole
#запускается от рута при закрытии сессии пользователем
DisplayManager*session: /etc/X11/xdm/Xsession
#запускается от пользователя при его входе

[править] Благодарности

Оригинальная тема в форуме создана пользователем ecatmur

способ настройки kdm был написан с использованием постов из этой темы.

Личные инструменты
На других языках