X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/907fb6ff8ea724f0642075be615ac77c26ac62bb..716595550f974afc115b492b6f9be6d048dbfca4:/widgets/contrib/kbdlayout.lua?ds=sidebyside diff --git a/widgets/contrib/kbdlayout.lua b/widgets/contrib/kbdlayout.lua index f8164ce..23dc6e3 100644 --- a/widgets/contrib/kbdlayout.lua +++ b/widgets/contrib/kbdlayout.lua @@ -16,37 +16,41 @@ local string = { match = string.match } local setmetatable = setmetatable -local function worker (args) +-- Keyboard layout switcher +-- lain.widgets.contrib.kblayout + +local function worker(args) local kbdlayout = {} kbdlayout.widget = wibox.widget.textbox('') local layouts = args.layouts local settings = args.settings or function () end - local add_us_secondary = args.add_us_secondary or true + local add_us_secondary = true local timeout = args.timeout or 5 - local idx = 1 + if args.add_us_secondary == false then add_us_secondary = false end + -- Mouse bindings kbdlayout.widget:buttons(awful.util.table.join( awful.button({ }, 1, function () kbdlayout.next() end), awful.button({ }, 3, function () kbdlayout.prev() end))) - local function run_settings (layout, variant) + local function run_settings(layout, variant) widget = kbdlayout.widget kbdlayout_now = { layout=string.match(layout, "[^,]+"), -- Make sure to match the primary layout only. variant=variant } settings() end - function kbdlayout.update () + function kbdlayout.update() local status = read_pipe('setxkbmap -query') run_settings(string.match(status, "layout:%s*([^\n]*)"), string.match(status, "variant:%s*([^\n]*)")) end - function kbdlayout.set (i) + function kbdlayout.set(i) idx = ((i - 1) % #layouts) + 1 -- Make sure to wrap around as needed. local to_execute = 'setxkbmap ' .. layouts[idx].layout @@ -63,11 +67,11 @@ local function worker (args) end end - function kbdlayout.next () + function kbdlayout.next() kbdlayout.set(idx + 1) end - function kbdlayout.prev () + function kbdlayout.prev() kbdlayout.set(idx - 1) end