Atalhos de aplicativos do Chrome abrem pequena janela

1

Eu criei um monte de atalhos para aplicativos chrome - gmail, tweetdeck, etc. Todos eles são lançados em pequenas janelas no canto superior esquerdo da tela (veja a captura de tela). É fácil redimensioná-los / maximizá-los, mas gostaria de saber o que controla o posicionamento e o tamanho deles e, depois, corrigi-los? Eu tentei usar o compiz para maximizar a janela ao iniciar, mas ele não funciona (o compiz funciona bem para selecionar em qual área de trabalho colocá-lo, simplesmente não redimensionar). Eu espero que deve haver um cenário em algum lugar que dita isso - alguma idéia?

    
por Mike McKay 31.03.2015 / 04:37

1 resposta

0

Só para ver o que aconteceu, criei alguns aplicativos de webapp-launchers. O que você descreveu ocorreu-me também, mas de uma maneira imprevisível; às vezes acontece, às vezes não acontece.

Abrindo uma janela de webapp com um tamanho pré-definido

Para garantir que uma janela recém-criada de um determinado aplicativo tenha um determinado tamanho, acabou sendo um pouco mais complicado do que eu esperava. No entanto, penso que a solução abaixo funciona de forma elegante.

O que faz e como usar

A solução abaixo redireciona o comando para executar o webapp em um script. Os scripts executam o comando, aguardam a exibição da janela correspondente (aguardando o pid de chrome produzir uma nova janela) e o redimensionam para o tamanho que você define.

Na prática:

Olhando dentro do arquivo .desktop da webapp, você vê na linha Exec= (como você mencionou) um comando, parecido com:

Exec=/opt/google/chrome/google-chrome --app=feedly.com/i/my

Depois de fazer a configuração abaixo, tudo o que você precisa fazer é substituir o comando neste (ou qualquer outro arquivo webapps-) para:

Exec=run_maximized "/opt/google/chrome/google-chrome --app=feedly.com/i/my" 100 100

As últimas figuras no comando são os tamanhos horizontal / vertical da janela (em%, relacionados ao tamanho da tela)

A configuração

  1. O script usa wmctrl e xdotool :

    sudo apt-get install wmctrl
    sudo apt-get install xdotool
    
  2. Copie o script abaixo em um arquivo vazio, salve-o como run_maximized (sem extensão) em ~/bin . Crie o diretório, se ele não existir. Torne o script executável.

  3. Se você acabou de criar o diretório ~/bin , efetue logout / in ou execute

    source ~/.profile
    
  4. No arquivo .desktop do webapp, substitua o comando na linha Exec= :

    Exec=/opt/google/chrome/google-chrome --app=feedly.com/i/my
    

    para:

    Exec=run_maximized "/opt/google/chrome/google-chrome --app=feedly.com/i/my" 100 100
    

    Cuidado com as aspas e não se esqueça do tamanho horizontal / vertical da janela

O script

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

user = getpass.getuser()
get = lambda x: subprocess.check_output(["/bin/bash", "-c", x]).decode("utf-8")
ws1 = get("wmctrl -lp"); t = 0
subprocess.Popen(["/bin/bash", "-c", sys.argv[1]])

while t < 30:      
    ws2 = [w.split()[0:3] for w in get("wmctrl -lp").splitlines() if not w in ws1]
    procs = [[(p, w[0]) for p in get("ps -u "+user).splitlines() \
              if "chrome" in p and w[2] in p] for w in ws2]
    if len(procs) > 0:
        command = "xdotool windowsize "+procs[0][0][1]+" "+sys.argv[2]+"% "+sys.argv[3]+"%"
        subprocess.call(["/bin/bash", "-c", command])
        break
    time.sleep(0.5)
    t = t+1

Notas

  • usei xdotool para redimensionar a janela. Isso também pode ser feito com wmctrl , mas o comando maximize de wmctrl tem alguns efeitos colaterais que xdotool não possui.
  • Com uma pequena alteração do script, ele pode ser usado para executar janelas de um tamanho predefinido (ou posição) de qualquer aplicativo. Pode ser útil em listas rápidas, por exemplo, para criar várias janelas em um layout predefinido.
por Jacob Vlijm 01.04.2015 / 09:16