diff options
author | terminaldweller <thabogre@gmail.com> | 2022-02-05 20:52:20 +0000 |
---|---|---|
committer | terminaldweller <thabogre@gmail.com> | 2022-02-05 20:52:20 +0000 |
commit | 36f1f938bfa35a2698935bcaba78190cbee1977f (patch) | |
tree | 6c4622d02f5fe88d11e1f7d9229e9049a4f0614e /bin | |
parent | clipd update, dockernuke, virsh (diff) | |
download | scripts-36f1f938bfa35a2698935bcaba78190cbee1977f.tar.gz scripts-36f1f938bfa35a2698935bcaba78190cbee1977f.zip |
fix
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/clipd | 31 |
1 files changed, 26 insertions, 5 deletions
@@ -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 |