---------------------------------------------------------------------------
--- tmux hotkeys for awful.hotkeys_widget
--
-- @author nahsi nashi@airmail.cc
-- @copyright 2017 nahsi
-- @submodule  awful.hotkeys_popup
---------------------------------------------------------------------------

local hotkeys_popup = require("awful.hotkeys_popup.widget")

local tmux = {}

--- Add rules to match tmux session.
--
-- For example:
--
--     tmux.add_rules_for_terminal({ rule = { name = { "tmux" }}})
--
-- will show tmux hotkeys for any window that has 'tmux' in its title.
-- If no rules are provided then tmux hotkeys will be shown always!
-- @function add_rules_for_terminal
-- @see awful.rules.rules
-- @tparam table rule Rules to match a window containing a tmux session.
function tmux.add_rules_for_terminal(rule)
    for group_name, group_data in pairs({
        ["tmux: sessions"] = rule,
        ["tmux: windows"]  = rule,
        ["tmux: panes"]    = rule,
        ["tmux: misc"]     = rule,
    }) do
        hotkeys_popup.add_group_rules(group_name, group_data)
    end
end

local tmux_keys = {
    ["tmux: sessions"] = {{
        modifiers = {},
        keys = {
            s     = "show all sessions",
            ['$'] = "rename the current session",
            ['('] = "move to previous session",
            [')'] = "move to next session",
            d     = "detach from current session"
        }
    }},

    ["tmux: windows"] = {{
        modifiers = {},
        keys = {
            c         = "create window",
            f         = "find window",
            [',']     = "rename current window",
            --['&']     = "close current window",
            p         = "previous window",
            n         = "next window",
            ['0...9'] = "select window by number"
        }
    }},

    ["tmux: panes"] = {{
        modifiers = {},
        keys = {
            [';']       = "toggle last active pane",
            ['%']       = "split pane vertically",
            ['"']       = "split pane horizontally",
            ['{']       = "move the current pane left",
            ['}']       = "move the current pane right",
            ['q 0...9'] = "select pane by number",
            o           = "toggle between panes",
            z           = "toggle pane zoom",
            ['space']   = "toggle between layouts",
            ['!']       = "convert pane into a window",
            x           = "close current pane"
        }
    }},

    ["tmux: misc"] = {{
        modifiers = {},
        keys = {
            [':'] = "enter command mode",
            ['?'] = "list shortcuts",
            t     = "show clock"
        }
    }}
}

hotkeys_popup.add_hotkeys(tmux_keys)

return tmux

-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80