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
-
O script usa
wmctrlexdotool:sudo apt-get install wmctrl sudo apt-get install xdotool -
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. -
Se você acabou de criar o diretório
~/bin, efetue logout / in ou executesource ~/.profile -
No arquivo
.desktopdo webapp, substitua o comando na linhaExec=:Exec=/opt/google/chrome/google-chrome --app=feedly.com/i/mypara:
Exec=run_maximized "/opt/google/chrome/google-chrome --app=feedly.com/i/my" 100 100Cuidado 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
xdotoolpara redimensionar a janela. Isso também pode ser feito comwmctrl, mas o comandomaximizedewmctrltem alguns efeitos colaterais quexdotoolnã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.