aboutsummaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorterminaldweller <thabogre@gmail.com>2022-02-05 20:52:20 +0000
committerterminaldweller <thabogre@gmail.com>2022-02-05 20:52:20 +0000
commit36f1f938bfa35a2698935bcaba78190cbee1977f (patch)
tree6c4622d02f5fe88d11e1f7d9229e9049a4f0614e /bin
parentclipd update, dockernuke, virsh (diff)
downloadscripts-36f1f938bfa35a2698935bcaba78190cbee1977f.tar.gz
scripts-36f1f938bfa35a2698935bcaba78190cbee1977f.zip
fix
Diffstat (limited to 'bin')
-rwxr-xr-xbin/clipd31
1 files changed, 26 insertions, 5 deletions
diff --git a/bin/clipd b/bin/clipd
index e25fcb0..ce14a08 100755
--- a/bin/clipd
+++ b/bin/clipd
@@ -24,11 +24,12 @@ end
default_luarocks_modules()
local string = require("string")
--- local signal = require("posix.signal")
+local signal = require("posix.signal")
--- signal.signal(signal.SIGINT, function(signum) os.exit(128 + signum) end)
+signal.signal(signal.SIGINT, function(signum) os.exit(128 + signum) end)
+
+local function sleep(n) os.execute("sleep " .. tonumber(n)) end
--- FIXME-clip history size is not being used
local function loop()
local clip_hist_size = 100
local clip_hist = "/home/devi/.clip_history"
@@ -39,18 +40,38 @@ local function loop()
local handle = io.popen("xsel -ob")
local last_clip_entry = handle:read("*a")
- local hist_file = io.open(clip_hist, "a+")
+ local hist_file = io.open(clip_hist, "r")
+ local hist_current_count = 0
+ local clips_table = {}
for line in hist_file:lines() do
+ hist_current_count = hist_current_count + 1
if (string.sub(line, 0, string.len(line)) == last_clip_entry) then
matched = true
end
+ if line ~= "\n" and line ~= "" and line ~= "\r\n" and line ~= " " then
+ table.insert(clips_table, line)
+ end
+ end
+ hist_file:close()
+ hist_file = io.open(clip_hist, "w")
+ if matched ~= true then
+ if last_clip_entry[-1] == "\n" then
+ table.insert(clips_table, string.sub(last_clip_entry, 0,
+ string.len(last_clip_entry)))
+ else
+ table.insert(clips_table, last_clip_entry)
+ end
+ end
+ if hist_current_count >= clip_hist_size then
+ table.remove(clips_table, 1)
end
- if matched ~= true then hist_file:write(last_clip_entry .. "\n") end
+ for _, v in ipairs(clips_table) do hist_file:write(v .. "\n") end
matched = false
hist_file:close()
wait_for_event:close()
handle:close()
+ sleep(.2)
end
end