Drop `i3ipc + `xdotool` approach for feed hacks
parent
bff625725e
commit
c3142aec81
|
@ -2556,89 +2556,4 @@ async def data_reset_hack(
|
|||
await tractor.to_asyncio.run_task(vnc_click_hack)
|
||||
|
||||
# we don't really need the ``xdotool`` approach any more B)
|
||||
return
|
||||
|
||||
# TODO: see if we can find which window is mapped to which process?
|
||||
# for eg. if we can launch a paper account with docker and then find
|
||||
# the pid of it, can we send keycommands to that container somehow?
|
||||
|
||||
# TODO: try out this lib instead, seems to be the most modern
|
||||
# and usess the underlying lib:
|
||||
# https://github.com/rshk/python-libxdo
|
||||
|
||||
# TODO: seems to be a few libs for python but not sure
|
||||
# if they support all the sub commands we need, order of
|
||||
# most recent commit history:
|
||||
# https://github.com/rr-/pyxdotool
|
||||
# https://github.com/ShaneHutter/pyxdotool
|
||||
# https://github.com/cphyc/pyxdotool
|
||||
|
||||
try:
|
||||
import i3ipc
|
||||
except ImportError:
|
||||
return False
|
||||
log.warning('IB data hack no-supported on ur platformz')
|
||||
|
||||
i3 = i3ipc.Connection()
|
||||
t = i3.get_tree()
|
||||
|
||||
orig_win_id = t.find_focused().window
|
||||
|
||||
# for tws
|
||||
win_names: list[str] = [
|
||||
'Interactive Brokers', # tws running in i3
|
||||
'IB Gateway', # gw running in i3
|
||||
# 'IB', # gw running in i3 (newer version?)
|
||||
]
|
||||
|
||||
combos: dict[str, str] = {
|
||||
# only required if we need a connection reset.
|
||||
'connection': ('ctrl+alt+r', 12),
|
||||
|
||||
# data feed reset.
|
||||
'data': ('ctrl+alt+f', 6)
|
||||
}
|
||||
|
||||
for name in win_names:
|
||||
results = t.find_titled(name)
|
||||
print(f'results for {name}: {results}')
|
||||
if results:
|
||||
con = results[0]
|
||||
print(f'Resetting data feed for {name}')
|
||||
win_id = str(con.window)
|
||||
w, h = con.rect.width, con.rect.height
|
||||
|
||||
# TODO: only run the reconnect (2nd) kc on a detected
|
||||
# disconnect?
|
||||
key_combo, timeout = combos[reset_type]
|
||||
# for key_combo, timeout in [
|
||||
# # only required if we need a connection reset.
|
||||
# # ('ctrl+alt+r', 12),
|
||||
# # data feed reset.
|
||||
# ('ctrl+alt+f', 6)
|
||||
# ]:
|
||||
await trio.run_process([
|
||||
'xdotool',
|
||||
'windowactivate', '--sync', win_id,
|
||||
|
||||
# move mouse to bottom left of window (where there should
|
||||
# be nothing to click).
|
||||
'mousemove_relative', '--sync', str(w - 4), str(h - 4),
|
||||
|
||||
# NOTE: we may need to stick a `--retry 3` in here..
|
||||
'click', '--window', win_id,
|
||||
'--repeat', '3', '1',
|
||||
|
||||
# hackzorzes
|
||||
'key', key_combo,
|
||||
# ],
|
||||
# timeout=timeout,
|
||||
])
|
||||
|
||||
# re-activate and focus original window
|
||||
await trio.run_process([
|
||||
'xdotool',
|
||||
'windowactivate', '--sync', str(orig_win_id),
|
||||
'click', '--window', str(orig_win_id), '1',
|
||||
])
|
||||
return True
|
||||
|
|
Loading…
Reference in New Issue