Важнейшие команды:
Переключение между режимами: командный режим — <Esc>; режим ввода — a (в режим вставки (вставка после курсора)), i (в режим вставки (с вставкой перед курсором)), A (в режим вставки (вставка после конца текущей строки)), I (в режим вставки (перед первым непробелом)), R (в режим замены); режим редактирования строки команды — :, /, ?, !.
Файловые команды: ZZ, :wq — сохранить текущий буфер в файл и завершить работу; Сохраняет файл и выходит из vi; :w — сохранить текущий буфер в файл; :wимя сохранить текущий буфер в файл с указанным именем; :q — выйти из редактора; :e имя — загрузить файл с указанным файлом в буфер редактирования; :n — загрузить следующий файл в списке файлов.
Команды перемещения: CTRL-d — на полстраницы вниз; CTRL-u — на полстраницы вверх; CTRL-f — на страницу вниз; CTRL-b — на страницу вверх; :0 — к началу файла; :n — к строке номер n; :$ — к концу файла ; 0 — к началу строки; ^ — к первому непробелу; $ — к концу строки; <Enter> — к началу следующей строки; — — к началу предыдущей строки; j — на следующую строку; k — на предыдущую строку.
Команды редактирования: CTRL-h — удалить символ слева; CTRL-w — удалить слово слева; CTRL-v — ввести непечатаемый символ; x — удалить текущий символ; D — удалить до конца строки; dd — удалить текущую строку.
Команды поиска и замены: /текст — искать вперед образец текст; ?текст — искать назад образец текст; n — повторить последний поиск в том же направлении; N — повторить последний поиск в обратном направлении; :s/текст/новый_текст/ — заменить первый образец текст на новый_текст; :s/текст/новый_текст/g — заменить все образцы текст на новый_текст.
1.12 Перечень стандартных команд ОС
Глава 2. Графический пользовательский интерфейс
2.1 Оконная система «Икс» и XFree86
2.2 Цветной сэндвич
2.3 «Чистая» «Икс»
2.4 Окноводы
2.5 Столоначальники
Переключение между режимами: командный режим — <Esc>; режим ввода — a (в режим вставки (вставка после курсора)), i (в режим вставки (с вставкой перед курсором)), A (в режим вставки (вставка после конца текущей строки)), I (в режим вставки (перед первым непробелом)), R (в режим замены); режим редактирования строки команды — :, /, ?, !.
Файловые команды: ZZ, :wq — сохранить текущий буфер в файл и завершить работу; Сохраняет файл и выходит из vi; :w — сохранить текущий буфер в файл; :wимя сохранить текущий буфер в файл с указанным именем; :q — выйти из редактора; :e имя — загрузить файл с указанным файлом в буфер редактирования; :n — загрузить следующий файл в списке файлов.
Команды перемещения: CTRL-d — на полстраницы вниз; CTRL-u — на полстраницы вверх; CTRL-f — на страницу вниз; CTRL-b — на страницу вверх; :0 — к началу файла; :n — к строке номер n; :$ — к концу файла ; 0 — к началу строки; ^ — к первому непробелу; $ — к концу строки; <Enter> — к началу следующей строки; — — к началу предыдущей строки; j — на следующую строку; k — на предыдущую строку.
Команды редактирования: CTRL-h — удалить символ слева; CTRL-w — удалить слово слева; CTRL-v — ввести непечатаемый символ; x — удалить текущий символ; D — удалить до конца строки; dd — удалить текущую строку.
Команды поиска и замены: /текст — искать вперед образец текст; ?текст — искать назад образец текст; n — повторить последний поиск в том же направлении; N — повторить последний поиск в обратном направлении; :s/текст/новый_текст/ — заменить первый образец текст на новый_текст; :s/текст/новый_текст/g — заменить все образцы текст на новый_текст.
1.12 Перечень стандартных команд ОС
КомандаПримечания Определение
aliasМП Определить или вывести синонимы
arСР или РАСШ Создать или изменить библиотечные архивы
asaПФ Перевести символы управления кареткой
atМП Исполнить команды в указанное время
awk Сканировать и обработать файл в соответствии с инструкциями
basename Вывести часть полного имени файла, не относящуюся к имени каталога
batchМП Поставить команды в очередь на пакетное исполнение
bc Вычислить арифметическое выражение с заданной точностью
bgМП Запустить задачи в фоновом режиме
break Выйти из цикла for, while или until
c99РС Скомпилировать программу на стандартном Си
calРАСШ Вывести календарь
cat Объединить и вывести файлы
cd Изменить текущий каталог
cflowР РАСШ Построить блок-схему программы на Си
chgrp Изменить группу-хозяина файла
chmod Изменить атрибуты доступа к файлу
chown Изменить хозяина файла
cksum Вывести контрольные суммы и размеры файлов
cmp Сравнить два файла
colon (:) Ничего не делать
comm Выбрать или отбросить совпадающие строки в двух файлах
command Исполнить простую команду
compressРАСШ Сжать данные
continue Продолжить выполнение цикла for, while или until
cp Копировать файлы
crontabМП Поставить задачу в расписание периодического исполнения
csplitМП Разделить файлы на контекстной основе
ctagsР Ф МП Построить файл меток
cut Удалить указанные поля из каждой строки файла
cxrefР РАСШ Построить таблицу перекрестных ссылок программы на Си
date Вывести или установить дату и время
dd Преобразовать и скопировать файл
deltaР РАСШ Внести дельту (изменения) в файл SCCS
dfМП РАСШ Вывести количество свободного места на диске
diff Сравнить два файла
dirname Вывести часть полного имени файла, относящуюся к имени каталога
dot (.) Исполнить команду в текущем окружении
duМП Вывести информацию об использовании файлового пространства
echo Вывести аргументы
ed Редактировать текст
env Установить окружение для запуска команды
eval Составить команду из аргументов и исполнить ее
exМП Редактировать текст
exec Исполнить команду и открыть, закрыть или скопировать дескрипторы файлов
exit Завершить исполнение оболочки
expandМП Перевести табуляции в пробелы
export Сделать переменную экспортируемой
expr Вычислить аргумент как выражение
false Вернуть значение «ложно»
fc Обработать историю команд
fgМП Запустить задачи на переднем плане
fileМП Определить тип файлов
find Найти файлы
fold Свернуть строки
fort77Ф РФ Скомпилировать программу на Фортране
fuserРАСШ Вывести идентификаторы процессов, имеющих открытые файлы
gencatРАСШ Построить каталог форматированных сообщений
getР РАСШ Вывести версию файла SCCS
getconf Вывести значения конфигурации
getopts Разделить ключи утилиты
grep Искать в файле образец
hashРАСШ Запомнить или вывести путь к утилите
head Вывести начало файла
iconv Преобразовать код файла
id Вывести информацию о пользователе
ipcrmРАСШ Удалить очередь сообщений XSI, установки семафора или идентификатор разделяемой памяти
ipcsРАСШ Вывести состояние механизма межпроцессного обмена XSI
jobs МП Вывести состояние задач в текущем сеансе
join Объединить базы данных
kill Завершить процесс или передать ему сигнал
lexР РС Построить программу для лексического анализа
linkРАСШ Вызвать системную функцию link
ln Связать файлы
locale Вывести информацию о локали
localedef Определить переменные локали
logger Занести сообщения в журнал
logname Вывести регистрационное имя пользователя
lp Послать файлы в печать
ls Вывести содержимое каталога
m4Р РАСШ Обработать макросы
mailx Отправить сообщения
makeР СР Построить, обновить или перестроить группы программ
man Вывести системную документацию
mesgМП Разрешить или запретить вывод сообщений
mkdir Создать каталоги
mkfifo Создать специальные файлы очередей
moreМП Вывести файлы постранично
mv Переместить файлы
newgrpМП Перейти в другую группу
niceМП Запустить утилиту с указанным приоритетом
nlРАСШ Пронумеровать строки
nmР МП СР РАСШ Вывести список имен, содержащихся в объектном файле
nohup Запустить утилиту, не завершающуюся по сигналу HUP
od Вывести дамп файла в указанных форматах
paste Слить соответствующие или последующие строки файлов
patch МП Изменить файлы на основе патча
pathchk Проверить пути
pax Обработать переносимый архив
pr Вывести файлы, подготовленные для печати
printf Вывести форматированный текст
prsР Напечатать файл SCCS
psМП РАСШ Вывести состояние процесса
pwd Вывести имя текущего каталога
qalterПИ Изменить пакетную задачу
qdelПИ Удалить пакетные задачи
qholdПИ Задержать пакетные задачи
qmoveПИ Переместить пакетные задачи
qmsg ПИ Послать сообщение пакетным задачам
qrerunПИ Перезапустить пакетные задачи
qrlsПИ Отпустить пакетные задачи
qselectПИ Выбрать пакетные задачи
qsigПИ Отправить сигнал пакетным задачам
qstatПИ Вывести статус пакетных задач
qsubПИ Поставить сценарий в очередь на пакетное исполнение
read Ввести строку
readonly Защитить переменные от переустановки
reniceМП Изменить приоритеты исполняемых процессов
return Вернуться из функции
rm Удалить файлы из каталогов
rmdelР РАСШ Удалить дельту из файла SCCS
rmdir Удалить каталоги
sccsР РАСШ Выполнить действия с файлами SCCS
sactР Вывести текущую активность по редактированию файлов SCCS
sed Редактировать файл поточно
set Установить или сбросить ключи или позиционные параметры
sh Запустить оболочку
shift Сдвинуть список параметров
sleep Задержать исполнение на указанный интервал времени
sort Отсортировать, слить файлы или проверить сортировку файлов
splitМП Разделить файлы на части
stringsМП Найти в файлах символьные строки
stripР СР Удалить из исполняемых файлов лишнюю информацию
stty Установить параметры терминала
tabs Установить позиции табуляции на терминале
tail Вывести конец файла
talkМП Связаться с другим пользователем
tee Дублировать стандартный ввод
test Вычислить выражение
timeМП Хронометрировать простую команду
times Вывести время исполнения процессов
touch Изменить временные атрибуты доступа и модификации файлов
tputМП Изменить характеристики терминала
tr Подставить символы
trap Перехватывать сигналы
true Вернуть значение «истинно»
tsortРАСШ Сортировать топологически
tty Вывести имя терминала пользователя
typeРАСШ Вывести описание типа команды
ulimitРАСШ Установить или вывести ограничение размера файла
umask Установить или вывести маску прав на создаваемые файлы
unalias Удалить определение синонима
uname Вывести имя системы
uncompressРАСШ Разжать сжатые данные
unexpandМП Преобразовать пробелы в табуляции
ungetР РАСШ Откатить ранее выполненное взятие файла SCCS
uniq Вывести или подавить вывод повторяющихся строк в файле
unlinkРАСШ Вызвать функцию ulink
unset Сбросить значения и атрибуты переменных и функций
uucpРАСШ Копировать из системы в систему
uudecodeМП Декодировать двоичный файл
uuencodeМП Закодировать двоичный файл
uustatРАСШ Вывести или изменить состояние uucp
uuxРАСШ Выполнить команду удаленно
valР РАСШ Проверить валидность файла SCCS
viМП Редактировать файл в экранном режиме
wait Ожидать завершение процесса
wc Сосчитать слова, строки или символы в файле
whatР РАСШ Идентифицировать файлы SCCS
whoМП Вывести имена пользователей, зарегистрированных в системе
writeМП Вывести сообщение на терминал другого пользователя
xargsРАСШ Составить из аргументов списки и запустить утилиту
yaccР РАСШ Компилировать компилятор
zcatРАСШ Разжать и объединить данные
Примечания
1.Команды даны согласно ISO/IEC 9945-2001.
2. К субпрофилям стандарта относятся следующие пометы:
Помета Расшифровка
МП Среда, обеспечивающая мобильность пользователей
ПИ Среда пакетного исполнения
Р Среда разработки
РАСШ Расширенная среда исполнения
РС Среда разработки на Си
РФ Среда разработки на Фортране
СР Среда разработки
Ф Фортран
aliasМП Определить или вывести синонимы
arСР или РАСШ Создать или изменить библиотечные архивы
asaПФ Перевести символы управления кареткой
atМП Исполнить команды в указанное время
awk Сканировать и обработать файл в соответствии с инструкциями
basename Вывести часть полного имени файла, не относящуюся к имени каталога
batchМП Поставить команды в очередь на пакетное исполнение
bc Вычислить арифметическое выражение с заданной точностью
bgМП Запустить задачи в фоновом режиме
break Выйти из цикла for, while или until
c99РС Скомпилировать программу на стандартном Си
calРАСШ Вывести календарь
cat Объединить и вывести файлы
cd Изменить текущий каталог
cflowР РАСШ Построить блок-схему программы на Си
chgrp Изменить группу-хозяина файла
chmod Изменить атрибуты доступа к файлу
chown Изменить хозяина файла
cksum Вывести контрольные суммы и размеры файлов
cmp Сравнить два файла
colon (:) Ничего не делать
comm Выбрать или отбросить совпадающие строки в двух файлах
command Исполнить простую команду
compressРАСШ Сжать данные
continue Продолжить выполнение цикла for, while или until
cp Копировать файлы
crontabМП Поставить задачу в расписание периодического исполнения
csplitМП Разделить файлы на контекстной основе
ctagsР Ф МП Построить файл меток
cut Удалить указанные поля из каждой строки файла
cxrefР РАСШ Построить таблицу перекрестных ссылок программы на Си
date Вывести или установить дату и время
dd Преобразовать и скопировать файл
deltaР РАСШ Внести дельту (изменения) в файл SCCS
dfМП РАСШ Вывести количество свободного места на диске
diff Сравнить два файла
dirname Вывести часть полного имени файла, относящуюся к имени каталога
dot (.) Исполнить команду в текущем окружении
duМП Вывести информацию об использовании файлового пространства
echo Вывести аргументы
ed Редактировать текст
env Установить окружение для запуска команды
eval Составить команду из аргументов и исполнить ее
exМП Редактировать текст
exec Исполнить команду и открыть, закрыть или скопировать дескрипторы файлов
exit Завершить исполнение оболочки
expandМП Перевести табуляции в пробелы
export Сделать переменную экспортируемой
expr Вычислить аргумент как выражение
false Вернуть значение «ложно»
fc Обработать историю команд
fgМП Запустить задачи на переднем плане
fileМП Определить тип файлов
find Найти файлы
fold Свернуть строки
fort77Ф РФ Скомпилировать программу на Фортране
fuserРАСШ Вывести идентификаторы процессов, имеющих открытые файлы
gencatРАСШ Построить каталог форматированных сообщений
getР РАСШ Вывести версию файла SCCS
getconf Вывести значения конфигурации
getopts Разделить ключи утилиты
grep Искать в файле образец
hashРАСШ Запомнить или вывести путь к утилите
head Вывести начало файла
iconv Преобразовать код файла
id Вывести информацию о пользователе
ipcrmРАСШ Удалить очередь сообщений XSI, установки семафора или идентификатор разделяемой памяти
ipcsРАСШ Вывести состояние механизма межпроцессного обмена XSI
jobs МП Вывести состояние задач в текущем сеансе
join Объединить базы данных
kill Завершить процесс или передать ему сигнал
lexР РС Построить программу для лексического анализа
linkРАСШ Вызвать системную функцию link
ln Связать файлы
locale Вывести информацию о локали
localedef Определить переменные локали
logger Занести сообщения в журнал
logname Вывести регистрационное имя пользователя
lp Послать файлы в печать
ls Вывести содержимое каталога
m4Р РАСШ Обработать макросы
mailx Отправить сообщения
makeР СР Построить, обновить или перестроить группы программ
man Вывести системную документацию
mesgМП Разрешить или запретить вывод сообщений
mkdir Создать каталоги
mkfifo Создать специальные файлы очередей
moreМП Вывести файлы постранично
mv Переместить файлы
newgrpМП Перейти в другую группу
niceМП Запустить утилиту с указанным приоритетом
nlРАСШ Пронумеровать строки
nmР МП СР РАСШ Вывести список имен, содержащихся в объектном файле
nohup Запустить утилиту, не завершающуюся по сигналу HUP
od Вывести дамп файла в указанных форматах
paste Слить соответствующие или последующие строки файлов
patch МП Изменить файлы на основе патча
pathchk Проверить пути
pax Обработать переносимый архив
pr Вывести файлы, подготовленные для печати
printf Вывести форматированный текст
prsР Напечатать файл SCCS
psМП РАСШ Вывести состояние процесса
pwd Вывести имя текущего каталога
qalterПИ Изменить пакетную задачу
qdelПИ Удалить пакетные задачи
qholdПИ Задержать пакетные задачи
qmoveПИ Переместить пакетные задачи
qmsg ПИ Послать сообщение пакетным задачам
qrerunПИ Перезапустить пакетные задачи
qrlsПИ Отпустить пакетные задачи
qselectПИ Выбрать пакетные задачи
qsigПИ Отправить сигнал пакетным задачам
qstatПИ Вывести статус пакетных задач
qsubПИ Поставить сценарий в очередь на пакетное исполнение
read Ввести строку
readonly Защитить переменные от переустановки
reniceМП Изменить приоритеты исполняемых процессов
return Вернуться из функции
rm Удалить файлы из каталогов
rmdelР РАСШ Удалить дельту из файла SCCS
rmdir Удалить каталоги
sccsР РАСШ Выполнить действия с файлами SCCS
sactР Вывести текущую активность по редактированию файлов SCCS
sed Редактировать файл поточно
set Установить или сбросить ключи или позиционные параметры
sh Запустить оболочку
shift Сдвинуть список параметров
sleep Задержать исполнение на указанный интервал времени
sort Отсортировать, слить файлы или проверить сортировку файлов
splitМП Разделить файлы на части
stringsМП Найти в файлах символьные строки
stripР СР Удалить из исполняемых файлов лишнюю информацию
stty Установить параметры терминала
tabs Установить позиции табуляции на терминале
tail Вывести конец файла
talkМП Связаться с другим пользователем
tee Дублировать стандартный ввод
test Вычислить выражение
timeМП Хронометрировать простую команду
times Вывести время исполнения процессов
touch Изменить временные атрибуты доступа и модификации файлов
tputМП Изменить характеристики терминала
tr Подставить символы
trap Перехватывать сигналы
true Вернуть значение «истинно»
tsortРАСШ Сортировать топологически
tty Вывести имя терминала пользователя
typeРАСШ Вывести описание типа команды
ulimitРАСШ Установить или вывести ограничение размера файла
umask Установить или вывести маску прав на создаваемые файлы
unalias Удалить определение синонима
uname Вывести имя системы
uncompressРАСШ Разжать сжатые данные
unexpandМП Преобразовать пробелы в табуляции
ungetР РАСШ Откатить ранее выполненное взятие файла SCCS
uniq Вывести или подавить вывод повторяющихся строк в файле
unlinkРАСШ Вызвать функцию ulink
unset Сбросить значения и атрибуты переменных и функций
uucpРАСШ Копировать из системы в систему
uudecodeМП Декодировать двоичный файл
uuencodeМП Закодировать двоичный файл
uustatРАСШ Вывести или изменить состояние uucp
uuxРАСШ Выполнить команду удаленно
valР РАСШ Проверить валидность файла SCCS
viМП Редактировать файл в экранном режиме
wait Ожидать завершение процесса
wc Сосчитать слова, строки или символы в файле
whatР РАСШ Идентифицировать файлы SCCS
whoМП Вывести имена пользователей, зарегистрированных в системе
writeМП Вывести сообщение на терминал другого пользователя
xargsРАСШ Составить из аргументов списки и запустить утилиту
yaccР РАСШ Компилировать компилятор
zcatРАСШ Разжать и объединить данные
Примечания
1.Команды даны согласно ISO/IEC 9945-2001.
2. К субпрофилям стандарта относятся следующие пометы:
Помета Расшифровка
МП Среда, обеспечивающая мобильность пользователей
ПИ Среда пакетного исполнения
Р Среда разработки
РАСШ Расширенная среда исполнения
РС Среда разработки на Си
РФ Среда разработки на Фортране
СР Среда разработки
Ф Фортран
Глава 2. Графический пользовательский интерфейс
До середины девяностых существовали отдельно компьютерная графика и отдельно — настольные игры в компьютерную графику. Помнящие историю отечественной школьной информатизации читатели, возможно, сталкивались с чудом техники под названием «цифровой дисплей растровый» (ЦДР), которое удавалось подключить к первому отечественному персональному компьютеру ДВК, чтобы отображать на экране телевизора несколько тысяч пикселов в четырех цветах. В то время в Лабораториях Компьютерной Графики некоторых вузов можно было встретить Графические Рабочие Станции с векторными устройствами и X-терминалами, и даже плоттерами.
Закон Мура тем временем делал свое (в данном случае, не черное, а многоцветное) дело, и к середине девяностых на компьютере с процессором Intel 486 уже запускалась та самая система, которую пятью годами раньше наблюдать можно было лишь на X-терминалах и графических станциях, стоивших каких-то немыслимых (что по тем временам, что сегодня) денег.
Игры в самодельную графику, конечно, продолжаются и сегодня, но в целом мир воссоединился, и особой нужды в таких играх давно нет. Хотя — такова диалектика массовых рынков — именно эти игры (включая игры в буквальном смысле) породили спрос на дешевые устройства (прежде всего, графические акселераторы), которые и делают настоящую компьютерную графику доступной пользователю массовой x86— и PowerPC-техники, даже устаревшие «персоналки» — сопоставимыми с X-терминалами, а более новые и мощные — соперниками и с профессиональных графических рабочих станций начального и среднего уровня.
Закон Мура тем временем делал свое (в данном случае, не черное, а многоцветное) дело, и к середине девяностых на компьютере с процессором Intel 486 уже запускалась та самая система, которую пятью годами раньше наблюдать можно было лишь на X-терминалах и графических станциях, стоивших каких-то немыслимых (что по тем временам, что сегодня) денег.
Игры в самодельную графику, конечно, продолжаются и сегодня, но в целом мир воссоединился, и особой нужды в таких играх давно нет. Хотя — такова диалектика массовых рынков — именно эти игры (включая игры в буквальном смысле) породили спрос на дешевые устройства (прежде всего, графические акселераторы), которые и делают настоящую компьютерную графику доступной пользователю массовой x86— и PowerPC-техники, даже устаревшие «персоналки» — сопоставимыми с X-терминалами, а более новые и мощные — соперниками и с профессиональных графических рабочих станций начального и среднего уровня.
2.1 Оконная система «Икс» и XFree86
Оконная система «Икс» — один из самых больших и успешных проектов в истории компьютерной техники — восходит к 1984 г., когда разработчики двух систем компьютерной графики, претендующих на универсальность — проектов Athena (Массачусетский технологический институт) и W Windowing (Стэнфордский университет) — решили объединить свои усилия. С тех пор практически каждая компания, серьезно занимающаяся графикой, считала своим долгом внести какие-либо разработки в систему, формальным «хозяином» которой в 1987 г. стал вновь созданный X Consortium (ныне Open Group, www.X.org).
С тех пор «Икс» прошла через одиннадцать основных релизов и множество версий.
Дальнейшее изложение ориентировано на свободную реализацию «Икс», которая называется XFree86, поддерживается одноименным партнерством (www.xfree86.org) и воплощает на сегодня версию 4.2 текущего релиза. XFree86 — самая популярная реализация «Икс», она поставляется в составе подавляющего большинства открытых систем (как свободных, так и несвободных) для x86-совместимых компьютеров, поддерживает беспрецедентно широкий спектр оборудования и, благодаря доступности исходных текстов и пользовательской аудитории в десятки миллионов человек, достаточно «вылизана», по крайней мере, насколько это возможно для такого разнообразия «железа». Несмотря на то, что исторически цифры «86» в названии пакета относятся к соответствующему семейству процессоров от Intel, современные версии XFree86 реализованы для большинства других популярных процессоров. XFree86 доступен и для некоторых альтернативных архитектур ОС, включая «Майкрософт Уиндоуз НТ».
Большинство нижесказанного справедливо для любой реализации «Икс» на любом оборудовании и под любой ОС, список которых можно найти на www.X.org.
С тех пор «Икс» прошла через одиннадцать основных релизов и множество версий.
Дальнейшее изложение ориентировано на свободную реализацию «Икс», которая называется XFree86, поддерживается одноименным партнерством (www.xfree86.org) и воплощает на сегодня версию 4.2 текущего релиза. XFree86 — самая популярная реализация «Икс», она поставляется в составе подавляющего большинства открытых систем (как свободных, так и несвободных) для x86-совместимых компьютеров, поддерживает беспрецедентно широкий спектр оборудования и, благодаря доступности исходных текстов и пользовательской аудитории в десятки миллионов человек, достаточно «вылизана», по крайней мере, насколько это возможно для такого разнообразия «железа». Несмотря на то, что исторически цифры «86» в названии пакета относятся к соответствующему семейству процессоров от Intel, современные версии XFree86 реализованы для большинства других популярных процессоров. XFree86 доступен и для некоторых альтернативных архитектур ОС, включая «Майкрософт Уиндоуз НТ».
Большинство нижесказанного справедливо для любой реализации «Икс» на любом оборудовании и под любой ОС, список которых можно найти на www.X.org.
2.2 Цветной сэндвич
То, что пользователю, сидящему за монитором, представляется сплошной графической операционной средой, реализовано как многослойный сэндвич технологий.
Непосредственно с оборудованием (видеосистемой, устройствами ввода и динамиком) работает Икс-сервер. Эта программа захватывает оборудование и предоставляет его возможности другим программам как ресурсы (собственно, именно поэтому она и называется сервером) по особому протоколу, который так и называется, Икс-протокол. Перечисленное оборудование в совокупности называется Икс-терминалом (аппаратным Икс-терминалом называется и специализированный компьютер, на котором исполняется исключительно Икс-сервер).
Здесь сразу видно отличие «Икс» от большинства самодельных систем графики, используемых в проприетарных системах: взаимодействие Икс-сервера с его многочисленной клиентурой происходит по специфицированному протоколу, который может туннелироваться через TCP/IP и, соответственно, клиенты и сервер могут исполняться на разных узлах Сети. Это означает, что одни и те же программы могут эксплуатироваться в разных топологиях, включая совокупность автономных рабочих станций («персональных компьютеров»), совокупность рабочих станций без данных или бездисковых рабочих станций («локальная сеть»), многопользовательскую систему с Икс-терминалами (или какую-либо гибридную топологию).
Еще одним ресурсом, который предоставляет Икс-сервер, являются шрифты. Оперировать шрифтами он может самостоятельно, либо с помощью другой программы, которая называется фонт-сервером и обеспечивает их масштабирование.
Большинство пользователей, установив систему, получают в свое распоряжение готовую графическую среду. Мы поступим иначе — будем разбираться с ней по слоям.
Непосредственно с оборудованием (видеосистемой, устройствами ввода и динамиком) работает Икс-сервер. Эта программа захватывает оборудование и предоставляет его возможности другим программам как ресурсы (собственно, именно поэтому она и называется сервером) по особому протоколу, который так и называется, Икс-протокол. Перечисленное оборудование в совокупности называется Икс-терминалом (аппаратным Икс-терминалом называется и специализированный компьютер, на котором исполняется исключительно Икс-сервер).
Здесь сразу видно отличие «Икс» от большинства самодельных систем графики, используемых в проприетарных системах: взаимодействие Икс-сервера с его многочисленной клиентурой происходит по специфицированному протоколу, который может туннелироваться через TCP/IP и, соответственно, клиенты и сервер могут исполняться на разных узлах Сети. Это означает, что одни и те же программы могут эксплуатироваться в разных топологиях, включая совокупность автономных рабочих станций («персональных компьютеров»), совокупность рабочих станций без данных или бездисковых рабочих станций («локальная сеть»), многопользовательскую систему с Икс-терминалами (или какую-либо гибридную топологию).
Еще одним ресурсом, который предоставляет Икс-сервер, являются шрифты. Оперировать шрифтами он может самостоятельно, либо с помощью другой программы, которая называется фонт-сервером и обеспечивает их масштабирование.
Большинство пользователей, установив систему, получают в свое распоряжение готовую графическую среду. Мы поступим иначе — будем разбираться с ней по слоям.
2.3 «Чистая» «Икс»
На Рис. 2-1 изображена «голая» оконная система «Икс» — то, с чем большинство пользователей никогда не сталкивается. Запустить ее обычно можно, подав команду: «X &».
Запустив несколько экземпляров того же «xterm» (и почитав документацию) можно обнаружить, что и «голышом» «Икс» умеет не так мало. Например, оперирует буфером обмена текстом между приложениями и предоставляет текстовым приложениям такой ресурс, как полосу прокрутки (забавная полоска, скроллировать текст с помощью которой вверх или вниз можно, щелкая по ней разными кнопками мыши, — это наследие проекта «Athena»).
Есть ли польза от системы, работающей с фиксированными окнами? Да, если вспомнить, что «универсальный десктоп» — не единственная сфера применения компьютера. Можно запустить при загрузке «Икс» и браузер на весь экран и получить гипермедийный киоск по цене персонального компьютера. А можно посадить за тот же браузер оператора, который будет через него весь день «рулить» базу данных.
Но мы пойдем дальше. Итак, основная работа Икс-сервера — создавать окна и предоставлять клиентским приложениям возможности работы в них. Для того, чтобы работать с окнами, нужна другая программа, которая так и называется — менеджер окон (window manager).
Рис. 2-1
Мы видим традиционный серый экран с не менее традиционным курсором в виде буквы «x». Используя мышь или другое координатное устройство, курсор можно перемещать по экрану. На нажатие кнопок мыши и клавиш никакой видимой реакции не следует. И невидимой тоже — сервер готов передавать эти сигналы своим клиентам, а клиенты пока не запущены. Хотя на самом деле некоторые комбинации клавиш «Икс» перехватывает и обрабатывает. Это Zap (Control-Alt-Backspace) — завершение работы сервера (если эта возможность не запрещена при конфигурации), Zoom (Control-Alt-+ и Control-Alt—) — «горячее» переключение доступных видеорежимов. В некоторых ОС (Например, «ГНУ/Линукс») Control-Alt в сочетании с функциональной клавишей освобождает оборудование и передает его на время соответствующей виртуальной консоли.Рис. 2-2
Воспользуемся последней возможностью, перейдем на консоль и запустим первое клиентское приложение: программу «xterm» (Рис. 2-2). На экране «Икс» появилось окно, а в окне можно видеть интерфейс клиентского приложения. В данном случае интерфейс текстовый, а приложение — эмулятор терминала, на котором запущена диалоговая оболочка системы по умолчанию. С эмулятором можно делать все то же, что и с обычным терминалом: издавать команды, получать результат и запускать другие программы. Если программы текстовые (строчные или оконные), исполняться они будут в том же окне, а если графические (как и сам «xterm») — в отдельных окнах.Рис. 2-3
Запустим программу «xclock» (Рис. 2-3). При ее запуске мы использовали несколько параметров, задающих геометрию (местоположение и размер) вновь порождаемого окна, цвет его фона и шрифта по умолчанию, толщину и цвет рамки. Эти (и некоторые другие) параметры типичны для программ, построенных на основе графической библиотеки «X Toolkit». Значения параметров, заданные при вызове программы, могут быть перекрыты самим запускающимся приложением, кроме опции геометрии. Дело в том, что окно выделяется клиентскому приложению при запуске, и все доступные ему ресурсы этим окном и ограничены — это свойство X-протокола.Запустив несколько экземпляров того же «xterm» (и почитав документацию) можно обнаружить, что и «голышом» «Икс» умеет не так мало. Например, оперирует буфером обмена текстом между приложениями и предоставляет текстовым приложениям такой ресурс, как полосу прокрутки (забавная полоска, скроллировать текст с помощью которой вверх или вниз можно, щелкая по ней разными кнопками мыши, — это наследие проекта «Athena»).
Есть ли польза от системы, работающей с фиксированными окнами? Да, если вспомнить, что «универсальный десктоп» — не единственная сфера применения компьютера. Можно запустить при загрузке «Икс» и браузер на весь экран и получить гипермедийный киоск по цене персонального компьютера. А можно посадить за тот же браузер оператора, который будет через него весь день «рулить» базу данных.
Но мы пойдем дальше. Итак, основная работа Икс-сервера — создавать окна и предоставлять клиентским приложениям возможности работы в них. Для того, чтобы работать с окнами, нужна другая программа, которая так и называется — менеджер окон (window manager).
2.4 Окноводы
Как же менеджер окон преодолевает указанное ограничение X-протокола? Никак — просто выделенным ему окном является весь экран. (На самом деле, менеджер окон — не единственная программа, способная работать с «корневым» окном; например, входящая в комплект поставки «xsetroot» позволяет установить цвет фона или поместить на него рисунок.)
Менеджеров окон существует превеликое множество — под любой набор задач, которые может решать графическая многооконная система. Их настолько много, что выбрать какой-нибудь в качестве «типичного представителя семейства» затруднительно. Поэтому выберем один из самых развитых — Enlightenment.
«Просвещение» (www.Enlightenment.org) создано Карстеном Хайцлером и Джеффом Харрисоном (Carsten Haitzler, Geoff Harrison) и его текущая версия — 0.16.5. До 2000 г. он был «штатным» менеджером окон в популярной среде «Гном» (см. раздел 2.17), затем уступив это место менее функциональной, но более быстрой «Рыбе-пиле» (Sawfish). Он продолжает оставаться «Гном»-совместимым, и многие пользователи этого популярного десктоп-менеджера предпочитают его, хотя и без «Гном» у Enlightenment поклонников хватает.
Первое, что мы видим — это появившиеся вокруг окна нашего xterm «виджеты» (элементы окон) — строка заголовка с кнопками и рамка. Окно теперь можно перемещать по экрану, «ухватив» за заголовок, масштабировать, «взяв» за бок или за угол, максимизировать, минимизировать или закрыть, нажав соответствующую кнопку. Спрашивается, что еще можно делать с окном?
Собственно, управление окнами — основная функция оконного менеджера, и на этом его функциональность может и заканчиваться. Однако большинство из них выполняют по крайней мере еще одну функцию.
Лишь один пример: сколько способов визуализировать перемещение окна вы знаете? Разработчики «Просвещения» придумали целых шесть, включая фантастический «полупрозрачный». Настройки и расширения Enlightenment можно объединять в «темы» (themes) и обмениваться ими.
Собственно, на этом функции оконного менеджера как такового и заканчиваются, а дальше Enlightenment вторгается во владения другого класса программ — менеджеров рабочего стола...
Менеджеров окон существует превеликое множество — под любой набор задач, которые может решать графическая многооконная система. Их настолько много, что выбрать какой-нибудь в качестве «типичного представителя семейства» затруднительно. Поэтому выберем один из самых развитых — Enlightenment.
«Просвещение» (www.Enlightenment.org) создано Карстеном Хайцлером и Джеффом Харрисоном (Carsten Haitzler, Geoff Harrison) и его текущая версия — 0.16.5. До 2000 г. он был «штатным» менеджером окон в популярной среде «Гном» (см. раздел 2.17), затем уступив это место менее функциональной, но более быстрой «Рыбе-пиле» (Sawfish). Он продолжает оставаться «Гном»-совместимым, и многие пользователи этого популярного десктоп-менеджера предпочитают его, хотя и без «Гном» у Enlightenment поклонников хватает.
Рис. 2-4
Запустим «Просвещение» (Рис. 2-4). Как резко изменилась картина!Первое, что мы видим — это появившиеся вокруг окна нашего xterm «виджеты» (элементы окон) — строка заголовка с кнопками и рамка. Окно теперь можно перемещать по экрану, «ухватив» за заголовок, масштабировать, «взяв» за бок или за угол, максимизировать, минимизировать или закрыть, нажав соответствующую кнопку. Спрашивается, что еще можно делать с окном?
Рис. 2-5
Вопрос не праздный. Нажав на левую кнопку в заголовке, получаем неожиданно разнообразное меню (меню — это тоже «виджет») таких действий (Рис. 2-5). Оказывается, его можно еще уничтожить (Annihilate), поднять/опустить (Raise/Lower), оттенить/растенить (Shade/Unshade) приклеить/отклеить (Stick/Unstick) и выполнить еще массу действий, для которых потребовались отдельные меню! Набор этих действий зависит от конкретного менеджера окон (и Enlightenment — один из самых богатых возможностями), а то, какие из них выведены в строку заголовка отдельными кнопками — вообще от его настройки.Собственно, управление окнами — основная функция оконного менеджера, и на этом его функциональность может и заканчиваться. Однако большинство из них выполняют по крайней мере еще одну функцию.
Рис. 2-6
Вы уже обратили внимание на то, что при запуске «Просвещения» на экране появилось еще одно окно. Это так называемый пейджер (pager), на Рис. 2-6 он изображен крупным планом. На пейджере представлена миниатюрная копия экрана, обновляющаяся в режиме реального времени, причем, если подвести курсор к изображению отдельного окна, оно увеличивается и рядом высвечивается название приложения, запущенного в нем. Но почему экран занимает только четверть окна пейджера? Потому что оконный менеджер позволяет оперировать «виртуальным столом, по размеру превышающим физический экран, а пейджер — одно из средств перемещения физического экрана по рабочему столу. Enlightenment позволяет создавать до 64 экранов на рабочем столе.Рис. 2-7
Еще один важный компонент Enlightenment мы не увидели сразу: это меню настройки самого менеджера, которое можно «достать», щелкнув правой кнопкой мыши на фоне экрана (Рис. 2-7). Порывшись в настройках, можно обнаружить, что вышесказанное о способах оперирования с этим менеджером весьма условно, потому что поменять можно буквально все, от декора виджетов до количества и функций элементов оформления окон и их реакции на различные действия.Лишь один пример: сколько способов визуализировать перемещение окна вы знаете? Разработчики «Просвещения» придумали целых шесть, включая фантастический «полупрозрачный». Настройки и расширения Enlightenment можно объединять в «темы» (themes) и обмениваться ими.
Собственно, на этом функции оконного менеджера как такового и заканчиваются, а дальше Enlightenment вторгается во владения другого класса программ — менеджеров рабочего стола...
2.5 Столоначальники
...Что демонстрирует отсутствие резкой границы между ними. Существует два подхода к тому, чтобы достроить оконную систему до полнофункциональной среды. Первый — добавить в «графический сэндвич» еще один слой — менеджер рабочего стола — работающий «поверх» оконного менеджера и использующий функциональность последнего. Этим путем идут команды разработчиков «ГНОМ» (см. раздел 2.17) и «КДЕ» (см. раздел 2.18).
Другой путь — «дотянуть» до полнофункциональной среды функциональность самого оконного менеджера, и им идет «Enlightenment» и ряд других проектов.
Чего нам не хватает до полнофункциональной среды? Менеджера программ и утилит. Так вот, в «Просвещении» есть и такая функциональность, доступная (по умолчанию) по щелчку на фоне левой кнопкой.
Комментировать здесь особо нечего: пункты меню позволяют запустить множество различных приложений, причем, кроме независимо разработанных, и целую пачку «эпплетов», поставляемых вместе с «Enlightenment». Альтернативный способ запуска — через «панель» — встроен в некоторые темы «Просвещения».
Откуда берутся такие ресурсы, как «виджеты» с их декором и способом поведения? Конечно, менеджер окон может содержать их в себе. Но такой подход не очень характерен для открытых систем, одним из принципов разработки которых является компонентность. Большинство развитых оконных менеджеров, менеджеров рабочего стола и «заточенных» под них приложений можно сгруппировать по библиотекам (toolkits), с опорой на которые они разработаны.
Другой путь — «дотянуть» до полнофункциональной среды функциональность самого оконного менеджера, и им идет «Enlightenment» и ряд других проектов.
Чего нам не хватает до полнофункциональной среды? Менеджера программ и утилит. Так вот, в «Просвещении» есть и такая функциональность, доступная (по умолчанию) по щелчку на фоне левой кнопкой.
Комментировать здесь особо нечего: пункты меню позволяют запустить множество различных приложений, причем, кроме независимо разработанных, и целую пачку «эпплетов», поставляемых вместе с «Enlightenment». Альтернативный способ запуска — через «панель» — встроен в некоторые темы «Просвещения».
Откуда берутся такие ресурсы, как «виджеты» с их декором и способом поведения? Конечно, менеджер окон может содержать их в себе. Но такой подход не очень характерен для открытых систем, одним из принципов разработки которых является компонентность. Большинство развитых оконных менеджеров, менеджеров рабочего стола и «заточенных» под них приложений можно сгруппировать по библиотекам (toolkits), с опорой на которые они разработаны.