Compare commits

...

5 commits

3 changed files with 56 additions and 19 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
bin/

View file

@ -1,7 +1,6 @@
import std/parseopt
import system
import swayipc
import swayipc/[commands, util]
import swayipc2/[connection, commands, util]
const helpText = """swick - quickly launch or focus/unfocus application
@ -63,25 +62,49 @@ proc parseOpts(): (string, string, string) =
return (use, identifier, cmd)
## main ##
when defined(async):
import std/asyncdispatch
proc main() {.async.} =
let (use, identifier, cmd) = parseOpts()
let sway = await connect_async()
let tree = await sway.get_tree
let nodes =
if use == "class": tree.filterNodesByClass(identifier, 1)
else: tree.filterNodesByAppID(identifier, 1)
let (use, identifier, cmd) = parseOpts()
let sway_cmd =
if nodes.len == 0: "exec " & cmd
else:
let selector = "[" & use & "=" & identifier & "] "
if nodes[0].focused: selector & "move scratchpad"
else: selector & "focus"
let sway = newSwayConnection()
let ret = (await sway.run_command(sway_cmd))[0]
sway.close
system.quit(if ret.success: 0 else: 2)
let tree = sway.get_tree
else:
proc main() =
let (use, identifier, cmd) = parseOpts()
let sway = connect()
let tree = sway.get_tree
let nodes =
if use == "class": tree.filterNodesByClass(identifier, 1)
else: tree.filterNodesByAppID(identifier, 1)
let nodes =
if use == "class": tree.filterNodesByClass(identifier, 1)
else: tree.filterNodesByAppID(identifier, 1)
let sway_cmd =
if nodes.len == 0: "exec " & cmd
else:
let selector = "[" & use & "=" & identifier & "] "
if nodes[0].focused: selector & "move scratchpad"
else: selector & "focus"
let sway_cmd =
if nodes.len == 0: "exec " & cmd
let ret = sway.run_command(sway_cmd)[0]
sway.close
system.quit(if ret.success: 0 else: 2)
when isMainModule:
when defined(async):
waitFor main()
else:
let selector = "[" & use & "=" & identifier & "] "
if nodes[0].focused: selector & "move scratchpad"
else: selector & "focus"
let ret = sway.run_command(sway_cmd)[0]
sway.close
system.quit(if ret.success: 0 else: 2)
main()

View file

@ -8,4 +8,17 @@ bin = @["swick"]
# Dependencies
requires "nim >= 1.6.6"
requires "swayipc >= 0.1.0"
requires "swayipc2 >= 0.1.0"
let outdir = "bin/"
let output = outdir & "swick"
task release, "build binary for release":
exec "mkdir -p " & outdir
exec "nim c -d:release --opt:speed --mm:arc --passC:-ffast-math -o:" & output & " src/swick.nim"
exec "strip " & output
echo "built " & output
task clean, "clean workspace":
exec "rm " & output
exec "rm -r " & outdir