From b6e3c49e63324eddd2e56fa7e918821e7a497d33 Mon Sep 17 00:00:00 2001 From: terminaldweller Date: Thu, 27 Jan 2022 10:44:16 +0330 Subject: updates --- bin/clipd | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100755 bin/clipd (limited to 'bin/clipd') diff --git a/bin/clipd b/bin/clipd new file mode 100755 index 0000000..0c200c6 --- /dev/null +++ b/bin/clipd @@ -0,0 +1,39 @@ +#!/usr/bin/env lua5.3 + +-- needs xsel, clipnotify +-- needs luaposix, luarocks-5.3 install --local luaposix +-- cat .clip_history | dmenu -l 10 | xsel -ib +-- FIXME-all entries are copied with an extra new line +local clipd = {} +local string = require("string") +local signal = require("posix.signal") + +signal.signal(signal.SIGINT, function(signum) os.exit(128 + signum) end) + +local function loop() + local clip_hist_size = 100 + local clip_hist = "/home/devi/.clip_history" + + local matched = false + while true do + local wait_for_event = io.popen("clipnotify") + + local handle = io.popen("xsel -ob") + local last_clip_entry = handle:read("*a") + local hist_file = io.open(clip_hist, "a+") + + for line in hist_file:lines() do + if (string.sub(line, 0, string.len(line)) == last_clip_entry) then + matched = true + end + end + if matched ~= true then hist_file:write(last_clip_entry .. "\n") end + matched = false + hist_file:close() + wait_for_event:close() + handle:close() + end +end + +loop() +return clipd -- cgit v1.2.3