Как работать в X -- использование MWM
Основные отличия от Win95
Хотя раздел и озаглавлен "Использование MWM", реально в Linux
применяется не настоящий MWM (Motif Window Manager), который является
платным, а свободно распространяемый Fvwm2, "загримированный" под MWM.
Хотя в других window manager'ах могут использоваться иное оформление,
клавиши и меню, по функциям они достаточно похожи.
В данном разделе предполагается, что читатель знаком с графическим
интерфейсом системы Windows95 или WindowsNT 4.
Первым отличием является то, что для того, чтобы активизировать
окно, не нужно щелкать на нем мышью -- достаточно просто навести на
него курсор. При этом окно "подсвечивается" -- цвет рамки из серого
превращается в бирюзовый. При этом, даже если окно почти полностью
закрыто другим окном, оно все равно является активным. К примеру, окно
xterm будет принимать команды с клавиатуры, даже если курсор
мыши стоит на самом его уголке, а остальная часть скрыта.
Про активное окно говорят, что ему принадлежит "фокус ввода".
Операция активизации окна называется "фокусированием".
Второе отличие -- то, что даже щелчок мышью на окне не "вытаскивает"
его поверх остальных окон. Для этого надо щелкнуть на его заголовке.
Третье отличие -- в большинстве window manager'ов нет стандартной
комбинации клавиш для закрытия окна (наподобие Alt+F4), поскольку
большая часть подобных действий выполняется в X при помощи мыши.
И, наконец, в Mwm отсутствует как "Панель задач" с кнопкой "Пуск" --
их функции выполняют меню, вызываемые мышью, так и большое количество
пиктограмм на рабочем столе (которые в Win95/NT все равно совершенно
бесполезны, поскольку большую часть закрыты каким-нибудь окном).
Меню, вызываемые мышью
Нажатием кнопки мыши на свободном пространстве экрана вызывается
одно из трех меню.
|
Основное меню |
|
Меню программ |
ЛЕВАЯ кнопка -- основное меню (аналог кнопки "Start" в
Win95/NT).
ПРАВАЯ -- меню программ (оно есть и в основном меню).
СРЕДНЯЯ -- список открытых на экране окон (это аналог панели
задач в Win95/NT).
Запуск программ
Чаще всего требуется открыть дополнительное окно xterm.
Для этого достаточно выбрать из главного меню пункт
.
Большинство остальных программ присутствуют в меню "Programs". Если
же какую-то программу там найти не удается, но ее имя известно, то
можно запустить ее прямо из окна xterm -- к примеру, для
Netscape это будет... догадайтесь что -- правильно, "netscape".
Операции с окнами
Большую часть операций с окнами можно сделать мышью при помощи
элементов оформления.
|
Элементы декорации окна |
Передвинуть окно можно за заголовок; чтобы изменить размер,
достаточно "потянуть" за край окна. Чтобы "вытащить" окно поверх всех
других, надо щелкнуть на его заголовке. Если заголовок скрыт другими
окнами, то можно щелкнуть правой кнопкой мыши на любой части
рамки (кроме кнопочек). Повторный щелчок правой кнопкой "погружает"
окно так, что оно оказывается снизу всех остальных. Двойной щелчок на
кнопке закрывает окно.
|
Меню операций с окнами |
При нажатии на кнопку появляется меню
дополнительных операций с окнами.
Пункт сворачивает окно в пиктограмму.
Пункты и максимально
растягивают окно по вертикали и по горизонтали, соответственно.
Пункт закрывает окно.
Пункт используется, когда программа
"зависла" и не реагирует на команду закрытия окна. При этом она будет
просто насильно отсоединена от X-сервера (именно вся программа, а не
только это окно!).
У некоторых окон нет оформления, и, казалось бы, их нельзя ни
передвинуть, ни закрыть -- ведь нет способа вызвать меню. Но в главном
меню есть пункт , за которым скрывается точно
такое же меню операций с окнами. Выбрав из него, к примеру, пункт
, надо щелкнуть мышью (курсор которой
превратится при этом в "череп с костями") на окне, которое хочется
закрыть.
Пункт создает на экране линейку
инструментов, позволяющую выполнить любую команду из меню "Window
Operations".
|
Линейка инструментов для манипуляций с окнами |
Блокировка экрана
В отличие от Windows, X-Window после некоторого времени бездействия
пользователя просто отключает монитор, но сама не вызывает
программу-"хранитель экрана" (screen saver). Если пользователь хочет
насладиться красивыми заставками, то он должен сам вызвать из главного
меню программу-заставку, которая по совместительству позволяет
заблокировать доступ к компьютеру. Для этого служит пункт
.
При нажатии на нем появляется окно, которое позволяет выбрать тип
заставки (их число далеко за полсотни и увеличивается с каждой новой
версией программы) и действие -- запустить заставку (Screen Saver) или
заблокировать экран (Lock Screen).
По умолчанию выбран тип заставки "Random", который случайным образом
меняет вид заставки примерно раз в минуту.
Курсор мыши автоматически ставится на кнопку "Lock Screen", так что
если надо срочно куда-то уйти, заблокировав компьютер, надо после
нажатия на "Lock Screen/Screen Saver" просто еще раз щелкнуть мышью.
Выход и переход в другой window manager
Для выхода из X-Window надо в основном меню выбрать пункт
, а в нем нажать для подтверждения
.
Если же в меню "Exit Fvwm" зайти в подменю
, то можно переключиться на другой window
manager. В зависимости от того, какое программное обеспечение
установлено, там будут пункты "Fvwm95" -- Fvwm в режиме
имитации Windows95, "Lesstif WM" -- собственно Fvwm в
режиме MWM, "AfterStep" и "WindowMaker".
Виртуальный десктоп
Одним из самых больших удобств интерфейса X-Window является так
называемый виртуальный десктоп, или виртуальный экран (хотя его
аналоги есть в Win95/NT, вследствие слабой интеграции с системой
работают они не слишком хорошо).
Дословно "desktop" -- это рабочая поверхность стола (или сокращенно
просто "рабочий стол"), но из-за громоздкости перевода используется
англоязычный термин.
Виртуальный десктоп -- это возможность работать не с одним экраном,
на который надо "упихать" все окна (а их зачастую открывают по
несколько десятков), а с несколькими одновременно, быстро переключаясь
между ними при помощи мыши или клавиатуры.
Технически виртуальный десктоп делается за счет того, что реальный
размер рабочего стола не один экран, а, например, 3x3, и на мониторе
отображается лишь какая-то его часть -- аналогично тому, как в окне
текстового редактора отображается лишь часть текста, а остальное скрыто
за границами, но тоже может быть просмотрено. Так, если окно "увезти
за заголовок" так, что часть его будет скрыта за низом экрана, то эта
скрытая часть будет "свисать сверху" в том экране, что расположен ниже.
В правом нижнем углу экрана расположено маленькое неприметное
окошко.
Левая его часть занята индикатором занятости компьютера, а вот
правая -- это "карта" виртуального десктопа, на которой каждый экран
отделен пунктирными линиями, а открытые окна отображаются маленькими
прямоугольничками (пропорционально реальному размеру). Текущий экран (в
данном случае левый средний) подсвечен розовым.
Переключиться в другой экран можно, щелкнув мышью на его изображении
на "карте". Другой вариант -- можно "переходить" между экранами при
помощи Shift+Ctrl+Alt+клавиши со стрелками.
Переместить окно в другой экран можно, "перетащив" его изображение
на "карте" средней кнопкой мыши.
Вообще говоря, в искусство работы в X-Window входит умение поудобнее
"раскидать" окна по экранам. При этом даже отпадает потребность
сворачивать окна в пиктограммы -- поскольку все окна в своих экранах,
то они не закрывают друг дружку, и переключение между ними производится
простым переходом между экранами.
Замечание.
На приведенной выше иллюстрации на "карте" даже не один виртуальный
десктоп, а целых два независимых -- один под названием "Desk", а другой
-- "Apps". Это стандартная настройка Fvwm, хотя второй используется
довольно редко.
Кроме того, по умолчанию размер десктопа -- 2x2, поскольку
предполагается использование и "Desk", и "Apps", но удобнее оказывается
обходиться одним экземпляром десктопа, сделав его размером 3x3.
Несколько стандартных прикладных программ
Особенности программ на основе Athena Widgets
Как указывалось выше, значительное количество программ сделано на основе
библиотеки интерфейсных элементов под названием "Athena Widgets". Библиотека это
довольно старая, и программы выглядят несколько необычно.
Первое отличие -- это линейки прокрутки (scrollbars). Мало того, что на них
нет стрелочек, а только бегунок, они еще и весьма "нестандартно" реагируют на
мышь.
Для того, чтобы передвинуть бегунок, надо нажать на нем среднюю
кнопку мыши. При этом мышь необязательно должна быть на бегунке -- он сам
"прыгнет" к курсору. Если не отпуская кнопку мыши передвигать курсор, то бегунок
будет ездить за ним.
Второе отличие -- то, что после вызова меню кнопкой мыши нельзя отпускать
кнопку -- иначе меню исчезнет. Нужно не отпуская кнопку подвести курсор к
нужному пункту, и тогда отпустить.
Третье -- некоторые программы (например, xedit) используют принцип
"Focus Follows Mouse" -- например, если на экране есть несколько полей ввода
текста, то активным является то, над которым находится курсор мыши.
Эмулятор консоли: xterm
Для того, чтобы можно было вводить команды Unix как на консоли, служит
программа xterm -- эмулятор терминала. В Linux используется его
улучшенная версия -- nxterm.
В левой части окна расположена линейка прокрутки, позволяющая "заглянуть
назад" и увидеть то, что уже скрылось за пределами экрана. При помощи клавиш
<Shift+PgUp> и <Shift+PgDn> можно добиться того же.
Нажав одновременно <Ctrl> и одну из кнопок мыши, можно вызвать одно из
трех меню xterm.
По <Ctrl+ЛеваяКнопка> появляется меню "Main Options", которое
используется крайне редко.
По <Ctrl+ПраваяКнопка> появляется меню "VT Fonts", которое позволяет
сменить шрифт. По умолчанию используется шрифт, уставленный как "Delault",
остальные пункты позволяют выбрать шрифт от "Unreadable" (нечитабельный) до
"Huge" -- очень большой.
И, наконец, <Ctrl+СредняяКнопка> вызывает меню "VT Options",
содержащее около двух десятков пунктов. Остановимся лишь на самых полезных из
них.
- Enable Scrollbar
- включает/выключает линейку прокрутки (редко кому
надо ее убирать, но иногда она по умолчанию бывает выключена -- тогда надо
знать, как ее включить).
- Enable Reverse Video
- меняет цвета букв и фона -- если выбрать эту
опцию при белых буквах на черном фоне, то буквы станут черными, а фон -- белым.
- Scroll to Bottom on Tty Output
- позволяет отключить автоматическое
"перепрыгивание" окна вниз (в текущую область) при выводе на экран.
- Do Soft Reset и Do Full Reset
- сбрасывают внутренние
настройки терминала в начальное состояние -- это требуется, например, когда
какая-то программа привела терминал в такое состояние, что вместо букв
отображаются всякие странные символы.
- Reset and Clear Saved Lines
- делает то же, что и Full Reset, но
при этом еще и "забывает" строки, "уехавшие" за верх экрана.
Текстовый редактор: xedit
В любой версии X-Window есть простейший текстовый редактор под названием
xedit, по возможностям примерно эквивалентный программе Notepad в
Windows.
|
Текстовый редактор xedit |
Хотя xedit довольно примитивен, он имеется всегда, и при этом он не
столь "неудобоварим" для обычного пользователя, как vi.
В верхней части окна располагаются кнопки [Quit], [Save] и
[Load], отвечающие за выход, сохранение файла и загрузку файла
соответственно. Если нажать на [Quit], когда в файл были внесены
изменения, то xedit откажется выйти -- надо будет нажать
[Quit] повторно.
Справа от кнопок расположено поле для ввода имени файла. Достаточно просто
навести на него мышь и набрать нужное, а затем нажать [Save] или
[Load] -- в первом случае файл будет сохранен под указанным именем, во
втором случае будет загружен указанный файл.
Текст файла располагается в самой нижней части окна -- для ввода и
редактирования надо навести туда мышь. Полное описание всех клавиш, используемых
при редактировании, можно найти на man-странице по xedit.
Графический просмотр man-страниц: xman
Программа xman служит для интерактивного выбора и просмотра
man-страниц. При ее запуске появляется маленькое окошко (иногда даже без
обрамления).
|
Основное окно программы xman |
При нажатии на кнопку [Manual Page] появляется окно с кнопками-меню
[Options] и [Sections] сверху. Выбрав раздел из меню
[Sections], можно затем выбрать в нем интересующую страницу и щелкнуть
на ее названии мышью. Посмотреть другую страницу можно, заново нажав
[Sections] и т.д. Чтобы для каждой страницы не приходилось заново идти в
[Sections], можно выбрать в меню [Options] пункт
[ShowBoth Screens] -- при этом на экране одновременно будут отображаться и список
страниц, и текущая страница.
Пункт [Search] из меню [Options] позволяет найти страницу по
ее имени.
Xman позволяет открыть одновременно несколько окон -- для этого
надо просто несколько раз нажать на кнопку [Manual Page]. Убрать лишнее
окно можно, просто закрыв его. Кнопка [Help] дает довольно подробную
справку по использованию xman.
Основные недостатки xman -- то, что он не позволяет вести поиск
внутри страницы, а также то, что по умолчанию им совершенно невозможно
пользоваться без мыши.
Калькулятор: xcalc
|
Калькулятор xcalc |
Xcalc -- это простейший калькулятор, который умеет выполнять
основные арифметические действия, считать тригонометрические функции и позволяет
считать "сложные" выражения со скобками. (Xcalc -- это полная копия
калькулятора Texas Instruments TI-30.)
Большую часть "кнопок" можно нажимать как мышью, так и с клавиатуры. Для
выходя служит клавиша "q".
Если щелкнуть на индикаторе, то число "подсветится", и его можно
затем вставить куда-либо при помощи средней кнопки мыши.
Увеличительное стекло: xmag
|
Участок экрана, увеличенный при помощи xmag |
Программа xmag (ее обычно нет в меню и надо запускать из командной
строки) позволяет рассмотреть некую область экрана "с увеличением". При ее
запуске курсор мыши привращается в "уголок" Г, который надо
навести на интресующий участок экрана.
Графический редактор: xpaint
|
Панель инструментов редактора xpaint |
Xpaint -- это графический редактор для растровых изображений, по
функциональности значительно превосходящий редактор Paintbrush (он же Windows
Paint).
При запуске появляется окно инструментов, в верхней части которого
расположено меню. Пункт [NewCanvas] меню [File] открывает
новое окно с пустым изображением 640*480, [NewWithSize]
позволяет указать размер. Загрузить существующий файл можно командой
[Open].
Xpaint умеет работать с файлами самых распространенных форматов --
GIF, JPEG, PNG, TIFF и с еще несколькими. Одновременно можно открыть несколько
окон.
В каждом окне с редактируемым изображением есть свое меню и две палитры
цветов -- основная (для операций типы рисования линии) и дополнительная (для
заполненных фигур).
В xpaint встроена справочная система, в которой есть информация по
большинству вопросов.
Программы для развлечений и "красоты": xearth, xsnow, xeyes, xclock, xroach
- xearth
- Эта программа показывает на заднем плане (в качестве "обоев") Землю, как ее
видно в данный момент со стороны Солнца, и отмечает на ней основные города.
(У xearth есть одна неприятная особенность: если ее
убить (kill), то изображение земли все равно остается, но не
обновляется.)
- xsnow
- "Зимний пейзаж" -- на заднем плане растут елочки и иногда проезжает
Санта-Клаус на санях, а "с неба" падает снег и оседает внизу экрана и на окнах.
Указав "-snowflakes 1000", можно в десять раз увеличить
количество снега, а указав "-windtimer 1", можно заставить ветер
дуть всегда (это средний интервал между порывами ветра в секундах).
|
Глаза, следящие за мышью |
|
Часы |
- xeyes
- Глаза, которые следят за мышью. Эта программа имеет ту особенность, что
глаза занимают непрямоугольное окно, и если их поместить поверх чего-нибудь, то
они закроют ровно ту часть, которую и должны.
- xclock
- Это простейшие стрелочные часы.
Замечание.
На практических занятиях "глаза" и часы при запуске X-Window автоматически
помещаются в правый верхний угол экрана.
|
Таракан |
- xroach
- Эта программа выпускает на задний план стаю тараканов, которые бегают, пока
не спрячутся под каким-нибудь окном.
По умолчанию тараканы бегают очень быстро, поэтому при запуске лучше
указывать ключ "-speed 1". Изменить количество насекомых можно
ключом "-roaches" (по умолчанию -- 10).
Хотя тараканы -- это не то, что захочется видеть у себя на экране, эта
программа бесценна для подшучивания над соседом, который забыл "закрыть" свой
дисплей (подробнее об этом -- в следующем разделе).
Сетевые возможности X и управление доступом
Имя X-сервера
Каждый запущенный X-сервер имеет свое имя, по которому на него можно
сослаться. Оно называется именем дисплея или просто "дисплей". Имя
выглядит следующим образом:
Bobby.inp.nsk.su:0.0
Имя состоит из трех частей: имя компьютера (можно указывать и короткое имя
(bobby), и IP-адрес), затем через двоеточие идет так называемый номер
дисплея (используется, когда на одном компьютере запущено несколько
X-серверов одновременно; обычно просто "0") и затем через точку так
называемый номер экрана -- обычно тоже "0".
Номер экрана можно не указывать -- он по умолчанию принимается равным 0.
Если не указать имя компьютера, то по умолчанию будет считаться тот компьютер,
на котором запущена программа (но двоеточие указывать все же обязательно!).
Единственное, что обязательно -- это номер дисплея. Несколько примеров
сокращенных имен дисплеев:
Имя | Ссылка |
Sky:0 | Нулевой дисплей на компьютере Sky |
:0.1 | Первый экран нулевого дисплея данного компьютера |
:3 | Третий дисплей данного компьютера |
Чаще всего имя дисплея -- это или просто ":0.0", или
"компьютер:0.0".
Как указать программе, на каком дисплее ей работать
При запуске каждая программа проверяет переменную окружения с
названием DISPLAY. Посмотреть ее значение можно командой
echo $DISPLAY:
bobby:~% echo $DISPLAY
:0.0
bobby:~% _
|
При запуске X-Window в $DISPLAY автоматически помещается ссылка на
запускаемый X-сервер. Менять же ее значение требуется только при входе по
telnet/rlogin/rsh на другой компьютер.
Команды изменения значения $DISPLAY разные в разных shell'ах. В
используемом на практических занятиях zsh это делается командой
export:
somewhere:~% echo $DISPLAY
somewhere:~% export DISPLAY=Bobby.inp.nsk.su:0.0
somewhere:~% echo $DISPLAY
Bobby.inp.nsk.su:0.0
somewhere:~% _
|
Вокруг символа "=" не должно быть пробелов!
Аналогичная команда в bash будет выглядеть так:
DISPLAY=Bobby.inp.nsk.su:0.0; export DISPLAY
а в csh/tcsh так:
setenv DISPLAY Bobby.inp.nsk.su:0.0
Практически всем программам можно указать имя дисплея при помощи ключа
"-display":
xterm -display bobby:0
Менять значение $DISPLAY при этом не требуется -- она может быть даже
пустой.
Управление доступом: xhost
Если просто зайти (например, по telnet) на какой-то другой
компьютер и попытаться запустить оттуда к себе на дисплей программу, то это не
удастся:
sky:~% xterm -display bobby:0
Xlib: connection to "bobby:0.0" refused by server
Xlib: Client is not authorized to connect to Server
xterm Xt error: Can't open display: bobby:0
sky:~% _
|
Дело в том, что по умолчанию доступ к дисплею открыт только для локальных
программ. Для того, чтобы разрешить доступ к дисплею с другого компьютера, надо
воспользоваться командой xhost.
Команда "xhost +компьютер" добавляет указанный компьютер в
список тех, кому разрешен доступ. "xhost -компьютер" удаляет
компьютер из этого списка. При этом будет запрещен доступ всем программам в
будущем -- те, что уже запущены, "отключены" не будут. Просто "xhost"
без параметров печатает текущий список доступа.
Предупреждение.
Команду xhost можно запускать только с локального компьютера --
например, если компьютер Alpha открыл доступ к своему дисплею для компьютера
Beta, то с Beta не удастся открыть компьютеру Gamma доступ к Alpha.