Compare commits
5 commits
bfcc8a6ad9
...
ddda38b59d
Author | SHA1 | Date | |
---|---|---|---|
ddda38b59d | |||
4fe9dd1934 | |||
8965e38846 | |||
d4a2b13584 | |||
44421f44bc |
3 changed files with 56 additions and 19 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
bin/
|
|
@ -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()
|
||||
|
|
15
swick.nimble
15
swick.nimble
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue