local hotkeys_popup = require("awful.hotkeys_popup").widget
+local utils = require("utils")
-- Default modkey.
modkey = "Mod4"
{description = "show main menu", group = "awesome"}),
-- Layout manipulation
- awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end,
+ 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" }, "k", function () awful.client.swap.byidx( -1) end,
+ awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( -1) end,
{description = "swap with previous client by index", group = "client"}),
awful.key({ modkey, }, "#49", function () awful.screen.focus_relative( 1) end, -- that's the key left of 1 (chronos)
{description = "focus the next screen", group = "screen"}),
awful.key({ modkey, }, "=", function () awful.screen.focus_relative( 1) end, -- that's the key left of 1 (kinesis)
{description = "focus the next screen", group = "screen"}),
+ awful.key({ modkey, "Control" }, "=",
+ function ()
+ -- swap tags in screens
+ local c = client.focus
+ local this_screen = awful.screen.focused();
+ -- TODO: only works with two screens
+ local next_screen = this_screen:get_next_in_direction("right") or this_screen:get_next_in_direction("left")
+ local this_screen_tag = this_screen.selected_tag;
+ local next_screen_tag = next_screen.selected_tag;
+
+ this_screen_tag:swap(next_screen_tag)
+
+ this_screen_tag:view_only()
+ next_screen_tag:view_only()
+
+ awful.screen.focus(this_screen)
+ c:jump_to(true)
+ end,
+ {description = "swap screens", group = "screen"}),
awful.key({ modkey, "Control" }, "Right", function () awful.screen.focus_relative(-1) end,
{description = "focus the next screen", group = "screen"}),
awful.key({ modkey, "Control" }, "Left", function () awful.screen.focus_relative(-1) end,
awful.key({ }, "F13", function () awful.spawn("ksnapshot") end),
awful.key({ }, "Print", function () awful.spawn("ksnapshot") end),
-- ranger
- awful.key({ modkey }, "r", function () awful.spawn(terminal .. " -e ranger") end),
+ awful.key({ modkey }, "r", function () utils.spawn_terminal("ranger") end),
-- Volume
awful.key({ }, "XF86AudioMute", function () awful.spawn("pulsemixer --toggle-mute") end,
{description = "toggle mute", group = "volume"}),
awful.key({ modkey, "Control" }, "Escape", function () awful.spawn("i3lock -c 000000") end),
-- VimWiki
awful.key({ modkey }, "i", function ()
- awful.spawn(terminal.." -name vimwiki -e vim -c 'call vimwiki#base#goto_index(v:count1)'")
- end)
+ utils.spawn_terminal("vim -c 'call vimwiki#base#goto_index(v:count1)'", { instance = "vimwiki"})
+ end),
+ -- clipboard
+ -- requires a little sleep before simulating shift+Insert, otherwise I
+ -- believe the focus is still on awful and not the current window
+ awful.key({ modkey }, "\\", function () awful.spawn('xdotool sleep 0.2 key --clearmodifiers shift+Insert') end,
+ {description = "paste primary selection", group = "awesome"}),
+ -- utf8 picker
+ -- TODO: the mapping is similar to kitty's <C-S-u>, but worth changing maybe?
+ awful.key({ modkey, "Shift"}, "u", function () awful.spawn('rofimoji') end,
+ { description = "select utf8 character", group = "awesome"})
)
-- Client keys {{{1