Eu não implementei este aplicativo específico, mas parece que xdotool
fará o que você deseja.
Tente iniciar seu aplicativo com um script de wrapper como:
desktops=$(xdotool get_num_desktops)
desktops="$desktops"+1
xdotool set_num_desktops "$desktops"
xdotool set_desktop "$desktops"
run-my-application
Deixei de fora alguns detalhes que são necessários para tornar isso mais robusto, pois eles variam um pouco dependendo do que você está fazendo e podem obscurecer a idéia principal:
Cada comando xdotool
retorna um status que você deve verificar. Se um passo falhar, você não quer continuar cegamente.
Você pode definir um número máximo de desktops que seu script pode criar.
xdotool
pode ver se já existe uma janela e em qual área de trabalho ela está. Também pode mover uma janela para outra área de trabalho. Também pode ativar uma janela, trazendo-a para o primeiro plano e para o foco.
Pode ser necessário adicionar comandos sleep
após certas operações para dar à área de trabalho e, especialmente, aos aplicativos tempo para fazer suas tarefas antes de executar a próxima etapa.
Como o seu script pode ser executado a partir da área de trabalho (e não apenas de um terminal), você também pode querer registrar algumas mensagens em um arquivo informando o que o script fez para facilitar a depuração.
A parte em que fica um pouco complicado é quando um aplicativo tem mais de uma janela aberta. Então, você tem que lidar com uma pilha de instâncias e de alguma forma encontrar o caminho certo ou trabalhar em todas elas. Por exemplo, minha Thunderbird
pede uma senha mestra quando é iniciada, então ela tem duas janelas abertas.
xdotool
também oferece o encadeamento de comandos, no qual você pode executar várias ações a partir de um comando xdotool
. Os resultados da ação atual são colocados em uma pilha, lidos pela próxima ação no comando. Eu achei isso difícil de visualizar e depurar, mas é muito poderoso se você conseguir que ele funcione.
Embora xdotool
seja o melhor ajuste para esse problema específico, convém dar uma olhada em AutoKey , que pode Ajudá-lo a automatizar todos os tipos de ações de desktop / GUI, emitindo keypresses e eventos de mouse que se parecem com os que você fez manualmente, para que eles funcionem na maioria dos aplicativos e recursos de desktop.