-globalkeys = awful.util.table.join(
- awful.key({ modkey, }, "s", hotkeys_popup.show_help,
- {description="show help", group="awesome"}),
- awful.key({ modkey, }, "Left", awful.tag.viewprev,
- {description = "view previous", group = "tag"}),
- awful.key({ modkey, }, "Right", awful.tag.viewnext,
- {description = "view next", group = "tag"}),
- awful.key({ modkey, }, "Escape", awful.tag.history.restore,
- {description = "go back", group = "tag"}),
-
- awful.key({ modkey, }, "k",
- function ()
- awful.client.focus.byidx( 1)
- end,
- {description = "focus next by index", group = "client"}
- ),
- awful.key({ modkey, }, "j",
- function ()
- awful.client.focus.byidx(-1)
- end,
- {description = "focus previous by index", group = "client"}
- ),
- awful.key({ modkey, }, "w", function () mymainmenu:show() end,
- {description = "show main menu", group = "awesome"}),
-
- -- Layout manipulation
- awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( 1) end,
- {description = "swap with next client by index", group = "client"}),
- awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( -1) end,
- {description = "swap with previous client by index", group = "client"}),
- awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative( 1) end,
- {description = "focus the next screen", group = "screen"}),
- awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative(-1) end,
- {description = "focus the previous screen", group = "screen"}),
- awful.key({ modkey, }, "u", awful.client.urgent.jumpto,
- {description = "jump to urgent client", group = "client"}),
- awful.key({ modkey, }, "Tab",
- function ()
- awful.client.focus.history.previous()
- if client.focus then
- client.focus:raise()
- end
- end,
- {description = "go back", group = "client"}),
-
- -- Standard program
- awful.key({ modkey, }, "Return", function () awful.spawn(terminal) end,
- {description = "open a terminal", group = "launcher"}),
- awful.key({ modkey, "Control" }, "r", awesome.restart,
- {description = "reload awesome", group = "awesome"}),
- awful.key({ modkey, "Shift" }, "q", awesome.quit,
- {description = "quit awesome", group = "awesome"}),
-
- awful.key({ modkey, }, "l", function () awful.tag.incmwfact( 0.05) end,
- {description = "increase master width factor", group = "layout"}),
- awful.key({ modkey, }, "h", function () awful.tag.incmwfact(-0.05) end,
- {description = "decrease master width factor", group = "layout"}),
- awful.key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1, nil, true) end,
- {description = "increase the number of master clients", group = "layout"}),
- awful.key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1, nil, true) end,
- {description = "decrease the number of master clients", group = "layout"}),
- awful.key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1, nil, true) end,
- {description = "increase the number of columns", group = "layout"}),
- awful.key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1, nil, true) end,
- {description = "decrease the number of columns", group = "layout"}),
- awful.key({ modkey, }, "space", function () awful.layout.inc( 1) end,
- {description = "select next", group = "layout"}),
- awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(-1) end,
- {description = "select previous", group = "layout"}),
-
- awful.key({ modkey, "Control" }, "n",
- function ()
- local c = awful.client.restore()
- -- Focus restored client
- if c then
- client.focus = c
- c:raise()
- end
- end,
- {description = "restore minimized", group = "client"}),
-
- -- Prompt
- awful.key({ modkey }, "r", function () mypromptbox[awful.screen.focused()]:run() end,
- {description = "run prompt", group = "launcher"}),
-
- awful.key({ modkey }, "x",
- function ()
- awful.prompt.run({ prompt = "Run Lua code: " },
- mypromptbox[awful.screen.focused()].widget,
- awful.util.eval, nil,
- awful.util.get_cache_dir() .. "/history_eval")
- end,
- {description = "lua execute prompt", group = "awesome"}),
- -- Menubar
- awful.key({ modkey }, "p", function() menubar.show() end,
- {description = "show the menubar", group = "launcher"})
+
+local function toggle_tag_by_name(tagname, exclusive)
+ return function()
+ local t = awful.tag.find_by_name(nil, tagname)
+ if t then
+ if exclusive then
+ t:view_only()
+ else
+ awful.tag.viewtoggle(t)
+ end
+ cf = awful.client.getmaster(t.screen)
+ if cf then
+ cf:jump_to()
+ end
+ end
+ end
+end
+
+local function move_tags_to_screen_relative(direction)
+ local s = awful.screen.focused()
+ for _, tag in ipairs(s.selected_tags) do
+ print("index: " .. s.index .. " count: " .. screen:count())
+ tag.screen = screen[(s.index + screen:count() + direction) % screen.count()]
+ end
+end
+
+globalkeys = gears.table.join(
+ awful.key({ modkey }, "s", hotkeys_popup.show_help, { description = "show help", group = "awesome" }),
+ awful.key({ modkey }, "Left", awful.tag.viewprev, { description = "view previous", group = "tag" }),
+ awful.key({ modkey }, "Right", awful.tag.viewnext, { description = "view next", group = "tag" }),
+ awful.key({ modkey }, "Escape", awful.tag.history.restore, { description = "go back", group = "tag" }),
+
+ awful.key({ modkey }, "k", function()
+ awful.client.focus.byidx(1)
+ end, { description = "focus next by index", group = "client" }),
+ awful.key({ modkey }, "j", function()
+ awful.client.focus.byidx(-1)
+ end, { description = "focus previous by index", group = "client" }),
+
+ -- Layout manipulation
+ awful.key({ modkey, "Shift" }, "k", function()
+ awful.client.swap.byidx(1)
+ end, { description = "swap with next client by index", group = "client" }),
+ awful.key({ modkey, "Shift" }, "j", function()
+ awful.client.swap.byidx(-1)
+ end, { description = "swap with previous client by index", group = "client" }),
+ awful.key({ modkey, "Control" }, "k", function()
+ awful.screen.focus_relative(1)
+ end, { description = "focus the next screen", group = "screen" }),
+ awful.key({ modkey, "Control" }, "j", function()
+ awful.screen.focus_relative(-1)
+ end, { description = "focus the previous screen", group = "screen" }),
+ awful.key({ modkey, "Shift", "Control" }, "k", function()
+ move_tags_to_screen_relative(1)
+ end, { description = "move tags to the next screen", group = "screen" }),
+ awful.key({ modkey, "Shift", "Control" }, "j", function()
+ move_tags_to_screen_relative(-1)
+ end, { description = "move tags to the previous screen", group = "screen" }),
+ awful.key(
+ { modkey, "Shift" },
+ "Return",
+ awful.client.urgent.jumpto,
+ { description = "jump to urgent client", group = "client" }
+ ),
+ awful.key({ modkey }, "Tab", function()
+ awful.client.focus.history.previous()
+ if client.focus then
+ client.focus:raise()
+ end
+ end, { description = "go back", group = "client" }),
+
+ -- Standard program
+ awful.key({ modkey }, "Return", function()
+ awful.spawn(terminal)
+ end, { description = "open a terminal", group = "launcher" }),
+ awful.key({ modkey }, "r", function()
+ package.loaded.rc = nil
+ require("rc")
+ end, { description = "reload rc.lua", group = "awesome" }),
+ awful.key({ modkey, "Control" }, "r", awesome.restart, { description = "reload awesome", group = "awesome" }),
+ awful.key({ modkey, "Shift" }, "q", awesome.quit, { description = "quit awesome", group = "awesome" }),
+
+ awful.key({ modkey }, "l", function()
+ awful.tag.incmwfact(0.05)
+ end, { description = "increase master width factor", group = "layout" }),
+ awful.key({ modkey }, "h", function()
+ awful.tag.incmwfact(-0.05)
+ end, { description = "decrease master width factor", group = "layout" }),
+ awful.key({ modkey, "Shift" }, "h", function()
+ awful.tag.incnmaster(1, nil, true)
+ end, { description = "increase the number of master clients", group = "layout" }),
+ awful.key({ modkey, "Shift" }, "l", function()
+ awful.tag.incnmaster(-1, nil, true)
+ end, { description = "decrease the number of master clients", group = "layout" }),
+ awful.key({ modkey, "Control" }, "h", function()
+ awful.tag.incncol(1, nil, true)
+ end, { description = "increase the number of columns", group = "layout" }),
+ awful.key({ modkey, "Control" }, "l", function()
+ awful.tag.incncol(-1, nil, true)
+ end, { description = "decrease the number of columns", group = "layout" }),
+ awful.key({ modkey }, "space", function()
+ awful.layout.inc(1)
+ end, { description = "select next", group = "layout" }),
+ awful.key({ modkey, "Shift" }, "space", function()
+ awful.layout.inc(-1)
+ end, { description = "select previous", group = "layout" }),
+
+ awful.key({ modkey, "Control" }, "n", function()
+ local c = awful.client.restore()
+ -- Focus restored client
+ if c then
+ client.focus = c
+ c:raise()
+ end
+ end, { description = "restore minimized", group = "client" }),
+
+ -- Prompt
+ awful.key({ cmdkey }, "r", function()
+ local widget = awful.screen.focused().mypromptbox.widget
+ local function spawn(command, args)
+ gears.debug.dump(args)
+ awful.spawn(command, args)
+ end
+
+ awful.prompt.run({
+ prompt = "Exec: ",
+ bg_cursor = "#ff0000",
+ textbox = widget,
+ history_path = awful.util.get_cache_dir() .. "/history",
+ completion_callback = awful.completion.shell,
+ hooks = {
+ -- Replace the 'normal' Return with a custom one
+ {
+ {},
+ "Return",
+ function(command)
+ spawn(command)
+ end,
+ },
+ -- Spawn method to spawn in the current tag
+ {
+ { "Mod1" },
+ "Return",
+ function(command)
+ spawn(command, {
+ intrusive = true,
+ tag = mouse.screen.selected_tag,
+ })
+ end,
+ },
+ -- Spawn in the current tag as floating and on top
+ {
+ { "Shift" },
+ "Return",
+ function(command)
+ spawn(command, {
+ ontop = true,
+ floating = true,
+ tag = mouse.screen.selected_tag,
+ })
+ end,
+ },
+ -- Spawn in a new tag
+ {
+ { "Control" },
+ "Return",
+ function(command)
+ spawn(command, {
+ new_tag = true,
+ layout = layouts.default,
+ volatile = true,
+ })
+ end,
+ },
+ -- Cancel
+ {
+ {},
+ "Escape",
+ function(_)
+ return
+ end,
+ },
+ },
+ })
+ end, { description = "run prompt", group = "launcher" }),
+
+ awful.key({ modkey }, "x", function()
+ awful.prompt.run({
+ prompt = "Eval: ",
+ bg_cursor = "#ff0000",
+ textbox = awful.screen.focused().mypromptbox.widget,
+ exe_callback = awful.util.eval,
+ history_path = awful.util.get_cache_dir() .. "/history_eval",
+ })
+ end, { description = "lua execute prompt", group = "awesome" }),
+ -- Menubar
+ awful.key({ modkey }, "w", function()
+ menubar.show()
+ end, { description = "show the menubar", group = "launcher" }),
+
+ -- Tag helpers
+ awful.key({ modkey }, "a", function()
+ th.add_tag(nil, { layout = layouts.default }, true)
+ end, { description = "add a tag", group = "tag" }),
+ awful.key({ modkey }, "d", th.delete_tag, { description = "delete the current tag", group = "tag" }),
+ awful.key({ modkey, "Shift" }, "a", function()
+ th.move_to_new_tag(nil, nil, { layout = layouts.maximised }, true, true, true)
+ end, { description = "add a volatile tag with the focused client", group = "tag" }),
+ awful.key({ modkey, "Shift", "Control" }, "a", function()
+ th.move_to_new_tag(nil, nil, { layout = layouts.maximised }, false, true, true)
+ end, { description = "add a permanent tag with the focused client", group = "tag" }),
+ awful.key({ modkey, "Mod1" }, "a", th.copy_tag, { description = "create a copy of the current tag", group = "tag" }),
+ awful.key({ modkey, "Control" }, "a", th.rename_tag, { description = "rename the current tag", group = "tag" }),
+ awful.key(
+ { modkey, "Control", "Shift", "Mod1" },
+ "a",
+ th.collect_orphan_clients_to_tag,
+ { description = "collect all orphaned clients", group = "client" }
+ ),
+
+ awful.key({ modkey }, "t", toggle_tag_by_name("vrt", true), { description = "view tag 'vrt'", group = "tag" }),
+ awful.key(
+ { modkey, "Control" },
+ "t",
+ toggle_tag_by_name("vrt"),
+ { description = "toggle tag 'vrt'", group = "tag" }
+ ),
+ awful.key({ modkey }, "y", toggle_tag_by_name("irc", true), { description = "view tag 'irc'", group = "tag" }),
+ awful.key(
+ { modkey, "Control" },
+ "y",
+ toggle_tag_by_name("irc"),
+ { description = "toggle tag 'irc'", group = "tag" }
+ ),
+ awful.key({ modkey }, "u", toggle_tag_by_name("[]", true), { description = "view tag '[]'", group = "tag" }),
+ awful.key({ modkey, "Control" }, "u", toggle_tag_by_name("[]"), { description = "toggle tag '[]'", group = "tag" }),
+ awful.key({ modkey }, "i", toggle_tag_by_name("cal", true), { description = "view tag 'cal'", group = "tag" }),
+ awful.key(
+ { modkey, "Control" },
+ "i",
+ toggle_tag_by_name("cal"),
+ { description = "toggle tag 'cal'", group = "tag" }
+ ),
+ awful.key({ modkey }, "o", toggle_tag_by_name("chr", true), { description = "view tag 'chr'", group = "tag" }),
+ awful.key(
+ { modkey, "Control" },
+ "o",
+ toggle_tag_by_name("chr"),
+ { description = "toggle tag 'chr'", group = "tag" }
+ ),
+ awful.key({ modkey }, "p", toggle_tag_by_name("ffx", true), { description = "view tag 'ff'", group = "tag" }),
+ awful.key({ modkey, "Control" }, "p", toggle_tag_by_name("ffx"), { description = "toggle tag 'ff'", group = "tag" }),
+ {}