2

dbus を使用して、awesome wm のキーボード レイアウト インジケーターを更新したいと考えています。これがluaの私の機能です

module("keyb")    
function getklayout()
            local fd = io.popen("skb a")
            local layout = fd:read()
            fd:close()
          return layout 
    end

および rc.lua の一部

require("keyb")
keyinc = widget({type = "textbox"})
keyinc.text = keyb.getklayout()

このウィジェットを更新するために使用する必要がある dbus サービスがわかりません。私の素晴らしいバージョン:

   awesome -v
awesome v3.4.9 (Smack)
 • Build: Apr  9 2011 10:40:59 for i686 by gcc version 4.5.1 (builder@apiary.orion.altlinux.org)
 • D-Bus support: ✔

アドバイスが必要です)

4

1 に答える 1

1

以前はskbを使用していました。また、タイマーを使用してキーボードの状態を定期的にチェックします。しかし、これは良くありません。今、私はこれにdbusとkbddを使用しています。最初にkbddを開始します。そして、rc.luaを追加します。

--- {{{ keyboard indicator
mykeyindicator = widget({ type = "imagebox", align = "right" })
mykeyindicator.image = image(home_dir .. "/.icons/flags/Eng.png")

function mykey_update(...)
    local data = {...}
    local layout = data[2]
    lts = {
            [0] = home_dir .. "/.icons/flags/Eng.png",
            [1] = home_dir .. "/.icons/flags/Rus.png",
    }
    mykeyindicator.image = image(lts[layout])
    return
end

dbus.request_name("session", "ru.gentoo.kbdd")
dbus.add_match("session", "interface='ru.gentoo.kbdd',member='layoutChanged'")
dbus.add_signal("ru.gentoo.kbdd", mykey_update)

--- keyboard indicator }}}

Kbddホームページ:https ://github.com/qnikst/kbdd

于 2013-03-22T23:40:26.373 に答える