Posso definir uma atalhos de teclado para redimensionar uma janela até a metade do seu tamanho, em uma direção escolhida?

2

Usando o Ubuntu 14.04, estou procurando uma tela de 40 "4k e descobri como redimensionar as janelas para as seções de quarto da tela, mas gostaria de poder redimensioná-las ainda mais, se desejado. Por exemplo, Eu gostaria de keybind o compiz padrão para ter uma janela de tela cheia e colocá-lo no canto superior esquerdo da tela, mas se pressionado novamente, ainda mais downsize para o canto superior esquerdo oitavo da tela, ou para colocar a janela no quarto inferior direito do quarto superior da tela (ocupando um oitavo verticalmente e horizontalmente da tela). Esta funcionalidade está escondida dentro do compiz ou qualquer outro aplicativo que eu não esteja familiarizado?

    
por Travis 22.01.2015 / 06:54

1 resposta

2

O script abaixo pode ser usado como uma funcionalidade adicional para a opção "resize-to-quarter" em 14.04. Ele pode ser executado com os argumentos: "left", "right", "up", "down", para cortar ainda mais o quarto em oitos.

O que faz

Se você tiver sua janela movida para o quarto da sua tela:

oscriptcortaráajanelaaomeio,nametadeesquerda,direita,superiorouinferior,dependendodoargumentocomoqualvocêaexecutar(vejaabaixo).

Comousar

  • Oscriptusawmctrl,quenãoéporpadrãonoseusistema:

    sudoapt-getinstallwmctrl
  • Copieoscriptabaixoemumarquivovazio,salve-ocomoorganize_wnodiretório~/bin.Torneoscriptexecutável.Provavelmentevocêaindateráquecriarodiretório~/bin.Temavantagemdepoderexecutaroscriptapenaspelonomedoscript:

  • Adicionequatrocomandosaatalhosdetecladopersonalizados.Abraasconfiguraçõesdosistema>"Teclado" > "Atalhos" > "Atalhos personalizados". Adicione quatro comandos às combinações de teclas.
    No meu sistema, encontrei quatro atalhos extremamente adequados ainda disponíveis: sugiro adicionar os comandos nessas combinações de teclas:

    organize_w left 
    

    Shift + Ctrl + Numpad <

    efeito:

    organize_wright

    Shift+Ctrl+Numpad>

    efeito:

    organize_w up 
    

    Shift + Ctrl + Numpad ^

    efeito:

    organize_wdown

    Shift+Ctrl+Numpadv

    efeito:

    Dessa forma, você pode organizar as janelas abaixo com alguns toques de tecla:

Oscript:

#!/usr/bin/env python3 import subprocess import sys arg = sys.argv[1] WA_correction = 28 def get(command): return subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8") def execute(command): subprocess.Popen(["/bin/bash", "-c", command]) xprop_data = get("xprop -root").split() w_id = xprop_data[xprop_data.index("_NET_ACTIVE_WINDOW(WINDOW):")+4].replace(",", "") frontmost = w_id[:2]+"0"+w_id[2:] w_data = [l for l in get("wmctrl -lG").splitlines() if frontmost in l][0].split() new_G = w_data[2:6] new_G[1] = str(int(int(new_G[1])-WA_correction)) xy_corr = lambda x: -10 if int(x) < 100 else 0 if arg == "left": new_G[2] = str(int(int(new_G[2])/2 + xy_corr(new_G[0]))) new_G[3] = str(int(int(new_G[3]) + xy_corr(new_G[1]))) elif arg == "right": new_G[0] = str(int(int(new_G[0])+int(new_G[2])/2)) new_G[2] = str(int(int(new_G[2])/2)) new_G[3] = str(int(int(new_G[3]) + xy_corr(new_G[1]))) elif arg == "up": new_G[2] = str(int(new_G[2]) + xy_corr(new_G[0])) new_G[3] = str(int(int(new_G[3])/2 + xy_corr(new_G[1]))) elif arg == "down": new_G[1] = str(int(int(new_G[1]) + int(new_G[3])/2)) new_G[2] = str(int(new_G[2]) + xy_corr(new_G[0])) new_G[3] = str(int(int(new_G[3])/2)) execute("wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz") execute("wmctrl -ir "+frontmost+" -e 0,"+(",").join(new_G))


editar:

versão XFCE

Com algumas pequenas mudanças, o script também pode ser usado para redimensionar wndows em metade / quarto ou oito no XFCE (testado em 14.04).

Use exatamente como a versão do Unity:

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

arg = sys.argv[1]
WA_correction = 48

def get(command):
    return subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8")

def execute(command):
    subprocess.Popen(["/bin/bash", "-c", command])

xprop_data = get("xprop -root").split()
w_id = xprop_data[xprop_data.index("_NET_ACTIVE_WINDOW(WINDOW):")+4].replace(",", "")
frontmost = w_id[:2]+"0"+w_id[2:]
w_data = [l for l in get("wmctrl -lG").splitlines() if frontmost in l][0].split()
new_G = w_data[2:6]
new_G[1] = str(int(int(new_G[1])-WA_correction))
if arg == "left":
    new_G[2] = str(int(int(new_G[2])/2))      
elif arg == "right":
    new_G[0] = str(int(int(new_G[0])+int(new_G[2])/2))    
    new_G[2] = str(int(int(new_G[2])/2))
elif arg == "up":
    new_G[3] = str(int(int(new_G[3])/2))
elif arg == "down":
    new_G[1] = str(int(int(new_G[1]) + int(new_G[3])/2))
    new_G[3] = str(int(int(new_G[3])/2))

execute("wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz")
execute("wmctrl -ir "+frontmost+" -e 0,"+(",").join(new_G))

(versão XFCE também publicada em gist.gisthub )

    
por Jacob Vlijm 22.01.2015 / 22:05