Awesome

Re: Awesome

Сообщение tupoll » 28 окт 2016, 14:55

Не всегда есть возможность использовать замечательный демон kbdd для индикации виджета переключения раскладки клавиатуры который вписывается в awesome просто идеально https://packages.gentoo.org/packages/x11-misc/kbdd . Решил проблему таким образом :
Пишем исполняемый фал и даём права на запуск в системе
Код: выделить все
touch /usr/local/bin/skb
 echo "xset -q | awk 'BEGIN { a[1]="ru"; a[0]="en"; } /LED/ { print a[$10 && 46]; }'">/usr/local/bin/skb   
chmod 755 /usr/local/bin/skb

Сам виджет:
Код: выделить все
--skb.lua by tupoll
local wibox = require('wibox')
local naughty = require('naughty')
local awful = require("awful")

local devnull = ">/dev/null"

local xset = {}


function xset.new()

   local w = wibox.widget.textbox()
   w:set_text(awful.util.pread(
   " skb"
))

  xsettimer = timer(
   { timeout = 1 ,hover_timeout = 0.5}
)
  xsettimer:connect_signal(
   "timeout", function()
      w:set_text(awful.util.pread(
         "skb"
      ))end)

 xsettimer:start() -- Start the timer
w:connect_signal(
   "mouse::enter", function()
      xset = naughty.notify(
         {title="КЛАВИАТУРА",text=awful.util.pread("skb") ,
          position      =  "bottom_right",
          width = 85
  }) 
end)


w:connect_signal(
   "mouse::leave", function()
      naughty.destroy(xset)
end)

return w

end

return setmetatable(xset, { __call = function(_, ...) return xset.new(...) end})
Думаю вписать его в трей другого вм или в conку труда не составит .
Вложения
2016-10-28-204218_259x104_scrot.png
проверено на freebsd funtoo
2016-10-28-204218_259x104_scrot.png (13.37 KiB) Просмотров: 4748
2016-10-28_Oct3553-.png
Проверяем меняя раскладку
2016-10-28_Oct3553-.png (65.66 KiB) Просмотров: 4748
Последний раз редактировалось tupoll 31 окт 2016, 16:45, всего редактировалось 2 раз(а).
Правильный линукс-BSD.
Аватар пользователя
tupoll
Уважаемый участник
Уважаемый участник
 
Автор темы
Сообщений: 228
Фото: 3
Стаж: 2 года 8 месяцев 1 день
Откуда: Vladivostok
Благодарил (а): 31 раз.
Поблагодарили: 38 раз.

Re: Awesome

Спонсор

Спонсор
 

Re: Awesome

Сообщение ChubaDuba » 29 окт 2016, 01:43

tupoll писал(а):

Думаю вписать его в трей другого вм или в conку труда не составит .

У меня xmonad+xmobar. Стоит kbd.
В xmobar раскладка отображается с помощью:
Код: выделить все
         
          , Run Kbd
                        [ ("us(ru)", "us")
                        , ("ru", "<fc=#92E0E2>ru</fc>")
                        , ("us", "<fc=#5FB48A>us</fc>")
                        ]
   

Выглядит это вот так:
Изображение
Изображение
Аватар пользователя
ChubaDuba
Уважаемый участник
Уважаемый участник
 
Сообщений: 225
Фото: 8
Стаж: 2 года 8 месяцев 1 день
Откуда: Ростов-на-Дону
Благодарил (а): 20 раз.
Поблагодарили: 89 раз.

Re: Awesome

Сообщение tupoll » 29 окт 2016, 05:31

ChubaDuba писал(а):

tupoll писал(а):

Думаю вписать его в трей другого вм или в conку труда не составит .

У меня xmonad+xmobar. Стоит kbd.
В xmobar раскладка отображается с помощью:
Код: выделить все
         
          , Run Kbd
                        [ ("us(ru)", "us")
                        , ("ru", "<fc=#92E0E2>ru</fc>")
                        , ("us", "<fc=#5FB48A>us</fc>")
                        ]
   

Выглядит это вот так:
Изображение
Изображение

Цель была быстренько собрать рабочую индикацию из того что есть в наличии,и если можно было бы убрать бинарник -я б не задумываясь это сделал,поэтому никчему здесь это.Если кто-то засунет это без лишних строчек в lua-милости прошу
Код: выделить все
xset -q | awk 'BEGIN { a[1]="ru"; a[0]="en"; } /LED/ { print a[$10 && 32]; }'
Правильный линукс-BSD.
Аватар пользователя
tupoll
Уважаемый участник
Уважаемый участник
 
Автор темы
Сообщений: 228
Фото: 3
Стаж: 2 года 8 месяцев 1 день
Откуда: Vladivostok
Благодарил (а): 31 раз.
Поблагодарили: 38 раз.

Re: Awesome

Сообщение nezabudka » 30 окт 2016, 21:46

tupoll писал(а):

Код: выделить все
xset -q | awk 'BEGIN { a[1]="ru"; a[0]="en"; } /LED/ { print a[$10 && 32]; }'

Что то черз awk сложно как то ( но чувствую руку мастера - шутника :) ) Ни как не могла
проникнутся в смысл выводимого массива a[$10 && 32]
Немного проясняет картину если выполнить:
Код: выделить все
awk '{print $0 && 32}' <<<"00001000"
awk '{print $0 && 32}' <<<"00000000"
awk '{print $0 && 32}' <<<"00001005"

Тоесть внутри квадратных скобок, образовывается ключ массива при помощи
логического "и" т.е. если оба числа отличны от нуля значит общее
выражение равно единице, если одно из чисел равно нулю то и ключу присваивается
занчение false тоесть ноль. Значит число 32 может фактически быть любым отличным
от нуля. Проверим и заменим 32 на 1
Код: выделить все
xset -q | awk 'BEGIN { a[1]="ru"; a[0]="en"; } /LED/ { print a[$10 && 1]; }'

Все работает корректно, значит выводы правильные. Раньше я бы не задумываясь
написала бы очень просто, черз sed
Код: выделить все
xset -q | sed -n 's/.*000.$/en/p;s/.*100.$/ru/p'
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Аватар пользователя
nezabudka
Местный говорун
Местный говорун
 
Сообщений: 612
Фото: 180
Стаж: 2 года 5 месяцев 2 дня
Откуда: Ростов на Дону
Благодарил (а): 283 раз.
Поблагодарили: 145 раз.

Re: Awesome

Сообщение nezabudka » 30 окт 2016, 22:36

Меня тут посетила мысль и я вспомнила короткую форму записи оператора выбора
Код: выделить все
xset -q | awk '/LED/ {print $10?"ru":"en"}'

Я думаю это даже лаконичней будет и без массивов :D
Проверяем. Копируем строчку и запускаем в терминале меняя раскладку.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Аватар пользователя
nezabudka
Местный говорун
Местный говорун
 
Сообщений: 612
Фото: 180
Стаж: 2 года 5 месяцев 2 дня
Откуда: Ростов на Дону
Благодарил (а): 283 раз.
Поблагодарили: 145 раз.

Re: Awesome

Сообщение tupoll » 31 окт 2016, 16:07

На русскую раскладку sed благополучно плевал как обычно.Молодец!!! на линуксе можно и так,но сути не меняет("ru" "en" неизбежно в кавычках) :wall:В луа нужно будет добавлять либы,костыль-бинарник пока остаётся.
Правильный линукс-BSD.
Аватар пользователя
tupoll
Уважаемый участник
Уважаемый участник
 
Автор темы
Сообщений: 228
Фото: 3
Стаж: 2 года 8 месяцев 1 день
Откуда: Vladivostok
Благодарил (а): 31 раз.
Поблагодарили: 38 раз.

Re: Awesome панель.

Сообщение tupoll » 24 ноя 2016, 16:25

Панель(wibox) в стандартном исполнении разбита на три части(layout) left,right,middle:
Код: выделить все
   left layout      |     middle layout      |   right layout            |                                                                    --------------------------------------------------------------------------------------------------
Назовём wibox main размеры,цвета и расположение предоставим библиотеке beautiful:
Код: выделить все
bar["main"] = awful.wibox({ position = beautiful.wibox.position, height = beautiful.wibox.height })
bar["main"]:set_bg(beautiful.wibox.bg)         
Меняем теперь базовую схему разделения и делаем панель «двухэтажной»,а центральную часть оставим без изменения
Код: выделить все
|   top left layout |   middle layout    | top layout |   top right layout  |                                      |bottom left layout|                    |bottom      |   bottom right layout   
Для удобства выносим деление wibox из rc.lua и добавляем в каждый лэйаут кофигурационный файл и прописываем сам wibox:
Код: выделить все
 -- Widgets that are aligned to the left
bar["left"] = wibox.layout.fixed.horizontal()
bar["left"]:add(compact.left())

--Center
bar["middle"] = wibox.layout.fixed.horizontal()
bar["middle"]:add(compact.middle())
-- Widgets that are aligned to the right
bar["right"] = wibox.layout.fixed.horizontal()
bar["right"]:add(compact.right())                                                                                   bar["wibox"] = wibox.layout.align.horizontal()
bar["wibox"]:set_left(bar["left"])
bar["wibox"]:set_middle(bar["middle"])
bar["wibox"]:set_right(bar["right"])
bar["main"]:set_widget(bar["wibox"])   
Левый layout нам нужно сделать вертикальным, разделённым пополам,для этого поделим его на две горизонтальные половины:
Код: выделить все
local awful     = require("awful")
local beautiful = require("beautiful")
local wibox     = require("wibox")
local radical   = require("radical")                                                                                                                                                       local function new()
    local layout = wibox.layout.flex.vertical()  --размещение вертикально
    local top_layout = wibox.layout.fixed.horizontal() --верхний горизонтальный
    top_layout:add(m()) --прописываем верхние виджеты
   
    local bottom_layout = wibox.layout.fixed.horizontal()   
    bottom_layout:add(p())  --место для виджетов   
   
    layout:add(top_layout)
    layout:add(bottom_layout)
    return layout
end

return (function(_, ...) return new(...) end )      
Центральная часть wibox имеет два горизонтальных лейаута правый лейаут при этом поделен на два горизонтальных выглядит это так:
Код: выделить все
   local awful     = require("awful")
local beautiful = require("beautiful")
local wibox     = require("wibox")
local radical   = require("radical")
local common    = require("compact.common")                                                                                                                                                  local function new()
    local layout = wibox.layout.flex.horizontal() --сам layout расположен свободно горизонтально
    local middle_layout = wibox.layout.fixed.horizontal() --левая увеличенная часть
     
    middle_layout:add(u())  --место для размещения «больших виджетов»
   
   
    middle_layout:add(c())
    local right_layout = wibox.layout.flex.vertical()    --регистрируем правую половину верт.
    local top_layout = wibox.layout.flex.horizontal()    --делим на два горизонтальных
    top_layout:add(t()) --виджеты правый layout верх
   
    right_layout:add(top_layout)
    local bottom_layout = wibox.layout.fixed.horizontal()
    bottom_layout:add(d()) --виджеты справа низ
 
    right_layout:add(bottom_layout)
    layout:add(middle_layout)
    layout:add(right_layout)
    return layout
end

return (function(_, ...) return new(...) end )
Остаётся только правая часть wibox-в моём случае оставлена поделенной и пустой без виджетов,но зарегистрированной в конфигурации панели по аналогии с левой.Причины для этого две: Всё с двух панелей свободно разместилось с запасом,деление панели получилось не фиксированным геометрически,а виртуальным с использованием разных по величине мест для заполнения.Теперь чтобы убрать всё лишнее с рабочей области достаточно нажать два раза: mod4 /. Внимательней посмотреть конфигурацию можно здесь https://github.com/tupoll/awesome
Вложения
2016-11-24_Nov3412-.png
2016-11-24_Nov3412-.png (34.71 KiB) Просмотров: 4658
Правильный линукс-BSD.
Аватар пользователя
tupoll
Уважаемый участник
Уважаемый участник
 
Автор темы
Сообщений: 228
Фото: 3
Стаж: 2 года 8 месяцев 1 день
Откуда: Vladivostok
Благодарил (а): 31 раз.
Поблагодарили: 38 раз.

Re: Awesome 4

Сообщение tupoll » 05 июн 2017, 11:58

:) :) :) Четвертая версия awesome имеет значительные изменения в синтаксисе конфигурирования
Однако с приходом её так же появился новый одноимённый сайт с вполне приличным
описанием всех модулей оконного менеджера,имеются так же примеры кофигурирования
и описание отличий от версии 3.5 https://awesomewm.org/
На сегодняшний день имеются вполне рабочие конфиги от создателя библиотеки lain
c которых и советую поближе ознакомиться с версией https://github.com/copycat-killer/awesome-copycats .
И приятно получить уже наконец виджет индикатора раскладки сразу по дефолту.
Вложения
2017-06-05-064344_1377x772_scrot.png
Пропатченная малость мною тема multicolor
2017-06-05-064344_1377x772_scrot.png (698.5 KiB) Просмотров: 252
Правильный линукс-BSD.
Аватар пользователя
tupoll
Уважаемый участник
Уважаемый участник
 
Автор темы
Сообщений: 228
Фото: 3
Стаж: 2 года 8 месяцев 1 день
Откуда: Vladivostok
Благодарил (а): 31 раз.
Поблагодарили: 38 раз.

Пред.

Вернуться в DE и оконные менеджеры

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron