LINUX.ORG.RU

Как получить высоту панели? (+ плющка кому надо).

 ,


1

1

Как получить высоту панели для дальнейшего использования?

У меня есть кусок, реализующий во floating mode то, что делают приложения SizeUp, ShiftIt, Spectacle для OS X, тысячи их.

Вот демо, если кто не понял: http://i.imgur.com/cpKRBXM.gif

local wa = screen[mouse.screen].workarea
ww = wa.width
wh = wa.height
ph = 22 -- panel height

clientkeys = awful.util.table.join(
    awful.key({ modkey }, "KP_Left",  function (c) c:geometry( { width = ww / 2, height = wh, x = 0, y = ph } ) end),
    awful.key({ modkey }, "KP_Right", function (c) c:geometry( { width = ww / 2, height = wh, x = ww / 2, y = ph } ) end),
    awful.key({ modkey }, "KP_Up",    function (c) c:geometry( { width = ww, height = wh / 2, x = 0, y = ph } ) end),
    awful.key({ modkey }, "KP_Down",  function (c) c:geometry( { width = ww, height = wh / 2, x = 0, y = wh / 2 + ph } ) end),
    awful.key({ modkey }, "KP_Prior", function (c) c:geometry( { width = ww / 2, height = wh / 2, x = ww / 2, y = ph } ) end),
    awful.key({ modkey }, "KP_Next",  function (c) c:geometry( { width = ww / 2, height = wh / 2, x = ww / 2, y = wh / 2 + ph } ) end),
    awful.key({ modkey }, "KP_Home",  function (c) c:geometry( { width = ww / 2, height = wh / 2, x = 0, y = ph } ) end),
    awful.key({ modkey }, "KP_End",   function (c) c:geometry( { width = ww / 2, height = wh / 2, x = 0, y = wh / 2 + ph } ) end),
    awful.key({ modkey }, "KP_Begin", function (c) c:geometry( { width = ww, height = wh, x = 0, y = ph } ) end),
)
а как запилить в ph = текущую высоту панели автоматически, а не назначать самому, чтобы этот кусок работал хорошо у других пользователей, у которых панель может быть высотой 16 или вообще 40 пикселов?

Вот это не работает:

ph = mywibox[s].height
Спасибо.


Если что, ранее высота панели указывается в:

mywibox[s] = awful.wibox({ position = "top", screen = s, height = "22" })
слабоват я в lua.

vim
() автор топика
mywibox[s]:geometry().height

кстати:

local wa = screen[mouse.screen].workarea
ну мультидисплейной конфигурации конфуз выйдет :)

actionless ★★★★★
()
Последнее исправление: actionless (всего исправлений: 2)
Ответ на: комментарий от actionless

Завтра доставят второй монитор, буду ковырять дальше, там не должно быть особых проблем запилить для мульти-мониторной конфигурации.

Ну а

local ph = mywibox[s]:geometry().height
или без local, у меня пока-что не работает.

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

уже не могу редактировать первое сообщение.

вместо получения дисплея при инициализации, бери его внутри коллбэка (`c.screen`)

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

у тебя работает naughty через awesome-client?

например, в терминале:

echo 'naughty.notify({title = "testing", text = "naughty", timeout = 10})' | awesome-client -

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

точно, убрал local - работает.

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

без коллбека вот так работает, но уже ясно, что не будет работать на мульти-мониторной конфе:

local ph = mywibox[1].height
не мог бы ты показать пример, как запилить коллбэк, я их не использовал ранее.

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

у тебя же они и так использованы (или это по-другому называется?)

awful.key(
    { modkey }, "KP_Begin",
    function (c)
        local wa = c.screen.workarea
        c:geometry( {
            width = wa.width,
            height = wa.height,
            x = 0,
            y = mywibox[c.screen.index]:geometry().height})
    end),
actionless ★★★★★
()
Последнее исправление: actionless (всего исправлений: 1)

ты изобрёл то, что я использовал во fluxbox.

funeralismatic ★★★
()

Как закончишь - кинь пул реквест в апстрим, вдруг примут.

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