Created
December 31, 2018 16:26
-
-
Save joaoescribano/118607eb7b0afdc05e7f0f491f20f4ef to your computer and use it in GitHub Desktop.
Python X11 window management wrapper, using xdotool to control
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! python3 | |
import os, time | |
def getWindow(program): | |
os.system('(xdotool search --pid $(pidof '+program+')) > .tmp') | |
window = open('.tmp', 'r').read() | |
return window.strip() | |
def getActualDesktop(): | |
os.system('(xdotool get_desktop) > .tmp') | |
desktop = open('.tmp', 'r').read() | |
return desktop.strip() | |
def goToDesktop(desktop): | |
os.system('(xdotool set_desktop ' + desktop + ') > .tmp') | |
return True | |
def getWindowDesktop(window): | |
os.system('(xdotool get_desktop_for_window ' + window + ') > .tmp') | |
windowDesktop = open('.tmp', 'r').read() | |
return windowDesktop.strip() | |
def setFocus(window): | |
os.system('(xdotool windowfocus ' + window + ') > .tmp') | |
window = open('.tmp', 'r').read() | |
return True | |
def maximizeWindow(window): | |
os.system('(xdotool windowmove ' + window + ' 0 0) > .tmp') | |
os.system('(xdotool windowsize ' + window + ' $(xdotool getdisplaygeometry)) > .tmp') | |
os.system('(xdotool windowactivate ' + window + ') > .tmp') | |
return True | |
def minimizeWindow(window): | |
os.system('(xdotool windowminimize ' + window + ') > .tmp') | |
return True | |
def setWindowPos(window, x, y): | |
os.system('(xdotool windowmove ' + window + ' ' + str(x) + ' ' + str(y) +') > .tmp') | |
return True | |
return True | |
def resizeWindow(window, x, y): | |
os.system('(xdotool windowsize ' + window + ' ' + str(x) + ' ' + str(y) + ') > .tmp') | |
return True | |
def getWindowTitle(window): | |
os.system('(xdotool getwindowname ' + window + ') > .tmp') | |
windowTitle = open('.tmp', 'r').read() | |
return windowTitle.strip() | |
window = getWindow('Tibia/client') | |
title = getWindowTitle(window) | |
actualDesktop = getActualDesktop() | |
windowDesktop = getWindowDesktop(window) | |
print("window:", window) | |
print("title:", title) | |
print("actualDesktop:", actualDesktop) | |
print("windowDesktop:", windowDesktop) | |
if (actualDesktop != windowDesktop): | |
goToDesktop(windowDesktop) | |
setFocus(window) | |
time.sleep(3) | |
resizeWindow(window, 800, 600) | |
time.sleep(3) | |
setWindowPos(window, 800, 600) | |
time.sleep(3) | |
minimizeWindow(window) | |
time.sleep(3) | |
maximizeWindow(window) | |
time.sleep(3) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment