Eu corro um Matlab
script no workspace 1
. Isso gera várias parcelas. Enquanto isso, mudo para workspace 2
e trabalhando lá. Meu problema é que as parcelas estão surgindo workspace 2
. É possível bloquear o software em um espaço de trabalho. Então, enquanto Matlab
gera as parcelas workspace 1
, posso trabalhar workspace 2
sem a interrupção das parcelas que aparecem?
14.04
unity
workspaces
matlab
OHLÁLÁ
fonte
fonte
xprop WM_CLASS
e clicar na janela?) Adicione também o WM_CLASS do Matlab.Respostas:
EDIÇÃO IMPORTANTE
Abaixo, uma versão reescrita do script da primeira resposta (abaixo). As diferenças:
WM_CLASS
Agora, o bot e o espaço de trabalho de destino são argumentos para executar o script. Use apenas a primeira ou a segunda parte (identificando) daWM_CLASS
(veja mais abaixo: como usar)Quando o script é iniciado, ele mostra uma notificação (exemplo
gedit
):O script
Como usar
O script precisa de ambos
wmctrl
exdotool
:Copie o script acima em um arquivo vazio, salve-o como
lock_towspace.py
De sua aplicação específica, descubra
WM_CLASS
: abra sua aplicação, execute em um terminal:A saída será semelhante (no seu caso):
Use a primeira ou a segunda parte do comando para executar o script.
O comando para executar o script é:
No comando, a última seção;
2,2
é o espaço de trabalho em que você deseja bloquear o aplicativo (sem espaços: (!) coluna, linha ), no formato "humano"; a primeira coluna / linha é1,1
RESPOSTA ATUALIZADA:
(segundo) VERSÃO DE TESTE
O script abaixo bloqueia um aplicativo específico em seu espaço de trabalho inicial. Se o script for iniciado, ele determinará em qual espaço de trabalho o aplicativo reside. Todas as janelas adicionais produzidas pelo aplicativo serão movidas para o mesmo espaço de trabalho em uma fração de segundo.
O problema do foco é resolvido ao se focar novamente automaticamente na janela que foi focada antes da produção da janela adicional.
O script
Como usar
O script precisa de
wmctrl
exdotool
Copie o script em um arquivo vazio, salve-o como
keep_workspace.py
determine o `WM_CLASS 'do seu aplicativo abrindo o aplicativo, abra um terminal e execute o comando:
Em seguida, clique na janela do seu aplicativo. Copie a saída, como
"sun-awt-X11-XFramePeer", "MATLAB R2015a - academic use"
no seu caso, e coloque-a entre aspas simples na seção principal do script, conforme indicado.Execute o script com o comando:
Se funcionar como você quiser, adicionarei uma função de alternância. Embora ele já funcione por algumas horas no meu sistema, ele pode precisar de alguns ajustes primeiro.
Notas
Embora você não deve notar que, o script faz acrescentar alguma carga do processador ao sistema. No meu sistema de idosos, notei um aumento de 3-10%. Se você gosta de como ele funciona, provavelmente vou ajustá-lo ainda mais para reduzir a carga.
O script, como é, assume que as janelas secundárias são da mesma classe que a janela principal, como você indicou em um comentário. Com uma alteração (muito) simples, as janelas secundárias podem ser de outra classe.
Explicação
Embora provavelmente não seja muito interessante para um leitor comum, o script funciona calculando em vetores. Na inicialização, o script calcula:
wmctrl -d
wmctrl -lG
A partir de então, o script procura novas janelas do mesmo aplicativo, com a saída de
xprop WM_CLASS
, procura sua posição da mesma maneira que acima e as move para a área de trabalho "original".Como a janela recém-criada "roubou" o foco da última janela usada em que o usuário estava trabalhando, o foco é posteriormente definido para a janela que tinha o foco anteriormente.
fonte
application
eworkspace
configurar. Se você encontrar possíveis erros, mencione!WM_CLASS
mesmos são idênticos, o segundo será movido para o que você definiu no comando.