Skip to content

Instantly share code, notes, and snippets.

@oeo
Created October 29, 2021 03:07
Show Gist options
  • Save oeo/7ccd88322df3c0cbcce56d210303016f to your computer and use it in GitHub Desktop.
Save oeo/7ccd88322df3c0cbcce56d210303016f to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
import os
import math
window = os.popen("xdotool getactivewindow getwindowgeometry | grep Geometry | cut -d : -f 2").read().strip().split('x')
screen = os.popen("xdotool getdisplaygeometry | sed -r 's/ /x/g'").read().strip().split('x')
print(f'Window: {window}')
print(f'Screen: {screen}')
def ratio(part,whole):
num = int(part)/int(whole)
num *= 100
return math.floor(num)
width_r = ratio(window[0],screen[0])
height_r = ratio(window[1],screen[1])
ratio_m = [45,70]
ratio_l = [100,97]
print(f'Ratio: {width_r}/{height_r}')
sizes = {
"medium": {
"w": math.floor((ratio_m[0]/100) * int(screen[0])),
"h": math.floor((ratio_m[1]/100) * int(screen[1])),
},
"large": {
"w": math.floor((ratio_l[0]/100) * int(screen[0])),
"h": math.floor((ratio_l[1]/100) * int(screen[1])),
},
}
for size_key in sizes.keys():
sizes[size_key]["abs"] = abs((sizes[size_key]["w"] + sizes[size_key]["h"]) - (int(window[0]) + int(window[1])))
print(f'Calculated sizes: {sizes}')
if sizes["medium"]["abs"] < sizes["large"]["abs"]:
target_size = "large"
else:
target_size = "medium"
target_w = sizes[target_size]["w"]
target_h = sizes[target_size]["h"]
print(f'Resizing this window to {target_size} ({target_w}x{target_h})')
print(f'xdotool getactivewindow windowsize {target_w} {target_h} windowmove -- -52 22')
os.system(f'xdotool getactivewindow windowsize {target_w} {target_h} windowmove -- -52 22')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment