Tire um "instantâneo" da disposição da janela e restaure-a
O script abaixo pode ser usado para obter as posições atuais da janela de todas as janelas "normais" (executadas com o argumento -get
) ou restaurar a última disposição da janela (executada com o argumento -restore
).
Como explicado aqui , usando wmctrl
icw A unidade tem alguns problemas. Se é satisfatório na sua situação é decidir.
Como usar
O script usa wmctrl
:
sudo apt-get install wmctrl
Então:
- Copie o script em um arquivo vazio, salve-o como
window_arrange.py
-
Execute:
python3 /path/to/window_arrange.py -get
para "gravar" o arranjo de janelas atual e
python3 /path/to/window_arrange.py -restore
para restaurar o último arranjo de janela "gravado"
O script:
#!/usr/bin/env python3
import subprocess
import os
import sys
wfile = os.environ["HOME"]+"/.windowlist"
arg = sys.argv[1]
def get(command):
return subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8")
def check_window(w_id):
w_type = get("xprop -id "+w_id)
if " _NET_WM_WINDOW_TYPE_NORMAL" in w_type:
return True
else:
return False
def read_windows():
w_list = [l.split()[:6] for l in get("wmctrl -lG").splitlines()]
relevant = [(" ").join(w) for w in w_list if check_window(w[0]) == True]
with open(wfile, "wt") as out:
for item in relevant:
out.write(item+"\n")
def restore_windows():
try:
wlist = [l.split() for l in open(wfile).read().splitlines()]
except FileNotFoundError:
pass
else:
for w in wlist:
try:
cmd = "wmctrl -ir "+w[0]+" -e 0,"+(",").join(w[2:])
subprocess.Popen(["/bin/bash", "-c", cmd])
except:
pass
if arg == "-restore":
restore_windows()
elif arg == "-get":
read_windows()