Команда IT специалистов выполнит подготовку инфраструктуры для вашего бизнеса.
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов.
8(977)608-78-62 adm@nixm.ru

Awesome

Аватара пользователя
tupoll
Уважаемый участник
Уважаемый участник
Сообщения: 231
Зарегистрирован: 19 янв 2015, 07:30
Откуда: Vladivostok

Re: Awesome

Сообщение tupoll »

Не всегда есть возможность использовать замечательный демон 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ку труда не составит .
Вложения
проверено на freebsd funtoo
проверено на freebsd funtoo
2016-10-28-204218_259x104_scrot.png (13.32 КБ) 10100 просмотров
Проверяем меняя раскладку
Проверяем меняя раскладку
2016-10-28_Oct3553-.png (65.46 КБ) 10100 просмотров
Последний раз редактировалось tupoll 31 окт 2016, 16:45, всего редактировалось 2 раза.
Правильный линукс-BSD.
Аватара пользователя
ChubaDuba
Уважаемый участник
Уважаемый участник
Сообщения: 238
Зарегистрирован: 18 янв 2015, 19:39
Откуда: Ростов-на-Дону
Контактная информация:

Re: Awesome

Сообщение ChubaDuba »

tupoll писал(а):Думаю вписать его в трей другого вм или в conку труда не составит .
У меня xmonad+xmobar. Стоит kbd.
В xmobar раскладка отображается с помощью:

Код: Выделить всё

          
          , Run Kbd
                        [ ("us(ru)", "us")
                        , ("ru", "<fc=#92E0E2>ru</fc>")
                        , ("us", "<fc=#5FB48A>us</fc>")
                        ]
   
Выглядит это вот так:
Изображение
Изображение
Аватара пользователя
tupoll
Уважаемый участник
Уважаемый участник
Сообщения: 231
Зарегистрирован: 19 янв 2015, 07:30
Откуда: Vladivostok

Re: Awesome

Сообщение tupoll »

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.
Аватара пользователя
nezabudka
Местный говорун
Местный говорун
Сообщения: 618
Зарегистрирован: 18 апр 2015, 06:13
Откуда: Ростов на Дону

Re: Awesome

Сообщение nezabudka »

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
Местный говорун
Местный говорун
Сообщения: 618
Зарегистрирован: 18 апр 2015, 06:13
Откуда: Ростов на Дону

Re: Awesome

Сообщение nezabudka »

Меня тут посетила мысль и я вспомнила короткую форму записи оператора выбора

Код: Выделить всё

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
Аватара пользователя
tupoll
Уважаемый участник
Уважаемый участник
Сообщения: 231
Зарегистрирован: 19 янв 2015, 07:30
Откуда: Vladivostok

Re: Awesome

Сообщение tupoll »

На русскую раскладку sed благополучно плевал как обычно.Молодец!!! на линуксе можно и так,но сути не меняет("ru" "en" неизбежно в кавычках) :wall:В луа нужно будет добавлять либы,костыль-бинарник пока остаётся.
Правильный линукс-BSD.
Аватара пользователя
tupoll
Уважаемый участник
Уважаемый участник
Сообщения: 231
Зарегистрирован: 19 янв 2015, 07:30
Откуда: Vladivostok

Re: Awesome панель.

Сообщение tupoll »

[center][/center]Панель(wibox) в стандартном исполнении разбита на три части(layout) left,right,middle:

Код: Выделить всё

	left layout		|     middle layout		|   right layout            |                                                                    --------------------------------------------------------------------------------------------------
Назовём wibox mywibox размеры,цвета и расположение предоставим библиотеке beautiful:
Меняем теперь базовую схему разделения и делаем панель «двухэтажной»,изменения секций панели выносим из файла конфигурации в любое удобное место конфигурации(здесь это директория .compact)

Код: Выделить всё

awful.screen.connect_for_each_screen(function(s)
 -- Create the wibox
    s.mywibox = awful.wibar({ position = beautiful.wibox.position, height = beautiful.wibox.height, screen = s }) -- размер панели в theme.lua
    s.mywibox:set_bg(beautiful.wibox.bg) --цвет панели в theme.lua
    -- Add widgets to the wibox
    s.mywibox:setup {
        layout = wibox.layout.align.horizontal,
        { -- Left widgets
            layout = wibox.layout.fixed.horizontal,          
            compact.left(),           
        },
            compact.middle(), -- Middle widget
        { -- Right widgets
            layout = wibox.layout.fixed.horizontal,
            compact.right(),
        },
    }
end)	
Левый 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 .Разделить как угодно можно любую из полученных секций панели при помощи библиотеки layout используя описанные ей комбинации верх,низ вправо,влево,сжать-растянуть и т.п.Тем более сейчас код более чем упрощён разработчиками вм.
Вложения
2016-11-24_Nov3412-.png
2016-11-24_Nov3412-.png (34.6 КБ) 10010 просмотров
Последний раз редактировалось tupoll 31 янв 2020, 09:07, всего редактировалось 2 раза.
Правильный линукс-BSD.
Аватара пользователя
tupoll
Уважаемый участник
Уважаемый участник
Сообщения: 231
Зарегистрирован: 19 янв 2015, 07:30
Откуда: Vladivostok

Re: Awesome 4

Сообщение tupoll »

:) :) :) Четвертая версия awesome имеет значительные изменения в синтаксисе конфигурирования
Однако с приходом её так же появился новый одноимённый сайт с вполне приличным
описанием всех модулей оконного менеджера,имеются так же примеры кофигурирования
и описание отличий от версии 3.5 https://awesomewm.org/
На сегодняшний день имеются вполне рабочие конфиги от создателя библиотеки lain
c которых и советую поближе ознакомиться с версией https://github.com/copycat-killer/awesome-copycats .
И приятно получить уже наконец виджет индикатора раскладки сразу по дефолту.
Вложения
Пропатченная малость мною тема multicolor
Пропатченная малость мною тема multicolor
2017-06-05-064344_1377x772_scrot.png (695.79 КБ) 5604 просмотра
Правильный линукс-BSD.
Аватара пользователя
tupoll
Уважаемый участник
Уважаемый участник
Сообщения: 231
Зарегистрирован: 19 янв 2015, 07:30
Откуда: Vladivostok

Re: Awesome

Сообщение tupoll »

Добавил наконец конфигурацию для трёх операционных систем -устал переписывать руками
git clone https://github.com/tupoll/awesome.git ~/.config/awesome
chmod 755 ~/.config/awesome/compact/os/make_linux.sh
Затем тыкаем мышью в виджет и логинемся снова в иксы.
Вложения
2019-11-25_Nov3753-438x382.png
2019-11-25_Nov3753-438x382.png (101.5 КБ) 1547 просмотров
Правильный линукс-BSD.
Аватара пользователя
tupoll
Уважаемый участник
Уважаемый участник
Сообщения: 231
Зарегистрирован: 19 янв 2015, 07:30
Откуда: Vladivostok

Re: Awesome

Сообщение tupoll »

Потихоньку меняются выражения и функции в последних версиях (deprecated)
Функция указывающая на директорию размещения конфигурации темы и икон перенесена в /lib/gears.filesystem
и работает с дефолтной конфигурацией:

Код: Выделить всё

- Initializes the theme system
beautiful.init(awful.util.getdir("config").."/themes/gentoo/theme.lua") --устаревшее назначение пользователем 
И напрочь отказывается работать с $HOME разделами:

Код: Выделить всё

beautiful.init(gears.filesystem.get_themes_dir() .. "default/theme.lua")
Как рабочий вариант на сегодня нужно указать путь-до-темы,пример:

Код: Выделить всё

local themes = {
    "pattern",      -- 1    --например ~/.config/awesome/themes/pattern
    "darkblue"     -- 2  --~/.config/awesome/themes/darkblue
}
local chosen_theme = themes[1]  --выбранная тема

local theme_path = string.format("%s/.config/awesome/themes/%s/theme.lua", os.getenv("HOME"), chosen_theme) --путь
beautiful.init(theme_path) --инициализация

В theme.lua:

Код: Выделить всё

local theme                            = {}
local res                              = os.getenv("HOME") .. "/.config/awesome/themes/pattern" 
theme.wallpaper                        = res .. "/3D_black_background_8.jpg"
theme.menu_submenu_icon                = res .. "/icons/submenu.png"
theme.distr_icon                       = res .. "/logos/funtoo_logo1.png" 
Вместо res можно использовать любое слово(можно просто прописывать полный путь).
Правильный линукс-BSD.
Ответить

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