Awesome WM: Как я могу написать правило, чтобы окно казалось плавающим под мышью?

2

Я использую менеджер буфера обмена и хотел бы, чтобы он появлялся под мышью при нажатии клавиши быстрого доступа.

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

Я нашел эту запись в Awesome FAQ .

Однако я не вижу, как использовать этот совет для создания правила.

Есть намеки?

mperrin
источник

Ответы:

3

Для глобального использования по ключевому слову

в конце вашего rc.lua у вас есть функция client.add_signal(..., внутри этой функции вы должны установить последнюю строку FAQ, чтобы включить ее только для определенных приложений. Я включил новую переменную в начале rc.lua `

local undermouse = false

чем часть FAQ:

client.add_signal("manage", function (c, startup)
    -- Add a titlebar
    -- awful.titlebar.add(c, { modkey = modkey })

    -- Enable sloppy focus
    c:add_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)
=>          if underMouse == true then
=>              awful.placement.under_mouse(c)
=>              underMouse = false
=>          end
        end
    end
end)

чтобы использовать эту опцию, я создал следующий код для моего ключа вычислителя:

globalkeys = awful.util.table.join(
    awful.key({                   }, "#148", function () 
        underMouse = true 
        awful.util.spawn(calculator) 
    end),
)

Как правило, на 1 заявку

как вы нашли после тестирования моего решения, но добавили к этому ответу для использования другими людьми:

{ rule = { class = "Gnome-calculator",  },
    properties = { 
        floating = true,
        callback = function(c) awful.placement.under_mouse(c) end,
    },
},
Герт Пеллин
источник
@mperrin отрицательный голос (не мной), вероятно, потому, что я дал решение, а вы даете решенное на себя за ответ, который должен быть комментарием к моему ответу.
Герт Пеллин
1
Хорошо, извините за это, довольно новый здесь. Ваш ответ мне очень помог, но я подумал, что он не дает четкого ответа на вопрос «как написать правило ...», поэтому я не пометил ваш ответ как принятое решение, но дал его голосование против.
mperrin
0

Большое спасибо за ваш ответ и основные awful.placement.under_mouse(c)функции.

Наконец, написать правило было действительно легко:

 { rule = { class = "Gnome-calculator",  },
    properties = { 
        floating = true,
        callback = function(c) awful.placement.under_mouse(c) end,
    },
},
mperrin
источник
Не понимаю, почему за это проголосовали.
mperrin