Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Yuriy Al. Shirokov ([info]yushi)
@ 2008-12-14 20:16:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
awesome: ещё один шаг к идеальному wm
Создатели большинства оконных сред (Windows, GNOME, KDE) очень высокого мнения о пользователях. Они считают своих пользователей ловкими, внимательными, трудолюбивыми, аккуратными и спокойными людьми с хорошей памятью. По крайней мере, именно на таких людей расчитан интерфейс Windows, KDE и GNOME.

Мне не повезло: я не такой. Мне трудно совершать ювелирно точные движения мышкой: попасть в границу окна или в кнопки закрывания-сворачивания для меня — разражающе сложная задача. Я невнимателен: если на экране больше трёх-четырёх открытых окон, я в них путаюсь (а благодаря плохой памяти я путаюсь и в свёрнутых окнах). Я ленив: мне неохота каждый раз залезать в стартовое меню, чтобы запустить нужное приложение. И настраивать рабочий стол/иконки быстрого запуска/док в соответствии с текущим списком часто запускаемых приложений тоже неохота. Хуже того: мне неохота каждый раз регулировать размер окон на экране и даже снимать руки с клавиатуры! И ещё я раздражителен и нетерпелив: необходимость копаться в меню, прицельно тыкать мышкой в двухмиллиметровую полоску на экране, раз за разом совершать одни и те же сложные действия меня бесит. В общем, я не соответствую высоким стандартам пользователя Windows-подобных сред: я хочу работать за компьютером, а не демонстрировать свои (отсутствующие, как уже было сказано) таланты. Чем менее заметна оконная среда, тем для меня, в принципе, лучше.

Судя по количеству пользователей Windows, GNOME и KDE, мои проблемы достаточно нетипичны: большинство пользователей ловчее, внимательнее и терпеливее меня. Им дальнейшее вряд ли будет интересно. Ну, а мои немногочисленные товарищи по несчастью могут читать дальше.

Итак, если у вас те же проблемы, что у меня, давайте подумаем вместе: чего мы хотим от оконной среды? У меня получился такой список:

  • возможность управлять размером и положением окон без необходимости совершать прицельные движения мышью, а в идеале вообще без помощи мыши;

  • возможность группировать окна (например, по решаемым задачам) и делать видимой в определённый момент только одну из групп;

  • банально, но — автозапуск часто используемых приложений;

  • возможность запомнить расположение и тип окна для определённых приложений;

  • возможность быстро запустить произвольное приложение.


Кое-что из этого знакомо пользователям Маков, однако меня лично Мак не устраивает по другим причинам (например, ставить/удалять программы и обновлять систему гораздо сложнее, чем в Linux). Я уже много лет использую Window Maker — среду, имитирующую интерфейс NeXTSTEP. Но и её я не могу назвать идеальной — скорее наименее раздражающей из всего, что мне довелось попробовать: например, возможности по управлению с помощью клавиатуры там оставляют желать.

Некоторое время назад (кажется, от пользователя [info]gogabr, уже не помню точно) я узнал о tiling window managers (мозаичных оконных менеджерах), и сразу подумал, что это как раз примерно то, что мне нужно. Главный принцип интерфейса мозаичных wm — как раз отказ от прицельных движений мышью. В мозаичных оконных менеджерах нет перекрывающихся окон: все запущенные приложения видны на экране одновременно, занимая всё пространство экрана; обрамления, в которое нужно было бы тыкать курсором, у окон нет. Описание может кому-то показаться пугающим, но на самом деле такой способ работы гораздо нагляднее и интуитивнее обычного (с перекрывающимися и сворачивающимися окнами) особенно в сочетании с виртуальными рабочими столами, хорошо знакомыми пользователям большинства оконных сред (собственно, кажется, сейчас они в том или ином виде есть везде, кроме Windows). Я, естественно, сразу попытался использовать те мозаичные оконные менеджеры, которые смог найти (Ion, larswm, wmii), но ни один из них меня не устроил. Причём не то, чтобы что-то конкретное сильно раздражало — скорее, просто ожидаемый выигрыш в удобстве показался не заслуживающим усилий по освоению.

Однако, на днях я встретил в комментах у [info]k001 упоминание ещё одного tiling wm, awesome:

Imagecatap.ru:
а не хочешь awesome посмотреть?

Он настолько хорош, что я его даже не конфигурял. Или я не помню что бы это делал :)


Я решил продолжить давние эксперименты и поставил awesome. И не пожалел. Это фантастически удобная штука. Несмотря на ряд крупных недостатков (о которых ниже), этот оконный менеджер на голову выше всего, что я пробовал до этого.


awesome после старта

Рис. 1. При первом запуске может показаться, что awesome оправдывает своё название…

В awesome, как и в других tiling wm, окна занимают весь экран — одно развёрнуто на его бóльшую часть, другие выстроены вдоль края (возможно несколько вариантов мозаики, они легко переключаются). А вот людей, привыкших к виртуальным рабочим столам, ждёт сюрприз: вместо них в awesome применяется более гибкая система тегов. Каждое приложение помечается каким-то тегом, и становится видно только тогда, когда выбран его тег. Отличие от виртуальных рабочих столов, например, в том, что можно выбирать несколько тегов одновременно. По-моему, это гениальное решение.


панель тегов в awesome

Рис. 2. Главная фишка awesome — теги.


Естественно, awesome легко управляется с клавиатуры. Клавиатурные привязки начинаются с клавиши Mod4, которая у меня оказалась привязана к правой клавише "Windows" — я не стал это менять, ни для чего другого я её не использую. Команды выбраны настолько удачно, что я запомнил их почти сразу — сейчас, через сутки использования, я уже не подглядываю в документацию и, наборот, по привычке тянусь к Mod4 в других оконных менеджерах.


gimp в awesome

Рис. 3. GIMP, всегда, честно говоря, раздражавший меня своим многооконным интерфейсом, в awesome оказывается вполне юзабельным и даже не так плохо выглядящим.


Естественно, чудес не бывает — есть у awesome и недостатки. Прежде всего это чрезвычайно сложный процесс настройки. Файл настроек awesome, ~/.config/awesome/rc.lua, представляет собой, по сути, скрипт на языке Lua, создающий большую часть элементов интерфейса. Соответственно, чтобы изменить настройки, приходится переписывать код, ответственный за нужную тебе функциональность. Автор программы пишет в руководстве по настройке:
We're talking about Lua, so first, learn Lua. Don't want to? Do not use awesome 3 and stop reading right now. (Alternatively fetch a config file from the source tarball or from someone, and just tweak it accordingly, which should work even without any lua language knowledge).

For people who are still reading, nice! Lua is a simple language. On the other hand, if you're not familiar at all with computer languages, i.e. if you do not know what objects, methods and arguments are, well, you're too lost for this document, learn some basics and come back!

I'm being elitist: awesome 3 is designed for power users with a minimum computer science background, However, if you're really motivated, you can learn enough basics to configure and control awesome.

С другой стороны, вот меня тошнит от любой формы "элитизма", я не знаю Lua и не собираюсь его учить, и уж подавно у меня нет никакого "minimum computer science background", но awesome я настроил, потратив на это около пары часов. Для этого, действительно, оказалось достаточным взять стандартный конфиг, добавить туда несколько кусков кода из wiki проекта и немного поработать напильником. Синтаксис Lua более или менее self-explanatory, так что человек, в общих чертах представляющий, что такое цикл и ветвление, за несколько попыток может поменять практически любое место конфига.

Кроме того, awesome не работает с Java-приложениями. Мне это пофигу, я не использую в повседневной работе ни одно приложение на Java, но кому-то это может оказаться критичным. Впрочем, есть вроде решение этой проблемы, хотя и довольно кривое.

В заголовках некоторых окон с русскими названиями видны крокозябры. Впрочем, судя по всему, это связано с тем, что я до сих пор использую локаль koi8-r, у пользователей с юникодной локалью эта проблема вряд ли возникнет.

Если вы решили попробовать awesome, то вот набор клавиатурных привязок, которые я использую чаще всего, и несколько ссылок.


Mod4 + F1

Командная строка (запуск приложения)

Mod4 + 1..9

Переход на тег с заданным номером

Mod4 + j, Mod4 + k

Смена текущего приложения (также можно переместить курсор в нужное окно)

Mod4 + Ctrl + Enter

Сделать текущее приложение главным (занимающим большую часть места на экране)

Mod4 + h

Уменьшить размер главного приложения

Mod4 + l

Увеличить размер главного приложения

Mod4 + левая клавиша мыши + перемещение мыши

Смена положения "плавающего" (не уложенного в мозаику, короче, как в стандартных wm) окна

Mod4 + правая клавиша мыши + перемещение мыши

Смена размера "плавающего" окна

Mod4 + Shift + c

Закрыть окно

Mod4 + Ctrl + r

Перезапуск (удобно при правке конфига)

Mod4 + Shift + q

Выход


Мой файл rc.lua для awesome. Что я поменял относительно стандартного:

  • создал вместо тегов с номерами теги по решаемым задачам (веб, IM, графика и т.д.);

  • вместо часов с юниксовым time_t включил часы с нормальным человеческим временем;

  • определил тег для нескольких часто используемых приложений (Firefox, LogJam, Liferea и т.д.);

  • сделал окно psi плавающим — мне не нравится, когда окно пейджера разносит на весь экран;

  • переписал предлагаемую на wiki функцию автозагрузки таким образом, чтобы она понимала симлинки;

  • поменял местами Mod4 + j и Mod4 + h — исходное направление смены окон мне показалось неинтуитивным;

  • добавил возможность запирать экран, именно так, как это рекомендуется в FAQ.



Возможно, ещё что-то, если вспомню — напишу. Да, чтобы всё заработало как надо, пришлось переименовать исходный конфиг (/etc/xdg/awesome/rc.lua) в /etc/xdg/awesome/rc.lua.example.

Ссылки.
Сайт awesome: http://awesome.naquadah.org/
Wiki: http://awesome.naquadah.org/wiki/index.php?title=Main_Page
FAQ: http://awesome.naquadah.org/wiki/index.php?title=FAQ
Несколько статей на русском про другой мозаичный оконный менеджер, Ion. Кое-что, особенно общие слова, верно и для awesome:
http://www.computerra.ru/softerra/225966/
http://www.opennet.ru/docs/RUS/ion3/
http://my-cellar-door.blogspot.com/2005/08/window-managers-ion.html
http://iportnov.blogspot.com/2006/10/ion3.html

UPD Как тут совершенно верно замечают в комментах, смотреть в сторону tiling менеджеров имеет смысл только обладателям больших мониторов. На ноутбуках, и тем более нетбуках, смысла в тайлинге, мягко выражаясь, немного.

UPD2 Ниже в комментах с этим не соглашаются.


(Читать комментарии) - (Добавить комментарий)


[info]mitajchik
2008-12-15 02:07 (ссылка)
Кратенько попробовал.
Меня лично этот минимализм вводит в ступор -:) На мой вкус все-таки основная функция среды - давать интуитивно очевидную подсказку по всем типичным действиям. Как, вернее зачем, жить без основного меню я вообще не понимаю.

Возможно, если как-следует повозиться и привыкну.. Но сходу вызывает отторжение - для элементарных тупых действий вроде логоффа - надо лезть в ман.

(Ответить) (Ветвь дискуссии)

"Наша кисонька тоже сначала не любила пылесос"(c)
[info]yushi
2008-12-15 03:09 (ссылка)
На мой вкус все-таки основная функция среды - давать интуитивно очевидную подсказку по всем типичным действиям.

Основная функция среды, конечно — не мешать.

Ты читал Раскина? Вот, если вдруг не: http://lib.rus.ec/b/129607

Ты, ИМХО, совершаешь распространённую ошибку: путаешь лёгкость освоения с лёгкостью использования. А это, тем временем, совершенно разные характеристики. Кстати, эту ошибку совершаешь не ты один; именно благодаря ей интерфейсы большинства популярных продуктов легки в освоении, но совершенно мучительны в повседневном активном использовании.

Беда ведь в чём? Когда ты осваиваешь среду, ты, да, нуждаешься в детализированных подсказках. На этой стадии рулят всевозможные меню, всплывающие окошки с информацией, иконки, древовидное представление сущностей и прочая WIMP-мишура. На этой стадии ты честно анализируешь всю визуальную информацию, которую тебе поставляет компьютер, и чем её больше — тем тебе лучше.

Но вот система освоена, и твои действия становятся рефлекторными. На этой стадии ты начинаешь распознавать ситуацию по общему абрису происходящего на экране, а действовать с помощью малоосознаваемых наборов привычных движений (это, кстати, причина, по которой окошки с предупреждениями об опасности действия не имеют практически никакого смысла — подробнее у того же Раскина). В этой ситуации любое действие, которое нельзя сделать без переключения на него осознанного внимания (чтение надписи, точное позиционирование курсора и т.д.) воспринимается как раздражающая помеха.

Кроме того, если для моделей среды, которые строит интеллект, характерна визуальная модальность, то для моделей, используемых при совершении привычных действий, характерна как раз модальность кинестетическая (представь себе, как бы ты отпирал дверь а)дома/расторгуевской дачи и б)незнакомой квартиры, в которой ты, скажем, подписался поливать цветы в отсутствие хозяев — каково соотношение тактильных и визуальных образов в первом случае? а во втором?). Модель среды в сознании power user'а визуально бедна. А отклонения реального явления от модели фрустрируют бедного пользователя, как известно.

Да, для освоения удобнее визуально богатая среда. Но для повседневной работы удобнее среда эффективная и простая. Вот я использую, ну, пятнадцать одних и тех же приложений, которые мне так и так удобнее пускать из минитерминала, даже с средах с визуальным меню. Так нафиг мне визуальное меню вообще?

Да, я бы не отказался от среды, которая одновременно была бы наглядной и дружественной к постоянному пользователю. Да, мне смешно с детских понтов автора awesome ("I'm being elitist", ггг), и у меня вызывают некоторую брезгливость любители делить людей на "элиту" и "быдло". Да, предлагать кусок кода вместо конфига это халтура, и приличный графический конфигуратор awesome бы тоже не помешал. Но для себя я выбираю эффективность, а не наглядность.

Да и то — слухи о сложности освоения awesome сильно преувеличены. В приведённой в исходном посте таблице есть практически все клавиатурные привязки, нужные для работы. Большинство из них достаточно мнемоничны, а главное, очень удобно садятся в пальцы (по крайней мере, мне). Я — пользователь awesome со стажем примерно 50 часов (астрономического времени — то есть я поставил её вечером 13 числа, и большую часть из этих 50 часов либо спал, либо гудел на ДР Мастера, либо читал ленту), и я уже не задумываюсь о том, как выполнить то или иное действие — руки сами давят нужные кнопки.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: "Наша кисонька тоже сначала не любила пылесос"(c)
[info]yushi
2008-12-15 04:02 (ссылка)
Я — пользователь awesome со стажем примерно 50 часов

Тьфу, какие пятьдесят. Меньше тридцати даже. Считать не умею, да.

(Ответить) (Уровень выше)

Ещё поправка
[info]yushi
2008-12-15 03:58 (ссылка)
Подумал и понял, что противопоставление "визуальное-кинестетическое" не совсем верно отражает суть дела, вернее "левополушарное-правополушарное".

Когда мы изучаем среду, мы имеем дело прежде всего с текстом. Иконки, звуковое сопровождение и т.д. — иногда приятный, иногда раздражающий, но необязательный довесок. В этот момент ситуация, когда поясняющий текст не нанесён на кнопки, меню и т.д., а сконцентрирован в документации, воспринимается как классическое "раздевалка, а через дорогу баня"; невизуальные же средства управления не существуют вообще.

По мере же набора опыта модель рабочей среды из текстуальной становится пространственной. Смена модальности, о которой я писал в предыдущем комменте, отсюда тоже следует; однако визуальная информация нам продолжает быть нужна — просто другая.

Как переключается между окнами в GNOME/Windows/KDE начинающий пользователь? "Так, у меня сейчас открыт почтовый клиент, а мне нужен браузер. Как называется браузер? Firefox. Где заголовок окна с надписью "Firefox"? Вот он, тыц в него мышкой". То есть его деятельность ориентирована на текст.

Как переключается между окнами опытный пользователь? Он прежде всего не думает про них, эта задача вне локуса его сознательного внимания. Но чем при этом оперирует его правое полушарие? Образами. (Смутный образ того, за чем надо лезть в Вёб)->(Образ "белки в мясорубке"©)->левая рука на автомате нажимает Alt+Tab, на экране появляется подсказка по запущенным окнам->Alt+Tab повторно нажимается столько раз, чтобы "белка в мясорубке" оказалась выделенной. То есть деятельность ориентирована на образы (цель залезания в Вёб, иконка Firefox) и кинестетические ощущения (положение левой руки на Alt и Tab).

В этом отношении tiling wm's, всё время показывающие кусочки открытых окон, ещё и более наглядны, чем оконные среды с плавающими окнами, показывающие только надписи (или, в лучшем случае, надписи и мелкие иконки) в панели задач. Среды с "доком" (GNUStep, MacOSX) оказываются где-то посередине. По удобству оно примерно так же упорядочено, по крайней мере у меня: хуже всего windows-подобные среды, мак-подобные заметно удобнее, а tiling совсем хороши.

Вот чего действительно в той же awesome не хватает — это не главного меню, а поисковой машинки для всего-всего-всего с инкрементным поиском и автодополнением, типа маковского Finder или, что ещё лучше, Enso. Чтобы и текст через неё искать, и документы открывать, и пускать приложения. Mod4 + F1 это хорошо, но недостаточно хорошо (хотя автодополнение там есть).

(Ответить) (Уровень выше)


(Читать комментарии) -