diff options
Diffstat (limited to 'config.lua')
| -rw-r--r-- | config.lua | 78 |
1 files changed, 74 insertions, 4 deletions
@@ -5,12 +5,82 @@ web = web --- @type table uv = uv -web.keymap.set('n', 'm', function() - print('Hello world. Keypress test') -end) +local Dmenu = {} +function Dmenu.select(list, callback) + local selection = nil + local stdin = uv.new_pipe(); + local stdout = uv.new_pipe(); + uv.spawn('dmenu', { stdio = { stdin, stdout, nil } }, function(code) + print('exit') + uv.close(stdout) + print('exit close out') + uv.close(stdin) + print('exit close in') + if code == 0 then + callback(nil, selection) + else + callback('Exit with status code: ' .. code, selection) + end + print('done exit') + end) + + uv.read_start(stdout, function(err, data) + print('-> out', err, data) + if err ~= nil then + callback(err, nil) + elseif data then + selection = data + end + end) + + for _, value in ipairs(list) do + print('input write') + uv.write(stdin, value .. '\n') + end + print('shit') + uv.shutdown(stdin) + print('end') +end + +local function trim(s) + return s:gsub("^%s*(.-)%s*$", "%1") +end + +local urls = { + 'https://excalidraw.com', + 'https://lite.duckduckgo.com', + 'https://ediblemonad.dev', + 'https://google.com', + 'https://github.com/trending', +} +-- Open in new tab +web.keymap.set('n', 't', function() + Dmenu.select(urls, function(err, result) + if err or not result then return end + web.tabopen(trim(result)) + end) +end) +-- Open in current tab web.keymap.set('n', 'o', function() - web.tabopen('https://lite.duckduckgo.com') + Dmenu.select(urls, function(err, result) + if err or not result then return end + web.open(trim(result)) + end) +end) +-- Run lua code +web.keymap.set('n', 'q', function() + Dmenu.select({}, function(err, result) + if err or not result then return end + local run, run_err = load(result) + if run_err then print(run_err) end + if run then run() end + end) +end) + +-- Dummy test keymap +web.keymap.set('n', 'm', function() + print('Hello world. Keypress test') end) print('ending...') |
