movewin.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. #!/usr/bin/python3
  2. import os
  3. import sys
  4. import time
  5. import psutil
  6. # python3 movewin.py window-title x y
  7. # python3 movewin.py COMMA 723 943
  8. def winfo(name="WinfoWinName"):
  9. search = name
  10. cmd = "xwininfo -root -children -all | grep '{}'"
  11. cmd = cmd.format(search)
  12. print(cmd)
  13. r = os.popen(cmd)
  14. lines = r.readlines()
  15. _id = [] #"xxxx"
  16. if lines and lines[0]:
  17. _id.append( lines[0].split()[0] )
  18. print("ID:",_id)
  19. for line in lines:
  20. line = line.strip()
  21. print("-",line)
  22. return _id
  23. def movewin(_id="0xWinId",x=None,y=None):
  24. cmd="xdotool windowmove {} {} {}".format(_id,x,y)
  25. return cmd
  26. def sizewin(_id="0xWinId",x=None,y=None):
  27. cmd="xdotool windowsize {} {} {}".format(_id,x,y)
  28. return cmd
  29. def activate(_id="0xWinId"):
  30. cmd="xdotool windowactivate {}".format(_id)
  31. return cmd
  32. def system(cmd):
  33. print(cmd)
  34. os.system(cmd)
  35. def search_process(_file_path,exact=1):
  36. print("search_process",_file_path)
  37. pids = psutil.pids()
  38. count = 0
  39. out = []
  40. for pid in pids:
  41. p = psutil.Process(pid)
  42. ps = p.cmdline()
  43. if len(ps) < 2:
  44. continue
  45. if "python" not in ps[0]:
  46. continue
  47. print(" ",[ps[1]])
  48. print("exact_search",exact)
  49. if exact:
  50. if str(_file_path) == str(ps[1]):
  51. print(ps)
  52. count += 1
  53. out.append(pid)
  54. else:
  55. if str(_file_path) in str(ps[1]):
  56. print(ps)
  57. count += 1
  58. out.append(pid)
  59. print("search_process",count)
  60. return out
  61. def process_kill(path):
  62. pids = search_process(path,exact=0)
  63. for pid in pids:
  64. print("process_kill:",pid)
  65. p = psutil.Process(pid)
  66. #p.name()
  67. #p.cmdline()
  68. p.terminate()
  69. p.wait()
  70. import inspect
  71. def get_lineno():
  72. callerframerecord = inspect.stack()[1] # 0 represents this line
  73. # 1 represents line at caller
  74. frame = callerframerecord[0]
  75. info = inspect.getframeinfo(frame)
  76. #print(info.filename) # __FILE__ -> Test.py
  77. #print(info.function) # __FUNCTION__ -> Main
  78. #print(info.lineno) # __LINE__ -> 13
  79. return info.lineno
  80. if __name__ == "__main__":
  81. print("# python3 movewin.py window-title x y")
  82. print("# python3 movewin.py COMMA 723 943")
  83. import random
  84. a=random.randint(100,400)
  85. b=random.randint(100,400)
  86. search = "ASD"
  87. try:
  88. search = sys.argv[1]
  89. search = search.replace("'","")
  90. except:pass
  91. try:
  92. a = sys.argv[2]
  93. except:pass
  94. try:
  95. b = sys.argv[3]
  96. except:pass
  97. _ids = winfo(search)
  98. for _id in _ids:
  99. c1 = sizewin(_id,a,b)
  100. c2 = movewin(_id,a,b)
  101. c3 = activate(_id)
  102. system(c1)
  103. time.sleep(0.1)
  104. system(c2)
  105. time.sleep(0.1)
  106. system(c3)
  107. def check_is_started(CAPTION,_file_path,sleep=0):
  108. if sleep:
  109. time.sleep(sleep)
  110. pids = search_process(_file_path)
  111. if len(pids) >= 2:
  112. search = CAPTION[:]
  113. _ids = winfo(search)
  114. for _id in _ids:
  115. c3 = activate(_id)
  116. os.system(c3)
  117. sys.exit()