mirror of
https://github.com/vale981/bspwm
synced 2025-03-06 10:11:43 -05:00
68 lines
1.4 KiB
Lua
Executable file
68 lines
1.4 KiB
Lua
Executable file
#! /usr/bin/env lua
|
|
|
|
local p = require "posix"
|
|
local port = 54321
|
|
|
|
local short = "hp:arltq"
|
|
local long = {
|
|
{"help", "none", 'h'},
|
|
{"port", "required", 'p'},
|
|
{"add", "none", 'a'},
|
|
{"remove", "none", 'r'},
|
|
{"list", "none", 'l'},
|
|
{"test", "none", 't'},
|
|
{"quit", "none", 'q'}
|
|
}
|
|
|
|
local cmd_assoc = {
|
|
a = "add",
|
|
r = "remove",
|
|
l = "list",
|
|
t = "test",
|
|
q = "quit"
|
|
}
|
|
|
|
local cmd
|
|
local data_idx = 1
|
|
for opt, optarg, optind, longind in p.getopt(arg, short, long) do
|
|
if opt == '?' then
|
|
print("Unrecognized option")
|
|
os.exit(1)
|
|
elseif opt == 'h' then
|
|
print("Usage: rulc [-h|-p PORT|-a|-r|-l|-t|-q] DATA ...")
|
|
os.exit(0)
|
|
elseif opt == 'p' then
|
|
port = optarg
|
|
else
|
|
cmd = cmd_assoc[opt]
|
|
end
|
|
data_idx = optind
|
|
end
|
|
|
|
if not cmd then
|
|
os.exit(1)
|
|
end
|
|
|
|
local msg = cmd
|
|
if cmd == "test" then
|
|
msg = string.format("%s {class=%q, instance=%q, title=%q, type=%q, state=%q}", msg, arg[data_idx], arg[data_idx+1], arg[data_idx+2], arg[data_idx+3], arg[data_idx+4])
|
|
elseif cmd == "add" then
|
|
msg = string.format("%s {%q, %q, %s}", msg, arg[data_idx], arg[data_idx+1], arg[data_idx+2] and string.format("{%s}", arg[data_idx+2]) or "")
|
|
elseif cmd == "remove" then
|
|
msg = string.format("%s %s", msg, arg[data_idx])
|
|
end
|
|
|
|
local fd = p.socket(p.AF_INET, p.SOCK_STREAM, 0)
|
|
local s = p.connect(fd, {family=p.AF_INET, addr="127.0.0.1", port=port})
|
|
if not s then
|
|
p.close(fd)
|
|
os.exit(1)
|
|
end
|
|
p.send(fd, msg)
|
|
rsp = p.recv(fd, p.BUFSIZ)
|
|
|
|
if rsp and #rsp > 0 then
|
|
print(rsp)
|
|
end
|
|
|
|
p.close(fd)
|