LINUX.ORG.RU

xscreensaver, slideshow и русские буквы


0

0

Установлен xscreensaver, локаль ru_RU.UTF-8. Захотелось сделать так, чтобы xscreensaver при блокировке экрана отображал случайную последовательность изображений вместе с именем отображаемого файла. Это всё настраивается в программе xcsreensaver-demo: используем glslideshow, входящий в xscreensaver. Я использую следующую командную строку для glslideshow (указывается в xscreensaver-demo):

glslideshow -root -zoom 100 -pan 30 -fade 5 -titles

Проблема заключается в том, что у меня имена файлов имеют русские буквы. Они не печатаются на экране скринсэйвера (как будто русские буквы вообще пропускаются при печати). Шрифт менять пробовал (в .Xresources добавляем строку *titleFont: -*-lucida console-*-*-*-*-12-*-*-*-*-*-iso10646-* - такой шрифт у меня в терминале xterm, где русские буквы прекрасно отображаются). Не помогло: сам шрифт меняется, но русских букв всё равно нет.

Из исходников xscreensaver у меня возникли сомнения насчет того, что он вообще поддерживает utf-8 (см. файл hacks/glx/glxfonts.c).

Подумал о заменителях glslideshow, узнал о chbg и xv, но не понял, могут ли они отображать имя файла или какой-то текст для каждого изображения.

Подскажите, если кто знает, как сделать слайдшоу с отображением русского текста для каждого изображения в скринсэйвере?

★★★★★

Re: xscreensaver, slideshow и русские буквы

Выяснил причину проблемы в glslideshow. Там была ошибка работы с
массивом. Я её исправил:

--- hacks/glx/glxfonts.c.orig   Wed Jan 16 18:41:27 2008
+++ hacks/glx/glxfonts.c        Wed Jan 16 18:28:40 2008
@@ -190,7 +190,7 @@
         glRasterPos2f (x, y);
         for (i = 0; i < strlen(string); i++)
           {
-            char c = string[i];
+            unsigned char c = (unsigned char)string[i];
             if (c == '\n')
               {
                 glRasterPos2f (x, (y -= line_height));

После этого стало понятно, что utf-8 просто не поддерживается. Зато
стало возможным переименовать файлы в кодировку koi8-r и отобразить
таки строчки. :) Наверное, можно это сделать и символическими ссылками
на файлы с именами в utf-8. Нет ли менее извращённых способов?

Sorcerer ★★★★★ ()
Ответ на: Re: xscreensaver, slideshow и русские буквы от INFOMAN

Re: xscreensaver, slideshow и русские буквы

Может есть какие-то другие программы, кроме glslideshow, которые могли бы отображать требуемый текст на слайдах, да еще могли бы запускаться из xscreensaver?

Sorcerer ★★★★★ ()
Ответ на: Re: xscreensaver, slideshow и русские буквы от Sorcerer

Re: xscreensaver, slideshow и русские буквы

Блин, я придумал. Можно всего-навсего немного допилить glslideshow, чтобы он вместо отображения имени файла открывал бы текстовый файл с таким же именем, откуда брал бы нужный текст, записанный в koi8-r! :)

Sorcerer ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.