Browse Source

[enh] add keybindings for copying URLs

'y': for in Vim-mode (yank)
'c': for SearXNG-mode (copy)

This should help keyboard heavy users
Yaksh Bariya 1 year ago
parent
commit
9f5268b4a7
1 changed files with 20 additions and 0 deletions
  1. 20 0
      searx/static/themes/simple/src/js/main/keyboard.js

+ 20 - 0
searx/static/themes/simple/src/js/main/keyboard.js

@@ -63,6 +63,12 @@ searxng.ready(function () {
       des: 'remove focus from the focused input',
       cat: 'Control'
     },
+    'c': {
+      key: 'c',
+      fun: copyURLToClipboard,
+      des: 'copy url of the selected result to the clipboard',
+      cat: 'Results'
+    },
     'h': {
       key: 'h',
       fun: toggleHelp,
@@ -174,6 +180,12 @@ searxng.ready(function () {
           des: 'select next search result',
           cat: 'Results'
         },
+        'y': {
+          key: 'y',
+          fun: copyURLToClipboard,
+          des: 'copy url of the selected result to the clipboard',
+          cat: 'Results'
+        },
       }, baseKeyBinding)
   }
 
@@ -435,6 +447,14 @@ searxng.ready(function () {
     }
   }
 
+  function copyURLToClipboard () {
+    var currentUrlElement = document.querySelector('.result[data-vim-selected] h3 a');
+    if (currentUrlElement === null) return;
+
+    const url = currentUrlElement.getAttribute('href');
+    navigator.clipboard.writeText(url);
+  }
+
   searxng.scrollPageToSelected = scrollPageToSelected;
   searxng.selectNext = highlightResult('down');
   searxng.selectPrevious = highlightResult('up');