local aclient = require "awful.client" local akey = require "awful.key" local aprompt = require "awful.prompt" local ascreen = require "awful.screen" local aspawn = require "awful.spawn" local atag = require "awful.tag" local autil = require "awful.util" local menubar = require "menubar" local applications = require "rc.configuration.applications" local desktop_bar = require "rc.ui.desktop_decoration.bar" local hotkeys_popup = require "rc.ui.hotkeys_popup" local mymainmenu = require "rc.ui.menu.mymainmenu" local capi = { awesome = _G.awesome, client = _G.client, } local control = "Control" local modkey = "Mod4" local shift = "Shift" local global_keybindings = { akey({ modkey }, "s", function() hotkeys_popup.show_help() end, { description = "show help", group = "awesome", }), akey({ modkey }, "w", function() mymainmenu():show() end, { description = "show main menu", group = "awesome", }), akey( { modkey, control }, "r", capi.awesome.restart, { description = "reload awesome", group = "awesome" } ), akey( { modkey, shift }, "q", capi.awesome.quit, { description = "quit awesome", group = "awesome" } ), akey({ modkey }, "x", function() aprompt.run { prompt = "Run Lua code: ", textbox = desktop_bar(ascreen.focused()).promptbox.widget, exe_callback = autil.eval, history_path = autil.get_cache_dir() .. "/history_eval", } end, { description = "lua execute prompt", group = "awesome", }), akey({ modkey }, "Return", function() aspawn(applications.open_terminal()) end, { description = "open a terminal", group = "launcher", }), akey({ modkey }, "r", function() desktop_bar(ascreen.focused()).promptbox:run() end, { description = "run prompt", group = "launcher", }), akey({ modkey }, "p", function() menubar.show() end, { description = "show the menubar", group = "launcher", }), -- Client focus akey { modifiers = { modkey }, key = "j", group = "client", description = "Focus next client by index", on_press = function() aclient.focus.byidx(1) end, }, akey { modifiers = { modkey }, key = "k", group = "client", description = "Focus previous by index", on_press = function() aclient.focus.byidx(-1) end, }, -- Layout manipulation akey { modifiers = { modkey, shift }, key = "j", group = "client", description = "Swap with next client", on_press = function() aclient.swap.byidx(1) end, }, akey { modifiers = { modkey, shift }, key = "k", group = "client", description = "Swap with previous client", on_press = function() aclient.swap.byidx(-1) end, }, akey { modifiers = { modkey, shift }, key = "Right", description = "Increase master width factor", group = "client", on_press = function() atag.incmwfact(0.01) end, }, akey { modifiers = { modkey, shift }, key = "Left", description = "Decrease master width factor", group = "client", on_press = function() atag.incmwfact(-0.01) end, }, -- Tags manipulation akey { modifiers = { modkey }, keygroup = akey.keygroup.NUMROW, description = "only view tag", group = "tag", on_press = function(index) local screen = ascreen.focused() local tag = screen.tags[index] if tag then tag:view_only() end end, }, akey { modifiers = { modkey, control }, keygroup = akey.keygroup.NUMROW, description = "toggle tag", group = "tag", on_press = function(index) local screen = ascreen.focused() local tag = screen.tags[index] if tag then atag.viewtoggle(tag) end end, }, akey { modifiers = { modkey, shift }, keygroup = akey.keygroup.NUMROW, description = "move focused client to tag", group = "tag", on_press = function(index) local screen = ascreen.focused() local client = capi.client.focus local tag = screen.tags[index] if client and tag then client:move_to_tag(tag) end end, }, } return global_keybindings