Конечно, в Ion’е есть понятие рабочего места (workspace). Юниксоидам не нужно объяснять, что это такое, а вот Windows-пользователи вряд ли знакомы с этим полезным объектом. Грубо говоря, каждый workspace - это просто независимый «стол», на котором размещаются окна. Например, на одном рабочем месте можно поместить браузер и ICQ-клиент и назвать его «Сеть», на другом - заниматься разработкой программ, на третьем - проверять почту, переключаясь между ними в случае необходимости. Для Ion’а обычный workspace - это что-то вроде набора фреймов со своими приложениями, и не более того.
Несмотря на логичность предлагаемого интерфейса, не всем программам нравится жить в его жестких рамках (в прямом и переносном смысле). Если браузер или текстовый процессор LyX, в котором пишутся эти строки, совсем не против подобной философии, то, например, четыре окошка графического редактора Gimp (палитра, выбор цвета, список слоев и само редактируемое изображение), помещенные в один фрейм, смотрятся довольно забавно: чтобы выбрать, например, зеленую кисть заданного размера, нужно три или четыре раза переключаться между табами. Для борьбы с подобными программами в Ion’е предусмотрен специальный тип рабочего места - WFloatWS, в котором присутствуют уже классические «плавающие» окна, поддерживающие, однако, табы (рис. 2).
***
Есть еще несколько «вкусностей», которые придутся по душе любителям клавиатурных интерфейсов. В первую очередь, встроенная командная строка (query, строка запроса), появляющаяся в низу текущего фрейма по нажатию F3. Конечно, это не полноценный shell, но она поддерживает дополнение с помощью кнопки Tab и вполне подходит для быстрого запуска нужного приложения. Столь же легко можно открыть произвольный man, подключиться к удаленной машине по ssh, открыть или отредактировать файл - причем автодополнение каждый раз будет работать наиболее разумным образом, предлагая выбирать только из подходящих для текущей операции объектов.
Ну а если использование одной лишь командной строки вам наскучило, можно нажать F12 и обнаружить меню, знакомое по другим менеджерам: выход и перезагрузка Ion’а, смена оформления, запуск терминала - привычные пункты здесь есть, а остальные можно добавить самостоятельно. Как именно? Об этом ниже.
Lua и доки
Если бы в Ion’е были только фреймы, о нем, наверное, все равно стоило бы написать - но вряд ли в нем можно было бы работать. Однако это далеко не все возможности, скрывающиеся за неказистым внешним видом и статусом «экспериментального проекта». Какие именно возможности? Да какие хотите! Как и многие другие свободные программы, Ion является не просто оконным менеджером, а эдаким конструктором по сборке оконных менеджеров. По тому же пути идет браузер Firefox, многие текстовые редакторы (Vim, Jed, Emacs), да и сам Linux порой называют «надстройкой над компилятором gcc» (в шутку, конечно). В качестве языка разработки Ion использует
[При этом сам Ion написан на C] - высокоуровневый объектно-ориентированный интерпретируемый язык, с которым я был знаком по его Palm-инкарнации Plua[См. «КТ» #498, «Сага о найденных мегагерцах»].
В простейшем случае Lua используется для базовой настройки буквально всего, что только можно настроить. Скажем, привязка горячих клавиш (keybinding) управляется конфигурационным файлом ion-bindings.lua, представляющим собой просто кусок lua-программы. Если вы хотите изменить стандартную «распальцовку» или добавить новые функции, вам именно сюда. Поначалу кажется, что синтаксис сложнее, чем обычно бывает в файлах настройки, но после нескольких экспериментов и анализа существующей конфигурации его правка превращается в сплошное удовольствие - особенно когда начинаешь понимать, какие возможности здесь открываются[Не стоит редактировать «глобальные» настройки, лежащие в /usr/local/etc/ion (или другом системном каталоге - зависит от установки); гораздо правильнее скопировать нужный файл в ~/.ion2/ и редактировать его там - в противном случае вы рискуете потерять ценные скрипты при переустановке или обновлении Ion’а].
Аналогичным образом, с помощью правки настроечных lua-файлов, можно изменять как поведение, так и внешний вид Ion’а. Скажем, мне пришлось сменить шрифты в выбранной теме оформления, чтобы они поддерживали Юникод и отображали русские буквы в заголовках окон, командных строках и меню[Настройка производится в файле draw.lua, а для запуска Ion’а в режиме unicode-совместимости следует использовать ключ -i18n].
***
Более того: помимо правки существующих элементов, можно создавать свои. Например, можно отредактировать системное меню, вызываемое по F12, а можно добавить свое собственное - и привязать его к какой-нибудь другой кнопке. Или сделать свою командную строку - с нужными вам элементами автодополнения. Или вот, допустим, захотелось вам иметь собственную консоль, по умолчанию не видимую, вызываемую на белый свет с помощью горячей клавиши, не привязанную ни к каким фреймам и не зависящую от текущего workspace. Думаете, придется править низкоуровневый исходный код Ion’а? А вот и нет! Все гораздо проще: в системе есть модуль dock, позволяющий размещать в фиксированных местах экрана окна произвольных программ (в частности, именно через него делается местный аналог трея). Достаточно создать такой «док», поместить в него терминал, а потом организовать его отображение/скрытие и передачу фокуса. Соответствующий код займет буквально десяток строчек, а вы получите в распоряжение все, о чем мечтали.
Открытое будущее
Безусловно, Ion не является заменой менеджерам «общего пользования» - по крайней мере, на текущий момент, - и я не думаю, что все читатели статьи побегут ставить Linux только ради того, чтобы перейти на этот диковинный интерфейс или попрактиковаться в программировании на Lua. Однако мне хотелось бы показать, что в мире существуют альтернативные точки зрения даже на такой, казалось бы, устоявшийся программный стереотип, как оконные системы. Порой эти альтернативы оказываются более удобными, чем общепринятые решения, - и кто знает, какими интерфейсами будут пользоваться наши потомки?
Клавиатурно-совместимый софт
Менеджер окон
Конечно, Ion не одинок в своих необычных взглядах на оконные системы. Помимо него существует еще несколько близких по духу разработок, отличающихся степенью минималистичности, настраиваемости и специфическими функциями (их список можно найти на странице Ion’а).
Mozilla Firefox, в общем-то, нормально управляется с клавиатуры. А после некоторой настройки (в частности, установки параметра accessibility.tabfocus в значение "3" для ускорения доступа к элементам веб-форм) - так и вообще все было бы хорошо, если б не один неприятный баг: в Gtk-версии при включенной неанглийской раскладке перестают работать многие горячие клавиши. Отчасти эта проблема решается установкой расширения keyconfig, с помощью которого можно задействовать не зависящие от раскладки кнопки (например, F1-F12), но более радикального решения вроде бы пока не существует. Также советую обратить внимание на добавочку Hit-a-Hint, позволяющую перейти по нужной ссылке, просто набрав ее номер, - очень удобное и оригинальное решение. Для любителей минимализма подойдет conkeror (не путать с konqueror) - по сути, это полностью переписанный интерфейс Firefox’а, лишенный всех изысков, который делает из браузера что-то вроде текстового редактора Emacs (наверное, я бы стал пользоваться именно им, если бы не указанная проблема с раскладками).
Мультимедиа
Эмулятор терминала
Конечно, любая консоль рассчитана в первую очередь на работу с клавиатурой. Однако отыскать подходящую «модель» было не так-то просто: gnome-terminal и konsole слишком тяжеловесны, xterm не умеет работать с красивыми шрифтами, а большинство других программ этого класса не поддерживают Юникод - «родную» кодировку установленной у меня Fedora Core. По душе пришелся проект rxvt-unicode (software.schmorp.de), лишенный вышеупомянутых пороков, включающий в себя несколько «вкусностей», вроде псевдопрозрачного фона и клиент-серверной модели, и на порядок ускоряющий создание новой консоли. После некоторой настройки - приятнейшая во всех отношениях программа.
Мелкие радости
В отличие от Gnome или KDE, Ion не предоставляет готовую среду, в которой есть все необходимое для работы. Если без встроенного файлового менеджера или меню со списком установленных программ я вполне могу обойтись, то, например, без индикатора сетевой активности чувствую себя не в своей тарелке. Можно было бы запустить под Ion’ом gnome-panel и не расставаться с привычными элементами интерфейса, но вряд ли такое совмещение разнородных сред является правильным. Я пошел другим путем и установил gkrellm - очень удобный и красивый набор индикаторов, показывающих все, что только можно. С помощью дополнительной lua-настройки он был помещен в док и с тех пор всегда находится перед глазами. Ну а для проверки наличия входящей почты я использую прелестную маленькую утилитку gnubiff. Чего и вам желаю!