Como forçar uma janela de aplicativo a ser maximizada automaticamente após iniciar o aplicativo?

2

Eu tentei usar o Docky, depois o removi e depois disso meu navegador (Chromium) não pode ser aberto na altura máxima, toda vez que eu deveria maximizar sozinho. (Área de trabalho XFCE)

    
por R S 16.11.2015 / 10:59

1 resposta

2

Como iniciar um aplicativo (qualquer) maximizado

Iniciando uma aplicação através do script abaixo, você pode forçar qualquer aplicação * na inicialização maximizada. Se você substituir o comando main em (uma cópia de-) seu arquivo .desktop pelo comando para executar o script (veja abaixo como fazer isso) ou adicione-o como um atalho de lista rápida, você pode conseguir exatamente o que você quer.

( * Algumas aplicações têm um windowsize fixo e imutável, algumas janelas abrem uma nova aba em uma janela possivelmente aberta )

Sobre o script

O script é executado com o comando:

python3 /path/to/script <application>

O script:

  • primeiro executa o comando para abrir o aplicativo
  • para evitar problemas de tempo, ele aguarda a exibição da janela (nova) do aplicativo (encontrando uma correspondência entre seu pid e o id da janela correspondente) na saída do wmctrl -lp -command (por apenas 15 segundos, para evitar um loop infinito)
  • Quando a janela aparecer, ela maximiza a janela com o comando:

    xdotool windowsize <window_id> 100% 100%
    

O código

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

app = sys.argv[1]

user = getpass.getuser()
get = lambda x: subprocess.check_output(x).decode("utf-8")
ws1 = get(["wmctrl", "-lp"]); t = 0
subprocess.Popen(app)
while t < 30:      
    ws2 = [(w.split()[2], w.split()[0]) for w in get(["wmctrl", "-lp"]).splitlines() if not w in ws1]
    procs = sum([[(w[1], p) for p in get(["ps", "-u", user]).splitlines() \
              if app[:15].lower() in p.lower() and w[0] in p] for w in ws2], [])
    if len(procs) > 0:
        subprocess.call(["xdotool", "windowsize", "-sync", procs[0][0] , "100%", "100%"])
        break
    time.sleep(0.5)
    t = t+1

Como usar

  1. O script precisa dos dois wmctrl e xdotool

    sudo apt-get install wmctrl xdotool
    
  2. Copie o script acima em um arquivo vazio, salve-o como run_maximized.py

  3. Agora edite seu arquivo .desktop :

    • Copie o arquivo global .desktop localmente:

      cp /usr/share/applications/chromium-browser.desktop ~/.local/share/applications
      

Versão do XFCE:

  1. abra o arquivo com o gedit:

    gedit ~/.local/share/applications/chromium-browser.desktop
    

    Navegue até a linha:

    Exec=chromium-browser %U
    

    (que é a primeira linha, começando com Exec=

    Altere-o para:

    Exec=python3 /path/to/script.py chromium-browser
    

    onde você precisa substituir /path/to/script.py pelo caminho real.

  2. Faça logout e volte. A partir de agora, o inicializador do Chromium abrirá o Chromium maximizado.

Versão do Unity:

  1. abra o arquivo com o gedit:

    gedit ~/.local/share/applications/chromium-browser.desktop
    

    Navegue até a linha:

    Actions=NewWindow;Incognito;TempProfile;
    

    Altere-o para:

    Actions=NewWindow;Incognito;TempProfile;divider1;Open maximized;
    

    Adicione à parte inferior do arquivo a seção abaixo:

    [Desktop Action Open maximized]
    Name=Open maximized
    Exec=python3 /path/to/script.py chromium-browser
    OnlyShowIn=Unity;
    
    [Desktop Action divider1]
    Name=.....................................
    OnlyShowIn=Unity;
    

    onde você precisa substituir /path/to/script.py pelo caminho real.

  2. Faça logout e volte. A partir de agora, seu inicializador do Chromium será exibido:

Nota importante

Em um arquivo .desktop , você deve usar caminhos absolutos; ~ não funciona por exemplo. Isso conta para .desktop arquivos em /usr/share/applications , ~/.local/share/applications , bem como comandos em aplicativos de inicialização (que são realmente chamados por .desktop arquivos em ~/.config/autostart ).

    
por Jacob Vlijm 16.11.2015 / 14:03