Горячие клавиши awesome: Awesome | Русскоязычная документация по Ubuntu – Как добавить сочетания клавиш в Awesome WM

Содержание

Как добавить сочетания клавиш в 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) не имеет конечной запятой, а первая перед последней имеет запятую.

Затем вы можете перезагрузить конфигурацию (по умолчанию: Ctrl + Super + r ) и посмотреть, работает ли новая конфигурация. Когда пользовательская конфигурация 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

Создастся окно размерами 800x600. Чтобы запустить внутри него 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 в целом:

  1. Screen — это не объект, а реальный монитор, подключенный к Вашему компьютеру. Нумерация идет не с 0, а с 1.
  2. Client — это окно приложения
  3. Tag — Тэги — это что-то подобное рабочим столам, но это понятие менее жесткое. Каждый клиент имеет по крайней мере один тэг, ему соответсвующий. Каждый экран также содержит как минимум один тэг. В любой момент на экране вы можете просматривать любое количество тэгов. Отображение без тэгов скроет все клиенты. Просмотр одного и более тэгов отобразит на экране все приложения с этими тэгами.
  4. Widget — объект, выводящий информацию на экран
  5. Titlebar — заголовок окна — это полоса вокруг приложения, присоединенная к нему. На нее можно добавлять виджеты
  6. 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 варианта вызова этой функции:

  1. keybinding({ modkey }, "m", awful.client.maximize):add()
  2. 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

  1. Awesome никогда не падает.
  2. Awesome быстрее всех.
  3. Только Awesome использует асинхронную библиотеку XCB вместо старой синхронной Xlib, которую используют остальные оконные менеджеры. В результате Awesome может предложить самую низкую латентность при управлении окнами.
  4. Отличная документация к API — расширить Awesome может любой.
  5. Не нужно тянуться за мышью. 100% управляемость с клавиатуры.
  6. Лучшая в своем классе поддержка multihead (несколько мониторов одновременно).
  7. Строгое соответствие всем стандартам (EWMH, XDG Base Directory, XEmbed, Desktop Notification, System Tray и так далее).
  8. Грамотная компоновка окон (нет перекрывающихся или плавающих слоев).
  9. Теги вместо виртуальных столов, что намного удобнее.
  10. Море готовых расширений на все случаи жизни.
  11. Возможность самому написать расширение на Lua.
  12. Поддержка D-Bus.
  13. И так далее.

Как установить 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 В этой статье расписал, как я настроил под свои нужды i3wm. Конечно же тут можно многое еще что добавить и настроить. Можно поставить и полибар и разные плюшечки, можно поставить также и rofi для “более удобного” поиска установленных программ, но мне как-то и так хорошо. Вы если хотите можете все это себе поставить. Я даю тут все в упрощенном варианте и без особых наворотов. Далее уже вы сами подстраивате конфиги под свой вкус и цвет, под свои “фломастеры”.

Ссылки

Официальная документация по i3wm
Документация по i3status
i3wm в ArchWiki
Мой конфиг с пояснениями внутри

Установка

Сначала давайте установим все, что нам понадобится. При этом помним, что это вариант минимализма. Чтобы понять, что к чему, а далее уже будем делать рюшечки 🙂

Нам понадобится:

  1. i3wm - оконный менеджер и его форк (ответвление) i3-gaps
  2. i3status - вывода строки статуса в i3bar
  3. dmenu - утилита для запуска программ
  4. ttf-font-awesome - шрифтовые иконки
  5. feh - установка обоины на рабочий стол
  6. lxappearance - установка тем для окон, иконок, курсора
  7. pcmanfm - файловый менеджер
  8. gvfs и udiskie - для авто монтирования внешних дисков
  9. xorg-xbacklight - для управлением яркостью экрана
  10. ristretto и tumbler - для просмотра фото
  11. 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

Горячие клавиши по умолчанию в i3wm

Горячие клавиши по умолчанию в 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, вбив в консоли команду:

После запуска, вы увидите белый экран с квадратом вверху

Как узнать название клавиши для hotkey

Подведите курсор мышки к квадрату и не уводя с него, нажмите на нужную клавишу. В терминале увидите ее название.

Думаю тут все понятно не вызовет никаких трудностей. Идем дальше.

Открытие программ в плавающем окне

Если определенную программу нужно открыть не в тайлинге, а в плавающем окне используйте код

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 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *