Xscreensaver jak malowany

W wielu dystrybucjach zaszczytną funkcję wygaszacza ekranu pełni całkiem funkcjonalny Xscreensaver. Na jego barkach spoczywa też blokada ekranu po dłuższym czasie nieaktywności użytkownika. Jednak ze względów koncepcyjnych i bezpieczeństwa, blokada ekranu i późniejszy interfejs służący autoryzacji użytkownika, korzysta z systemowych, surowych bibliotek Xlib. Jak to wygląda – większość zapewne wie. Ale skoro mamy XXI wiek, to dlaczego by nie spróbować tchnąć w ten element nieco estetyki?

Wiele osób może się obruszyć, że skoro autoryzacja ponownego dostępu do zablokowanego pulpitu ma stać na straży bezpieczeństwa, to ma być skuteczna a nie ładnie wyglądać. Jest w tym sporo racji, jednak zmiana wyglądu nie spowoduje, że Xscreensaver straci coś ze swoich mechanizmów zabezpieczających. Mowa jest o zwykłej kosmetyce, która uczyni okno logowania nieco bardziej współczesnym i nie będzie wywoływała u użytkowników konsternacji ‘Hmm, mam ładnego Linuksa, a tu coś się zepsuło?’. A mowa jest o takiej zmianie:

Xscreensaver okienko z ubiegłego wieku
Xscreensaver nieco współcześniej

Niby nic, a wizualnie jest nieco bardziej przyswajalne. Oczywiście to tylko sugestia wyglądu, bo jak się za chwilę okaże, dostaniemy możliwość niemal dowolnego upiększenia tego okienka. A wszystko odbywa się za sprawą pliku ~/.Xresources, który musimy utworzyć lub edytować w swoim katalogu domowym:

gedit ~/.Xresources

I w tym pliku umieszczamy opis stylu i wyglądu okna, którym raczy nas Xscreensaver. Dokonujemy tego wg. poniższej receptury:

xscreensaver.splash: false

!font settings
xscreensaver.Dialog.headingFont:        -*-dina-bold-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.Dialog.bodyFont:           -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.Dialog.labelFont:          -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.Dialog.unameFont:          -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.Dialog.buttonFont:         -*-dina-bold-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.Dialog.dateFont:           -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.passwd.passwdFont:         -*-dina-bold-r-*-*-12-*-*-*-*-*-*-*

!general dialog box (affects main hostname, username, password text)
xscreensaver.Dialog.foreground:         #111111
xscreensaver.Dialog.background:         #ffffff
xscreensaver.Dialog.topShadowColor:     #111111
xscreensaver.Dialog.bottomShadowColor:  #111111
xscreensaver.Dialog.Button.foreground:  #ffffff
xscreensaver.Dialog.Button.background:  #666666

!username/password input box and date text colour
xscreensaver.Dialog.text.foreground:    #ffffff
xscreensaver.Dialog.text.background:    #666666
xscreensaver.Dialog.internalBorderWidth:24
xscreensaver.Dialog.borderWidth:        20
xscreensaver.Dialog.shadowThickness:    2

!timeout bar (background is actually determined by Dialog.text.background)
xscreensaver.passwd.thermometer.foreground:  #ff0000
xscreensaver.passwd.thermometer.background:  #000000
xscreensaver.passwd.thermometer.width:       8

!datestamp format--see the strftime(3) manual page for details
xscreensaver.dateFormat:    %I:%M%P %b %d

Nazwy elementów są na tyle wymowne, że chyba nie wymaga to większego komentarza, a każdy użytkownik posiadający odpowiednią motywację będzie w stanie samodzielnie dokonać poprawek wg. własnego gustu.

Na tym jednak nie koniec, musimy bowiem poinformować system i Xscreensavera o zmianach. Ponieważ będziemy musieli to robić po każdej poprawce w powyższym pliku, jednolinijkowy gotowiec:

xrdb -merge ~/.Xresources; pkill xscreensaver; xscreensaver -no-splash&

A przetestujemy to wszystko poleceniem:

xscreensaver-command -lock

I takim to sposobem możemy uwspółcześnić element, który w wielu dystrybucjach uwiera w oczy niejednego użytkownika-estetę.