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

Моё знакомство с WM Awesome. Часть 3 / Хабр

Третья часть моего поста (предыдущую можно найти тут)

В этом кусочке назначаем кнопки мыши и клавиатуры. Небольшое примечание: для Mod4 + PrntScr я назначил делать скриншот выделенной области, а на просто PtntScrn скриншот всего экрана, но второй случай не работает — не доходят руки разобраться (для скриншотов вам понадобится установить пакет xsnap

Назначение кнопок и комбинаций

-----------------------------------
--- Назначения мыши ---
-----------------------------------
root.buttons(awful.util.table.join(
   -- Правая кнопка - вызов меню
   awful.button({ }, right_button, function() main_menu:toggle() end),
   -- Боковые кнопки - переключение тэгов по порядку
   awful.button({ }, plus_button, awful.tag.viewnext ),
   awful.button({ }, minus_button, awful.tag.viewprev )
))
-------------------------------------------
--- Назначения клавиатуры ---
-------------------------------------------
-- Глобальные назначения клавиш
globalkeys = awful.
util.table.join( -- Переключение рабочих столов awful.key( { modkey, }, key_Left, awful.tag.viewprev ), awful.key( { modkey, }, key_Right, awful.tag.viewnext ), awful.key( { modkey, }, key_Esc, awful.tag.history.restore ), --awful.key( { }, key_Alt_R, function () kbdcfg.switch() end), -- Манипуляция областями экрана (перестановка клиентов) awful.key( { modkey, }, key_Tab, function() awful.client.focus.history.previous() if client.focus then client.focus:raise() end end ), -- Запуск стандартных программ -- Терминал awful.key( { modkey, }, key_X, function() awful.util.spawn(terminal) end ), -- Командная строка awful.key( { modkey, }, key_R, function() bottom_prompt_box[mouse.screen]:run() end ), awful.key( { }, key_Home, function() awful.util.spawn_with_shell("google-chrome-stable") end ), -- Перезапуск awesome awful.key( { modkey, "Control" }, key_R, awesome.restart), awful.key( { modkey }, key_F1, function () awful.
util.spawn('slimlock') end), awful.key( { }, key_Print, function () awful.util.spawn_with_shell("DATE=`date +%d%m%Y_%H%M%S`; xsnap -file $HOME/Snapshots/snap$DATE") end), awful.key( { modkey }, key_Print, function () awful.util.spawn_with_shell("DATE=`date +%d%m%Y_%H%M%S`; xsnap -nogui -file $HOME/Snapshots/snap$DATE") end), awful.key( { }, key_Vol_Up, function () volumecfg.up() end), awful.key( { }, key_Vol_Down, function () volumecfg.down() end), awful.key( { }, key_Mute, function () volumecfg.toggle() end) ) ------------------------------------------------------ --- Клиентские назначения клавиш --- ------------------------------------------------------ clientkeys = awful.util.table.join( -- РАзвернуть на весь экран awful.key( { modkey, }, key_F, function(c) c.fullscreen = not c.fullscreen end ), -- Закрыть окно awful.key( { modkey, "Shift" }, key_C, function(c) c:kill() end ), -- Перевести окно в плавающий режим awful.
key( { modkey, "Control" }, key_Space, awful.client.floating.toggle ), -- Сделать данной клиентское окно главным awful.key( { modkey, "Control" }, key_Return, function(c) c:swap( awful.client.getmaster() ) end ), -- Переместить окно на другой экран??? awful.key( { modkey, }, key_O, awful.client.movetoscreen ), -- Поместить окно поверх всех awful.key( { modkey, }, key_T, function(c) c.ontop = not c.ontop end ), -- Минимизировать окно awful.key( { modkey, }, key_N, function(c) c.minimized = true end ), -- Максимизировать окно awful.key( { modkey, }, key_M, function(c) c.maximized_horizontal = not c.maximized_horizontal c.maximized_vertical = not c.maximized_vertical end ) )

Здесь определены некоторые комбинации для тегов, роли и сигналы. Например пиджин у меня открывается только на 4 теге, а в сигнала я прописываю — отображать у окон кнопку развернуть, закрыть, иконку и заголовок окна.

Комбинации для окон, правила и сигналы

-----------------------------------------------------------------------------------------------------------------------
--- Переключение тэгов и операции с клиентами и тэгами на каждом из экранов ---
-----------------------------------------------------------------------------------------------------------------------
for i = 1, 9 do
  -- modkey + <номер тэга>
  -- Переключиться в выбранный тэг
  globalkeys = awful.
util.table.join( globalkeys, awful.key({ modkey }, "#" .. i + 9, function() local screen = mouse.screen local tag = awful.tag.gettags(screen)[i] if tag then awful.tag.viewonly(tag) end end), -- modkey + Ctrl + <номер тэга> -- Совместить выбранный тэг с текущим awful.key({ modkey, "Control" }, "#" .. i + 9, function() local screen = mouse.screen local tag = awful.tag.gettags(screen)[i] if tag then awful.tag.viewtoggle(tag) end end), -- modkey + <номер тэга> -- Переместить клиент в фокусе на выбранный тэг awful.key({ modkey, "Shift" }, "#" .. i + 9, function() local tag = awful.tag.gettags(client.focus.screen)[i] if client.focus and tag then awful.client.movetotag(tag) end end), -- modkey + <номер тэга> -- Переместить клиент в фокусе на выбранный тэг, оставив его и в текущем тэге awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9, function() local tag = awful.tag.gettags(client.focus.
screen)[i] if client.focus and tag then awful.client.toggletag(tag) end end) ) end ---------------------------------------------------------------------------- --- Назначение кнопок мыши для каждого клиента --- ---------------------------------------------------------------------------- clientbuttons = awful.util.table.join( -- Переключить фокус awful.button( { }, left_button, function(c) client.focus = c; c:raise() end), -- Переместить awful.button( { modkey }, left_button, awful.mouse.client.move), -- Изменить размер awful.button( { modkey }, right_button, awful.mouse.client.resize) ) -- Задать глобальные клавиши root.keys(globalkeys) ---------------------------------- --- Роли приложений --- ---------------------------------- awful.rules.rules = { { -- Главная роль для всех приложений rule = { }, properties = { border_width = beautiful.border_width, -- задается толщина рамки окна border_color = beautiful.border_normal, -- цвет рамки окна не в фокусе focus = awful.
client.focus.filter, -- это что не знаю :( keys = clientkeys, -- горячие клавиши buttons = clientbuttons} -- кнопки мыши }, --{ rule = { class = "MPlayer" }, -- properties = { floating = true } }, --{ rule = { class = "pinentry" }, -- properties = { floating = true } }, --{ rule = { class = "Gimp" }, -- properties = { floating = true } }, -- Set Firefox to always map on tags number 5 of screen 1. --{ rule = { class = "Firefox" }, -- properties = { tag = tags[1][5] } } -- "Коньки": без рамки и плавать { rule = { class = "Conky"}, properties = { border_width = 0, floating = true } }, { rule = { instance = "Pidgin" }, properties = { tag = tags[1][4], floating = false, maximized_horizontal = false, maximized_vertical = false } }, { rule = { instance = "Skype" }, properties = { floating = true, maximized_horizontal = false, maximized_vertical = false } } } -------------------- --- Сигналы --- -------------------- client.
connect_signal("manage", function (c, startup) -- Enable sloppy focus c:connect_signal("mouse::enter", function(c) if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier and awful.client.focus.filter(c) then client.focus = c end end) if not startup then -- Set the windows at the slave, -- i.e. put it at the end of others instead of setting it master. -- awful.client.setslave(c) -- Put windows in a smart way, only if they does not set an initial position. if not c.size_hints.user_position and not c.size_hints.program_position then awful.placement.no_overlap(c) awful.placement.no_offscreen(c) end end end) -- У окон в фокусе client.connect_signal("focus", function(c) -- Раскрасить рамку соответствеено c.border_color = beautiful.border_focus -- Нарисовать заголовок окна -- Виджет слева от заголовка окна local left_layout = wibox.
layout.fixed.horizontal() left_layout:add(awful.titlebar.widget.iconwidget(c)) -- Виджеты в правой части заголовка окна local right_layout = wibox.layout.fixed.horizontal() --right_layout:add(kbdcfg.widget) right_layout:add(awful.titlebar.widget.maximizedbutton(c)) right_layout:add(awful.titlebar.widget.closebutton(c)) -- Заголовок окна local middle_layout = wibox.layout.flex.horizontal() local title = awful.titlebar.widget.titlewidget(c) title:set_align("center") middle_layout:add(title) -- Расставляем блоки виджетов по местам local layout = wibox.layout.align.horizontal() layout:set_left(left_layout) layout:set_right(right_layout) layout:set_middle(middle_layout) -- Добавляем их на заголовок окна awful.titlebar(c):set_widget(layout) -- Задаем размер заголовка окна awful.titlebar(c, {size = 18}) end) client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal awful.titlebar(c, {size = 18}) end)

Переключение раскладок.

Сразу скажу, что стоит откатиться xkbcomp до версии 1.2.3, так как в 1.2.4 есть баг (при переключении раскладки, не работают кнопки мыши)

Про раскладку вообще, можно добавить реализацию как это в gentoo wiki написанно, но тогда у нас не буду работать горячии клавиши (для системных мы указывали коды клавиш, так что это нам не страшно), а вот такие как ctrl + C и т.д. работать не будут.

в новых версиях Xorg сервера убрали xorg.conf, теперь конфигурация лежит в другом месте. Создадим директорию
sudo mkdir /etc/X11/xorg.conf.d

И в ней создадим 2 файла, 01-keyboard-layout.conf и 01-enable-pointerkeys.conf
В первом:

Section "InputClass"
	Identifier             "keyboard-layout"
	MatchIsKeyboard        "on"
	Option "XkbLayout" "us,ru"
	Option "XkbOptions" "grp:ctrl_shift_toggle,terminate:ctrl_alt_bksp
EndSection

Перезапуск X сервера комбинацией ctrl + alt + backspace и смена раскладки с помощью ctrl + shift

После смены раскладки у нас по умолчанию отключаются кнопки мыши, по этому для их включения запишем во втором (при версии xkbcomp-1. 2.4 это не работает):

Section "InputClass"
    Identifier             "Keyboard Defaults"
    MatchIsKeyboard        "yes"
    Option                 "XkbOptions" "keypad:pointerkeys"
EndSection

Теперь сделаем приятным для глаз наш urxvt, для этого отредактируем файлик ~/.Xdefaults (опять таки, если его нету — смело создаём)

Мой ~/.Xdefaults

!darkgray
*background:		#212121
!silver
*foreground:		#C0C0C0
!black
*color0:		#251f1f
*color8:		#5e5e5e
!red
*color1:		#eb4509
*color9:		#eb4509
!green
*color2:		#94e76b
*color10: 		#95e76b
!yellow
*color3:		#ffac18
*color11: 		#ffac18
!blue
*color4:		#46aede
*color12:		#46aede
!magenta
*color5:		#e32c57
*color13:		#e32c57
!cyan
*color6:		#d6dbac
*color14:		#d6dbac
!white
*color7:		#efefef
*color15:		#efefef
!save 5000 lines
URxvt*saveLines:	5000	
!left button
URxvt.matcher.button:   1	
!default brauser google chrome
URxvt.urlLauncher:	google-chrome-stable
!underline links
URxvt. underlineURLs:	true
!	
URxvt.keysym.M-u:	perl:url-select:select_next
!disabled button 'new tab'
URxvt.tabbed.new-button:no
!?
URxvt.tabbed.tabbar-fg: 15
!?
URxvt.tabbed.tabbar-bg: 8
!?
URxvt.tabbed.tab-fg:    8
!?
URxvt.tabbed.tab-bg:    14
Rxvt.font: -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso8859-1
URxvt.boldFont: -misc-fixed-bold-r-normal--15-140-75-75-c-90-iso8859-1
!disable scrollbar
URxvt*scrollBar:       	false	

В итоге получаем приятную для глаз цветовую схему нашего терминала.

В итоге получаем вот такую приятную и весьма удобную систему:


Конечно я не достиг такого уровня, как unlogic и мой конфиг ещё можно совершенствовать до бесконечности, но я получил удобную и работоспособную систему.

P.S. В emacs у меня цветовая схема monokai.
P.P.S. Надеюсь ничего не забыл описать.

Тайловый оконный менеджер Linux Awesome

Опубликовано admin — вт, 06/07/2022 — 12:23

Десктопы

Awesome — очень лёгкий тайловый (мозаичный) оконный менеджер Linux. Он также способен работать и в обычном (композитном) режиме.

Настраивается менеджер при помощи конфигурационного файла.

Содержание

  • Установка
  • Настройка
    • Горячие клавиши
    • Темы оформления
  • Заключение

Установка

Установка в Arch Linux:

oleg@mobile:~:$ sudo pacman -S awesome vicious
разрешение зависимостей...
проверка конфликтов...
Пакеты (6) libxdg-basedir-1.2.3-1  lua53-5.3.6-1  lua53-lgi-0.9.2-7  xcb-util-xrm-1.3-2  awesome-4.3-3  vicious-2.5.0-1
Будет загружено:     1,75 MiB
Будет установлено:  10,73 MiB
:: Приступить к установке? [Y/n] 
:: Получение пакетов...
...

В пакете vicious находятся базовые плагины, которые могут быть использованы в дальнейшем.

Установка в Ubuntu:

$ sudo apt-get install awesome awesome-extra

 Для старта Awesome при загрузке X Window System необходимо прописать загрузку менеджера в файле .xinitrc, расположенном в домашнем каталоге.

oleg@mobile:~:$ vim .xinitrc
#!/bin/sh
...
exec awesome

Настройка

Горячие клавиши

super + number
Переход на другой тег, где тег это номер клавиши, точнее его положение (проводя аналогию с другими wm, тег = вирт. рабочий стол)
super + shift + number
Перенести текущее окно на другой тег
super + j, super+k
Переход между окнами
super + shift + j или super + shift + k
Поменять местами два окна
super + Space
Изменение отображения окон. (В awesome очень много видов отображений — тайлинговые: вертикально, горизонтально; композитные — можно мышкой таскать; приложение в фокусе на весь экран и пр.)
super + Enter
Запустить терминал
super + r
Запуск программы
super+shift+c
Закрыть окно
super+shift+r
Перезапустить awesome
super+shift+q
Выйти из awesome

super — клавиша-модификатор modkey, на которой изображён логотип Windows.

Команды можно изменить в конфигурационном файле имея небольшие навыки в написании скриптов. Для этого создаётся пользовательский конфигурационный файл:

oleg@mobile:~:$ mkdir ~/.config/awesome
oleg@mobile:~:$ cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua

Горячие клавиши находятся в секции: 

...
-- {{{ Key bindings
... 

Ничто не мешает настроить команды на свой вкус.

Пример:

...
awful.key({ modkey, "Shift"   }, "q", awesome.quit),
...


Из этой строки следует, что командой modkey + Shift + q менеджер будет закрыт.

modkey — клавиша с логотипом Windows.

Можно например сменить терминал и редактор в секции:

...
-- {{{ Variable definitions
... 

При желании можно и переименовать теги, заменив цифры чем-либо удобочитаемым.

Темы оформления

Тема по умолчанию находится в /usr/share/awesome/themes/default. Её следует скопировать в ~/.config/awesome/themes/default и изменить theme_path в rc. lua.

Заключение

Оконный менеджер Linux Awesome прекрасно подходит для ноутбуков и слабых машин. Он также весьма удобен при необходимости держать в фокусе зрения несколько окон.

Поделиться с друзьями

Контроль яркости в Awesome оконном менеджере

спросил

Изменено 5 лет, 5 месяцев назад

Просмотрено 21к раз

Я только что установил Awesome WM, и у меня нет возможности изменить яркость экрана, а также не работает его ярлык. Кто-нибудь может помочь?

  • яркость
  • потрясающий

1

В разделе globalkeys = ужасно.util.table.join( раздела ~/.config/awesome/rc. lua :

 -- Яркость
    ужасно.key({ }, "XF86MonBrightnessDown", функция ()
        ужасно.util.spawn("xbacklight -dec 15") конец),
    ужасно.key({ }, "XF86MonBrightnessUp", функция ()
        ужасно.util.spawn("xbacklight -inc 15") конец),
 

1

1) Установить xbacklight:

 sudo apt-get install xbacklight
 

2) Проверить в консоли:

 xbacklight -inc 10
хбэклайт -дек 10
 

3) Добавьте горячие клавиши в ваш awesome config ~/.config/awesome/rc.lua

Вставьте в раздел [globalkeys = ужасно.util.table.join] следующий текст:

 ужасно.key({ }, " XF86MonBrightnessDown", функция ()
    ужасно.util.spawn("xbacklight -dec 15") конец),
ужасно.key({ }, "XF86MonBrightnessUp", функция ()
    ужасно.util.spawn("xbacklight -inc 15") конец)
 

Я использую клавиатуру без XF86MonBrightness*, поэтому добавил привязки к Mod+o, Mod+p:

 ужасно.key({modkey, }, "p", function ()
    ужасно. util.spawn("xbacklight -dec 15") конец),
ужасно.key({modkey,}, "о", функция ()
    ужасно.util.spawn("xbacklight -inc 15") конец)
 

Надеюсь, это поможет)

2 9″ gnome-power-manager» внутри awesome или при запуске awesome: https://wiki.archlinux.org/index.php/Awesome#Transitioning_away_from_Gnome3 Надеюсь, это поможет

Другой вариант — запустить awesome внутри gnome, тогда вы можете просто положиться на элементы управления gnome (работает нормально), сеть и т. д. тоже работает http://awesome.naquadah.org/wiki/Quickly_Setting_up_Awesome_with_Gnome

Чтобы приложение запускалось автоматически при входе в Awesome WM: Щелкните правой кнопкой мыши на рабочем столе, перейдите к awesome > edit config . добавьте в конце следующую строку:

 -- Автозапуск программ в Awesome WM
автозапуск = правда
автозапуск приложений =
{
   "xfce4-питание-менеджер",
}
если автозапуск то
   для приложения = 1, #autorunApps сделать
       ужасно. util.spawn(autorunApps[приложение])
   конец
конец
 

Замените «xfce4-power-manager» вашим менеджером питания.

1

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie

.

bash — Awesome WM — Запустите приложение на основе терминала с помощью ярлыка

Задавать вопрос

спросил

Изменено 2 года, 5 месяцев назад

Просмотрено 1к раз

Я хочу иметь ярлык для запуска таких вещей, как vifm, cmus, htop и т. д. Эти приложения требуют запуска с терминала.

Я знаю, что для создания ярлыка в Awesome WM я должен:

 ужасно.key({ modkey }, "my_hotkey", function () ужасно.util.spawn(...вот приложение) end,
          {description = "the_description", group = "моя пользовательская группа"}),
 

Но я не могу просто написать:

 ужасно.util.spawn("vifm")
 

У меня не работает. Итак, как я мог бы сделать ярлык, который инициирует, скажем, vifm, принимая во внимание, что этот код должен сначала запустить терминал, а затем внутри этого терминала запустить «vifm».

Кроме того, есть ли более эффективный способ сделать это? Я имею в виду, может быть, запустить vifm напрямую, вместо того, чтобы полагаться на запуск терминала?

PD: Моя оболочка — bash, мой терминал — Konsole.

  • bash
  • awesome
  • lua

Большинство терминалов позволяют запустить команду, которая после завершения также закроет терминал. Я не знаю Konsole, но в терминале GNOME это так же просто, как gnome-terminal -- vim .

Если вы хотите, чтобы терминал завис после завершения команды, вы можете использовать этот хак: гном-терминал -- bash -c 'vim; баш .

1

Я чувствую себя немного смущенным из-за того, что не понял решения раньше. На самом деле это было на самой странице справки консоли, в любом случае команда (для консоли):

 konsole -e cli_based_app
 

Например,

 konsole -e vim
 

Затем вы можете поместить это в свой rc.

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

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