awesome — динамический оконный менеджер для X Window System, разработанный на языках программирования C и Lua . Lua также используется для настройки и расширения оконного менеджера. Его разработка началась как ответвление dwm , хотя с тех пор значительно изменилась. [4] Он стремится быть чрезвычайно маленьким и быстрым, но при этом широко настраиваемым. Он позволяет пользователю управлять окнами с помощью клавиатуры.
Первоначально форк назывался jdwm , где «jd» обозначало инициалы главного программиста, а dwm обозначало программный проект, из которого он был ответвлен. Первый репозиторий git для того, что должно было стать awesome, был создан в сентябре 2007 года. jdwm был переименован в awesome, названный в честь той же фразы, которую использовал персонаж сериала « Как я встретил вашу маму» Барни Стинсон . [5] awesome был официально анонсирован в списке рассылки dwm 20 сентября 2007 года. [4]
Менеджер окон, вероятно, является одним из наиболее используемых программных обеспечений в ваших повседневных задачах, с вашим веб-браузером, почтовым клиентом и текстовым редактором. Опытные пользователи и программисты имеют большой выбор среди нескольких инструментов для этих повседневных задач. Некоторые из них в значительной степени расширяемы и настраиваемы.
awesome пытается дополнить эти инструменты тем, чего нам не хватает: расширяемым, гибко настраиваемым оконным менеджером.
Для достижения этой цели awesome был разработан как фреймворк-менеджер окон. Он чрезвычайно быстрый, маленький, динамичный и в значительной степени расширяемый с использованием языка программирования Lua . [6]
awesome появился как dwm- форк, включающий настройку через внешние файлы конфигурации (см. Конфигурация и настройка ниже). Несмотря на высокую расширяемость, стандартная настройка оконного менеджера намеренно упрощена. При этом автор создал то, что он называет фреймворком оконного менеджера [5] , чтобы пользователи могли расширять и адаптировать его под свои нужды.
С самого начала awesome задумывался как форк dwm с внешним файлом конфигурации. [5] Поэтому формат его файла конфигурации и сам процесс настройки стали предметом особого внимания автора.
До третьего основного релиза одной из функций awesome было то, что Danjou назвал «несложной конфигурацией». [7] Первые версии awesome (1.x) были простой модификацией dwm с конфигурацией плоского файла , которая использовала libconfig. В ветке 2.x Danjou изменил библиотеку конфигурации с libconfig на libconfuse, другую библиотеку конфигурации плоского файла, несколько напоминающую libconfig. Во время разработки релизов 2.x в awesome было добавлено много функций настройки, таких как заголовки и отрисовка значков. [5]
20 мая 2008 года Данжу объявил в электронном письме в список рассылки awesome [8] , что в выпуске 3.0 будет использоваться новый формат файла конфигурации. Новый формат был помещен в файл ~/.awesomerc.lua, а затем перемещен в ~/.config/awesome/rc.lua. Как следует из расширения, файл конфигурации написан на языке программирования Lua . Данжу утверждал, что новый формат и интеграция с Lua позволят пользователям awesome настраивать awesome способами, которые он ранее считал невозможными: использование языка программирования для конфигурации сделало возможным динамическое указание параметров конфигурации. [8]
API Awesome Lua теперь размещен на домашней странице awesome [9] , а статья в стиле руководства по настройке awesome размещена на вики-сайте awesome. [10]
Можно задать тему (или скин ) awesome, используя библиотеку Beautiful оконного менеджера. [11] В соответствии с файлом конфигурации rc.lua, темизация также выполняется в Lua , что позволяет создавать динамические темы.
Хотя конфигурация Awesome по умолчанию в версии 3.2.1 не имеет никаких индикаторов состояния (таких как состояние беспроводной сети, индикаторы батареи и т. д.), пользователи могут добавлять эти элементы с помощью виджетов. [12] Данные для виджетов предоставляются с помощью произвольного кода Lua , поскольку виджеты определены в основном файле конфигурации.
Версия 3.0, выпущенная 18 сентября 2008 года, использует библиотеку XCB для связи с X-сервером, [13] что делает awesome первым оконным менеджером, использующим эту библиотеку вместо Xlib . Работа над портом XCB была начата Арно Фонтейном, одним из нынешних разработчиков Awesome, [14] в январе 2008 года. [5]
Арно Фонтен объявил о переходе на XCB в списке рассылки XCB 9 апреля 2008 года . [13] В своем сообщении в список он подчеркнул следующие основные преимущества использования XCB: «модульная архитектура; прямой доступ к протоколам; многопоточность; асинхронные запросы/ответы;». Порт XCB был завершен в следующем месяце, и Данжу создал новую ветку на основе XCB. [5]
Из-за выявленных проблем, ограничивающих расширение и настройку в версии awesome до 3.0, автор решил интегрировать конфигурацию на основе Lua в awesome. [7] rc1 новой реализации Lua-scriptable был анонсирован в августе 2008 года. [15] В сентябре 2008 года первая версия awesome с Lua API была завершена параллельно с реализацией XCB. [7]
awesome распространяется на широкий спектр Unix-подобных операционных систем, включая Arch Linux , [16] Debian , [17] Fedora Linux , Gentoo , [18] Ubuntu , [19] Source Mage , openSUSE , [20] Mageia , NixOS , FreeBSD , NetBSD и OpenBSD .
Версии awesome с 1.0 по 1.3 (сентябрь–октябрь 2007 г.) не имели названий. Начиная с первого релиз-кандидата 2.0 (ноябрь 2007 г.), awesome использовал именованные релизы. [21] Названия релизов связаны с музыкой. awesome v4.x использует название песни из Daft Punk .