LINUX.ORG.RU

Допил виджета в Awesome WM

 ,


1

1

Привет, всем!

Пытаюсь допилить awful.widget.tasklist.

-- Create a tasklist widget
    s.mytasklist = awful.widget.tasklist(
       s,
       awful.widget.tasklist.filter.currenttags,
       tasklist_buttons,
       {
         shape  = gears.shape.transform(gears.shape.powerline)
          : translate(0, 2, 0.1)
       }
    )

Вопрос, как сделать gears.shape.powerline , что бы он смотрел в обратную сторону, а не как по дефолту.

https://awesomewm.org/doc/api/libraries/gears.shape.html#module.powerline

Именно, как в пилить этот пример в мой виджет

shape.transform(shape.rectangular_tag) : translate(0, 30) (cr, 70, 10, -10)

Спасибо!



Последнее исправление: MaksVal (всего исправлений: 2)

как сделать gears.shape.powerline , что бы он смотрел в обратную сторону, а не как по дефолту

shape = function(cr, width, height)
    gears.shape.transform(gears.shape.powerline):rotate_at(width/2, height/2, math.pi)(cr, width, height)
end
Worron ★★★
()
Ответ на: комментарий от Worron

Я вроде шарю в Lua, но видать не очень, особенно учитывая плохое знание Awesome API. Но где найдется cr?
И почему тогда сразу не впилить это

shape.transform(shape.powerline) : translate(0, 25) (cr,70,20, -20)


Спасибо!

MaksVal
() автор топика
Ответ на: комментарий от MaksVal

Но где найдется cr?
почему тогда сразу не впилить (cr,70,20, -20)

Через shape передается некая функция, которую виджет потом у себя внутри выполняет с конкретным набором своих внутренних параметров: cr, width, height.

shape = foo
...
foo(cr, width, height)
Так как для рисования большинства форм нужны дополнительные параметры кроме ширины и высоты, то общий случай выглядит так: заранее определяем пользовательскую функцию формы, потом передаем ее через shape
local foo = function(cr, width, height)
   -- здесь можно использовать cairo content произвольно, либо взять уже готовые формы из модуля, например
    shape.powerline(cr, width, height, -20) 
end
...
shape = foo
...
foo(cr, width, height)
В твоем исходном примере вырожденный случай, так как shape.powerline имеет дефолтное значение для четвертого аргумента, еe можно использовать так
shape = shape.powerline
...
shape.powerline(cr, width, height) -- arrow_depth = height/2
Для разворота powerline явно нужны недефолные параметры, так что без обертки в функцию не обойтись. Возможно, кстати, нужный arrow_depth решает задачу без вращения, об этом изначально не думал.

Ну и анонимная функция упрощает запись

local foo = function(cr, width, height)
    shape.powerline(cr, width, height, -20) 
end
...
shape = foo
shape = function(cr, width, height)
    shape.powerline(cr, width, height, -20) 
end

Worron ★★★
()
Ответ на: комментарий от Worron

Спасибо, огромное!
Все получилось.

MaksVal
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.