]> git.rmz.io Git - dotfiles.git/blobdiff - awesome/bindings.lua
nvim: add mini.hipatterns to highlight hex colours and any strings
[dotfiles.git] / awesome / bindings.lua
index dd3edff7e0958e4c25efd7cc83524c2e933f6e39..be64d76b6f3947343be925bccf7724b5862f66cd 100644 (file)
@@ -1,4 +1,5 @@
 local hotkeys_popup = require("awful.hotkeys_popup").widget
+local utils = require("utils")
 
 -- Default modkey.
 modkey = "Mod4"
@@ -40,14 +41,33 @@ globalkeys = gears.table.join(globalkeys,
               {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,
@@ -124,7 +144,7 @@ globalkeys = gears.table.join(globalkeys,
     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"}),
@@ -142,8 +162,17 @@ globalkeys = gears.table.join(globalkeys,
     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