Redimensiona automaticamente as janelas no compiz

1

Esta resposta faz Não respondo a minha pergunta: .

Eu quero redimensionar duas ou mais janelas automaticamente, para que elas ocupem a parte da tela inteira, lado a lado. Ou seja, 2 janelas que ocupam 1/2, 3 que ocupam 1/3 cada e assim por diante.

Eu posso fazer isso manualmente agora, mas apenas redimensionar janelas com o teclado individualmente é demorado. Por exemplo, ctrl + Super + seta e esquerda / direita / cima / baixo para cada janela. No entanto, isso me forçaria a ir de janela em janela redimensionando-os.

    
por Quora Feans 11.07.2015 / 11:36

1 resposta

1

Enquanto em esta resposta , a questão era como (re) organizar janelas específicas de aplicativos em uma grade, a versão editada abaixo reorganiza todas as janelas "normais" em uma grade:

#!/usr/bin/env python3
import subprocess
import getpass
import sys

#--- set your preferences below: padding between windows, margin(s)
cols = int(sys.argv[1]); rows = int(sys.argv[2]); padding = 10; left_margin = 70; top_margin = 30
#---

get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8")
def get_res():
    xr = get("xrandr").split(); pos = xr.index("current")
    return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]

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

# get resolution
res = get_res()
# define (calculate) the area to divide
area_h = res[0] - left_margin; area_v = res[1] - top_margin
# create a list of calculated coordinates
x_coords = [int(left_margin+area_h/cols*n) for n in range(cols)]
y_coords = [int(top_margin+area_v/rows*n) for n in range(rows)]
coords = sum([[(cx, cy) for cx in x_coords] for cy in y_coords], [])
# calculate the corresponding window size, given the padding, margins, columns and rows
w_size = [str(int(area_h/cols - padding)), str(int(area_v/rows - padding))]
# find windows of the application, identified by their pid
wlist = [w.split()[0] for w in get("wmctrl -lp").splitlines()]
w_list = [w for w in wlist if check_window(w) == True][:cols*rows]
print(w_list)

# remove possibly maximization, move the windows
for n, w in enumerate(w_list):
    data = (",").join([str(item) for item in coords[n]])+","+(",").join(w_size)
    cmd1 = "wmctrl -ir "+w+" -b remove,maximized_horz"
    cmd2 = "wmctrl -ir "+w+" -b remove,maximized_vert"
    cmd3 = "wmctrl -ir "+w+" -e 0,"+data
    for cmd in [cmd1, cmd2, cmd3]:
        subprocess.Popen(["/bin/bash", "-c", cmd])

Como usar

  • Verifique se o wmctrl está instalado:

    sudo apt-get install wmctrl
    
  • v v Beses v v v v v es es eses v es es v es es es es es es es es es es es es es es es es es es es es es es es es eses eses eses eses eses eses eses es eses eses es eses eses es eses eses es eses eses es eses eses es eses eses es eses eses es eses eseses
  • Na seção principal do script, defina seu preenchimento preferido, se desejar:

    #--- set your preferences below: padding between windows, margin(s)
    cols = 3; rows = 2; padding = 10; left_margin = 70; top_margin = 30
    #---
    
    esvvvvv v Bv Bvv v vv vv B vv B v Bv Bvv Bvv Bvv v vv v vv vv Bvv v vv vv es es es es es es es v esvv v es es es v es esv B B B Bv B v B vv es v Bvv v esvv v es es
  • Execute-o pelo comando:

    python3 /path/to/rearrange_windows.py <cols> <rows>
    

    por exemplo. :

    python3 /path/to/rearrange_windows.py 3 2 
    

    para definir uma grade de 3 collums / 2 linhas de janelas.

Se tudo funcionar como esperado, adicione-o a uma tecla de atalho: Escolha: Configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione o comando:

 python3 /path/to/rearrange_windows.py <cols> <rows>
es vBvvBvvvv vvv vv vesvvBvesvvvvvvv v esesvBeses v eseseses esesvvvv esesvvvvv vvBesvvBeses vBvv esvv vvv esvesesvv eseseses esesesesvv esvv vv esesesesvBesvv esvv esesesvBesvBesvv eseseseseses eseseseseses esesveseseseses eseseseseseseseses

Nota

v es vvvBves esv vv esv vv esv vv es vv esv vv es es es vv ves es es es es es es es es es es eses es eses veses eses es eses es es eses es eses veseses eseseseseseseses es es es es eses ves es es es eses eses eses eseseseseseseseseseses eses

Exemplos

python3 /path/to/rearrange_windows.py 3 2 
es vvv es B es es es es es es v es es es es es es es v es es es es es es es es es es es es es ves B B B B B B v B es B v es v v es es eses
python3 /path/to/rearrange_windows.py 2 3
es es es es es es es es es es es es es es es es es es es es es es es es es es es es es B es B B es es es eses es es es es es es es es eses es es es es es eses es es es es eses eses eses eses eses eses eses eses eses eseses     
por Jacob Vlijm 11.07.2015 / 12:11