IZONE- http://www.izcity.com/- бесплатный софт, вэб-сервисы, ресурсы для раскрутки, свежие номера журнала "Internet Zone".

Графика без иксов

О том, как работать с графикой непосредственно в консоли, без запуска X window.

Алексей Федорчук

Работа в консольном режиме чрезвычайно комфортна, по крайней мере, если речь идет о сочинении текстов. Однако есть одно «но»: по ходу сочинительства сплошь и рядом приходится обращаться к иллюстративному материалу, то есть просматривать всякого рода графику. Напрашивающийся способ делать это – запустить X Window с каким-либо графическим вьювером. Благо таковых нынче развелось вдоволь.

Однако при этом возникает ряд неудобств. И потому меня очень давно интересовал вопрос – а возможна ли работа с графикой непосредственно в консоли, без X'ов. Ведь существовали же в старое время всякого рода графические редакторы для текстового режима DOS. Оказалось – да, возможно, и даже разными способами – с использованием всякого рода специализированных библиотек (типа SVGAlibs) и в режиме работы через линейный кадровый буфер (т.н. frame buffer).

Первый путь – это предмет особого разговора, к которому я пока морально не готов. Что же касается программ, использующих frame buffer, то, прежде чем воспользоваться их услугами, необходимо этот режим включить, то есть превратить текстовую Linux-консоль в консоль графическую  [1].

Чтобы не возвращаться к этому вопросу, скажу, что эксперименты проводились в Linux Mandrake 8.1 на видеосистеме, включающей карту ASUS V3800 M64 (на обыкновенном чипе Riva TNT2) и монитор Rolsen C707  [2]. И должен сразу предупредить: я более чем не гарантирую, что все описанное ниже даст какой-либо результат на других видеокартах или в других системах  [3].

Включить режим кадрового буфера в Mandrake (а также в дистрибутивах Altlinux) очень просто – ядро в них на стадии установки компилируется с модульной поддержкой графической консоли VESA VGA. И потому требуется только запустить (из X Window) программу Mandrake Control Center и выбирать в ней пункт Настройка загрузчика. На панели возникает, в числе прочих опций, кнопка, позволяющая выполнить эту процедуру (рис. 1).

1
Рис. 1. Mandrake Control Center, настройка загрузчика

Нажав на нее, получаем панель выбора загрузчика и настройки его параметров. Я использую LILO, к коему и относятся дальнейшие действия. А именно – посредством кнопки Продвинутый относим себя именно к этой категории пользователей (рис. 2). И теперь имеем возможность выбрать видеорежим консоли – текстовый (от стандартного 80x25 до 80x60 или даже 100x30) или графический (от 640x480 до 1280x1024 при 16-битной глубине цвета; впрочем, при первом моя система отказалась грузиться категорически).

2
Рис. 2. Установка параметров загрузчика

Произведенные изменения отражаются на файле конфигурации LILO (/etc/lilo.conf) – в строке vga вместо значения по умолчанию (normal) появляется одна из загадочных трехзначных цифр  [4], вероятно, соответствующих заданным разрешению и цветности (рис. 3).

3
Рис. 3. Вид файла /etc/lilo.conf после включения графической консоли

Далее необходима перезагрузка (вероятно, можно обойтись и реинициализацией консолей). В ходе ее может появиться заставка, символизирующая переход в графический режим. Если таковой нет (это зависит от опций, с которыми скомпилировано ядро), проверить активизацию frame buffer можно командой /usr/sbin/fbset -i, которая выведет полную информацию о разрешении, глубине цвета, частотных характеристиках и т.п. параметрах текущего режима (рис. 4). Если же frame buffer почему-либо не активизировался, ответом будет сообщение об отсутствии устройства /dev/fb0.

4
Рис. 4. Информация о видеорежиме

Командой fbdet теоретически можно также переключать видеорежимы консоли (разрешение, глубину цвета и т.д.) «на лету». Однако при использовании описанного способа включения frame buffer это не удастся – требуется пересборка ядра с отключением VESA VGA и встраиванием поддержки конкретной видеокарты (впрочем, это тема отдельного разговора).

Однако графическая консоль в стандартном режиме дает возможность использовать кое-какие приложения для просмотра изображений. В частности, простенькую в установке и обращении программу fbi Герда Кнорра  [5], более или менее удовлетворяющую мои нехитрые потребности.

Программа эта легко устанавливается из исходников (последовательностью команд make; make install) и запускается посредством

fbi [опции] имена_файлов

В качестве аргументов может быть перечень файлов с их путями или просто маски. Для просмотра доступны основные растровые форматы – JPEG, GIF, PNG, TIFF и еще несколько (включая PhotoCD).

После этого просмотр всех загруженных рисунков (разумеется, никто не запрещает открыть и единичный рисунок) осуществляется клавишами PgDown/PgUp или Spacebar. Есть возможность перехода к рисунку по номеру (командой g#). С помощью стрелок управления курсором можно прокручивать рисунок, превышающий размер экрана, клавишами +/- осуществляется его масштабирование.

Опции программы (о которых можно получить представление посредством man fbi или fbi -h) позволяют выбрать видеорежим, отличный от принятого в графической консоли (впрочем, у меня это на сработало), ввести значение гамма-коррекции, задать режим автоматического просмотра типа slide show. Короче говоря, все элементарные функции графического вьювера. Правда, ни малейшего редактирования изображений осуществить невозможно.

[1] Насколько я понимаю, использование графической консоли – норма на Sun Spark, где, при использовании собственной видеосистемы, текстовый режим отсутствует как класс. [обратно к тексту]

[2] Это такой простенький 17-дюймовый монитор, продающийся в Москве за просто смешные деньги, но вполне приличный по частотным характеристикам и геометрии. Хотя чудес в цветопередаче на нем, пожалуй, не добиться. [обратно к тексту]

[3] Более того, замечу: мои попытки включить режим frame buffer были не вполне удачными в Linux Mandrake RE Spring 2001, Altlinux Junior 1.0 ASPLinux 7.1 при использовании видеокарты Matrox G450: то изображение на экране двоилось после выхода из X'ов, то курсор мыши в консоли пропадал напрочь, то система просто висла без всяких видимых причин. [обратно к тексту]

[4] Эмпирически определенные их значения - 785 (640x480), 788 (800x600), 791 (1024x768), 794 (1280x1024). Буду признателен тому, кто поделится своими соображениями по этому поводу. [обратно к тексту]

[5] Gerd Knorr, подозреваю, это не тот, который «вкусен и скорр». Программу можно найти на сайте bytesex.org. Вопреки названию, он посвящен отнюдь не эротическому общению с байтами, а содержит ряд полезных мультимедийных приложений. [обратно к тексту]

Источник - SoftТерра, http://www.softerra.ru

 


Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com