Как добавить сочетания клавиш в Awesome WM
В Ubuntu 14.04.1 LTS, используя Awesome версию v3.4.15 (вы можете проверить версию с командной строкой: awesome -v
)
Если вы еще не скопировали файлы конфигурации из системы в домашний каталог, вы можете сделать это с помощью
$ mkdir ~/.config/
$ mkdir ~/.config/awesome/
$ cp -r /etc/xdg/awesome/rc.lua ~/.config/awesome/
Чтобы скопировать темы по умолчанию, так что вы можете изменить их для пользовательского уровня, выполните следующие действия:
$ cp -r /usr/share/awesome/themes/ ~/.config/awesome
Затем вы можете отредактировать rc.lua
, используя ваш любимый редактор
$ vim ~/.config/awesome/rc.lua
В другом ответе не хватало места, где нужно было поместить команды, поэтому я помещаю его в глобальные привязки клавиш
найти текст в файле
-- {{{ Key bindings globalkeys = awful.util.table.join(
Ниже вы можете добавить свои собственные команды, например:
-- {{{ Key bindings
globalkeys = awful.util.table.join(
-- My Bindings
awful.key({ }, "F1", function () awful.util.spawn_with_shell("terminator") end),
Здесь вы можете изменить ключ, который здесь F1, или программу, которая здесь является терминатором.
Если вы хотите добавить составные клавиши, поместите его внутри {}. например:
-- {{{ Key bindings
globalkeys = awful.util.table.join(
-- My Bindings
awful.key({ modkey, "Control" }, "F1", function () awful.util.spawn_with_shell("terminator") end),
Это приведет к связыванию ключей Super + Control + F1
, чтобы открыть терминатор. modkey
— это переменная, установленная в rc.lua, тогда она не нужна (не может) для экранирования. Он по умолчанию используется для клавиши «Супер».
Вы также можете поместить свои ключевые слова в конец globalkeys (после всех ключевых слов по умолчанию), но затем обратите внимание, чтобы избежать последней запятой
,
в последнем ключевом соединении и добавить конечную запятую к последнему привязке просто перед последним, например:
-- {{{ Key bindings
globalkeys = awful.util.table.join(
-- LOTS of stuff after:
awful.key({ modkey }, "x",
function ()
awful.prompt.run({ prompt = "Run Lua code: " },
mypromptbox[mouse.screen].widget,
awful.util.eval, nil,
awful.util.getdir("cache") .. "/history_eval")
end),
-- My Bindings
awful.key({ }, "F1", function () awful.util.spawn_with_shell("terminator") end)
)
Обратите внимание, что последнее связывание (то, что я создал для F1) не имеет конечной запятой, а первая перед последней имеет запятую.
Затем вы можете перезагрузить конфигурацию (по умолчанию:
) и посмотреть, работает ли новая конфигурация. Когда пользовательская конфигурация rc.lua
терпит неудачу, Awesome загружает основную из системы. В противном случае вы можете проверить файл конфигурации через терминал, awesome -k
.
Извините, если это запуталось, если это так, скажите мне, и я могу попытаться улучшить.
awesome — Gentoo Wiki
awesome это высоконастраиваемый, динамичный оконный менеджер для X. Прежде всего он направлен на опытных пользователей, разработчиков, да и просто людей, заинтересованных в наличие контроля над различными аспектами графического окружения. Функционал можно увеличить с помощью языка программирования Lua.
Установка
USE-флаги
USE flags for x11-wm/awesome A dynamic floating and tiling window manager
dbus
|
Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc) |
doc
|
Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally |
gnome
|
Add GNOME support |
gnome-keyring
|
Enable support for storing passwords via gnome-keyring |
gtk-doc
|
Build and install gtk-doc based developer documentation for dev-util/devhelp, IDE and offline use |
luajit
|
Use dev-lang/luajit instead of dev-lang/lua (ineffective with USE=-lua) |
test
|
Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently) |
Emerge
Установите x11-wm/awesome:
root #
emerge --ask x11-wm/awesome
Конфигурация
Первоначальная настройка
Для запуска awesome используйте display manager или startx.
Чтобы использовать startx с поддержкой ConsoleKit, установите ConsoleKit и создайте следующий файл:
Файл ~/.xinitrc
exec ck-launch-session dbus-launch --sh-syntax --exit-with-session awesome
Конфигурационный файл
Стандартный конфигурационный файл awesome находится в ~/.config/awesome/rc.lua. Если данный каталог или файл отсутсвует, его следует создать. Стандартная конфигурация поставляется в комплекте с awesome и находится по адресу /etc/xdg/awesome/rc.lua. Просто скопируйте его в домашний каталог пользователя.
Создадим каталог awesome/:
user $
mkdir -p ~/.config/awesome/
И скопируем туда конфигурационный файл rc.lua:
user $
cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua
Если не установлен x11-terms/xterm, то следует либо установить его, либо изменить терминал по умолчанию на тот, который представлен в системе. Ниже мы используем в качестве подобного терминала konsole, часть kde-apps/konsole.
Файл ~/.config/awesome/rc.lua
-- Далее мы используем его как терминал по умолчанию. terminal = "konsole"
После внесения изменений не помешает проверить файл на наличие ошибок:
user $
awesome -k
✔ Configuration file syntax OK
Поддержка обоев рабочего стола очуществляется пакетом media-gfx/feh:
root #
emerge --ask media-gfx/feh
Но можно установить обои и при помощи awsetbg, для чего следует добавить в ~/.config/awesome/theme/theme.lua следующую строку:
Файл ~/.config/awesome/theme/theme.lua
Устанавливаем обои с использованием awsetbg
theme.wallpaper_cmd = { "awsetbg -f .config/awesome/themes/awesome-wallpaper.png" }
Или просто настройте обои в параметрах темы:
Файл ~/.config/awesome/theme/theme.lua
Настройка определенной картинки фона рабочего стола с помощью определения wallpaper
theme.wallpaper = ".config/awesome/themes/awesome-wallpaper.png"
Тэги
В awesome тэгами называются виртуальные рабочие столы, на которых запущены приложения. Можно присвоить им различные символы:
Файл
~/.config/awesome/rc.lua
-- {{{ Tags tags = {} for s = 1, screen.count() do tags[s] = awful.tag({ "➊", "➋", "➌", "➍" }, s, layouts[1]) end -- }}}
Меню
Рассмотрим пример меню awesome:
Файл ~/.config/awesome/rc.lua
-- {{{ Menu myawesomemenu = { { "инструкция", terminal .. " -e man awesome" }, { "править конфиг", editor_cmd .. " " .. awesome.conffile }, { "перезагрузка", awesome.restart }, { "выход", awesome.quit }, { "перезагрузка", "reboot" }, { "выключения", "shutdown" } } appsmenu = { { "urxvt", "urxvt" }, { "sakura", "sakura" }, { "ncmpcpp", terminal .. " -e ncmpcpp" }, { "luakit", "luakit" }, { "uzbl", "uzbl-browser" }, { "firefox", "firefox" }, { "chromium", "chromium" }, { "thunar", "thunar" }, { "ranger", terminal .. " -e ranger" }, { "gvim", "gvim" }, { "leafpad", "leafpad" }, { "htop", terminal .. " -e htop" }, { "sysmonitor", "gnome-system-monitor" } } gamesmenu = { { "warsow", "warsow" }, { "nexuiz", "nexuiz" }, { "xonotic", "xonotic" }, { "openarena", "openarena" }, { "alienarena", "alienarena" }, { "teeworlds", "teeworlds" }, { "frozen-bubble", "frozen-bubble" }, { "warzone2100", "warzone2100" }, { "wesnoth", "wesnoth" }, { "supertuxkart", "supertuxkart" }, { "xmoto" , "xmoto" }, { "flightgear", "flightgear" }, { "snes9x" , "snes9x" } } mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu }, { "приложения", appsmenu }, { "игры", gamesmenu }, { "терминал", terminal }, { "браузер", browser }, { "текстовый редактор", geditor } } }) mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon), menu = mymainmenu }) -- }}}
Дата и время
Ниже приведён пример нестандартного формата времени. Для формата используется синтакс%d.%m %H:%M
, а 60
указывает интервал обновления.
Файл ~/.config/awesome/rc.lua
Создание виджета текстовых часов
-- {{{ Wibox -- Create a text-clock widget mytextclock = wibox.widget.textclock(" %d.%m %H:%M ", 60) -- }}}
Заметка
Чтобы узнать больше о различных форматах, запустите date —help.
Настройка громкости
media-sound/volumeicon позволяет использовать мультимедиа-клавиши и видеть уровень громкости при помощи иконки в трее.
root #
emerge --ask media-sound/volumeicon
Автоматический запуск volumeicon из ~/.xinitrc:
Файл ~/.xinitrc
Фоновый запуск volumeicon при старте X
volumeicon & exec ck-launch-session dbus-launch awesome
Или же можно добавить обработку мультимедиа-клавиш прямо в конфигурации awesome:
Файл ~/.config/awesome/rc.lua
Настройка клавиш громкости
awful.key({ }, "XF86AudioLowerVolume", function () awful.util.spawn("amixer -q sset Master 2dB-") end) awful.key({ }, "XF86AudioRaiseVolume", function () awful.util.spawn("amixer -q sset Master 2dB+") end)
Мультимедиа клавиши MPD
Установите media-sound/mpc чтобы привязать мультимедия клавиши к MPD:
root #
emerge --ask media-sound/mpc
И обновите конфиг awesome, чтобы присвоить мультимедиа-клавишам соответствующие команды:
Файл ~/.config/awesome/rc.lua
Привязка мультимедия-клавиш
awful.key({ }, "XF86AudioNext",function () awful.util.spawn( "mpc next" ) end), awful.key({ }, "XF86AudioPrev",function () awful.util.spawn( "mpc prev" ) end), awful.key({ }, "XF86AudioPlay",function () awful.util.spawn( "mpc play" ) end), awful.key({ }, "XF86AudioStop",function () awful.util.spawn( "mpc pause" ) end),
Удаление зазоров между окнами
Зазоры между окнами могут быть видимыми, наиболее заметно между окнами терминала. Их можно удалить, вставив свойство size_hints_honor=false
в таблицу awful.rules.rules
, например:
Файл ~/.config/awesome/rc.lua
Установка свойства size_hints_honor
awful.rules.rules = { { rule = { }, properties = { size_hints_honor = false, -- Remove gaps border_width = beautiful.border_width, border_color = beautiful.border_normal, ...
Исправление ошибок конфигурации при помощи Xephyr
Xephyr удобен для исправления ошибок, так как запускает X без клиентского окна.
user $
Xephyr -ac -nolisten tcp -br -noreset -screen 800x600 :1
Создастся окно размерами 800×600. Чтобы запустить внутри него awsome, необходимо выполнить следующую команду:
user $
DISPLAY=:1.0 awesome
Это запустит awesome внутри окна.
Горячие клавиши
Список наиболее полезных клавиш:
- mod4+mouse1 = переместить клиент мышью
- mod4+mouse2 = изменить размер клиента мышью
- mod4+enter = открыть терминал
- mod4+r = выполнить команду
- mod4+shift+c = закрыть
- mod4+m = развернуть
- mod4+n = свернуть
- mod4+ctrl+n = восстановить свёрнутые
- mod4+f = полноэкранный режим
- mod4+tab = переключиться на предыдущий клиент
- mod4+ctrl+space = режим плавающих окон
- mod4+j = подсветить левый
- mod4+k = подсветить правый
- mod4+shift+j = переместить вправо
- mod4+shift+k = переместить влево
- mod4+l = изменить размер тайлового окна
- mod4+h = изменить размер тайлового окна
- mod4+left / right = сменить тэг
- mod4+1-9 = сменить тэг
- mod4+shift+1-9 = отправить окно на тэг
Для дальнейшей кастомизации awesome можно присвоить действия к комбинациям вроде Alt+Tab, чтобы, например, переключиться на предыдущее окно:
Файл ~/.config/awesome/rc.lua
Привязка клавиш Alt+TAB
-- {{{ Key bindings globalkeys = awful.util.table.join( ... -- alt + tab awful.key({ "Mod1", }, "Tab", function () awful.client.focus.history.previous() if client.focus then client.focus:raise() end end), -- )}}}
Внешние ресурсы
awesome | Просто мой блог
Awesome — это динамический оконный менеджер для X Window System (C) Wikipedia.
Долгое время я использовал в качестве оконного менеджера и графической рабочей среды на своей убунте — Gnome. В процессе использования гнома пробовал все «рюшечки и цветочки» типа Compiz, Screenlets, GDesklets и прочее, которые очень быстро надоели. Конечно, красивая система — это хорошо. Но для того ли она стоит у меня чтобы играться с интерфейсом? Со временем удалил компиз и проче, описанное выше, из системы за ненадобностью. Хотелось как-то улучшить юзабельность своей системы и уменьшить объем занимаемой оперативной памяти, да и вообще — оптимизации системы для более быстрой работы. Начал пробовать различные оконные менеджеры — BlackBox, IceWM, Openbox. В итоге остановился на Openbox. Удалил гнома. Некоторое время жил на опенбоксе, после чего заметил за собой тенденцию к расположению окон мозайкой — это был следующий шаг в моем пути к тайлинговым(или, как их еще называют, мозаечным) оконным менеджерам. Прелесть таких WM в том, что все управление производится с клавиатуры и окна распологаются «мозайкой», т.е. не перекрывают друг друга. Тайлинговых WM огромное множество: XMonad, Ion, DWM, Awesome. И это только наиболее известные. Испробовал я все из них, и больше всех мне поравился Awesome.
Конфигурация Awesome происходит путем правки одного единственного файла конфига: ~/.config/awesome/rc.lua.
Конфигурационный файл написан на скриптовом языке программирования Lua. Многие считают этот язык крайне не понятным и невменяемым, как и самого автора, который «заставляет» своих пользователей учить этот язык. На мой взгляд, этот язык очень удобне и прост в освоении. Более того, произвести базовую конфигурацию Awesome можно и без знания языка, поскольку в конфигурационном файле все описано.
Устанавливается Awesome в Ubuntu просто:
sudo apt-get install awesome
Итак, приступаем к конфигурации данного WM.
Первым делом создадим папку(если ее не существует):
mkdir -p ~/.config/awesome/
Далее надо скопировать готовый файл конфигурации(делаем это от простого пользователя, что очень важно):
cp /etc/xdg/awesome/rc.lua ~/.config/awesome/
Итак, мы создали файл конфигурации, который будем редактировать дальше.
Стоит отметить следующие понятия в языке Lua и терминологии Awesome в целом:
- Screen — это не объект, а реальный монитор, подключенный к Вашему компьютеру. Нумерация идет не с 0, а с 1.
- Client — это окно приложения
- Tag — Тэги — это что-то подобное рабочим столам, но это понятие менее жесткое. Каждый клиент имеет по крайней мере один тэг, ему соответсвующий. Каждый экран также содержит как минимум один тэг. В любой момент на экране вы можете просматривать любое количество тэгов. Отображение без тэгов скроет все клиенты. Просмотр одного и более тэгов отобразит на экране все приложения с этими тэгами.
- Widget — объект, выводящий информацию на экран
- Titlebar — заголовок окна — это полоса вокруг приложения, присоединенная к нему. На нее можно добавлять виджеты
- Statusbar — строка состояния. Это полоса, закрепленная на границе экрана. На нее можно добавлять виджеты.
Открываем файл конфигурации Awesome используя свой любимый текстовый редактор:
emacs ~/.config/awesome/rc.lua
Описывать всю грамматику языка я не буду. Опишу только основные моменты по ходу дела.
Первое, что мы видим, это то, что комментарии здесь выделяются «—» в начале строки.
Далее идет объявление используемых модулей: require(«awful»)
Следующим шагом явлется присвоение переменной theme_path пути к папке с установленными темами. Точно так же можно скопировать папку со стандартной темой и модифицировать ее в соответствии со своими вкусами. Не лишним будет сказать, что с Awesome идут 2 темы: dark и sky. Для выбора одной из них просто нужно откомментировать/закомментировать нужную строку.
terminal = «x-terminal-emulator» — дефолтный терминал, который будет использоваться для открытия из меню.
editor = os.getenv(«EDITOR») or «editor» — дефолтный редактор. Назначается как дефолтный по всей системе, но можно указать и свой, не затрагивая общесистемные настрйоки.
editor_cmd = terminal .. » -e » .. editor — параметры запуска редактора в терминале.
modkey = «Mod4» — кнопка-модификатор. По умолчанию это Winkey. Да-да. Это та самая кнопка с флажком Windows. Ее можно изменить на удобную Вам.
layouts =
{
«tile»,
«tileleft»,
«tilebottom»,
«tiletop»,
«fairh»,
«fairv»,
«magnifier»,
«max»,
«fullscreen»,
«spiral»,
«dwindle»,
«floating»
}
список раскладок. Их всего 12. Описывать каждую не имеет смысла. Как говорится, лучше 1 раз увидеть, чем 100 раз услышать.
floatapps =
{
[«MPlayer»] = true,
[«gimp»] = true,
}
список приложений, которые будут запущены в режиме float, т.е. не будут прикреплены к сетке мозайки
apptags =
{
[«Firefox»] = { screen = 1, tag = 2 },
[«sonata»] = { screen = 2, tag = 4 },
}
список приложений, которые будут помещены на определенные места при запуске. Так, в данном примере браузер Firefox будем помещен на 2 тэг 1 экрана. Sonata будет помещена на 4 таг 2 монитора. Все просто и понятно. Не так ли? =)
use_titlebar = false — отказываемся от использования заголовка окна. Что это такое — смотрите выше. Для его включения надо, естественн, установить значение в true.
Данный кусок кода создает 9 тэгов для каждого мониторов
tags = {} — массив тэгов
for s = 1, screen.count() do — простой цикл от 1 до количества мониторов
— Каждый монитор имеет свои собственные тэги
tags[s] = {}
— Создаем 9 тэгов на монитор
for tagnumber = 1, 9 do — опять таки, цикл от 1 до 9
tags[s][tagnumber] = tag({ name = tagnumber, layout = layouts[1] }) — создаем тэг с номеров в качестве имени и 1 вариантом расположения
— Add tags to screen one by one
tags[s][tagnumber].screen = s — добавляем тэг на монитор
end
— выбираем первый тэг чтобы видеть его содержимое
tags[s][1].selected = true
end
Конечно, можно создать n своих собственных тэгов со своими именами. Для этого используем код следующего содержания:
tags[1][1] = tag({name = «one», layout = layouts[2]}) — 1 тэг на 1 мониторе с именем one и 2 вариантом расположения клиентов.
tags[1][2] = tag({name = «two», layout = layouts[1]}) — 2 тэг на 1 мониторе с именем two и 1 вариантом расположения клиентов.
Следующий за этим код не представляет нам никакого интереса, ибо описывает размещение элементов на верхней панели. Если кому интересно, то опишу этот момент в следующей статье.
Дошли до секции «Mouse bindings«:
awesome.buttons({
button({ }, 3, function () mymainmenu:toggle() end), — 3 кнопка (т.е. правая кнопка) мыши вызывает меню
button({ }, 4, awful.tag.viewnext), — 4 кнопка (т.е. прокручивание колесика вверх) переключается на следующий тэг
button({ }, 5, awful.tag.viewprev) — 5 кнопка (т.е. прокручивание колесика вниз) переключается на предыдущий тэг
})
Секция «Key bindings» описывается просто:
Каждая команда назначается функцией языка Lua: keybinding(<сочетание клавиш>, вызываемая_функция).
На этом пункте стоит остановиться подробнее, поскольку можно заметить 2 варианта вызова этой функции:
- keybinding({ modkey }, «m», awful.client.maximize):add()
- keybinding({ modkey, «Control» }, «k», function () awful.screen.focus(-1) end):add()
Функция вызывается с 3 параметрами. Рассмотрим на приведенных выше примерах.
Первый параметр — это те клавиши, которые будут постоянно удерживаться в данной комбинации. В 1 примере это только лишь клавиша Mod4, а во 2 примере это Mod4+Control.
Второй параметр — это клавиша, которая будет финальной в комбинации. В первом примере это клавиша m, а во втором — k.
Третий параметр — функция, которая выполнится в случае нажатия комбинации.
Получается, что первым параметром указывается клавиша-модификатор+дополнительные клавиши(Alt, Control). Вторым параметром — клавиша комбинации — любая клавиша кроме тех, которые задействованы в первом параметре. И третьим параметром — испольняемая функция (их можно найти в справочнике по Lua).
Наверно, Вы заметили, что часы показывают время в каком-то нестандартном и непонятном для нас формате. Найдем самый последний блок в конфиге:
— Hook called every second
awful.hooks.timer.register(1, function ()
— For unix time_t lovers
— mytextbox.text = » » .. os.time() .. » time_t «
— Otherwise use:
mytextbox.text = » » .. os.date() .. » » — вот это та строка, которую нужно раскомментировать и закомментировать другую.
—mytextbox.text = «» .. os.date(» %R «) .. .. os.date(«%m-%d») .. «»
end)
— }}}
После такого действия мы получим время в формате «День Месяц Число чч::мм::сс Год«.
Вот и весь краткий обзор настройки Awesome в Linux. Как оказалось, не такое уж это и сложное дело — чтение комментариев и манов. =) Удачи в настройке.
Awesome — оконный менеджер для крутых линуксоидов
Awesome — уникальный оконный менеджер. Его главные особенности — он невероятно быстрый, занимает считанные килобайты в памяти и делает работу с окнами удобной и продуктивной, сообщает Либератум.
Идея Awesome WM для Linux
Оконный менеджер — это то, с чем каждый линуксоид работает каждый день. Поэтому важно сделать управление окнами максимально эффективным. Решая эту задачу, разработчики других оконных менеджеров пошли по пути запихивания в свои разработки всего, что только можно запихнуть. В результате оконные менеджеры стали тратить ресурсы в пустую и часто падать. А разработчики Awesome пошли по обратному пути — и наоборот выкинули всё ненужное, оставив ультракомпактное ядро и прикрутив механизм расширений. В результате всё летает, никогда ничего не падает и любой пользователь может быстро и легко добавить функциональность, которая нужна именно ему.
Преимущества Awesome
- Awesome никогда не падает.
- Awesome быстрее всех.
- Только Awesome использует асинхронную библиотеку XCB вместо старой синхронной Xlib, которую используют остальные оконные менеджеры. В результате Awesome может предложить самую низкую латентность при управлении окнами.
- Отличная документация к API — расширить Awesome может любой.
- Не нужно тянуться за мышью. 100% управляемость с клавиатуры.
- Лучшая в своем классе поддержка multihead (несколько мониторов одновременно).
- Строгое соответствие всем стандартам (EWMH, XDG Base Directory, XEmbed, Desktop Notification, System Tray и так далее).
- Грамотная компоновка окон (нет перекрывающихся или плавающих слоев).
- Теги вместо виртуальных столов, что намного удобнее.
- Море готовых расширений на все случаи жизни.
- Возможность самому написать расширение на Lua.
- Поддержка D-Bus.
- И так далее.
Как установить Awesome
apt install awesome
Главная тема:
Дистрибутивы:
Программное обеспечение:
Awesome — Википедия
Материал из Википедии — свободной энциклопедии
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 28 сентября 2014; проверки требуют 13 правок. Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 28 сентября 2014; проверки требуют 13 правок.Awesome — динамический оконный менеджер для X Window System. Его разработка началась в сентябре 2007 года в результате ответвления от dwm. Это миниатюрный и быстрый оконный менеджер, поддерживающий несколько вариантов расположения окон (например, «плавающий», когда положение окон не фиксируется, и пользователь может перетаскивать их, как в большинстве популярных менеджеров). Awesome, как фреймовый оконный менеджер, стремится предоставить всё необходимое для полного управлениями окнами без помощи мыши.
Awesome доступен для многих Unix-подобных ОС, таких как Linux, FreeBSD, NetBSD и OpenBSD.
Начиная с версии 3.0, выпущенной 18 сентября 2008, Awesome использует библиотеку XCB для взаимодействия с X-сервером. Таким образом, это первый оконный менеджер, использующий библиотеку XCB вместо традиционной Xlib. Кроме того, есть поддержка языка разметки pango и D-Bus для межпроцессного взаимодействия. Конфигурационные файлы используют язык lua.
- Хорошо документированный исходный код и API
- Соответствие стандартам freedesktop.org
- Возможность переключения режима с фреймового на «плавающий»
- Использование тегов вместо рабочих столов
- Возможность размещать окна на несколько тегов, и отображать несколько тегов одновременно
- Множество Lua-расширений
- Возможность обходиться только клавиатурой для управления окнами
- Полностью меняется при изменении одного лишь конфигурационного файла
- Все функции управления окнами назначаются (как для клавиатуры, так и для мыши)
Awesome распространяется под лицензией GNU General Public License версии 2.
Установка и настройка i3wm
15.12.2019
В этой статье расписал, как я настроил под свои нужды i3wm. Конечно же тут можно многое еще что добавить и настроить. Можно поставить и полибар и разные плюшечки, можно поставить также и rofi для “более удобного” поиска установленных программ, но мне как-то и так хорошо. Вы если хотите можете все это себе поставить. Я даю тут все в упрощенном варианте и без особых наворотов. Далее уже вы сами подстраивате конфиги под свой вкус и цвет, под свои “фломастеры”.
Ссылки
Официальная документация по i3wm
Документация по i3status
i3wm в ArchWiki
Мой конфиг с пояснениями внутри
Установка
Сначала давайте установим все, что нам понадобится. При этом помним, что это вариант минимализма. Чтобы понять, что к чему, а далее уже будем делать рюшечки 🙂
Нам понадобится:
- i3wm — оконный менеджер и его форк (ответвление) i3-gaps
- i3status — вывода строки статуса в i3bar
- dmenu — утилита для запуска программ
- ttf-font-awesome — шрифтовые иконки
- feh — установка обоины на рабочий стол
- lxappearance — установка тем для окон, иконок, курсора
- pcmanfm — файловый менеджер
- gvfs и udiskie — для авто монтирования внешних дисков
- xorg-xbacklight — для управлением яркостью экрана
- ristretto и tumbler — для просмотра фото
- compton — для прозрачности окон и для устранения тиринга
Можно еще поставить sbxkb — индикатор раскладки и переключения клавиатуры, но можно и без этого! Когда вы последний раз смотрели на раскладку? Уверены, что это вам нужно? Еслитакой вариант переклюения клавиатуры вам не нравтся, а хотите тектовой, то есть другой вариант, но для этого вам уже нужно будет ставить polibar. Если нужно то пишите в комментах. Будет много желающих напишу как это делать.
Ставим пакеты из pacman:
# pacman -S i3-wm i3-gaps i3status sbxkb dmenu pcmanfm ttf-font-awesome feh lxappearance thunar gvfs udiskie xorg-xbacklight ristretto tumbler compton
Настройка конфига i3wm
При первичной загрузке вы увидите примерно такое сообщение:
Нажмите 2 раза на Enter — это создаст конфигурационный файл, который мы потом будем менять. Вы увидите просто черный экран и возможно курсор мыши :))) Не пугайтесь все нормально, система работает и вы сделали все правильно.
Зачастую можно видеть символ загрузки, который постоянно вращается (до 60 сек.) — система пытается запустить какой-то процесс. Если вас это раздражает, то можно убрать прописав перед запуском программ код:
Обои на рабочий стол
Устанавливаем обои на рабочий стол
exec --no-startup-id feh --bg-scale /usr/share/backgrounds/xfce/bg.jpg
Автозагрузка программ
Прописываем автозагрузку программ кодом
exec --no-startup-id flameshot
Отключение заголовков окон
Я предпочел отключить заголовки окон. Освободив дополнительное пространство на рабочем столе.
Настройка толщины рамки i3wm
Для увеличение толщины рамки, чтобы было лучше видно активное окно используем следующий код:
for_window [tiling] border pixel 3
Горячие клавиши по умолчанию в i3wm
Назначаем свои горячие клавиши
Прописываем запуск программ на определенных горячих клавишах:
bindsym $mod+F1 exec firefox
bindsym $mod+F3 exec subl
bindsym $mod+F4 exec cherrytree
bindsym $mod+F5 exec galculator
Я, к примеру, использую консольный вариант проигрывателя VLC, запуская его горячими клавишами. При этом, радио начинает играть автоматом. Авто подключение радио потока прописано в настройках vlc.
bindsym $mod+Home exec cvlc
И т.к. программа запускается без GUI, ее удобнее выключать горячими клавишами, которые просто убивают процесс vlc.
Убить процесс
Для того, чтобы убить процесс использую команду killall -s 6
bindsym $mod+Prior exec killall -s 6 vlc
Как найти название клавиш
Тут возникает вопрос, что за клавиша такая “Prior”, которую мы использовали выше и как вообще найти название клавиш, которые нам хотелось бы использовать. Клавиша “Prior” — на моей клавиатуре это клавиша Pg Up/■ . Используется для управлением проигрывателя (старт, стоп, пауза, перемотка и т.д.) Для того, чтобы найти название клавиш используем утилиту xev, вбив в консоли команду:
После запуска, вы увидите белый экран с квадратом вверху
Подведите курсор мышки к квадрату и не уводя с него, нажмите на нужную клавишу. В терминале увидите ее название.
Думаю тут все понятно не вызовет никаких трудностей. Идем дальше.
Открытие программ в плавающем окне
Если определенную программу нужно открыть не в тайлинге, а в плавающем окне используйте код
for_window [class="Xfce4-terminal"] floating enable
Где “Xfce4-terminal” это название программы.
Открытие программ в нужном рабочем столе
В i3wm есть фишка, которую я не встречал в других DE/WM — это запуск программ на определенном рабочем столе. Удобно, когда вы знаете, какая программа и на каком рабочем столе она запускается.
Данный код запустит Firefox на 3-м рабочем столе
for_window [class="Firefox"] move to workspace $ws3
Название программ нужно писать с заглавной буквы, иначе не сработает.
Регулировка яркости экрана
Управление яркостью экрана, нужно установить xbacklight. Он у вас уже должен стоять, если вы следуете этому ману.
bindsym XF86MonBrightnessUp exec xbacklight -inc 20
bindsym XF86MonBrightnessDown exec xbacklight -dec 20
Настройка конфига i3status
Копирование конфига
Прежде чем вносить изменения, нужно скопировать настройки для i3status.
Для этого сначала создадим папку i3status (если у вас ее нет).
$ mkdir ~/.config/i3status
Далее копируем конфиг в домашнюю директорию, выполнив следующий код:
$ cp /etc/i3status.conf ~/.config/i3status/config
Настройки конфига i3status
Все иконки можете брать с сайта fontawesome и вставлять в конфиг
Индикатор звука
Для того, чтобы у вас был индикатор звука используйте код:
volume master {
format = " %volume"
format_muted = ""
device = "default"
mixer = "Master"
mixer_idx = 0
}
Тут особо расписывать нечего. Смотрите мои настройки конфиг i3status
Дополнительные настройки смотрите в документации по i3status
Мой новый конфиг и дополнительные настройки i3wm + polybar
Я сделал второй кнфиг, он с polibar, с плагином погоды, с индикатором переключения клавиатуры и другими вещами. Сам конфиг по ссылке
Вот, что вы в результате получите с этим конфигом
Заключение
Надеюсь статья была вам полезна. Пишите вопросы и пожелания в комментариях и в нашей группе https://vk.com/arch5u
Настройка i3wm — видео
Не забываем поблагодарить автора по ссылке
Забери пост себе на стену, чтобы легко найти! Или поделись с друзьями!Читайте также
Пожалуйста, включите JavaScript для просмотра комментариев.Как добавить сочетания клавиш в Awesome WM Ubuntu Linux
На Ubuntu 14.04.1 LTS, используя Awesome версию v3.4.15 (вы можете проверить версию с командной строкой: awesome -v
)
Если вы еще не скопировали файлы конфигурации из системы в домашний каталог, вы можете сделать это с помощью
$ mkdir ~/.config/ $ mkdir ~/.config/awesome/ $ cp -r /etc/xdg/awesome/rc.lua ~/.config/awesome/
Чтобы скопировать темы по умолчанию, так что вы можете изменить их для пользовательского уровня, выполните следующие действия:
$ cp -r /usr/share/awesome/themes/ ~/.config/awesome
Затем вы можете редактировать rc.lua
с помощью своего любимого редактора
$ vim ~/.config/awesome/rc.lua
На другом ответе не хватало места, где можно было поместить команды, поэтому я помещаю его в глобальные привязки клавиш
найти текст в файле
-- {{{ Key bindings globalkeys = awful.util.table.join(
Ниже вы можете добавить свои собственные команды, например:
-- {{{ Key bindings globalkeys = awful.util.table.join( -- My Bindings awful.key({ }, "F1", function () awful.util.spawn_with_shell("terminator") end),
Здесь вы можете изменить ключ, который здесь F1, или программу, которая здесь является терминатором.
Если вы хотите добавить составные клавиши, введите его внутри {}. например:
-- {{{ Key bindings globalkeys = awful.util.table.join( -- My Bindings awful.key({ modkey, "Control" }, "F1", function () awful.util.spawn_with_shell("terminator") end),
Это позволит связать ключи Super + Control + F1
чтобы открыть терминатор. modkey
– это переменная, установленная в rc.lua, тогда она не нужна (не может) для экранирования. Он по умолчанию используется для клавиши «Супер».
Вы также можете поместить свои ключевые слова в конец globalkeys (после всех ключевых слов по умолчанию), но затем обратите внимание, чтобы избежать конечной запятой в последнем ключевом соединении и добавить конечную запятую к последнему связыванию непосредственно перед последним, пример:
-- {{{ Key bindings globalkeys = awful.util.table.join( -- LOTS of stuff after: awful.key({ modkey }, "x", function () awful.prompt.run({ prompt = "Run Lua code: " }, mypromptbox[mouse.screen].widget, awful.util.eval, nil, awful.util.getdir("cache") .. "/history_eval") end), -- My Bindings awful.key({ }, "F1", function () awful.util.spawn_with_shell("terminator") end) )
Обратите внимание, что последнее связывание (то, что я создал для F1) не имеет конечной запятой, а первая перед последней имеет запятую.
Затем вы можете перезагрузить конфигурацию (по умолчанию: Ctrl + Super + r
) и посмотреть, работает ли новая конфигурация. Когда пользовательская конфигурация rc.lua
терпит неудачу, Awesome загружает основной из системы. В противном случае вы можете проверить конфигурационный файл через терминал, с awesome -k
.
Извините, если это запуталось, если это так, скажите мне, и я могу попытаться улучшить.
Вы можете добавлять сочетания клавиш, редактируя ~/.config/awesome/rc.lua
.
Откройте rc.lua
в своем любимом редакторе:
vim ~/.config/awesome/rc.lua
и запустить firefox
с помощью Super + Shift + w добавить следующую строку:
awful.key({ modkey, "Shift" }, "w", function () awful.util.spawn("firefox") end)
modkey
обычно является супер ключом, который можно изменить в rc.lua
. Замените «firefox» любой программой или командой, которую вы хотите запустить. Прежде чем определять свою собственную проверку ключевых слов для предопределенных привязок клавиш в rc.lua
чтобы избежать конфликтов.
Другой пример: dmrun
с Supre + r :
awful.key({ modkey, }, "r", function () awful.util.spawn("dmrun") end)
После внесения изменений в rc.lua
важно проверить файл конфигурации на наличие ошибок, выполнив следующую команду:
awesome -k
Вы должны увидеть что-то вроде этого:
✔ Configuration file syntax OK